ServiceChannel Notes API

The Notes API from ServiceChannel — 6 operation(s) for notes.

OpenAPI Specification

servicechannel-notes-api-openapi.yml Raw ↑
swagger: '2.0'
info:
  version: bearer.v1
  title: Fixxbook.Bearer.Api.V1 AfterHours Notes API
  isOdataApi: false
  relativePath: ''
  discoveryPath: docs/bearer.v1
  _isAuthorizedAccess: true
host: sb2fixxbook.servicechannel.com:443
basePath: /api
schemes:
- https
security:
- oauth2: []
tags:
- name: Notes
paths:
  /workorders/{workorderId}/notes:
    get:
      tags:
      - Notes
      summary: Get work order notes
      description: "Returns notes and attachments associated with the specified work order. Notes are sorted in descending order by creation date.\r\n            <br />Learn more about work order notes in [SCU](https://servicechannel.atlassian.net/wiki/x/4oPNKQ)."
      operationId: GETv3_workorders_{workorderId}_notes?paging={paging}
      consumes: []
      produces:
      - application/json
      - text/json
      parameters:
      - name: workorderId
        in: path
        description: "Unique numeric identifier of the work order.\r\n            <br />***Note:*** You need to have access to the WO location per your user settings."
        required: true
        type: integer
        format: int32
      - name: paging
        in: query
        description: "Page numbering to display work order notes.\r\n             • The format is **Page number:Page size**, for example, **1:10**, meaning the 1st page with 10 notes displayed. To view the second page, change the entry to **2:10**.\r\n             • When the field is left empty, you get 10 notes per page with the latest note at the top.\r\n             • To get all WO notes, ensure you specify a large number as the **Page size** that will cover all the notes, for example, **1:9999**."
        required: false
        type: string
      responses:
        '200':
          description: Notes associated with the work order are in the response.
          schema:
            $ref: '#/definitions/ServiceChannel.Services.WebApi.Models.Response.Notes.GetNotesResponse'
        '400':
          description: "The request was not accepted due to bad syntax, missing parameters, insufficient data, etc.\r\n            <br/>Error codes:\r\n            917 &mdash; Invalid work order identifier. Returned if workorderId is &lt;= 0\r\n            922 &mdash; Invalid paging parameter. Returned if paging parameter doesn't correspond to valid format\r\n            922 &mdash; Invalid page number\r\n            922 &mdash; Invalid page size\r\n            502 &mdash; Work order is not found"
          schema:
            $ref: '#/definitions/ServiceChannel.Services.Messaging.ErrorResponse'
        '401':
          description: "The requested resource requires authentication.\r\n            <br/>Error codes:\r\n            504 &mdash; API call rejected by security permissions"
          schema:
            $ref: '#/definitions/ServiceChannel.Services.Messaging.ErrorResponse'
        '404':
          description: The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.
        '500':
          description: "Something went wrong, and the server was unable to complete your request.\r\n            <br/>Error codes:\r\n            501 &mdash; Internal server error"
          schema:
            $ref: '#/definitions/ServiceChannel.Services.Messaging.ErrorResponse'
      deprecated: false
      x-access: Any
    post:
      tags:
      - Notes
      summary: Create a work order note
      description: "Adds a new note to the specified work order. Returns the note ID for a successful request.\r\n            <br />Learn more about work order notes in [SCU](https://servicechannel.atlassian.net/wiki/x/4oPNKQ)."
      operationId: POSTv3_workorders_{workorderId}_notes
      consumes:
      - application/json
      - text/json
      produces:
      - application/json
      - text/json
      parameters:
      - name: workorderId
        in: path
        description: "Unique numeric identifier of the work order where a note should be created.\r\n            _**Note:**_ You need to have access to the WO location per your user settings."
        required: true
        type: integer
        format: int32
      - name: noteRequest
        in: body
        description: Request model for adding a note. Only the `Note` parameter is required.
        required: true
        schema:
          $ref: '#/definitions/ServiceChannel.Services.Messaging.Workorders.CreateWoNoteRequest'
      responses:
        '201':
          description: The note has been created and added to the specified work order.
        '400':
          description: "The request was not accepted due to bad syntax, missing parameters, insufficient data, etc.\r\n            <br/>Error codes:\r\n            100 &mdash; You don't have location access to perform this operation\r\n            503 &mdash; Validation fails. Invalid `WorkOrder Id` or `Note` value\r\n            503 &mdash; Request is empty or null"
          schema:
            $ref: '#/definitions/ServiceChannel.Services.Messaging.ErrorResponse'
        '401':
          description: "The requested resource requires authentication.\r\n            <br/>Error codes:\r\n            504 &mdash; API call rejected by security permissions"
          schema:
            $ref: '#/definitions/ServiceChannel.Services.Messaging.ErrorResponse'
        '403':
          description: "You are not authorized to request this resource, or the resource is unavailable for some reason.\r\n            <br/>Error codes:\r\n            100 &mdash; User is a provider or does not have the *PinnedNotes* FF enabled and is trying to add a pinned note\r\n            100 &mdash; User has no rights to perform this action"
          schema:
            $ref: '#/definitions/ServiceChannel.Services.Messaging.ErrorResponse'
        '500':
          description: Something went wrong, and the server was unable to complete your request.
          schema:
            $ref: '#/definitions/ServiceChannel.Services.Messaging.ErrorResponse'
      deprecated: false
      x-access: Any
  /workorders/{workorderId}/notes/recipients:
    get:
      tags:
      - Notes
      summary: Note email recipients
      description: <para>List of email recipients, who can be added to the list of note followers</para>
      operationId: GETv3_workorders_{workorderId}_notes_recipients?showExcluded={showExcluded}&noteVisibility={noteVisibility}
      consumes: []
      produces:
      - application/json
      - text/json
      parameters:
      - name: workorderId
        in: path
        description: Numeric Id of the Work order to perform action with.
        required: true
        type: integer
        format: int32
      - name: showExcluded
        in: query
        description: If set to true, returns all recipients even those that have 'exclude from note recipient' flag in their setup. False by Default.
        required: false
        type: boolean
        default: false
      - name: noteVisibility
        in: query
        description: NoteVisibility.Public is used by default
        required: false
        type: string
        enum:
        - VisibleToEveryone
        - VisibleToProvider
        - VisibleToClient
        - NotVisible
      responses:
        '200':
          description: Request succeeded and the requested information is in the response.
          schema:
            type: array
            items:
              $ref: '#/definitions/ServiceChannel.Services.Messaging.Notes.EmailRecipientResponse'
        '400':
          description: "Bad Request - the request could not be understood or was missing required parameters.\r\n            <br/>Error codes:\r\n            <br/> 917 - Invalid work order identifier. Returned if workorderId is &lt;= 0;"
          schema:
            $ref: '#/definitions/ServiceChannel.Services.Messaging.ErrorResponse'
        '401':
          description: "Unauthorized indicates that the requested resource requires authentication.\r\n            <br/>Error codes:\r\n            <br/> 504 - API call rejected by security permissions;"
          schema:
            $ref: '#/definitions/ServiceChannel.Services.Messaging.ErrorResponse'
        '404':
          description: The requested resource does not exist on the server.
      deprecated: false
      x-access: Any
  /workorders/{workorderId}/notes/followers:
    post:
      tags:
      - Notes
      summary: Add Followers to Work order notes
      description: <para>Add Followers to Work order.</para>
      operationId: POSTv3_workorders_{workorderId}_notes_followers
      consumes:
      - application/json
      - text/json
      produces:
      - application/json
      - text/json
      parameters:
      - name: workorderId
        in: path
        description: Numeric Id of the Work order to perform action with.
        required: true
        type: integer
        format: int32
      - name: request
        in: body
        description: The request model to perform action with.
        required: true
        schema:
          $ref: '#/definitions/ServiceChannel.Services.Messaging.Workorders.AddFollowersRequest'
      responses:
        '201':
          description: Created indicates that the request resulted in a new resource created before the response was sent.
        '400':
          description: Bad Request - the request could not be understood or was missing required parameters.<br>Error codes:<br>503 - Request data is empty;<br>There is no followers in request;<br>Empty tracking number (workorder Id);
          schema:
            $ref: '#/definitions/ServiceChannel.Services.Messaging.ErrorResponse'
        '404':
          description: Indicates that the requested resource does not exist on the server.
      deprecated: false
      x-access: Any
    delete:
      tags:
      - Notes
      summary: Remove Follower from Work order notes
      description: <para>Remove Follower from Work order.</para>
      operationId: DELETEv3_workorders_{workorderId}_notes_followers?email={email}
      consumes: []
      produces:
      - application/json
      - text/json
      parameters:
      - name: workorderId
        in: path
        description: Numeric Id of the Work order to perform action with.
        required: true
        type: integer
        format: int32
      - name: email
        in: query
        description: The follower email address.
        required: true
        type: string
      responses:
        '200':
          description: Indicates that the request succeeded and that the requested information is in the response.
        '400':
          description: Bad Request - the request could not be understood or was missing required parameters.<br>Error codes:<br>503 - Request data is empty;<br>There is no followers in request;<br>Empty tracking number (workorder Id);
          schema:
            $ref: '#/definitions/ServiceChannel.Services.Messaging.ErrorResponse'
        '404':
          description: Indicates that the requested resource does not exist on the server.
      deprecated: false
      x-access: Any
  /workorders/{workorderId}/notes/{noteId}:
    patch:
      tags:
      - Notes
      summary: Partially update a work order note
      description: "Updates a work order note partially. For example, pins or unpins the work order note. For a successful request, returns the note ID in the response.\r\n            <br />Available behind the *PinnedNotes* feature flag."
      operationId: PATCHv3_workorders_{workorderId}_notes_{noteId}
      consumes:
      - application/json
      - text/json
      produces:
      - application/json
      - text/json
      parameters:
      - name: workorderId
        in: path
        description: Unique numeric identifier of the work order.
        required: true
        type: integer
        format: int32
      - name: noteId
        in: path
        description: 'Unique numeric identifier of the note. To get the `noteId`, run the following method: [GET/workorders/{workorderId}/notes](https://developer.servicechannel.com/swagger/index.html#/Notes/GETv3_workorders_%7BworkorderId%7D_notes%3Fpaging%3D%7Bpaging%7D). One note can be pinned to a single WO at a time.'
        required: true
        type: integer
        format: int64
      - name: request
        in: body
        description: Request model for pinning/unpinning the work order note.
        required: true
        schema:
          $ref: '#/definitions/ServiceChannel.Services.WebApi.Models.Request.Notes.PartialUpdateWorkOrderNoteRequest'
      responses:
        '200':
          description: The work order note was successfully patched.
        '400':
          description: "The request was not accepted due to bad syntax, missing parameters, insufficient data, etc.\r\n            <br/>Error codes:\r\n            503 &mdash; Request data is empty\r\n            503 &mdash; Empty tracking number (workorder Id)\r\n            1301 &mdash; Request is empty or null"
          schema:
            $ref: '#/definitions/ServiceChannel.Services.Messaging.ErrorResponse'
        '401':
          description: "The requested resource requires authentication.\r\n            <br/>Error codes:\r\n            504 &mdash; API call rejected by security permissions"
          schema:
            $ref: '#/definitions/ServiceChannel.Services.Messaging.ErrorResponse'
        '403':
          description: "You are not authorized to request this resource, or the resource is unavailable for some reason.\r\n            <br/>Error codes:\r\n            100 &mdash; User has no rights to perform this action"
          schema:
            $ref: '#/definitions/ServiceChannel.Services.Messaging.ErrorResponse'
        '404':
          description: The requested resource does not exist on the server.
          schema:
            default: false
            type: boolean
        '500':
          description: Something went wrong, and the server was unable to complete your request.
          schema:
            $ref: '#/definitions/ServiceChannel.Services.Messaging.ErrorResponse'
      deprecated: false
      x-access: Subscribers
  /odata/workorders({workorderId})/notes:
    get:
      tags:
      - Notes
      summary: Retrieve work order notes
      description: "Returns work order notes and attachments for the specified WO ID.\r\n            <br />Supports filtering and sorting within the response.\r\n             • **$expand:** Expand a navigation property. For example, enter **`attachments`**. To include specific fields for the expanded property, combine with the **`$select`** query option, for example, **`attachments($select=Id,Name)`**.\r\n             • **$select:** Select a set of properties to return. For example, **`Id,NoteData,CompanyName,CreatedBy`**.\r\n             • **$filter:** Filter notes by the specified property in the response. For example, **`NoteType eq 'UsersNote'`**.\r\n             • **$orderby:** Order notes by the specified property in the response — in ascending **`asc`** or descending **`desc`** order. For example, **`DateCreated asc`** or **`DateCreated desc`**. \r\n             • **$top:** Return the specified number of notes in the response.\r\n             • **$skip:** Skip the specified number of notes in the response.\r\n             • **$count:** Include the count of the matching notes in the response."
      operationId: Notes_GetWorkOrderNotes
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: workorderId
        in: path
        description: Tracking number of the work order.
        required: true
        type: integer
        format: int32
      - name: $expand
        in: query
        description: Expand a navigation property.
        required: false
        type: string
      - name: $select
        in: query
        description: Select a set of properties to return.
        required: false
        type: string
      - name: $filter
        in: query
        description: Filter a collection of resources addressed by a request URL.
        required: false
        type: string
      - name: $orderby
        in: query
        description: Order resources by the specified property in the response.
        required: false
        type: string
      - name: $top
        in: query
        description: Return the specified number of items in the response.
        required: false
        type: integer
      - name: $skip
        in: query
        description: Skip the specified number of items in the response.
        required: false
        type: integer
      - name: $count
        in: query
        description: Include the count of the matching resources in the response.
        required: false
        type: boolean
      responses:
        '200':
          description: Notes associated with the work order are in the response.
          schema:
            type: array
            items:
              $ref: '#/definitions/ServiceChannel.Services.Messaging.Notes.Note'
        '400':
          description: The request was not accepted due to bad syntax, missing parameters, insufficient data, etc.
          schema:
            $ref: '#/definitions/ServiceChannel.Services.Messaging.ErrorResponse'
        '404':
          description: "The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.\r\n        <br/>Error codes:\r\n        502 &mdash; Work order is not found"
          schema:
            $ref: '#/definitions/ServiceChannel.Services.Messaging.ErrorResponse'
      deprecated: false
      x-access: Any
  /odata/workorders({workorderId})/notes({noteId}):
    get:
      tags:
      - Notes
      summary: Get a work order note by note ID
      description: "Returns a specific note that matches the entered work order ID and note ID.\r\n            <br />Supports filtering and sorting within the response.\r\n             • **$expand:** Expand a navigation property. For example, `attachments`. To include specific fields for the expanded property, combine with the `$select` query option, for example, `attachments($select=Id,Name)`. \r\n             • **$select:** Select a set of properties to return. For example, `Id,NoteData,CompanyName,CreatedBy`. \r\n             • **$filter:** Not applicable for this method.\r\n             • **$orderby:** Not applicable for this method.\r\n             • **$top:** Not applicable for this method.\r\n             • **$skip:** Not applicable for this method.\r\n             • **$count:** Include the count of the matching resources in the response."
      operationId: Notes_GetWorkOrderNote
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: noteId
        in: path
        description: Unique numeric identifier of the work order note. To get a note ID, run the [GET/workorders/{workorderId}/notes](https://developer.servicechannel.com/swagger/index.html#/Notes/GETv3_workorders_%7BworkorderId%7D_notes%3Fpaging%3D%7Bpaging%7D) method.
        required: true
        type: integer
        format: int64
      - name: workorderId
        in: path
        description: Unique numeric identifier of the work order.
        required: true
        type: integer
        format: int32
      - name: $expand
        in: query
        description: Expand a navigation property.
        required: false
        type: string
      - name: $select
        in: query
        description: Select a set of properties to return.
        required: false
        type: string
      - name: $filter
        in: query
        description: Filter a collection of resources addressed by a request URL.
        required: false
        type: string
      - name: $orderby
        in: query
        description: Order resources by the specified property in the response.
        required: false
        type: string
      - name: $top
        in: query
        description: Return the specified number of items in the response.
        required: false
        type: integer
      - name: $skip
        in: query
        description: Skip the specified number of items in the response.
        required: false
        type: integer
      - name: $count
        in: query
        description: Include the count of the matching resources in the response.
        required: false
        type: boolean
      responses:
        '200':
          description: The requested work order note is in the response.
          schema:
            type: array
            items:
              $ref: '#/definitions/ServiceChannel.Services.Messaging.Notes.Note'
        '400':
          description: The request was not accepted due to bad syntax, missing parameters, insufficient data, etc.
          schema:
            $ref: '#/definitions/ServiceChannel.Services.Messaging.ErrorResponse'
        '404':
          description: "The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.\r\n        <br/>Error codes:\r\n        502 &mdash; Work order is not found"
          schema:
            $ref: '#/definitions/ServiceChannel.Services.Messaging.ErrorResponse'
      deprecated: false
      x-access: Any
definitions:
  ServiceChannel.Services.WebApi.Models.Request.Notes.PartialUpdateWorkOrderNoteRequest:
    description: Object for pinning/unpinning the work order note.
    type: object
    properties:
      IsPinned:
        description: "Indicates whether the note should be pinned to the top of the notes list. Possible input values:\r\n             • `true`: The note is pinned.\r\n             • `false`: The note isn’t pinned."
        default: false
        type: boolean
  ServiceChannel.Services.WebApi.Models.Response.Notes.GetNotesResponse:
    description: Object containing a collection of notes and their counts.
    type: object
    properties:
      Notes:
        description: Notes associated with the specified work order.
        type: array
        items:
          $ref: '#/definitions/ServiceChannel.Services.WebApi.Models.Response.Notes.NoteResponse'
      AllNotesCount:
        format: int32
        description: Total count of all notes.
        type: integer
      UserNotesCount:
        format: int32
        description: Count of notes created by users.
        type: integer
      SystemNotesCount:
        format: int32
        description: Count of system-generated notes.
        type: integer
  ServiceChannel.Services.Messaging.ErrorResponse:
    description: The error response object
    type: object
    properties:
      ErrorCodes:
        description: The list of error codes. Go to /basics/general/response-codes/#internal-error-codes-and-messages to map error codes to error reasons.
        type: array
        items:
          enum:
          - NotAllowed
          - EmptyProvider
          - InvalidProviderId
          - UnknownProvider
          - ProviderAlreadyExists
          - ProviderIdNotExists
          - TimeoutExpiredError
          - EmptyContract
          - ContractUndefined
          - EmptySubscriber
          - InvalidSubscriberId
          - UnknownSubscriber
          - InactiveSubscriber
          - EmptySubscriberId
          - SubscriberIdNotExists
          - InternalError
          - DataNotFound
          - BadRequest
          - UnAuthorized
          - UnSupportedApplication
          - SubsidiaryUserDisabled
          - EmptyLocation
          - InvalidLocationId
          - UnknownLocation
          - LocationNotBelongsToSubscriber
          - EmptyLocationCountry
          - LocationAlreadyExists
          - InvalidStoreId
          - LocationEmptyState
          - NoAccessToLocation
          - LocationAddressValidationError
          - LocationAddressRequestValidationError
          - InvalidLocationNoteHeader
          - NoAccessToUpdateProtectedNote
          - InvalidBusinessHoursFormat
          - WorkingHoursIntersect
          - InvalidDayOfWeek
          - DuplicateDayOfWeek
          - InvalidBusinessHoursInitialSetup
          - BusinessHoursIsEmpty
          - InvalidHolidayRepeatByType
          - EmptyHolidayListOfDays
          - EmptyHolidayListOfMonths
          - InvalidHolidayMonthName
          - InvalidHolidayNameLength
          - InvalidHolidayRepeatEvery
          - DuplicateMonth
          - InvalidHolidayFrequency
          - InvalidHolidayStartDate
          - InvalidCloseAllDay
          - HolidayDoesNotExist
          - InvalidFormatParameter
          - InvalidLocationCity
          - InvalidLocationZip
          - InvalidLocationLatitude
          - InvalidLocationLongitude
          - InvalidLocationEmail
          - InvalidLocationName
          - InvalidLocationState
          - InvalidLocationAddlAddress
          - InvalidLocationMainAddress
          - InvalidLocationCountry
          - InvalidLocationRegion
          - InvalidLocationDistrict
          - InvalidLocationPhone
          - InvalidLocationContact
          - InvalidLocationFaxNumber
          - LocationCountryNotFound
          - LocationStateNotFound
          - LocationCityNotFound
          - LocationIdNotExists
          - InvalidLocationEmailLength
          - LocationStateIdNotFound
          - IncorrectCombinationStateAndStateId
          - InvalidSubscriberIds
          - InvalidLocalizationSettings
          - LandlordResponsibilityNotFound
          - LandlordResponsibilityAlreadyExists
          - EmptyLocationIds
          - AttachmentNotExist
          - InvalidTradeId
          - InvalidCategoryId
          - InvalidOverrideCategoryId
          - InvalidOverridePriorityId
          - LeaseNoteExceedMaxLength
          - InvalidOverrideProviderRank
          - InvalidOverrideNTE
          - DuplicateRows
          - InvalidPriorityId
          - LocationNotFound
          - EmptyTrade
          - InvalidTrade
          - TradeNotBelongsToSubscriber
          - InvalidPrimaryTrade
          - InvalidTradeForSubscriber
          - InvalidCategoryForSubscriber
          - GlCodeAlreadyExists
          - GlCodeNotExists
          - InvalidGlCodeUpdate
          - EmptyGlCode
          - TradeAlreadyExists
          - InvalidNTETrade
          - TradeNotExists
          - TradeAlreadyInUse
          - TradeWithTheSameNameHasBeenDeleted
          - TradeInUsePMServices
          - TradeInUseProposalError
          - TradeInUseRFPError
          - TradeInUseChecklistError
          - TradeInUseBudgetControl
          - TradeInUseGlCode
          - TradeInUseDynamicProviderAssignments
          - TradeInUseInvoice
          - TradeInUseLandlordResponsibilities
          - TradeInUseWO
          - TradeInUseEquipmentType
          - TradeInUseRFP
          - TradeInUseConnector
          - TradeInUseContractedService
          - TradeInUseIVR
          - TradeInUseSiteAccess
          - TradeInUseGLCodes
          - TradeInUseCIWO
          - TradeInUseOrganizationPermissions
          - TradeСreationError
          - EmptyUser
          - EmptyCreatedBy
          - InvalidUserName
          - NotProviderUser
          - UserHasNoPermissions
          - RestrictedAccount
          - UserAlreadyExists
          - UserHasNoPermissionsEditWO
          - UserEmailAddressIsMissing
          - UserIsNotRTAdmin
          - InvalidSubsriberProviderId
          - LanguageNameNotFound
          - InvalidLanguageId
          - LanguageIdNotFound
          - UseBothSubscriberIdProviderId
          - EmptyWoProblem
          - InvalidWoProblemSource
          - InvalidWoProblemDescription
          - InvalidWoProblemCode
          - InvalidWoStatus
          - InvalidWoNte
          - InvalidWoCaller
          - InvalidWoCallDate
          - InvalidWoScheduledDate
          - InvalidWoScheduledDateGreaterThanMaxAllowed
          - EmptyWoCategory
          - InvalidWoCategory
          - EmptyWoPriority
          - InvalidWoPriority
          - InvalidWoCurrency
          - InvalidWoSetupId
          - AttachmentsRequired
          - InvalidWoIdentifier
          - EquipmentRequired
          - WoNteOverflow
          - InvalidWoPurchaseNumber
          - InvalidWoStateForUpdate
          - InvalidPagingParameter
          - InvalidWoNumber
          - CheckInDenied
          - CheckOutDenied
          - WoScheduledDateLessThenReassignDate
          - WoScheduledDateLessThenCallDate
          - InvalidWoActionReason
          - EmptySubscriberProperty
          - WorkOrderUpdateError
          - MissedWoNteDetails
          - InvalidLinkedWoIdentifier
          - WoIsOnHold
          - InvalidWoTrade
          - InvalidStarScore
          - WorkOrderAlreadyRated
          - AttachmentThumbnailNotAvailable
          - InvalidWoIdentifierOrPin
          - InvalidTimeZoneHeader
          - RefrigerantWasUsedShouldBeYesOrNo
          - CheckInDeniedOutsideGeolocation
          - CheckOutDeniedOutsideGeolocation
          - LeakDetectorAuditShouldBeCreated
          - CheckInOutPremature
          - WorkOrderAttachmentsSizeExceeded
          - WorkOrderNotFound
          - WorkOrderCreateError
          - InvalidWoProjectedCompletionDate
          - InvalidFollowUpWo
          - InvalidWeatherEventId
          - InvalidSiteAuditLinkedWo
          - InvalidSetupId
          - IssueListNotFound
          - InvalidIssueListField
          - SiteAuditCompleted
          - CheckSiteAuditError
          - SaveSiteAuditError
          - RemoveSiteAuditError
          - InactiveTemplateType
          - SiteAuditNotFound
          - SiteAuditUpdateError
          - InvalidSiteAuditParameters
          - InvalidAdditionalApprovalCode
          - InvalidAdditionalApprovalCodeValue
          - AdditionalApprovalCodeIsDisabled
          - InvalidOtherDesc
          - InvalidTax2Name
          - InvoiceInconsistentAmounts
          - InvoiceInvalidTotal
          - InvoiceTotalGreaterNte
          - InvoiceExists
          - CreatingInvoiceError
          - DuplInvNumber
          - InvoiceTotalNull
          - InvComplDateNull
          - InvDateLessComplDate
          - InvoiceNotAuto
          - ESignatureRequired
          - InvWoNotFound
          - InvWrongWoCurr
          - InvWoCurrNotFound
          - InvoicingDisabled
          - InvCreationUnexpectedRes
          - InvoiceInvalidLaborAmount
          - InvoiceInvalidMaterialAmount
          - InvDateOld
          - InvDateGreater
          - InvoiceMaterialDescriptionLengthOverflow
          - InvoiceTaxNotValidated
          - InvoiceMaterialPartNumberLengthOverflow
          - TaxValidationError
          - TaxExemptionError
          - InvalidInvoiceNumber
          - GetApprovalLevelsError
          - InvoiceAddUsersToMliLevelsError
          - InvoiceAddDeleteLocationsToMliLevelUserError
          - InvoiceUpdateMLiLevelError
          - InvoiceDeleteMliLevelError
          - InvoiceDeleteUsersFromMliLevelError
          - ApprovalLevelNameLengthOverflow
          - GstTaxError
          - Tax2Error
          - GetApprovalLevelsAndLocationsByUserError
          - GetAssignedUserShortInfoError
          - AssignAllLocationsToApprovalLevelAndUserError
          - GetLocationsForApprovalLevelAndAssignedUserError
          - GetLocationsBySubscriberError
          - AssignUserWithLocationsToApprovalLevelError
          - ReAssignUserWithLocationsToNewApprovalLevelError
          - ReAssignLocationsToApprovalLevelAndUserError
          - OutstandingBalance
          - InvoiceTaxDetailsEmpty
          - InvoiceTaxDetailsIncorrectSum
          - MultipleUsersForLocationIsNotAllowed
          - UserAssignedToOtherLevel
          - UserDoesNotExist
          - LaborLineItemRequired
          - MaterialLineItemRequired
          - InvoiceDoesntExist
          - InvoiceStarUnstarFailed
          - InvoiceBatchUpdateInvalidInvoiceStatusError
          - InvoiceBatchUpdateLimitExceededError
          - InvoiceNotAvailableForCurrentUser
          - InvoiceBatchUpdateInvalidRuleSetStructure
          - InvoiceBatchUpdateInvalidMliStructure
          - InvoiceBatchUpdateStatusError
          - InvoiceMaterialUnitTypeInvalid
          - ExistingBatchNumber
          - InvoiceResolutionTextRequired
          - GetInvoiceDefaultApprovalCodesError
          - InvoiceInvalidTravelAmount
          - InvoiceTravelDescriptionLengthOverflow
          - InvoiceTravelUnitTypeInvalid
          - TravelLineItemRequired
          - TravelDetailsDisabled
          - OnOffShoreDisabled
          - InvoiceInvalidLaborCount
          - InvoiceInvalidMaterialCount
          - InvoiceInvalidTravelCount
          - SubscriberNotRegisteredForTaxValidation
          - ManyDecimalsInAmountError
       

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