Receber por email
← Voltar para o catálogo

ConnectWise Manage Time Entries

Use this skill when working with ConnectWise PSA time entries - creating, updating, searching, or managing time tracking. Covers billable vs non-billable time, work types, work roles, time approval, and time sheet operations. Essential for MSPs tracking technician time and billing in ConnectWise PSA.

31estrelas
Atualizado há 4 meses

Ver no GitHub ↗ Licença: Apache-2.0

Como adicionar

/plugin marketplace add wyre-technology/msp-claude-plugins

O comando exato pode variar conforme o repositório. Confira o README no GitHub.

Para o autor da skill

Cole no README do seu repo

Mostra que sua skill está catalogada na Skillteca, gera backlink e tráfego rastreável.

[![Skillteca](https://www.skillteca.com.br/api/badge/connectwise-manage-time-entries/svg)](https://www.skillteca.com.br/skills/connectwise-manage-time-entries)

Skills relacionadas

Ver todas de Documentos →

Alerta por categoria

Receba novas skills de Documentos toda segunda

1 email curto, só com as skills novas de Documentos. 4 minutos de leitura, sem spam, cancela com 1 clique.

Você confirma o email no primeiro envio. Sem spam. Cancela com 1 clique.

Ler descrição completa

ConnectWise PSA Time Entry Management

Overview

Time entries in ConnectWise PSA track time spent on tickets, projects, and other activities. Accurate time tracking is essential for billing, resource management, and profitability analysis. This skill covers time entry CRUD operations, work types, work roles, billing settings, and approval workflows.

API Endpoint

Base: /time/entries

Time Entry Types

Time can be logged against different record types:

| Charge To Type | Description | |----------------|-------------| | ServiceTicket | Time against service tickets | | ProjectTicket | Time against project tickets | | ChargeCode | Time against charge codes (internal) | | Activity | Time against activities |

Complete Time Entry Field Reference

Core Fields

| Field | Type | Required | Description | |-------|------|----------|-------------| | id | int | System | Auto-generated unique identifier | | company | object | Yes* | {id: companyId} - Required for ChargeCode | | chargeToId | int | Yes | ID of ticket/project/activity | | chargeToType | string | Yes | ServiceTicket, ProjectTicket, etc. | | member | object | Yes | {id: memberId} - Who logged time | | timeStart | datetime | Yes | Start time | | timeEnd | datetime | Yes | End time |

Alternative Time Entry

| Field | Type | Required | Description | |-------|------|----------|-------------| | actualHours | decimal | Alt | Hours worked (instead of start/end) | | hoursDeduct | decimal | No | Hours to deduct (break time) |

Billing Fields

| Field | Type | Required | Description | |-------|------|----------|-------------| | billableOption | string | No | Billable, DoNotBill, NoCharge, NoDefault | | workType | object | No | {id: workTypeId} | | workRole | object | No | {id: workRoleId} | | hourlyRate | decimal | System | Calculated rate | | agreement | object | No | {id: agreementId} |

Description Fields

| Field | Type | Required | Description | |-------|------|----------|-------------| | notes | string | No | Time entry notes | | internalNotes | string | No | Internal notes (not on invoice) | | addToDetailDescriptionFlag | boolean | No | Add notes to ticket description | | addToInternalAnalysisFlag | boolean | No | Add to internal analysis | | addToResolutionFlag | boolean | No | Add to resolution |

Status Fields

| Field | Type | Required | Description | |-------|------|----------|-------------| | status | string | System | Open, Rejected, Approved, Billed | | emailResourceFlag | boolean | No | Email resource on approval | | emailContactFlag | boolean | No | Email contact | | emailCcFlag | boolean | No | Email CC recipients | | emailCc | string | No | CC email addresses |

Work Types

Work types categorize the nature of work performed.

Common Work Types

| Type | Description | Typical Billing | |------|-------------|-----------------| | Regular | Normal work hours | Billable | | Overtime | After-hours work | 1.5x rate | | Training | Training time | Non-billable | | Travel | Travel time | Varies | | Remote | Remote support | Billable | | On-site | On-site work | Billable | | Administrative | Admin tasks | Non-billable |

Get Work Types

GET /time/workTypes

Work Roles

Work roles determine billing rates based on skill level.

Common Work Roles

| Role | Description | Typical Rate | |------|-------------|--------------| | Level 1 Tech | Help desk | $75-100/hr | | Level 2 Tech | Desktop support | $100-125/hr | | Level 3 Tech | Systems admin | $125-150/hr | | Engineer | Senior engineer | $150-200/hr | | Consultant | Expert consultant | $200-250/hr | | Project Manager | PM work | $125-175/hr |

Get Work Roles

GET /time/workRoles

Billing Options

Billable Option Values

| Option | Description | |--------|-------------| | Billable | Time is billable at standard rate | | DoNotBill | Time excluded from billing | | NoCharge | Time shows on invoice at $0 | | NoDefault | Use ticket/agreement default |

How Billing is Determined

  1. Time entry billableOption (if set)
  2. Ticket billTime setting
  3. Agreement billing rules
  4. Company default

API Operations

Create Time Entry (Start/End)

POST /time/entries
Content-Type: application/json

{
  "chargeToId": 54321,
  "chargeToType": "ServiceTicket",
  "member": {"id": 123},
  "timeStart": "2024-02-15T09:00:00Z",
  "timeEnd": "2024-02-15T10:30:00Z",
  "workType": {"id": 1},
  "workRole": {"id": 2},
  "billableOption": "Billable",
  "notes": "Diagnosed email delivery issue. Identified blocked sender.",
  "addToDetailDescriptionFlag": true
}

Create Time Entry (Actual Hours)

POST /time/entries
Content-Type: application/json

{
  "chargeToId": 54321,
  "chargeToType": "ServiceTicket",
  "member": {"id": 123},
  "timeStart": "2024-02-15T09:00:00Z",
  "actualHours": 1.5,
  "workType": {"id": 1},
  "workRole": {"id": 2},
  "billableOption": "Billable",
  "notes": "Configured DNS records and tested mail flow."
}

Create Time Entry Against Charge Code

POST /time/entries
Content-Type: application/json

{
  "chargeToId": 10,
  "chargeToType": "ChargeCode",
  "company": {"id": 12345},
  "member": {"id": 123},
  "timeStart": "2024-02-15T08:00:00Z",
  "actualHours": 0.5,
  "workType": {"id": 3},
  "billableOption": "DoNotBill",
  "notes": "Weekly team meeting"
}

Get Time Entry

GET /time/entries/{id}

Update Time Entry

PATCH /time/entries/{id}
Content-Type: application/json

{
  "notes": "Updated notes with additional details.",
  "actualHours": 2.0
}

Delete Time Entry

DELETE /time/entries/{id}

Note: Cannot delete billed time entries.

Search Time Entries

GET /time/entries?conditions=member/id=123 and timeStart>=[2024-02-01]

Common Query Patterns

Time entries for a ticket:

conditions=chargeToId=54321 and chargeToType="ServiceTicket"

Time entries by member:

conditions=member/id=123

Time entries by date range:

conditions=timeStart>=[2024-02-01] and timeStart<[2024-03-01]

Unbilled time entries:

conditions=status="Open" and billableOption="Billable"

Time entries for company:

conditions=company/id=12345

Approved time waiting for billing:

conditions=status="Approved" and billableOption="Billable"

My time this week:

conditions=member/id=123 and timeStart>=[2024-02-12] and timeStart<[2024-02-19]

Time Sheet Operations

Time Sheet Endpoint

/time/sheets

Get Time Sheets

GET /time/sheets?conditions=member/id=123 and year=2024 and period=7

Time Sheet Status Values

| Status | Description | |--------|-------------| | Open | Time sheet open for editing | | Submitted | Submitted for approval | | Approved | Approved by manager | | Rejected | Returned for correction |

Submit Time Sheet

PATCH /time/sheets/{id}
Content-Type: application/json

{
  "status": "Submitted"
}

Approval Workflow

Approval Status Values

| Status | Description | |--------|-------------| | Open | Pending approval | | Approved | Approved for billing | | Rejected | Rejected, needs correction | | Billed | Already invoiced |

Approve Time Entry

PATCH /time/entries/{id}
Content-Type: application/json

{
  "status": "Approved"
}

Reject Time Entry

PATCH /time/entries/{id}
Content-Type: application/json

{
  "status": "Rejected",
  "internalNotes": "Please add more detail about work performed."
}

Bulk Approval

POST /time/entries/bulk
Content-Type: application/json

{
  "ids": [1001, 1002, 1003],
  "operation": {
    "status": "Approved"
  }
}

Charge Codes

Charge codes are used for non-ticket time (meetings, training, etc.).

Get Charge Codes

GET /time/chargeCodes

Common Charge Codes

| Code | Descr

Compartilhar X LinkedIn