PracticePanther Activity API

The Activity API from PracticePanther — 2 operation(s) for activity.

Operations 5

GET /api/activity/{guid} Returns an activity (task/event/email/call) #
GET /api/activity OData end point to get a list of all activities (tasks/events/emails/calls) accessible by the user #
PUT /api/activity Updates an existing account (Contact) #
POST /api/activity Creates a new activity (task/event/email/call) #
DELETE /api/activity Marks an existing activity (task/event/email/call) as deleted #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/practicepanther-activity-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

practicepanther-activity-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: v1
  title: Legacy API (v1) Account Activity API
  description: ''
servers:
- url: https://app.practicepanther.com
tags:
- name: Activity
paths:
  /api/activity/{guid}:
    get:
      tags:
      - Activity
      summary: Returns an activity (task/event/email/call)
      operationId: Activity_GetActivity
      parameters:
      - name: guid
        in: path
        description: ''
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActivityDTO_Detail'
            text/json:
              schema:
                $ref: '#/components/schemas/ActivityDTO_Detail'
      security:
      - oauth2:
        - full
  /api/activity:
    get:
      tags:
      - Activity
      summary: OData end point to get a list of all activities (tasks/events/emails/calls) accessible by the user
      operationId: Activity_GetActivities
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ActivityDTO'
            text/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ActivityDTO'
      security:
      - oauth2:
        - full
    put:
      tags:
      - Activity
      summary: Updates an existing account (Contact)
      operationId: Activity_PutActivity
      requestBody:
        $ref: '#/components/requestBodies/ActivityDTO_Detail'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActivityDTO_Detail'
            text/json:
              schema:
                $ref: '#/components/schemas/ActivityDTO_Detail'
      security:
      - oauth2:
        - full
    post:
      tags:
      - Activity
      summary: Creates a new activity (task/event/email/call)
      operationId: Activity_PostActivity
      requestBody:
        $ref: '#/components/requestBodies/ActivityDTO_Detail'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActivityDTO_Detail'
            text/json:
              schema:
                $ref: '#/components/schemas/ActivityDTO_Detail'
      security:
      - oauth2:
        - full
    delete:
      tags:
      - Activity
      summary: Marks an existing activity (task/event/email/call) as deleted
      operationId: Activity_DeleteActivity
      parameters:
      - name: guid
        in: query
        description: ''
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActivityDTO_Detail'
            text/json:
              schema:
                $ref: '#/components/schemas/ActivityDTO_Detail'
      security:
      - oauth2:
        - full
components:
  schemas:
    CustomFieldTab:
      required:
      - name
      type: object
      properties:
        tenant:
          $ref: '#/components/schemas/Tenant'
        guid:
          format: uuid
          type: string
          example: 00000000-0000-0000-0000-000000000000
        name:
          type: string
        objectType:
          enum:
          - Account
          - Project
          - Contact
          - User
          - Address
          type: string
        customFields:
          type: array
          items:
            $ref: '#/components/schemas/CustomField'
        createdDate:
          format: date-time
          type: string
        lastModifiedDate:
          format: date-time
          type: string
        createdBy:
          $ref: '#/components/schemas/User'
        lastModifiedBy:
          $ref: '#/components/schemas/User'
        isDeleted:
          type: boolean
    LawToolboxCourtRule:
      type: object
      properties:
        id:
          format: uuid
          type: string
          example: 00000000-0000-0000-0000-000000000000
        projectId:
          format: int64
          type: integer
        project:
          $ref: '#/components/schemas/Project'
        accountId:
          format: int64
          type: integer
        account:
          $ref: '#/components/schemas/Account'
        tenantId:
          format: int64
          type: integer
        tenant:
          $ref: '#/components/schemas/Tenant'
        name:
          type: string
        toolsetName:
          type: string
        toolsetId:
          type: string
        triggerName:
          type: string
        triggerId:
          type: string
        triggerDate:
          format: date-time
          type: string
        toggleOptionId:
          type: string
        toggleId:
          type: string
        toggleDescription:
          type: string
        activities:
          type: array
          items:
            $ref: '#/components/schemas/Activity'
        isDeleted:
          type: boolean
        createdDate:
          format: date-time
          type: string
        createdBy:
          $ref: '#/components/schemas/User'
        lastModifiedDate:
          format: date-time
          type: string
        lastModifiedBy:
          $ref: '#/components/schemas/User'
    Activity:
      required:
      - name
      type: object
      properties:
        date:
          format: date-time
          type: string
        shares:
          type: array
          items:
            $ref: '#/components/schemas/Share'
        workflowId:
          format: int64
          type: integer
        workflow:
          $ref: '#/components/schemas/Workflow'
        activitiesSync:
          type: array
          items:
            $ref: '#/components/schemas/ActivitySync'
        guid:
          format: uuid
          type: string
          example: 00000000-0000-0000-0000-000000000000
        id:
          format: int64
          type: integer
        googleId:
          type: string
        isEnabled:
          type: boolean
        isDeleted:
          type: boolean
        createdDate:
          format: date-time
          type: string
        lastModifiedDate:
          format: date-time
          type: string
        recurrenceStopDate:
          format: date-time
          type: string
        createdById:
          format: int32
          type: integer
        createdBy:
          $ref: '#/components/schemas/User'
        lastModifiedBy:
          $ref: '#/components/schemas/User'
        lawToolboxCourtRule_Id:
          format: uuid
          type: string
          example: 00000000-0000-0000-0000-000000000000
        lawToolboxCourtRule:
          $ref: '#/components/schemas/LawToolboxCourtRule'
        lawToolboxDeadlineId:
          type: string
        lawToolboxDeadlineNumber:
          type: string
        tenantId:
          format: int64
          type: integer
        tenant:
          $ref: '#/components/schemas/Tenant'
        isHoursLoggedManually:
          description: sets if the activity should be marked as "time logged" even if no time was linked to it.
          type: boolean
        recurrenceId:
          format: int64
          description: will show the realted recurrence for this event, if such exists
          type: integer
        recurrence:
          $ref: '#/components/schemas/Recurrence'
        type:
          enum:
          - Call
          - Task
          - Event
          - Email
          - Note
          type: string
        accountId:
          format: int64
          pattern: ^(\s*|\d+)$
          type: integer
        account:
          $ref: '#/components/schemas/Account'
        contactId:
          format: int64
          type: integer
        contact:
          $ref: '#/components/schemas/Contact'
        projectId:
          format: int64
          pattern: ^(\s*|\d+)$
          type: integer
        project:
          $ref: '#/components/schemas/Project'
        saleDocumentId:
          format: int64
          type: integer
        saleDocument:
          $ref: '#/components/schemas/SaleDocument'
        name:
          type: string
        description:
          type: string
        assignedToUsers:
          type: array
          items:
            $ref: '#/components/schemas/User'
        assignedToContacts:
          type: array
          items:
            $ref: '#/components/schemas/Contact'
        htmlBody:
          $ref: '#/components/schemas/Blob'
        dueDate:
          format: date-time
          type: string
        taskCompleteDate:
          format: date-time
          type: string
        startDateTime:
          format: date-time
          type: string
        endDateTime:
          format: date-time
          type: string
        isAllDayActivity:
          type: boolean
        location:
          type: string
        status:
          enum:
          - NotCompleted
          - InProgress
          - Completed
          - Conditional
          type: string
        mandrillId:
          type: string
        isPrivate:
          type: boolean
        priority:
          enum:
          - Low
          - Medium
          - High
          type: string
        isSendNotificationEmail:
          type: boolean
        isSendCompletedEmail:
          type: boolean
        isSendTaskCompleteEmail:
          type: boolean
        isRecurringActivity:
          type: boolean
        recurringActivityStartDate:
          format: date-time
          type: string
        recurringActivityEndDate:
          format: date-time
          type: string
        recurringRepeatType:
          enum:
          - None
          - Daily
          - Weekly
          - Monthly
          - Yearly
          type: string
        callType:
          enum:
          - Inbound
          - Outbound
          type: string
        tags:
          type: array
          items:
            $ref: '#/components/schemas/Tag'
        eventColor:
          type: string
        emailProperties:
          $ref: '#/components/schemas/EmailProperties'
        noteProperties:
          $ref: '#/components/schemas/NoteProperties'
        callProperties:
          $ref: '#/components/schemas/CallProperties'
        timeEntries:
          type: array
          items:
            $ref: '#/components/schemas/TimeEntry'
        flatFees:
          type: array
          items:
            $ref: '#/components/schemas/FlatFee'
        eventBackgroundColor:
          type: string
        blobs:
          type: array
          items:
            $ref: '#/components/schemas/Blob'
        invitees:
          type: array
          items:
            $ref: '#/components/schemas/Invitee'
        activityReminders:
          type: array
          items:
            $ref: '#/components/schemas/ActivityReminder'
        activityConditionalTasks:
          type: array
          items:
            $ref: '#/components/schemas/ActivityConditionalTask'
        completedTask:
          $ref: '#/components/schemas/CompletedTask'
    Expense:
      type: object
      properties:
        blobs:
          type: array
          items:
            $ref: '#/components/schemas/Blob'
        guid:
          format: uuid
          type: string
          example: 00000000-0000-0000-0000-000000000000
        id:
          format: int64
          type: integer
        name:
          type: string
        isDeleted:
          type: boolean
        isEnabled:
          type: boolean
        notes:
          type: string
        description:
          type: string
        isDoNotCharge:
          type: boolean
        accountId:
          format: int64
          pattern: ^(\s*|\d+)$
          type: integer
        isAccountRequired:
          type: boolean
        account:
          $ref: '#/components/schemas/Account'
        projectId:
          format: int64
          pattern: ^(\s*|\d+)$
          type: integer
        isProjectRequired:
          type: boolean
        project:
          $ref: '#/components/schemas/Project'
        accountingAccountId:
          format: int64
          type: integer
        accountingAccount:
          $ref: '#/components/schemas/AccountingAccount'
        productId:
          format: int64
          type: integer
        qty:
          format: double
          type: number
        totalAmount:
          format: double
          type: number
        date:
          format: date-time
          type: string
        amount:
          format: double
          type: number
        isBillable:
          type: boolean
        isBilled:
          type: boolean
        tax1Id:
          format: int64
          type: integer
        tax1:
          $ref: '#/components/schemas/SalesTax'
        tax2Id:
          format: int64
          type: integer
        tax2:
          $ref: '#/components/schemas/SalesTax'
        userId:
          format: int32
          pattern: ^\d+$
          type: integer
        user:
          $ref: '#/components/schemas/User'
        status:
          enum:
          - Billable
          - Billed
          - Paid
          - NotBillable
          type: string
        receipts:
          type: array
          items:
            $ref: '#/components/schemas/Blob'
        primaryReceipt:
          $ref: '#/components/schemas/Blob'
        saleDocumentItemId:
          format: int64
          type: integer
        saleDocumentItem:
          $ref: '#/components/schemas/SaleDocumentItem'
        createdDate:
          format: date-time
          type: string
        lastModifiedDate:
          format: date-time
          type: string
        createdBy:
          $ref: '#/components/schemas/User'
        lastModifiedBy:
          $ref: '#/components/schemas/User'
        tenantId:
          format: int64
          type: integer
        tenant:
          $ref: '#/components/schemas/Tenant'
        costType:
          description: Hard costs are expenses incurred on behalf of a client that require a direct payment by the firm to a vendor. For example if a firm writes a check for a court filing fee, it is considered a hard cost. Soft costs are expenses that are charged to the client but a direct payment is not made to a vendor.
          enum:
          - SoftCost
          - HardCost
          type: string
        hardCostPayment:
          $ref: '#/components/schemas/Payment'
        utbmsCodeId:
          format: int64
          type: integer
        utbmsCode:
          $ref: '#/components/schemas/UtbmsCode'
    ItemRef:
      required:
      - name
      type: object
      properties:
        guid:
          format: uuid
          type: string
          example: 00000000-0000-0000-0000-000000000000
        name:
          type: string
        code:
          type: string
        chartOfAccountId:
          format: int64
          type: integer
    MailAddress:
      type: object
      properties:
        displayName:
          type: string
          readOnly: true
        user:
          type: string
          readOnly: true
        host:
          type: string
          readOnly: true
        address:
          type: string
          readOnly: true
    ProductVendor:
      type: object
      properties:
        id:
          format: int64
          type: integer
        vendorSku:
          type: string
        leadTimeInDays:
          format: double
          type: number
        cost:
          format: double
          type: number
        product:
          $ref: '#/components/schemas/Product'
        account:
          $ref: '#/components/schemas/Account'
        tenant:
          $ref: '#/components/schemas/Tenant'
        isEnabled:
          type: boolean
        isDeleted:
          type: boolean
        createdDate:
          format: date-time
          type: string
        lastModifiedDate:
          format: date-time
          type: string
        createdBy:
          $ref: '#/components/schemas/User'
        lastModifiedBy:
          $ref: '#/components/schemas/User'
    SaleDocumentPayment:
      type: object
      properties:
        guid:
          format: uuid
          type: string
          example: 00000000-0000-0000-0000-000000000000
        id:
          format: int64
          type: integer
        openBalance:
          format: double
          type: number
          readOnly: true
        appliedDate:
          format: date-time
          type: string
        amount:
          format: double
          type: number
        saleDocumentId:
          format: int32
          type: integer
        saleDocument:
          $ref: '#/components/schemas/SaleDocument'
        payment:
          $ref: '#/components/schemas/Payment'
        paymentId:
          format: int64
          type: integer
        creditId:
          format: int64
          type: integer
        credit:
          $ref: '#/components/schemas/Credit'
    Blob:
      type: object
      properties:
        shares:
          type: array
          items:
            $ref: '#/components/schemas/Share'
        guid:
          format: uuid
          type: string
          example: 00000000-0000-0000-0000-000000000000
        isHidden:
          description: If true, the blob will not be visible to the tenant in the list of attachments. Used for invoices etc.
          type: boolean
        id:
          format: int64
          type: integer
        uri:
          type: string
        size:
          format: int64
          type: integer
        type:
          type: string
        description:
          type: string
        name:
          type: string
        containerName:
          type: string
        isEnabled:
          type: boolean
        isDeleted:
          type: boolean
        boxFileId:
          type: string
        dropboxFileId:
          type: string
    CustomFieldSet:
      required:
      - name
      type: object
      properties:
        tenant:
          $ref: '#/components/schemas/Tenant'
        guid:
          format: uuid
          type: string
          example: 00000000-0000-0000-0000-000000000000
        name:
          type: string
        objectType:
          enum:
          - Account
          - Project
          - Contact
          - User
          - Address
          type: string
        customFields:
          type: array
          items:
            $ref: '#/components/schemas/CustomField'
        createdDate:
          format: date-time
          type: string
        lastModifiedDate:
          format: date-time
          type: string
        createdBy:
          $ref: '#/components/schemas/User'
        lastModifiedBy:
          $ref: '#/components/schemas/User'
        isDeleted:
          type: boolean
    UserRef:
      type: object
      properties:
        guid:
          format: uuid
          type: string
          example: 00000000-0000-0000-0000-000000000000
        displayName:
          description: ' '
          type: string
          readOnly: true
        name:
          description: ' '
          type: string
          readOnly: true
        timeZoneId:
          type: string
    Role:
      type: object
      properties:
        isEnabled:
          type: boolean
        isDeleted:
          type: boolean
        isShowFinancialSummary:
          type: boolean
        hourlyRate:
          format: double
          type: number
        guid:
          format: uuid
          type: string
          example: 00000000-0000-0000-0000-000000000000
        id:
          format: int64
          type: integer
        isFullAccess:
          type: boolean
        name:
          type: string
        isRestrictLoginToAllowedIpAddresses:
          description: If set to true, will allow logins only by users that are part of a rolw where IsFullAcces=true or AllowedIpAddresses contains the IP address the logged in from
          type: boolean
        allowedIpAddresses:
          description: To contain a csv string with a list of allowed IP addresses to be used if IsRestrictLoginByIpAddresses = true. Max Length is 100 IP addresses
          type: string
        createdDate:
          format: date-time
          type: string
        lastModifiedDate:
          format: date-time
          type: string
        accessLevels:
          type: array
          items:
            $ref: '#/components/schemas/AccessLevel'
        isTimeEntryTimeLimited:
          type: boolean
    Workflow:
      required:
      - name
      type: object
      properties:
        id:
          format: int64
          type: integer
        guid:
          format: uuid
          type: string
          example: 00000000-0000-0000-0000-000000000000
        name:
          type: string
        description:
          type: string
        isEnabled:
          type: boolean
        isDeleted:
          type: boolean
        createdDate:
          format: date-time
          type: string
        lastModifiedDate:
          format: date-time
          type: string
        createdBy:
          $ref: '#/components/schemas/User'
        lastModifiedBy:
          $ref: '#/components/schemas/User'
        workflowEvents:
          type: array
          items:
            $ref: '#/components/schemas/WorkflowEvent'
        workflowTasks:
          type: array
          items:
            $ref: '#/components/schemas/WorkflowTask'
        tenantId:
          format: int64
          type: integer
        tenant:
          $ref: '#/components/schemas/Tenant'
        sharing:
          enum:
          - Private
          - Public
          type: string
        activities:
          type: array
          items:
            $ref: '#/components/schemas/Activity'
    ContactRef:
      type: object
      properties:
        firstName:
          type: string
        lastName:
          type: string
        middleName:
          type: string
        accountName:
          type: string
        displayName:
          type: string
        guid:
          format: uuid
          type: string
          example: 00000000-0000-0000-0000-000000000000
        email:
          type: string
    RecurringPaymentOccurrence:
      required:
      - recurringPayment
      type: object
      properties:
        guid:
          format: uuid
          type: string
          example: 00000000-0000-0000-0000-000000000000
        lawPayTokenId:
          type: string
        headNoteId:
          type: string
        recurringPaymentGuid:
          format: uuid
          description: 'Used to set the reference in POST and PUT '
          type: string
          example: 00000000-0000-0000-0000-000000000000
        recurringPayment:
          $ref: '#/components/schemas/RecurringPayment'
        payment:
          $ref: '#/components/schemas/Payment'
        invoice:
          $ref: '#/components/schemas/SaleDocument'
        amount:
          format: double
          description: The amount, in terms of the base unit of the owning recurring charge account's currency, to be collected by this occurrence
          type: number
        status:
          description: The status of the occurrence
          enum:
          - Pending
          - Paying
          - Paid
          - Ignored
          - Failed
          - Canceled
          - Active
          - Expired
          - SUCCESSFUL
          - Scheduled
          type: string
        createdDate:
          format: date-time
          type: string
        lastModifiedDate:
          format: date-time
          type: string
        dueDate:
          format: date-time
          description: The date the Gateway will attempt to collect payment for the occurrence
          type: string
        attempts:
          format: int32
          description: The number of attempts made to collect payment on this occurrence
          type: integer
        lastAttempt:
          format: date-time
          description: The last time an attempt was made to collect payment for this occurrence
          type: string
    LawToolboxMatter:
      required:
      - matterNumberLTB
      type: object
      properties:
        id:
          format: uuid
          type: string
          example: 00000000-0000-0000-0000-000000000000
        projectId:
          format: int64
          type: integer
        project:
          $ref: '#/components/schemas/Project'
        matterNumberLTB:
          type: string
        toolsetId:
          type: string
        stateId:
          type: string
        lawToolboxCourtRules:
          type: array
          items:
            $ref: '#/components/schemas/LawToolboxCourtRule'
    SaleDocumentRef:
      required:
      - date
      type: object
      properties:
        guid:
          format: uuid
          type: string
          example: 00000000-0000-0000-0000-000000000000
        number:
          format: int32
          type: integer
        name:
          description: ' '
          type: string
          readOnly: true
        type:
          description: Indicates if this sale document is an Invoice or a Quote
          enum:
          - Invoice
          - Quote
          type: string
        invoiceType:
          description: If this sale document is of type 'invoice', will indicate if this is a sale, refund or credit invoice.
          enum:
          - Sale
          - Refund
          - Credit
          type: string
        date:
          format: date-time
          description: The issue date for this invoice / quote.
          type: string
    Tag:
      type: object
      properties:
        guid:
          format: uuid
          type: string
          example: 00000000-0000-0000-0000-000000000000
        id:
          format: int64
          type: integer
        name:
          type: string
        accounts:
          type: array
          items:
            $ref: '#/components/schemas/Account'
        projects:
          type: array
          items:
            $ref: '#/components/schemas/Project'
        activities:
          type: array
          items:
            $ref: '#/components/schemas/Activity'
        tenantId:
          format: int64
          type: integer
        tenant:
          $ref: '#/components/schemas/Tenant'
        isEnabled:
          type: boolean
        isDeleted:
          type: boolean
        createdDate:
          format: date-time
          type: string
        lastModifiedDate:
          format: date-time
          type: string
        createdById:
          format: int32
          type: integer
        createdBy:
          $ref: '#/components/schemas/User'
        lastModifiedById:
          format: int32
          type: integer
        lastModifiedBy:
          $ref: '#/components/schemas/User'
        tagFor:
          enum:
          - Account
          - Project
          - Activity
          type: string
    SaleDocumentItem:
      type: object
      properties:
        rowIndex:
          format: int32
          type: integer
        guid:
          format: uuid
          type: string
          example: 00000000-0000-0000-0000-000000000000
        id:
          format: int64
          type: integer
        qty:
          format: double
          type: number
        price:
          format: double
          maximum: 2147483647
          minimum: 0
          type: number
        project:
          $ref: '#/components/schemas/Project'
        flatRateProjectId:
          format: int64
          type: integer
        sub:
          format: double
          type: number
        tax1Ref:
          $ref: '#/components/schemas/SalesTax'
        tax2Ref:
          $ref: '#/components/schemas/SalesTax'
        tax1:
          format: double
          type: number
          readOnly: true
        discount:
          format: double
          type: number
          readOnly: true
        itemDiscountPercent:
          format: double
          type: number
        tax2:
          format: double
          type: number
          readOnly: true
        total:
          format: double
          type: number
          readOnly: true
        tax1Data:
          $ref: '#/components/schemas/SalesTaxData'
        tax2Data:
          $ref: '#/components/schemas/SalesTaxData'
        isEnabled:
          type: boolean
        isDeleted:
          type: boolean
        createdDate:
          format: date-time
          type: string
        lastModifiedDate:
          format: date-time
          type: string
        createdBy:
          $ref: '#/components/schemas/User'
        lastModifiedBy:
          $ref: '#/components/schemas/User'
        timeEntries:
          type: array
          items:
            $ref: '#/components/schemas/TimeEntry'
        flatFees:
          type: array
          items:
            $ref: '#/components/schemas/FlatFee'
        expenses:
          type: array
          items:
            $ref: '#/components/schemas/Expense'
        name:
          type: string
        description:
          type: string
        saleDocumentId:
          format: int32
          type: integer
        saleDocument:
          $ref: '#/components/schemas/SaleDocument'
        tenantId:
          format: int64
          type: integer
        tenant:
          $ref: '#/components/schemas/Tenant'
        type:
          enum:
          - RegularItem
          - TimeEntryItem
          - ExpenseItem
          - InterestItem
          - EmptyItem
          type: string
        date:
          format: date-time
          type: string
        userName:
          type: string
        ledesUtbmsCode:
          type: string
        ledesItemCode:
          type: string
        ledesExpenseCode:
          type: string
        ledesTimekeeperClass:
          type: string
        chartOfAccountId:
          format: int64
          type: integer
        chartOfAccount:
          $ref: '#/components/schemas/ChartOfAccount'
    PresetProjectRate:
      required:
      - name
      type: object
      properties:
        id:
          format: uuid
          type: string
          example: 00000000-0000-0000-0000-000000000000
        name:
          type: string
        description:
          type: string
        projectRates:
          type: array
          items:
            $ref: '#/components/schemas/ProjectRate'
        projects:
          type: array
          items:
            $ref: '#/components/schemas/Project'
        isDeleted:
          type: boolean
        isEnabled:
          type: boolean
        createdDate:
          format: date-time
          type: string
        lastModifiedDate:
          format: date-time
          type: string
        createdBy:
          $ref: '#/components/schemas/User'
        lastModifiedBy:
          $ref: '#/components/schemas/User'
        tenant:
          $ref: '#/components/schemas/Tenant'
    ConversationParticipant:
      type: object
      properties:
        guid:
          format: uuid
          type: string
          example: 00000000-0000-0000-0000-000000000000
        conversation:
          $ref: '#/components/schemas/Conversation'
        contact:
          $ref: '#/components/schemas/Contact'
        user:
          $ref: '#/components/schemas/User'
        lastReadDate:
          format: date-time
          type: string
        status:
          enum:
          - Read
          - Unread
          type: string
        isDeleted:
          type: boolean
        isArchived:
          type: boolean
    TwilioTextMessageChat:
      required:
      - contact
      - tenant
      - createdBy
      type: object
      properties:
        id:
          format: uuid
          type: string
          example: 00000000-0000-0000-0000-000000000000
        unreadCount:
          format: int32
          maximum: 2147483647
          minimum: 0
          type: integer
        lastMessageText:
          maxLength: 320
          minLength: 0
          type: string
        isLastMessageIncoming:
          type: boolean
        contact:
          $ref: '#/components/schemas/Contact'
        projects:
          type: array
          items:
            $ref: '#/components/schemas/Project'
        tenant:
          $ref: '#/components/schemas/Tenant'
        createdBy:
          $ref: '#/components/schemas/User'
        createdDate:
          format: date-time
          type: string
        lastMessageSentDate:
          format: date-time
          type: string
    FirmP

# --- truncated at 32 KB (201 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/practicepanther/refs/heads/main/openapi/practicepanther-activity-api-openapi.yml