Filevine Time Entries API

Record billable and non-billable time entries against a project, including timer-driven entries. Time entries feed invoice generation and staff productivity reporting.

OpenAPI Specification

filevine-time-entries-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Filevine Time Entries API
  description: >
    The Time Entries API records billable and non-billable time against a
    project, including the timer-driven entries captured by Filevine's
    context-aware timer. Entries carry a user, a project, a duration, an
    optional billing rate, and a narrative description. They feed invoice
    generation and staff productivity reports.
  version: '2.0'
  contact:
    name: Filevine API Support
    url: https://developer.filevine.io/
  license:
    name: Filevine Terms of Service
    url: https://www.filevine.com/terms-of-service/

servers:
  - url: https://api.filevine.io
    description: Filevine API Gateway (US)
  - url: https://api.filevineapp.ca
    description: Filevine API Gateway (Canada)

security:
  - BearerAuth: []

tags:
  - name: TimeEntries
    description: Billable time tracking.

paths:
  /core/time-entries:
    get:
      summary: Filevine List Time Entries
      description: List time entries across the organization, filtered by user, project, and date range.
      operationId: listTimeEntries
      tags: [TimeEntries]
      parameters:
        - name: userId
          in: query
          schema: { type: integer, format: int64 }
        - name: projectId
          in: query
          schema: { type: integer, format: int64 }
        - name: from
          in: query
          schema: { type: string, format: date }
        - name: to
          in: query
          schema: { type: string, format: date }
      responses:
        '200':
          description: Time entries.
          content:
            application/json:
              schema: { $ref: '#/components/schemas/TimeEntryList' }
    post:
      summary: Filevine Create Time Entry
      description: Record a new time entry against a project.
      operationId: createTimeEntry
      tags: [TimeEntries]
      requestBody:
        required: true
        content:
          application/json:
            schema: { $ref: '#/components/schemas/CreateTimeEntryRequest' }
      responses:
        '201':
          description: Time entry created.
          content:
            application/json:
              schema: { $ref: '#/components/schemas/TimeEntry' }

components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
  schemas:
    TimeEntry:
      type: object
      properties:
        timeEntryId: { type: integer, format: int64 }
        projectId: { type: integer, format: int64 }
        userId: { type: integer, format: int64 }
        date: { type: string, format: date }
        durationMinutes: { type: integer }
        billable: { type: boolean }
        rate: { type: number, format: float }
        currency: { type: string, default: USD }
        description: { type: string }
        createdDate: { type: string, format: date-time }
    TimeEntryList:
      type: object
      properties:
        items:
          type: array
          items: { $ref: '#/components/schemas/TimeEntry' }
        hasMore: { type: boolean }
    CreateTimeEntryRequest:
      type: object
      required: [projectId, durationMinutes, date]
      properties:
        projectId: { type: integer, format: int64 }
        userId: { type: integer, format: int64 }
        date: { type: string, format: date }
        durationMinutes: { type: integer }
        billable: { type: boolean, default: true }
        rate: { type: number, format: float }
        description: { type: string }