ServiceChannel Notes API
The Notes API from ServiceChannel — 6 operation(s) for notes.
The Notes API from ServiceChannel — 6 operation(s) for notes.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/servicechannel-notes-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: 3.2.0
info:
version: bearer.v1
title: Fixxbook.Bearer.Api.V1 AfterHours Notes API
isOdataApi: false
relativePath: ''
discoveryPath: docs/bearer.v1
_isAuthorizedAccess: true
servers:
- url: https://sb2fixxbook.servicechannel.com:443/api
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.\n <br />Learn more about work order notes in [SCU](https://servicechannel.atlassian.net/wiki/x/4oPNKQ)."
operationId: GETv3_workorders_{workorderId}_notes?paging={paging}
parameters:
- name: workorderId
in: path
description: "Unique numeric identifier of the work order.\n <br />***Note:*** You need to have access to the WO location per your user settings."
required: true
schema:
type: integer
format: int32
- name: paging
in: query
description: "Page numbering to display work order notes.\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**.\n • When the field is left empty, you get 10 notes per page with the latest note at the top.\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
schema:
type: string
responses:
'200':
description: Notes associated with the work order are in the response.
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceChannel.Services.WebApi.Models.Response.Notes.GetNotesResponse'
text/json:
schema:
$ref: '#/components/schemas/ServiceChannel.Services.WebApi.Models.Response.Notes.GetNotesResponse'
'400':
description: "The request was not accepted due to bad syntax, missing parameters, insufficient data, etc.\n <br/>Error codes:\n 917 — Invalid work order identifier. Returned if workorderId is <= 0\n 922 — Invalid paging parameter. Returned if paging parameter doesn't correspond to valid format\n 922 — Invalid page number\n 922 — Invalid page size\n 502 — Work order is not found"
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceChannel.Services.Messaging.ErrorResponse'
text/json:
schema:
$ref: '#/components/schemas/ServiceChannel.Services.Messaging.ErrorResponse'
'401':
description: "The requested resource requires authentication.\n <br/>Error codes:\n 504 — API call rejected by security permissions"
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceChannel.Services.Messaging.ErrorResponse'
text/json:
schema:
$ref: '#/components/schemas/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.\n <br/>Error codes:\n 501 — Internal server error"
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceChannel.Services.Messaging.ErrorResponse'
text/json:
schema:
$ref: '#/components/schemas/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.\n <br />Learn more about work order notes in [SCU](https://servicechannel.atlassian.net/wiki/x/4oPNKQ)."
operationId: POSTv3_workorders_{workorderId}_notes
parameters:
- name: workorderId
in: path
description: "Unique numeric identifier of the work order where a note should be created.\n _**Note:**_ You need to have access to the WO location per your user settings."
required: true
schema:
type: integer
format: int32
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.\n <br/>Error codes:\n 100 — You don't have location access to perform this operation\n 503 — Validation fails. Invalid `WorkOrder Id` or `Note` value\n 503 — Request is empty or null"
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceChannel.Services.Messaging.ErrorResponse'
text/json:
schema:
$ref: '#/components/schemas/ServiceChannel.Services.Messaging.ErrorResponse'
'401':
description: "The requested resource requires authentication.\n <br/>Error codes:\n 504 — API call rejected by security permissions"
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceChannel.Services.Messaging.ErrorResponse'
text/json:
schema:
$ref: '#/components/schemas/ServiceChannel.Services.Messaging.ErrorResponse'
'403':
description: "You are not authorized to request this resource, or the resource is unavailable for some reason.\n <br/>Error codes:\n 100 — User is a provider or does not have the *PinnedNotes* FF enabled and is trying to add a pinned note\n 100 — User has no rights to perform this action"
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceChannel.Services.Messaging.ErrorResponse'
text/json:
schema:
$ref: '#/components/schemas/ServiceChannel.Services.Messaging.ErrorResponse'
'500':
description: Something went wrong, and the server was unable to complete your request.
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceChannel.Services.Messaging.ErrorResponse'
text/json:
schema:
$ref: '#/components/schemas/ServiceChannel.Services.Messaging.ErrorResponse'
deprecated: false
x-access: Any
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceChannel.Services.Messaging.Workorders.CreateWoNoteRequest'
text/json:
schema:
$ref: '#/components/schemas/ServiceChannel.Services.Messaging.Workorders.CreateWoNoteRequest'
description: Request model for adding a note. Only the `Note` parameter is required.
required: true
/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}¬eVisibility={noteVisibility}
parameters:
- name: workorderId
in: path
description: Numeric Id of the Work order to perform action with.
required: true
schema:
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
schema:
type: boolean
default: false
- name: noteVisibility
in: query
description: NoteVisibility.Public is used by default
required: false
schema:
type: string
enum:
- VisibleToEveryone
- VisibleToProvider
- VisibleToClient
- NotVisible
responses:
'200':
description: Request succeeded and the requested information is in the response.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ServiceChannel.Services.Messaging.Notes.EmailRecipientResponse'
text/json:
schema:
type: array
items:
$ref: '#/components/schemas/ServiceChannel.Services.Messaging.Notes.EmailRecipientResponse'
'400':
description: "Bad Request - the request could not be understood or was missing required parameters.\n <br/>Error codes:\n <br/> 917 - Invalid work order identifier. Returned if workorderId is <= 0;"
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceChannel.Services.Messaging.ErrorResponse'
text/json:
schema:
$ref: '#/components/schemas/ServiceChannel.Services.Messaging.ErrorResponse'
'401':
description: "Unauthorized indicates that the requested resource requires authentication.\n <br/>Error codes:\n <br/> 504 - API call rejected by security permissions;"
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceChannel.Services.Messaging.ErrorResponse'
text/json:
schema:
$ref: '#/components/schemas/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
parameters:
- name: workorderId
in: path
description: Numeric Id of the Work order to perform action with.
required: true
schema:
type: integer
format: int32
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);
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceChannel.Services.Messaging.ErrorResponse'
text/json:
schema:
$ref: '#/components/schemas/ServiceChannel.Services.Messaging.ErrorResponse'
'404':
description: Indicates that the requested resource does not exist on the server.
deprecated: false
x-access: Any
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceChannel.Services.Messaging.Workorders.AddFollowersRequest'
text/json:
schema:
$ref: '#/components/schemas/ServiceChannel.Services.Messaging.Workorders.AddFollowersRequest'
description: The request model to perform action with.
required: true
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}
parameters:
- name: workorderId
in: path
description: Numeric Id of the Work order to perform action with.
required: true
schema:
type: integer
format: int32
- name: email
in: query
description: The follower email address.
required: true
schema:
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);
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceChannel.Services.Messaging.ErrorResponse'
text/json:
schema:
$ref: '#/components/schemas/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.\n <br />Available behind the *PinnedNotes* feature flag."
operationId: PATCHv3_workorders_{workorderId}_notes_{noteId}
parameters:
- name: workorderId
in: path
description: Unique numeric identifier of the work order.
required: true
schema:
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
schema:
type: integer
format: int64
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.\n <br/>Error codes:\n 503 — Request data is empty\n 503 — Empty tracking number (workorder Id)\n 1301 — Request is empty or null"
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceChannel.Services.Messaging.ErrorResponse'
text/json:
schema:
$ref: '#/components/schemas/ServiceChannel.Services.Messaging.ErrorResponse'
'401':
description: "The requested resource requires authentication.\n <br/>Error codes:\n 504 — API call rejected by security permissions"
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceChannel.Services.Messaging.ErrorResponse'
text/json:
schema:
$ref: '#/components/schemas/ServiceChannel.Services.Messaging.ErrorResponse'
'403':
description: "You are not authorized to request this resource, or the resource is unavailable for some reason.\n <br/>Error codes:\n 100 — User has no rights to perform this action"
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceChannel.Services.Messaging.ErrorResponse'
text/json:
schema:
$ref: '#/components/schemas/ServiceChannel.Services.Messaging.ErrorResponse'
'404':
description: The requested resource does not exist on the server.
content:
application/json:
schema:
default: false
type: boolean
text/json:
schema:
default: false
type: boolean
'500':
description: Something went wrong, and the server was unable to complete your request.
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceChannel.Services.Messaging.ErrorResponse'
text/json:
schema:
$ref: '#/components/schemas/ServiceChannel.Services.Messaging.ErrorResponse'
deprecated: false
x-access: Subscribers
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceChannel.Services.WebApi.Models.Request.Notes.PartialUpdateWorkOrderNoteRequest'
text/json:
schema:
$ref: '#/components/schemas/ServiceChannel.Services.WebApi.Models.Request.Notes.PartialUpdateWorkOrderNoteRequest'
description: Request model for pinning/unpinning the work order note.
required: true
/odata/workorders({workorderId})/notes:
get:
tags:
- Notes
summary: Retrieve work order notes
description: "Returns work order notes and attachments for the specified WO ID.\n <br />Supports filtering and sorting within the response.\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)`**.\n • **$select:** Select a set of properties to return. For example, **`Id,NoteData,CompanyName,CreatedBy`**.\n • **$filter:** Filter notes by the specified property in the response. For example, **`NoteType eq 'UsersNote'`**.\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`**. \n • **$top:** Return the specified number of notes in the response.\n • **$skip:** Skip the specified number of notes in the response.\n • **$count:** Include the count of the matching notes in the response."
operationId: Notes_GetWorkOrderNotes
parameters:
- name: workorderId
in: path
description: Tracking number of the work order.
required: true
schema:
type: integer
format: int32
- name: $expand
in: query
description: Expand a navigation property.
required: false
schema:
type: string
- name: $select
in: query
description: Select a set of properties to return.
required: false
schema:
type: string
- name: $filter
in: query
description: Filter a collection of resources addressed by a request URL.
required: false
schema:
type: string
- name: $orderby
in: query
description: Order resources by the specified property in the response.
required: false
schema:
type: string
- name: $top
in: query
description: Return the specified number of items in the response.
required: false
schema:
type: integer
- name: $skip
in: query
description: Skip the specified number of items in the response.
required: false
schema:
type: integer
- name: $count
in: query
description: Include the count of the matching resources in the response.
required: false
schema:
type: boolean
responses:
'200':
description: Notes associated with the work order are in the response.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ServiceChannel.Services.Messaging.Notes.Note'
'400':
description: The request was not accepted due to bad syntax, missing parameters, insufficient data, etc.
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceChannel.Services.Messaging.ErrorResponse'
'404':
description: "The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.\n <br/>Error codes:\n 502 — Work order is not found"
content:
application/json:
schema:
$ref: '#/components/schemas/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.\n <br />Supports filtering and sorting within the response.\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)`. \n • **$select:** Select a set of properties to return. For example, `Id,NoteData,CompanyName,CreatedBy`. \n • **$filter:** Not applicable for this method.\n • **$orderby:** Not applicable for this method.\n • **$top:** Not applicable for this method.\n • **$skip:** Not applicable for this method.\n • **$count:** Include the count of the matching resources in the response."
operationId: Notes_GetWorkOrderNote
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
schema:
type: integer
format: int64
- name: workorderId
in: path
description: Unique numeric identifier of the work order.
required: true
schema:
type: integer
format: int32
- name: $expand
in: query
description: Expand a navigation property.
required: false
schema:
type: string
- name: $select
in: query
description: Select a set of properties to return.
required: false
schema:
type: string
- name: $filter
in: query
description: Filter a collection of resources addressed by a request URL.
required: false
schema:
type: string
- name: $orderby
in: query
description: Order resources by the specified property in the response.
required: false
schema:
type: string
- name: $top
in: query
description: Return the specified number of items in the response.
required: false
schema:
type: integer
- name: $skip
in: query
description: Skip the specified number of items in the response.
required: false
schema:
type: integer
- name: $count
in: query
description: Include the count of the matching resources in the response.
required: false
schema:
type: boolean
responses:
'200':
description: The requested work order note is in the response.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ServiceChannel.Services.Messaging.Notes.Note'
'400':
description: The request was not accepted due to bad syntax, missing parameters, insufficient data, etc.
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceChannel.Services.Messaging.ErrorResponse'
'404':
description: "The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.\n <br/>Error codes:\n 502 — Work order is not found"
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceChannel.Services.Messaging.ErrorResponse'
deprecated: false
x-access: Any
components:
schemas:
ServiceChannel.Services.WebApi.Models.Response.Notes.NoteResponse:
description: Object containing note details.
type: object
properties:
Id:
format: int64
description: Unique numeric identifier of the work order note.
type: integer
DocumentId:
description: Unique universal identifier of the work order note.
type: string
Number:
format: int32
description: Sequential number of the note.
type: integer
NoteData:
description: Content of the note.
type: string
DateCreated:
format: date-time
description: Date and time when the note was added to the work order. The format is `YYYY-MM-DDThh:mm:ss.sssssssZ`.
type: string
ScheduledDate:
format: date-time
description: Scheduled date of the work order. The format is `YYYY-MM-DDThh:mm:ssZ`.
type: string
FollowUpDate:
format: date-time
description: Follow-up date specified on the note is used to revisit a work order at a later time, for example, to ensure the provider clocked in or updated the work order by the specified date. The format is `YYYY-MM-DDThh:mm:ssZ`.
type: string
ActionRequired:
description: Indicates whether the recipient of the note is required to take further action on a work order. Check also the `ActionResolveDetails` parameter to see if the issue has been resolved.
default: false
type: boolean
MailedTo:
description: Email address(es) to which the note has been sent.
type: string
CreatedBy:
description: Describes who created the note.
type: string
CompanyName:
description: Name of the subscriber or provider company associated with the note.
type: string
Attachments:
description: Files added along with the note.
type: array
items:
$ref: '#/components/schemas/ServiceChannel.Services.WebApi.Models.Response.Notes.NoteAttachmentResponse'
Visibility:
format: byte
description: "Defines which parties can view the note. Visibility also works in Universal Connector, where there are three primary parties: *Subscriber*, *External Subscriber*, and *Provider*. Possible response values: \n • `0`: Visible to everyone (subscriber, external subscriber, provider).\n • `1`: Visible to the subscriber and the provider. Not visible to the external subscriber.\n • `2`: Visible to the subscriber and the external subscriber. Not visible to the provider.\n • `3`: Visible to the subscriber only.\n <br />Available with the *PrivateProviderNotesAndAttachments* feature flag. For Universal Connector clients, the *PrivateClientNotesAndAttachments* feature should be turned on."
type: string
NoteType:
description: "Type of the note:\n • `SystemNote`: Notes added automatically by the system.\n • `UsersNote`: Notes posted by users."
type: string
IsAttachmentNote:
description: Indicates whether the note serves as an attachment note.
default: false
type: boolean
IsPinned:
description: "Indicates whether the note is pinned to the top of the notes list. Possible response values:\n • `true`: The note is pinned, signifying the most important or pressing note right now for this work order. Only one note can be pinned on a single work order.\n • `false`: The note isn’t pinned.\n <br />Available with the *PinnedNotes* feature flag."
default: false
type: boolean
ActionResolveDetails:
$ref: '#/components/schemas/ServiceChannel.Services.WebApi.Models.Response.Notes.ActionResolveDetailsResponse'
description: Applicable to notes that were marked with the **Action Required** flag. Shows whether the issue has been resolved.
ServiceChannel.Services.Messaging.Attachments.Attachment:
description: Object containing information about an attachment.
type: object
properties:
Id:
format: int32
description: Unique numeric identifier of the attachment.
type: integer
Description:
description: Optional text that a user added when uploading the attachment. The maximum character count is 200.
type: string
Name:
description: Attachment name.
type: string
TimeStamp:
format: date-time
description: Date and time when the attachment was uploaded. The format is `YYYY-MM-DDThh:mm:ss.sss±hh:mm`, where `±hh:mm` represents the time zone offset from UTC.
type: string
Uri:
description: Link address to the attachment in the ServiceChannel system.
type: string
NoteId:
format: int64
description: Unique numeric identifier of the note to which a user added the attachment.
type: integer
Visibility:
format: int32
description: "Visibility status of the attachment. Defines which parties can view the attachment. The *PrivateProviderNotesAndAttachments* feature should be enabled. For subscribers who are using Universal Connector, the *PrivateClientNotesAndAttachments* feature should be enabled.\n <br />Possible values:\n • `0`: No restrictions on visibility. Visible to everyone.\n • `1`: Not visible to the client. The subscriber deselected the “Visible to Client” checkmark when uploading an attachment or adding a note with an attachment. \n • `2`: Not visible to the provider. The subscriber deselected the “Visible to Provider” checkmark when uploading an attachment or adding a note with an attachment. \n • `3`: Visible to the subscriber only. The subscriber deselected the “Visible to Client” and “Visible to Provider” checkmarks when uploading an attachment or adding a note with an attachment."
type: integer
IsInvoiceDigitalCopy:
description: "Defines if the attachment is a digital copy of the provider’s invoice. According to subscriber configurations, some providers should attach digital copies of invoices.\n Possible values: \n • `true`: The attachment is an invoice digital copy. \n • `false`: The attachment is not an invoice digital copy. \n <br />***Note:*** Subscribers can set the requirement of a digital invoice copy from providers when the *InvoiceRequireDigitalCopy* feature is turned on."
default: false
type: boolean
UploadBy:
description: User who uploaded the attachment.
type: string
ServiceChannel.Services.WebApi.Models.Request.Notes.PartialUpdateWorkOrderNoteRequest:
description: Object
# --- truncated at 32 KB (111 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/servicechannel/refs/heads/main/openapi/servicechannel-notes-api-openapi.yml