Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
title: Eci Solutions Contact API
version: '1.0'
description: 'Operations tagged Contact across 3 of this provider''s published API definitions: eci-solutions-erp-v2-1-openapi.json, eci-solutions-financial-v1-openapi.json, eci-solutions-payment-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api-erp.integrations.ecimanufacturing.com:443
description: Production
security:
- Bearer: []
tags:
- name: Contact
paths:
/api/v2.1/contacts:
post:
tags:
- Contact
summary: Create a new Contact in the ERP system
description: '## Supported ERPs
- JobBOSS²'
requestBody:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ContactCreateModel'
text/json:
schema:
$ref: '#/components/schemas/ContactCreateModel'
application/*+json:
schema:
$ref: '#/components/schemas/ContactCreateModel'
responses:
'201':
description: Created
operationId: postApiV21Contacts
x-operation-id-source: derived
get:
tags:
- Contact
summary: Get a list of Contacts from the ERP system that match the given filters
description: 'Gets a list of Contact.
## Supported ERPs
- M1
- JobBOSS²
- Macola
## Resource Features
Feature |Supported |Notes
------------|------------|------------
Filter Expressions|**Yes**|
Sort Expressions|**Yes**
Field Selection|**Yes**
Pagination|**Yes**
UniqueID|uniqueID|
## Features by Field
Field |Filterable |Sortable |Supported ERPs
------------|------------|------------|------------
uniqueID|Yes|Yes|M1, JobBOSS², Macola
rowVersion|Yes|Yes|M1, JobBOSS², Macola
contactID|Yes|Yes|M1, JobBOSS², Macola
name|Yes|Yes|M1, JobBOSS², Macola
organizationID|Yes|Yes|M1, JobBOSS², Macola
organizationTypes|Yes|Yes|JobBOSS²
phoneNumber|Yes|Yes|M1, JobBOSS², Macola
emailAddress|Yes|Yes|M1, JobBOSS², Macola
isActive|Yes|Yes|M1, JobBOSS², Macola
comments|Yes|Yes|JobBOSS²'
parameters:
- name: fields
in: query
description: A comma-separated list of fields to include in the result.
schema:
type: string
- name: sort
in: query
description: A comma-separated list of <a href='#sortexpr'>sort expressions</a>.
schema:
type: string
- name: take
in: query
description: Limit the number of results being returned
schema:
minimum: 0
type: integer
- name: skip
in: query
description: The number of results to skip. Combine with 'take' to fetch records in pages
schema:
minimum: 0
type: integer
- name: count
in: query
description: '<a href=''#countparam''>Data and count</a> response behavior '
schema:
maximum: 2
minimum: 0
type: integer
- name: filters
in: query
description: See <a href='#filterexpr'>Filter Expressions</a> for query string syntax. The Test UI and any generated code tool may expose filter parameters as a dictionary of name/value pairs, but if creating a raw HTTP request, they must be provided on the querystring as defined in the Filter Expression section.
style: form
schema:
type: object
additionalProperties:
type: string
examples:
Empty:
description: No filters applied
'Example #1':
description: A dictionary of name/value pairs that will be serialized as querystring parameters in the format ```name[operator]=value```
value:
uniqueID[eq]: cc90686b-399e-4094-b431-fa462f84b0a8
rowVersion[gte]: 123
contactID[eq]: abc123
name[eq]: abc123
organizationID[eq]: abc123
organizationTypes[gte]: 123
phoneNumber[eq]: abc123
emailAddress[eq]: abc123
isActive[eq]: true
comments[eq]: abc123
- name: expand
in: query
description: '### Supported Expansions
An expansion expression containing a comma separater list of relationships to expand.
Name |Value |Description
------------|------------|-----------
organization|Organizations|The organization to which the Contact belongs.
'
schema:
type: string
responses:
'200':
description: Success
content:
text/plain:
schema:
$ref: '#/components/schemas/ContactListResponse'
application/json:
schema:
$ref: '#/components/schemas/ContactListResponse'
text/json:
schema:
$ref: '#/components/schemas/ContactListResponse'
operationId: getApiV21Contacts
x-operation-id-source: derived
servers:
- url: https://api-erp.integrations.ecimanufacturing.com:443
description: Production
/api/v2.1/contacts/{id}:
get:
tags:
- Contact
summary: Get an Contact from the ERP system that matches the given unique ID
description: 'Gets a Contact by unique ID.
## Supported ERPs
- M1
- JobBOSS²
- Macola
## Features by Field
Field |Supported ERPs
------------|------------
uniqueID||M1, JobBOSS², Macola
rowVersion||M1, JobBOSS², Macola
contactID||M1, JobBOSS², Macola
name||M1, JobBOSS², Macola
organizationID||M1, JobBOSS², Macola
organizationTypes||JobBOSS²
phoneNumber||M1, JobBOSS², Macola
emailAddress||M1, JobBOSS², Macola
isActive||M1, JobBOSS², Macola
comments||JobBOSS²'
parameters:
- name: id
in: path
description: The ID of the contact
required: true
schema:
type: string
responses:
'200':
description: Success
content:
text/plain:
schema:
$ref: '#/components/schemas/Contact'
application/json:
schema:
$ref: '#/components/schemas/Contact'
text/json:
schema:
$ref: '#/components/schemas/Contact'
operationId: getApiV21ContactsById
x-operation-id-source: derived
servers:
- url: https://api-erp.integrations.ecimanufacturing.com:443
description: Production
/api/Contact/Bill/{id}:
delete:
tags:
- Contact
summary: Delete a Bill
description: Supported by MYOB, QBO, Xero, and Sage.
parameters:
- name: id
in: path
description: bill id
required: true
schema:
type: string
responses:
'200':
description: Success
content:
text/plain:
schema:
$ref: '#/components/schemas/StringAPIResponse'
application/json:
schema:
$ref: '#/components/schemas/StringAPIResponse'
text/json:
schema:
$ref: '#/components/schemas/StringAPIResponse'
operationId: deleteApiContactBillById
x-operation-id-source: derived
/api/Contact/CreditMemo/{id}:
delete:
tags:
- Contact
summary: Delete a Credit Memo
description: Supported by MYOB, QBO, Xero, and Sage.
parameters:
- name: id
in: path
description: creditMemo id
required: true
schema:
type: string
responses:
'200':
description: Success
content:
text/plain:
schema:
$ref: '#/components/schemas/StringAPIResponse'
application/json:
schema:
$ref: '#/components/schemas/StringAPIResponse'
text/json:
schema:
$ref: '#/components/schemas/StringAPIResponse'
operationId: deleteApiContactCreditMemoById
x-operation-id-source: derived
/api/Contact/Customer/{id}:
delete:
tags:
- Contact
summary: Delete a Customer
description: Supported by MYOB, QBO, Xero, and Sage.
parameters:
- name: id
in: path
description: customer id
required: true
schema:
type: string
responses:
'200':
description: Success
content:
text/plain:
schema:
$ref: '#/components/schemas/StringAPIResponse'
application/json:
schema:
$ref: '#/components/schemas/StringAPIResponse'
text/json:
schema:
$ref: '#/components/schemas/StringAPIResponse'
operationId: deleteApiContactCustomerById
x-operation-id-source: derived
/api/Contact/Employee/{id}:
delete:
tags:
- Contact
summary: Delete an Employee
description: Supported by MYOB, QBO, and Xero.
parameters:
- name: id
in: path
description: employee id
required: true
schema:
type: string
responses:
'200':
description: Success
content:
text/plain:
schema:
$ref: '#/components/schemas/StringAPIResponse'
application/json:
schema:
$ref: '#/components/schemas/StringAPIResponse'
text/json:
schema:
$ref: '#/components/schemas/StringAPIResponse'
operationId: deleteApiContactEmployeeById
x-operation-id-source: derived
/api/Contact/GetBill/{id}:
get:
tags:
- Contact
summary: Get a single Bill by unique id, if it exists
description: Supported by MYOB, QBO, Xero, and Sage.
parameters:
- name: id
in: path
description: The id of the Bill to find.
required: true
schema:
type: string
responses:
'200':
description: Success
content:
text/plain:
schema:
$ref: '#/components/schemas/BillModelAPIResponse'
application/json:
schema:
$ref: '#/components/schemas/BillModelAPIResponse'
text/json:
schema:
$ref: '#/components/schemas/BillModelAPIResponse'
operationId: getApiContactGetBillById
x-operation-id-source: derived
/api/Contact/GetBills:
get:
tags:
- Contact
summary: Get a list of Bills
description: 'Supported by MYOB, QBO, Xero, and Sage.
Take value, if provided, must be between 1 and 100. Skip value, if provided, must be greater than or equal to 0.'
parameters:
- name: ModifiedAfter
in: query
description: If provided, only return records modified after this date and time. Only supported for QBO at this time.
schema:
type: string
format: date-time
- name: Take
in: query
description: The maximum number of records to retrieve. If not provided, retrieve the number of records allowable by the backend financial system, which is not guaranteed to be the entire set of records.
schema:
maximum: 100
minimum: 1
type: integer
format: int32
- name: Skip
in: query
description: The number of records to skip past when retrieving the list. Recommended to be a multiple of the Take value, if provided.
schema:
maximum: 2147483647
minimum: 0
type: integer
format: int32
responses:
'200':
description: Success
content:
text/plain:
schema:
$ref: '#/components/schemas/BillModelListAPIResponse'
application/json:
schema:
$ref: '#/components/schemas/BillModelListAPIResponse'
text/json:
schema:
$ref: '#/components/schemas/BillModelListAPIResponse'
operationId: getApiContactGetBills
x-operation-id-source: derived
/api/Contact/GetCreditMemo/{id}:
get:
tags:
- Contact
summary: Get a single Credit Memo by unique id, if it exists
description: Supported by MYOB, QBO, Xero, and Sage.
parameters:
- name: id
in: path
description: The id of the CreditMemo to find.
required: true
schema:
type: string
responses:
'200':
description: Success
content:
text/plain:
schema:
$ref: '#/components/schemas/CreditMemoModelAPIResponse'
application/json:
schema:
$ref: '#/components/schemas/CreditMemoModelAPIResponse'
text/json:
schema:
$ref: '#/components/schemas/CreditMemoModelAPIResponse'
operationId: getApiContactGetCreditMemoById
x-operation-id-source: derived
/api/Contact/GetCreditMemos:
get:
tags:
- Contact
summary: Get a list of Credit Memos
description: 'Supported by MYOB, QBO, Xero, and Sage.
Take value, if provided, must be between 1 and 100. Skip value, if provided, must be greater than or equal to 0.'
parameters:
- name: ModifiedAfter
in: query
description: If provided, only return records modified after this date and time. Only supported for QBO at this time.
schema:
type: string
format: date-time
- name: Take
in: query
description: The maximum number of records to retrieve. If not provided, retrieve the number of records allowable by the backend financial system, which is not guaranteed to be the entire set of records.
schema:
maximum: 100
minimum: 1
type: integer
format: int32
- name: Skip
in: query
description: The number of records to skip past when retrieving the list. Recommended to be a multiple of the Take value, if provided.
schema:
maximum: 2147483647
minimum: 0
type: integer
format: int32
responses:
'200':
description: Success
content:
text/plain:
schema:
$ref: '#/components/schemas/CreditMemoModelListAPIResponse'
application/json:
schema:
$ref: '#/components/schemas/CreditMemoModelListAPIResponse'
text/json:
schema:
$ref: '#/components/schemas/CreditMemoModelListAPIResponse'
operationId: getApiContactGetCreditMemos
x-operation-id-source: derived
/api/Contact/GetCustomer/{id}:
get:
tags:
- Contact
summary: Get a single Customer by unique id, if it exists
description: Supported by MYOB, QBO, Xero, and Sage.
parameters:
- name: id
in: path
description: The id of the Customer to find.
required: true
schema:
type: string
responses:
'200':
description: Success
content:
text/plain:
schema:
$ref: '#/components/schemas/CustomerModelAPIResponse'
application/json:
schema:
$ref: '#/components/schemas/CustomerModelAPIResponse'
text/json:
schema:
$ref: '#/components/schemas/CustomerModelAPIResponse'
operationId: getApiContactGetCustomerById
x-operation-id-source: derived
/api/Contact/GetCustomers:
get:
tags:
- Contact
summary: Get a list of Customers
description: 'Supported by MYOB, QBO, Xero, and Sage.
Take value, if provided, must be between 1 and 100. Skip value, if provided, must be greater than or equal to 0.'
parameters:
- name: ModifiedAfter
in: query
description: If provided, only return records modified after this date and time. Only supported for QBO at this time.
schema:
type: string
format: date-time
- name: Take
in: query
description: The maximum number of records to retrieve. If not provided, retrieve the number of records allowable by the backend financial system, which is not guaranteed to be the entire set of records.
schema:
maximum: 100
minimum: 1
type: integer
format: int32
- name: Skip
in: query
description: The number of records to skip past when retrieving the list. Recommended to be a multiple of the Take value, if provided.
schema:
maximum: 2147483647
minimum: 0
type: integer
format: int32
responses:
'200':
description: Success
content:
text/plain:
schema:
$ref: '#/components/schemas/CustomerModelListAPIResponse'
application/json:
schema:
$ref: '#/components/schemas/CustomerModelListAPIResponse'
text/json:
schema:
$ref: '#/components/schemas/CustomerModelListAPIResponse'
operationId: getApiContactGetCustomers
x-operation-id-source: derived
/api/Contact/GetEmployee/{id}:
get:
tags:
- Contact
summary: Get a single Employee by unique id, if it exists
description: Supported by MYOB, QBO, and Xero.
parameters:
- name: id
in: path
description: The id of the Employee to find.
required: true
schema:
type: string
responses:
'200':
description: Success
content:
text/plain:
schema:
$ref: '#/components/schemas/EmployeeModelAPIResponse'
application/json:
schema:
$ref: '#/components/schemas/EmployeeModelAPIResponse'
text/json:
schema:
$ref: '#/components/schemas/EmployeeModelAPIResponse'
operationId: getApiContactGetEmployeeById
x-operation-id-source: derived
/api/Contact/GetEmployees:
get:
tags:
- Contact
summary: Get a list of Employees
description: 'Supported by MYOB, QBO, and Xero.
Take value, if provided, must be between 1 and 100. Skip value, if provided, must be greater than or equal to 0.'
parameters:
- name: ModifiedAfter
in: query
description: If provided, only return records modified after this date and time. Only supported for QBO at this time.
schema:
type: string
format: date-time
- name: Take
in: query
description: The maximum number of records to retrieve. If not provided, retrieve the number of records allowable by the backend financial system, which is not guaranteed to be the entire set of records.
schema:
maximum: 100
minimum: 1
type: integer
format: int32
- name: Skip
in: query
description: The number of records to skip past when retrieving the list. Recommended to be a multiple of the Take value, if provided.
schema:
maximum: 2147483647
minimum: 0
type: integer
format: int32
responses:
'200':
description: Success
content:
text/plain:
schema:
$ref: '#/components/schemas/EmployeeModelListAPIResponse'
application/json:
schema:
$ref: '#/components/schemas/EmployeeModelListAPIResponse'
text/json:
schema:
$ref: '#/components/schemas/EmployeeModelListAPIResponse'
operationId: getApiContactGetEmployees
x-operation-id-source: derived
/api/Contact/GetItem/{id}:
get:
tags:
- Contact
summary: Get a single Item by unique id, if it exists
description: Supported by MYOB, QBO, Xero, and Sage.
parameters:
- name: id
in: path
description: The id of the Item to find.
required: true
schema:
type: string
responses:
'200':
description: Success
content:
text/plain:
schema:
$ref: '#/components/schemas/ItemModelAPIResponse'
application/json:
schema:
$ref: '#/components/schemas/ItemModelAPIResponse'
text/json:
schema:
$ref: '#/components/schemas/ItemModelAPIResponse'
operationId: getApiContactGetItemById
x-operation-id-source: derived
/api/Contact/GetItems:
get:
tags:
- Contact
summary: Get a list of Items
description: 'Supported by MYOB, QBO, Xero, and Sage.
Take value, if provided, must be between 1 and 100. Skip value, if provided, must be greater than or equal to 0.'
parameters:
- name: types
in: query
description: 'Filter list of Items based on Type.
QBO: Valid values include Inventory, NonInventory, Category and Service.
Multiple valid values may be separated by commas.
If no types are specified, all items will be returned.'
schema:
type: string
- name: ModifiedAfter
in: query
description: If provided, only return records modified after this date and time. Only supported for QBO at this time.
schema:
type: string
format: date-time
- name: Take
in: query
description: The maximum number of records to retrieve. If not provided, retrieve the number of records allowable by the backend financial system, which is not guaranteed to be the entire set of records.
schema:
maximum: 100
minimum: 1
type: integer
format: int32
- name: Skip
in: query
description: The number of records to skip past when retrieving the list. Recommended to be a multiple of the Take value, if provided.
schema:
maximum: 2147483647
minimum: 0
type: integer
format: int32
responses:
'200':
description: Success
content:
text/plain:
schema:
$ref: '#/components/schemas/ItemModelListAPIResponse'
application/json:
schema:
$ref: '#/components/schemas/ItemModelListAPIResponse'
text/json:
schema:
$ref: '#/components/schemas/ItemModelListAPIResponse'
'400':
description: Bad Request
content:
text/plain:
schema:
$ref: '#/components/schemas/ItemModelListAPIResponse'
application/json:
schema:
$ref: '#/components/schemas/ItemModelListAPIResponse'
text/json:
schema:
$ref: '#/components/schemas/ItemModelListAPIResponse'
operationId: getApiContactGetItems
x-operation-id-source: derived
/api/Contact/GetJournal/{id}:
get:
tags:
- Contact
summary: Get a single journal by unique id, if it exists
description: Supported by QBO, Xero, MYOB, and Sage.
parameters:
- name: id
in: path
description: The id of the Journal to find.
required: true
schema:
type: string
responses:
'200':
description: Success
content:
text/plain:
schema:
$ref: '#/components/schemas/JournalModelAPIResponse'
application/json:
schema:
$ref: '#/components/schemas/JournalModelAPIResponse'
text/json:
schema:
$ref: '#/components/schemas/JournalModelAPIResponse'
operationId: getApiContactGetJournalById
x-operation-id-source: derived
/api/Contact/GetJournals:
get:
tags:
- Contact
summary: Get a list of Journals
description: 'Supported by QBO, Xero, MYOB, and Sage.
Take value, if provided, must be between 1 and 100. Skip value, if provided, must be greater than or equal to 0.'
parameters:
- name: ModifiedAfter
in: query
description: If provided, only return records modified after this date and time. Only supported for QBO at this time.
schema:
type: string
format: date-time
- name: Take
in: query
description: The maximum number of records to retrieve. If not provided, retrieve the number of records allowable by the backend financial system, which is not guaranteed to be the entire set of records.
schema:
maximum: 100
minimum: 1
type: integer
format: int32
- name: Skip
in: query
description: The number of records to skip past when retrieving the list. Recommended to be a multiple of the Take value, if provided.
schema:
maximum: 2147483647
minimum: 0
type: integer
format: int32
responses:
'200':
description: Success
content:
text/plain:
schema:
$ref: '#/components/schemas/JournalModelListAPIResponse'
application/json:
schema:
$ref: '#/components/schemas/JournalModelListAPIResponse'
text/json:
schema:
$ref: '#/components/schemas/JournalModelListAPIResponse'
operationId: getApiContactGetJournals
x-operation-id-source: derived
/api/Contact/GetTimeActivities:
get:
tags:
- Contact
summary: Get a list of Time Activities
description: 'Supported by MYOB, QBO, and Xero.
Take value, if provided, must be between 1 and 100. Skip value, if provided, must be greater than or equal to 0.'
parameters:
- name: ModifiedAfter
in: query
description: If provided, only return records modified after this date and time. Only supported for QBO at this time.
schema:
type: string
format: date-time
- name: Take
in: query
description: The maximum number of records to retrieve. If not provided, retrieve the number of records allowable by the backend financial system, which is not guaranteed to be the entire set of records.
schema:
maximum: 100
minimum: 1
type: integer
format: int32
- name: Skip
in: query
description: The number of records to skip past when retrieving the list. Recommended to be a multiple of the Take value, if provided.
schema:
maximum: 2147483647
minimum: 0
type: integer
format: int32
responses:
'200':
description: Success
content:
text/plain:
schema:
$ref: '#/components/schemas/TimeActivityResponseModelAPIResponse'
application/json:
schema:
$ref: '#/components/schemas/TimeActivityResponseModelAPIResponse'
text/json:
schema:
$ref: '#/components/schemas/TimeActivityResponseModelAPIResponse'
operationId: getApiContactGetTimeActivities
x-operation-id-source: derived
/api/Contact/GetTimeActivity/{id}:
get:
tags:
- Contact
summary: Get a single Time Activity by unique id, if it exists
description: Supported by MYOB, QBO, and Xero.
parameters:
- name: id
in: path
description: The id of the time activity to find.
required: true
schema:
type: string
responses:
'200':
description: Success
content:
text/plain:
schema:
$ref: '#/components/schemas/TimeActivityResponseModelAPIResponse'
application/json:
schema:
$ref: '#/components/schemas/TimeActivityResponseModelAPIResponse'
text/json:
schema:
$ref: '#/components/schemas/TimeActivityResponseModelAPIResponse'
operationId: getApiContactGetTimeActivityById
x-operation-id-source: derived
/api/Contact/GetVendor/{id}:
get:
tags:
- Contact
summary: Get a single Vendor by unique id, if it exists
description: Supported by MYOB, QBO, Xero, and Sage.
parameters:
- name: id
in: path
description: The id of the Vendor to find.
required: true
schema:
type: string
responses:
'200':
description: Success
content:
text/plain:
schema:
$ref: '#/components/schemas/SupplierModelAPIResponse'
application/json:
schema:
$ref: '#/components/schemas/SupplierModelAPIResponse'
text/json:
schema:
$ref: '#/components/schemas/SupplierModelAPIResponse'
operationId: getApiContactGetVendorById
x-operation-id-source: derived
/api/Contact/GetVendorCredit/{id}:
get:
tags:
- Contact
summary: Get a single Vendor Credit by unique id, if it exists
description: Supported by MYOB, QBO, Xero, and Sage.
parameters:
- name: id
in: path
description: The id of the VendorCredit to find.
required: true
schema:
type: string
responses:
'200':
description: Success
content:
text/plain:
schema:
$ref: '#/components/schemas/VendorCreditModelAPIResponse'
application/json:
schema:
$ref: '#/components/schemas/VendorCreditModelAPIResponse'
text/json:
schema:
$ref: '#/components/schemas/VendorCreditModelAPIResponse'
operationId: getApiContactGetVendorCreditById
x-operation-id-source: derived
/api/Contact/GetVendorCredits:
get:
tags:
- Contact
summary: Get a list of Vendor Credits
description: 'Supported by MYOB, QBO, Xero, and Sage.
Take value, if provided, must be between 1 and 100. Skip value, if provided, must be greater than or equal to 0.'
parameters:
- name: ModifiedAfter
in: query
description: If provided, only return records modified after this date and time. Only supported for QBO at this time.
schema:
type: string
format: date-time
- name: Take
in: query
description: The maximum number of records to retrieve. If not provided, retrieve the number of records allowable by the backend financial system, which is not guaranteed to be the entire set of records.
schema:
maximum: 100
minimum: 1
type: integer
format: int32
- name: Skip
in: query
description: The number of records to skip past when retrieving the list. Recommended to be a multiple of the Take value, if provided.
schema:
maximum: 2147483647
minimum: 0
type: integer
format: int32
responses:
'200':
description: Success
content:
text/plain:
schema:
$ref: '#/components/schemas/VendorCreditModelListAPIResponse'
application/json:
schema:
$ref: '#/components/schemas/VendorCreditModelListAPIResponse'
text/json:
schema:
$ref: '#/components/schemas/VendorCreditModelListAPIResponse'
operationId: getApiContactGetVendorCredits
x-operation-id-source: derived
/api/Contact/GetVendors:
get:
tags:
- Contact
summary: Get a list of Vendors
# --- truncated at 32 KB (191 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/eci-solutions/refs/heads/main/openapi/eci-solutions-contact-api-openapi.yml