Commusoft Diary Events API

Manage calendar and scheduling diary events

OpenAPI Specification

commusoft-diary-events-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Commusoft Authentication Diary Events API
  description: The Commusoft API is a RESTful JSON-based API designed to allow third parties to integrate products and applications with Commusoft's field service management platform. It enables programmatic management of jobs, customers, engineers, quotes, invoices, parts, and service histories for trades businesses including HVAC, plumbing, electrical, and building maintenance contractors. The API supports integrations with accounting tools (QuickBooks, Xero, Sage), payment processors (Stripe, GoCardless), and workflow automation platforms (Zapier).
  version: 1.0.0
  contact:
    url: https://www.commusoft.com/
  x-api-id: commusoft-api
  x-audience: external-partner
servers:
- url: https://api.commusoft.com/api/v1
  description: Commusoft production API server
security:
- ApiTokenHeader: []
- ApiTokenQuery: []
tags:
- name: Diary Events
  description: Manage calendar and scheduling diary events
paths:
  /diary:
    get:
      operationId: listDiaryEvents
      summary: List Diary Events
      description: Retrieve calendar and scheduling diary events.
      tags:
      - Diary Events
      responses:
        '200':
          description: List of diary events
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DiaryEvent'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createDiaryEvent
      summary: Create Diary Event
      description: Add a new diary event entry.
      tags:
      - Diary Events
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DiaryEventInput'
      responses:
        '201':
          description: Diary event created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DiaryEvent'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /diary/{uuid}:
    get:
      operationId: getDiaryEvent
      summary: Get Diary Event
      description: Retrieve a specific diary event by UUID.
      tags:
      - Diary Events
      parameters:
      - $ref: '#/components/parameters/UuidPath'
      responses:
        '200':
          description: Diary event record
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DiaryEvent'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: updateDiaryEvent
      summary: Update Diary Event
      description: Edit an existing diary event identified by UUID.
      tags:
      - Diary Events
      parameters:
      - $ref: '#/components/parameters/UuidPath'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DiaryEventInput'
      responses:
        '200':
          description: Diary event updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DiaryEvent'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  schemas:
    Error:
      type: object
      properties:
        message:
          type: string
          description: Human-readable error message
        code:
          type: integer
          description: Error code
    DiaryEventInput:
      type: object
      required:
      - title
      - startDateTime
      - endDateTime
      properties:
        uuid:
          type: string
          format: uuid
        title:
          type: string
        description:
          type: string
        startDateTime:
          type: string
          format: date-time
        endDateTime:
          type: string
          format: date-time
        engineerUuid:
          type: string
          format: uuid
        customerUuid:
          type: string
          format: uuid
        jobUuid:
          type: string
          format: uuid
        eventType:
          type: string
    DiaryEvent:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
        uuid:
          type: string
          format: uuid
          readOnly: true
        title:
          type: string
          description: Title of the diary event
        description:
          type: string
          description: Detailed description of the event
        startDateTime:
          type: string
          format: date-time
          description: Event start date and time
        endDateTime:
          type: string
          format: date-time
          description: Event end date and time
        engineerUuid:
          type: string
          format: uuid
          description: UUID of the engineer assigned to this event
        customerUuid:
          type: string
          format: uuid
          description: UUID of the related customer
        jobUuid:
          type: string
          format: uuid
          description: UUID of the related job
        eventType:
          type: string
          description: Type/category of the diary event
        createdAt:
          type: string
          format: date-time
          readOnly: true
        updatedAt:
          type: string
          format: date-time
          readOnly: true
  responses:
    Unauthorized:
      description: Authentication token missing or invalid
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    BadRequest:
      description: Invalid request body or parameters
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  parameters:
    UuidPath:
      name: uuid
      in: path
      required: true
      description: Unique identifier (UUID) of the record
      schema:
        type: string
        format: uuid
  securitySchemes:
    ApiTokenHeader:
      type: apiKey
      in: header
      name: X-Auth-Token
      description: API token obtained from the /getToken endpoint
    ApiTokenQuery:
      type: apiKey
      in: query
      name: token
      description: API token passed as a query parameter