Kaseya Contacts API

The Contacts API from Kaseya — 13 operation(s) for contacts.

Operations 17

GET /V1.0/Contacts/query #
POST /V1.0/Contacts/query #
GET /V1.0/Contacts/{id} #
GET /V1.0/Contacts/query/count #
POST /V1.0/Contacts/query/count #
GET /V1.0/Contacts/entityInformation #
GET /V1.0/Contacts/entityInformation/fields #
GET /V1.0/Contacts/entityInformation/userDefinedFields #
POST /v2/crm/contacts/summary #
GET /v2/crm/contacts/summary #
GET /v2/crm/contacts/summary/{id} #
PUT /v2/crm/contacts/{id} #
PATCH /v2/crm/contacts/{id} #
GET /v2/crm/contacts/search #
DELETE /v2/crm/contacts/{Id} #
PATCH /v2/crm/contacts/{contactId}/emails #
PATCH /v2/crm/contacts/{contactId}/phones #

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/kaseya-contacts-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

kaseya-contacts-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Kaseya Contacts API
  version: '1.0'
  description: 'Operations tagged Contacts across 2 of this provider''s published API definitions: kaseya-autotask-psa-openapi-original.json, kaseya-bms-openapi-original.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://webservices2.autotask.net/ATServicesRest
- url: https://api.bms.kaseya.com
tags:
- name: Contacts
paths:
  /V1.0/Contacts/query:
    get:
      tags:
      - Contacts
      operationId: Contacts_UrlParameterQuery
      parameters:
      - name: search
        in: query
        required: true
        schema:
          type: string
      - name: ApiIntegrationCode
        in: header
        description: API Integration Code
        required: true
        schema:
          type: string
      - name: UserName
        in: header
        description: User Name
        required: true
        schema:
          type: string
      - name: Secret
        in: header
        description: Secret
        required: true
        schema:
          type: string
      - name: ImpersonationResourceId
        in: header
        description: Impersonation Resource Key
        required: false
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QueryActionResult_ContactModel_Contact'
            text/json:
              schema:
                $ref: '#/components/schemas/QueryActionResult_ContactModel_Contact'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
    post:
      tags:
      - Contacts
      operationId: Contacts_Query
      parameters:
      - name: ApiIntegrationCode
        in: header
        description: API Integration Code
        required: true
        schema:
          type: string
      - name: UserName
        in: header
        description: User Name
        required: true
        schema:
          type: string
      - name: Secret
        in: header
        description: Secret
        required: true
        schema:
          type: string
      - name: ImpersonationResourceId
        in: header
        description: Impersonation Resource Key
        required: false
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QueryActionResult_ContactModel_Contact'
            text/json:
              schema:
                $ref: '#/components/schemas/QueryActionResult_ContactModel_Contact'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryModel'
        required: true
    servers:
    - url: https://webservices2.autotask.net/ATServicesRest
  /V1.0/Contacts/{id}:
    get:
      tags:
      - Contacts
      operationId: Contacts_QueryItem
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: ApiIntegrationCode
        in: header
        description: API Integration Code
        required: true
        schema:
          type: string
      - name: UserName
        in: header
        description: User Name
        required: true
        schema:
          type: string
      - name: Secret
        in: header
        description: Secret
        required: true
        schema:
          type: string
      - name: ImpersonationResourceId
        in: header
        description: Impersonation Resource Key
        required: false
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ItemQueryResultModel_ContactModel_Contact'
            text/json:
              schema:
                $ref: '#/components/schemas/ItemQueryResultModel_ContactModel_Contact'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
    servers:
    - url: https://webservices2.autotask.net/ATServicesRest
  /V1.0/Contacts/query/count:
    get:
      tags:
      - Contacts
      operationId: Contacts_UrlParameterQueryCount
      parameters:
      - name: search
        in: query
        required: true
        schema:
          type: string
      - name: ApiIntegrationCode
        in: header
        description: API Integration Code
        required: true
        schema:
          type: string
      - name: UserName
        in: header
        description: User Name
        required: true
        schema:
          type: string
      - name: Secret
        in: header
        description: Secret
        required: true
        schema:
          type: string
      - name: ImpersonationResourceId
        in: header
        description: Impersonation Resource Key
        required: false
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QueryCountResultModel'
            text/json:
              schema:
                $ref: '#/components/schemas/QueryCountResultModel'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
    post:
      tags:
      - Contacts
      operationId: Contacts_QueryCount
      parameters:
      - name: ApiIntegrationCode
        in: header
        description: API Integration Code
        required: true
        schema:
          type: string
      - name: UserName
        in: header
        description: User Name
        required: true
        schema:
          type: string
      - name: Secret
        in: header
        description: Secret
        required: true
        schema:
          type: string
      - name: ImpersonationResourceId
        in: header
        description: Impersonation Resource Key
        required: false
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QueryCountResultModel'
            text/json:
              schema:
                $ref: '#/components/schemas/QueryCountResultModel'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryModel'
        required: true
    servers:
    - url: https://webservices2.autotask.net/ATServicesRest
  /V1.0/Contacts/entityInformation:
    get:
      tags:
      - Contacts
      operationId: Contacts_QueryEntityInformation
      parameters:
      - name: ApiIntegrationCode
        in: header
        description: API Integration Code
        required: true
        schema:
          type: string
      - name: UserName
        in: header
        description: User Name
        required: true
        schema:
          type: string
      - name: Secret
        in: header
        description: Secret
        required: true
        schema:
          type: string
      - name: ImpersonationResourceId
        in: header
        description: Impersonation Resource Key
        required: false
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntityInformationResultModel'
            text/json:
              schema:
                $ref: '#/components/schemas/EntityInformationResultModel'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
    servers:
    - url: https://webservices2.autotask.net/ATServicesRest
  /V1.0/Contacts/entityInformation/fields:
    get:
      tags:
      - Contacts
      operationId: Contacts_QueryFieldDefinitions
      parameters:
      - name: ApiIntegrationCode
        in: header
        description: API Integration Code
        required: true
        schema:
          type: string
      - name: UserName
        in: header
        description: User Name
        required: true
        schema:
          type: string
      - name: Secret
        in: header
        description: Secret
        required: true
        schema:
          type: string
      - name: ImpersonationResourceId
        in: header
        description: Impersonation Resource Key
        required: false
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FieldInformationResultModel'
            text/json:
              schema:
                $ref: '#/components/schemas/FieldInformationResultModel'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
    servers:
    - url: https://webservices2.autotask.net/ATServicesRest
  /V1.0/Contacts/entityInformation/userDefinedFields:
    get:
      tags:
      - Contacts
      operationId: Contacts_QueryUserDefinedFieldDefinitions
      parameters:
      - name: ApiIntegrationCode
        in: header
        description: API Integration Code
        required: true
        schema:
          type: string
      - name: UserName
        in: header
        description: User Name
        required: true
        schema:
          type: string
      - name: Secret
        in: header
        description: Secret
        required: true
        schema:
          type: string
      - name: ImpersonationResourceId
        in: header
        description: Impersonation Resource Key
        required: false
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserDefinedFieldInformationResultModel'
            text/json:
              schema:
                $ref: '#/components/schemas/UserDefinedFieldInformationResultModel'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
    servers:
    - url: https://webservices2.autotask.net/ATServicesRest
  /v2/crm/contacts/summary:
    post:
      tags:
      - Contacts
      operationId: PostContactSummaryInfo
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/ContactInputDto'
          application/json:
            schema:
              $ref: '#/components/schemas/ContactInputDto'
          text/json:
            schema:
              $ref: '#/components/schemas/ContactInputDto'
          application/*+json:
            schema:
              $ref: '#/components/schemas/ContactInputDto'
      responses:
        '200':
          description: OK
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ContactSummaryOutputDtoResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ContactSummaryOutputDtoResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ContactSummaryOutputDtoResponse'
      security:
      - bearerAuth: []
    get:
      tags:
      - Contacts
      operationId: GetContactsListSummary
      parameters:
      - name: Filter.AccountId
        in: query
        schema:
          type: integer
          format: int32
      - name: Filter.AccountName
        in: query
        schema:
          type: string
      - name: Filter.FirstName
        in: query
        schema:
          type: string
      - name: Filter.LastName
        in: query
        schema:
          type: string
      - name: Filter.Phone
        in: query
        schema:
          type: string
      - name: Filter.Email
        in: query
        schema:
          type: string
      - name: Filter.CreatedOnFrom
        in: query
        schema:
          type: string
          format: date-time
      - name: Filter.CreatedOnTo
        in: query
        schema:
          type: string
          format: date-time
      - name: Filter.ModifiedOnFrom
        in: query
        schema:
          type: string
          format: date-time
      - name: Filter.ModifiedOnTo
        in: query
        schema:
          type: string
          format: date-time
      - name: Filter.IsActive
        in: query
        schema:
          type: boolean
      - name: Sort
        in: query
        schema:
          type: string
      - name: Exclude
        in: query
        schema:
          type: string
      - name: PageSize
        in: query
        schema:
          type: integer
          format: int32
      - name: PageNumber
        in: query
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: OK
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ContactsSummaryOutputDtoIEnumerablePagedResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ContactsSummaryOutputDtoIEnumerablePagedResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ContactsSummaryOutputDtoIEnumerablePagedResponse'
      security:
      - bearerAuth: []
    servers:
    - url: https://api.bms.kaseya.com
  /v2/crm/contacts/summary/{id}:
    get:
      tags:
      - Contacts
      operationId: GetContactSummary
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: OK
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ContactsSummaryOutputDto'
            application/json:
              schema:
                $ref: '#/components/schemas/ContactsSummaryOutputDto'
            text/json:
              schema:
                $ref: '#/components/schemas/ContactsSummaryOutputDto'
      security:
      - bearerAuth: []
    servers:
    - url: https://api.bms.kaseya.com
  /v2/crm/contacts/{id}:
    put:
      tags:
      - Contacts
      operationId: PutContact
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
          format: int32
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/ContactPutInputDto'
          application/json:
            schema:
              $ref: '#/components/schemas/ContactPutInputDto'
          text/json:
            schema:
              $ref: '#/components/schemas/ContactPutInputDto'
          application/*+json:
            schema:
              $ref: '#/components/schemas/ContactPutInputDto'
      responses:
        '200':
          description: OK
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ContactOutputDtoResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ContactOutputDtoResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ContactOutputDtoResponse'
      security:
      - bearerAuth: []
    patch:
      tags:
      - Contacts
      operationId: PatchContact
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
          format: int32
      requestBody:
        content:
          application/json-patch+json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/Operation'
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/Operation'
          text/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/Operation'
          application/*+json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/Operation'
      responses:
        '200':
          description: OK
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ContactOutputDtoResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ContactOutputDtoResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ContactOutputDtoResponse'
      security:
      - bearerAuth: []
    servers:
    - url: https://api.bms.kaseya.com
  /v2/crm/contacts/search:
    get:
      tags:
      - Contacts
      operationId: GetContactsSearch
      parameters:
      - name: Filter.Ids
        in: query
        schema:
          type: array
          items:
            type: integer
            format: int32
      - name: Filter.AccountIds
        in: query
        schema:
          type: array
          items:
            type: integer
            format: int32
      - name: Filter.AccountName
        in: query
        schema:
          type: string
      - name: Filter.LocationId
        in: query
        schema:
          type: integer
          format: int32
      - name: Filter.LocationName
        in: query
        schema:
          type: string
      - name: Filter.FirstName
        in: query
        schema:
          type: string
      - name: Filter.LastName
        in: query
        schema:
          type: string
      - name: Filter.EmailAddress
        in: query
        schema:
          type: string
      - name: Filter.JobTitle
        in: query
        schema:
          type: string
      - name: Filter.IsPoc
        in: query
        schema:
          type: boolean
      - name: Filter.HasClientPortalAccess
        in: query
        schema:
          type: boolean
      - name: Filter.IsActive
        in: query
        schema:
          type: boolean
      - name: Sort
        in: query
        schema:
          type: string
      - name: Exclude
        in: query
        schema:
          type: string
      - name: PageSize
        in: query
        schema:
          type: integer
          format: int32
      - name: PageNumber
        in: query
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: OK
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ContactsSearchSelectOutputDtoListResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ContactsSearchSelectOutputDtoListResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ContactsSearchSelectOutputDtoListResponse'
      security:
      - bearerAuth: []
    servers:
    - url: https://api.bms.kaseya.com
  /v2/crm/contacts/{Id}:
    delete:
      tags:
      - Contacts
      operationId: DeleteContact
      parameters:
      - name: Id
        in: path
        required: true
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: OK
      security:
      - bearerAuth: []
    servers:
    - url: https://api.bms.kaseya.com
  /v2/crm/contacts/{contactId}/emails:
    patch:
      tags:
      - Contacts
      operationId: PatchContactEmails
      parameters:
      - name: contactId
        in: path
        required: true
        schema:
          type: integer
          format: int32
      requestBody:
        content:
          application/json-patch+json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/ContactEmailPatchOperationDto'
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/ContactEmailPatchOperationDto'
          text/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/ContactEmailPatchOperationDto'
          application/*+json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/ContactEmailPatchOperationDto'
      responses:
        '200':
          description: OK
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ContactEmailPatchResultDtoResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ContactEmailPatchResultDtoResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ContactEmailPatchResultDtoResponse'
      security:
      - bearerAuth: []
    servers:
    - url: https://api.bms.kaseya.com
  /v2/crm/contacts/{contactId}/phones:
    patch:
      tags:
      - Contacts
      operationId: PatchContactPhones
      parameters:
      - name: contactId
        in: path
        required: true
        schema:
          type: integer
          format: int32
      requestBody:
        content:
          application/json-patch+json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/ContactPhonePatchOperationDto'
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/ContactPhonePatchOperationDto'
          text/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/ContactPhonePatchOperationDto'
          application/*+json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/ContactPhonePatchOperationDto'
      responses:
        '200':
          description: OK
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ContactPhonePatchResultDtoResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ContactPhonePatchResultDtoResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ContactPhonePatchResultDtoResponse'
      security:
      - bearerAuth: []
    servers:
    - url: https://api.bms.kaseya.com
components:
  schemas:
    QueryActionResult_ContactModel_Contact:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/ContactModel'
        pageDetails:
          $ref: '#/components/schemas/PagingModel'
    PickListValue:
      type: object
      properties:
        value:
          type: string
        label:
          type: string
        isDefaultValue:
          type: boolean
        sortOrder:
          format: int32
          type: integer
        parentValue:
          type: string
        isActive:
          type: boolean
        isSystem:
          type: boolean
    RestUserAccessLevel:
      type: object
      properties: {}
    QueryCountResultModel:
      type: object
      properties:
        queryCount:
          format: int32
          type: integer
    ParameterExpression:
      type: object
      properties:
        type:
          type: string
          readOnly: true
        nodeType:
          enum:
          - Add
          - AddChecked
          - And
          - AndAlso
          - ArrayLength
          - ArrayIndex
          - Call
          - Coalesce
          - Conditional
          - Constant
          - Convert
          - ConvertChecked
          - Divide
          - Equal
          - ExclusiveOr
          - GreaterThan
          - GreaterThanOrEqual
          - Invoke
          - Lambda
          - LeftShift
          - LessThan
          - LessThanOrEqual
          - ListInit
          - MemberAccess
          - MemberInit
          - Modulo
          - Multiply
          - MultiplyChecked
          - Negate
          - UnaryPlus
          - NegateChecked
          - New
          - NewArrayInit
          - NewArrayBounds
          - Not
          - NotEqual
          - Or
          - OrElse
          - Parameter
          - Power
          - Quote
          - RightShift
          - Subtract
          - SubtractChecked
          - TypeAs
          - TypeIs
          - Assign
          - Block
          - DebugInfo
          - Decrement
          - Dynamic
          - Default
          - Extension
          - Goto
          - Increment
          - Index
          - Label
          - RuntimeVariables
          - Loop
          - Switch
          - Throw
          - Try
          - Unbox
          - AddAssign
          - AndAssign
          - DivideAssign
          - ExclusiveOrAssign
          - LeftShiftAssign
          - ModuloAssign
          - MultiplyAssign
          - OrAssign
          - PowerAssign
          - RightShiftAssign
          - SubtractAssign
          - AddAssignChecked
          - MultiplyAssignChecked
          - SubtractAssignChecked
          - PreIncrementAssign
          - PreDecrementAssign
          - PostIncrementAssign
          - PostDecrementAssign
          - TypeEqual
          - OnesComplement
          - IsTrue
          - IsFalse
          type: string
          readOnly: true
        name:
          type: string
          readOnly: true
        isByRef:
          type: boolean
          readOnly: true
        canReduce:
          type: boolean
          readOnly: true
    ItemQueryResultModel_ContactModel_Contact:
      type: object
      properties:
        item:
          $ref: '#/components/schemas/ContactModel'
    FieldInformationResultModel:
      type: object
      properties:
        fields:
          type: array
          items:
            $ref: '#/components/schemas/FieldInformationModel'
            readOnly: true
    Object:
      type: object
      properties: {}
    PagingModel:
      type: object
      properties:
        count:
          format: int32
          type: integer
        requestCount:
          format: int32
          type: integer
          readOnly: true
        prevPageUrl:
          type: string
        nextPageUrl:
          type: string
    UserDefinedFieldInformationResultModel:
      type: object
      properties:
        fields:
          type: array
          items:
            $ref: '#/components/schemas/Field'
            readOnly: true
    EntityInformationResultModel:
      type: object
      properties:
        info:
          $ref: '#/components/schemas/EntityInformationModel'
          readOnly: true
    FieldInformationModel:
      type: object
      properties:
        name:
          type: string
        dataType:
          type: string
        length:
          format: int32
          type: integer
        isRequired:
          type: boolean
        isReadOnly:
          type: boolean
        isQueryable:
          type: boolean
        isReference:
          type: boolean
        referenceEntityType:
          type: string
        isPickList:
          type: boolean
        picklistValues:
          type: array
          items:
            $ref: '#/components/schemas/PickListValue'
        picklistParentValueField:
          type: string
        isSupportedWebhookField:
          $ref: '#/components/schemas/Object'
    Expression_Func_Contact_Int64:
      type: object
      properties:
        type:
          type: string
          readOnly: true
        nodeType:
          enum:
          - Add
          - AddChecked
          - And
          - AndAlso
          - ArrayLength
          - ArrayIndex
          - Call
          - Coalesce
          - Conditional
          - Constant
          - Convert
          - ConvertChecked
          - Divide
          - Equal
          - ExclusiveOr
          - GreaterThan
          - GreaterThanOrEqual
          - Invoke
          - Lambda
          - LeftShift
          - LessThan
          - LessThanOrEqual
          - ListInit
          - MemberAccess
          - MemberInit
          - Modulo
          - Multiply
          - MultiplyChecked
          - Negate
          - UnaryPlus
          - NegateChecked
          - New
          - NewArrayInit
          - NewArrayBounds
          - Not
          - NotEqual
          - Or
          - OrElse
          - Parameter
          - Power
          - Quote
          - RightShift
          - Subtract
          - SubtractChecked
          - TypeAs
          - TypeIs
          - Assign
          - Block
          - DebugInfo
          - Decrement
          - Dynamic
          - Default
          - Extension
          - Goto
          - Increment
          - Index
          - Label
          - RuntimeVariables
          - Loop
          - Switch
          - Throw
          - Try
          - Unbox
          - AddAssign
          - AndAssign
          - DivideAssign
          - ExclusiveOrAssign
          - LeftShiftAssign
          - ModuloAssign
          - MultiplyAssign
          - OrAssign
          - PowerAssign
          - RightShiftAssign
          - SubtractAssign
          - AddAssignChecked
          - MultiplyAssignChecked
          - SubtractAssignChecked
          - PreIncrementAssign
          - PreDecrementAssign
          - PostIncrementAssign
          - PostDecrementAssign
          - TypeEqual
          - OnesComplement
          - IsTrue
          - IsFalse
          type: string
          readOnly: true
        parameters:
          type: array
          items:
            $ref: '#/components/schemas/ParameterExpression'
          readOnly: true
        name:
          type: string
          readOnly: true
        body:
          $ref: '#/components/schemas/Expression'
          readOnly: true
        returnType:
          type: string
          readOnly: true
        tailCall:
          type: boolean
          readOnly: true
        canReduce:
          type: boolean
          readOnly: true
    UserDefinedField:
      type: object
      properties:
        name:
          type: string
        value:
          type: string
    Expression:
      type: object
      properties:
        nodeType:
          enum:
          - Add
          - AddChecked
          - And
          - AndAlso
          - ArrayLength
          - ArrayIndex
          - Call
          - Coalesce
          - Conditional
          - Constant
          - Convert
          - ConvertChecked
          - Divide
          - Equal
          - ExclusiveOr
          - GreaterThan
          - GreaterThanOrEqual
          - Invoke
          - Lambda
          - LeftShift
          - LessThan
          - LessThanOrEqual
          - ListInit
          - MemberAccess
          - MemberInit
          - Modulo
          - Multiply
          - MultiplyChecked
          - Negate
          - UnaryPlus
          - NegateChecked
          - New
          - NewArrayInit
          - NewArrayBounds
          - Not
          - NotEqual
          - Or
          - OrElse
          - Parameter
          - Power
          - Quote
          - RightShift
          - Subtract
          - SubtractChecked
          - TypeAs
          - TypeIs
          - Assign
          - Block
          - DebugInfo
          - Decrement
          - Dynamic
          - Default
          - Extension
          - Goto
          - Increment
          - Index
          - Label
          - RuntimeVariables
          - Loop
          - Switch
          - Throw
          - Try
          - Unbox
          - AddAssign
          - AndAssign
          - DivideAssign
          - ExclusiveOrAssign
          - LeftShiftAssign
          - ModuloAssign
          - MultiplyAssign
          - OrAssign
          - PowerAssign
          - RightShiftAssign
          - SubtractAssign
          - AddAssignChecked
          - MultiplyAssignChecked
          - SubtractAssignChecked
          - PreIncrementAssign
          - PreDecrementAssign
          - PostIncrementAssign
          - PostDecrementAssign
          - TypeEqual
          - OnesComplement
          - IsTrue
          - IsFalse
    

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