Ajera API
message for Ajera API general doc
For additional api methods see the following below:
Home
Contacts API
Employees API
Vendors API
Projects API
Expense Reports API
GL Accounts API
Timesheets API
Various List Methods
Messages ¶
Group of all messages-related resources.
API Endpoint ¶
id is an Ajera API specific id that is required to access the API for any given
API server call. This id and specific url can be obtained from the
Ajera 8 Menu Utility -> Setup Integrations -> API Settings
List ClientsPOST/AjeraAPI.ashx?{id}
ListClients returns an array of Clients, limited by the optional filters detailed below.
Each returned Client includes only very basic information. This method is intended to be used for querying Clients for particular key values, which can then be passed to GetClients for more detailed information.
Example URI
- id
string(required) Example: ew0KICAiRGF0YWJhc2VOYW1lIjogIkFqZXJhX01haW4iDQp9An unique identifier required for api access.
ListClientsHeaders
Content-Type: application/json
Accept: application/jsonBody
{
Method: "ListClients",
SessionToken: "",
MethodArguments: {
FilterByCompany: [4,5],
FilterByStatus: ["Active"],
FilterByNameLike: "string",
FilterByNameEquals: "string",
FilterByClientType: [1, 2, 3],
FilterByEarliestModifiedDate: "2015-03-11 16:22:54.229 GMT-0700",
FilterByLatestModifiedDate: "2015-03-11 16:22:54.229 GMT-0700"
}
}Schema
{
Method: "string, required",
Username: "string, max(# characters)",
Password: "string, max(# characters)",
APIVersion: "int",
UseSessionCookie: "boolean"
Method: "string, required",
SessionToken: "string",
MethodArguments: {
FilterByCompany: "int array, optional",
FilterByStatus: "string array, optional",
FilterByNameLike: "string, optional",
FilterByNameEquals: "string, optional",
FilterByClientType: "int array, optional"
FilterByEarliestModifiedDate: "date string, optional(specific format)",
FilterByLatestModifiedDate: "date string, optional(specific format)"
}
}200Headers
Content-Type: application/jsonBody
{
ResponseCode: 200,
Message: "Success",
Errors: [],
Content: {
Clients: [
{
ClientKey: 4,
Description: "City of Portland"
},
{
ClientKey: 5,
Description: "Portland Public Schools"
}
]
},
UsageKey: "acb5509b-d7ba-434a-8e51-937db175d651"
}Schema
{
ResponseCode: {
type: int
},
Message: {
type: "string"
},
Errors: {
type: "array"
},
Content: {
type: "object",
properties: {
ClientKey: {
type: int
},
Description: {
type: "string"
}
}
},
UsageKey: {
type: "guid"
}
}
}Get ClientsPOST/AjeraAPI.ashx?{id}
GetClients takes one or more key values, and returns an array of matching Clients.
This method returns detailed information, which can be used to populate required fields when calling UpdateClients.
CustomFields can be viewed/updated, the field names are prepended with the string CF_
Example URI
- id
string(required) Example: ew0KICAiRGF0YWJhc2VOYW1lIjogIkFqZXJhX01haW4iDQp9An unique identifier required for api access.
GetClientsHeaders
Content-Type: application/json
Accept: application/jsonBody
{
Method: "GetClients",
SessionToken: "",
MethodArguments: {
RequestedClients: [1, 2, 3]
}
}Schema
{
Method: "string, required",
SessionToken: "string",
MethodArguments: {
RequestedClients: "int array, optional"
}
}200Headers
Content-Type: application/jsonBody
{
ResponseCode: 200,
Message: "Success",
Errors: [],
Content: {
ClientKey: 1,
Status: "Active",
Description: "Shop Architects",
DateEstablished: "2015-03-11",
SendStatements: true,
CreateFinanceCharge: true,
AnnualPercentageRate: 0.00,
PrePaymentBeginningBalance: 0.0,
AccountID: "",
PrimaryPhoneNumber: "555-555-5555",
PrimaryPhoneDescription: "",
SecondaryPhoneNumber: "555-555-5555",
SecondaryPhoneDescription: "",
TertiaryPhoneNumber: "555-555-5555",
TertiaryPhoneDescription: "",
FaxNumber: "",
FaxDescription: "",
Email: "",
Website: "",
PrimaryAddressLineOne: "",
PrimaryAddressLineTwo: "",
PrimaryAddressLineThree: "",
PrimaryAddressCity: "",
PrimaryAddressZip: "",
PrimaryAddressState: "",
PrimaryAddressCountry: "",
MailingAddressSameAsPrimary: true,
MailingAddressLineOne: "",
MailingAddressLineTwo: "",
MailingAddressLineThree: "",
MailingAddressCity: "",
MailingAddressZip: "",
MailingAddressState: "",
MailingAddressCountry: "",
EmailStatementTemplateKey: 1,
EmailStatementTemplateDescription: "",
Contacts: [
{
ContactKey: 21,
Text: "Contact for all questions on active jobs",
FirstName: "Adrian",
MiddleName: "",
LastName: "Dalton",
Title: "Engineer",
Company: "Portland Public Schools",
Order: 0
}
],
Notes: "",
ClientTypeKey: 1,
ClientTypeDescription: "Test",
ClientTypeNotes: "",
LastModifiedDate: "2015-03-11 16:22:54.229 GMT-0700"
},
UsageKey: "6e983af4-946f-4947-9fbd-a233f796f6b4"
}Schema
{
ResponseCode: {
type: int
},
Message: {
type: "string"
},
Errors: {
type: "array"
},
Content: {
type: "object",
properties: {
ClientKey: {
type: int
},
Description: {
type: "string"
},
Status: {
type: "string"
},
DateEstablished: {
type: "string"
},
SendStatements: {
type: boolean
},
CreateFinanceCharge: {
type: boolean
},
AnnualPercentageRate: {
type: float
},
PrePaymentBeginningBalance: {
type: int
},
AccountID: {
type: "string"
},
PrimaryPhoneNumber: {
type: "string"
},
PrimaryPhoneDescription: {
type: "string"
},
SecondaryPhoneNumber: {
type: "string"
},
SecondaryPhoneDescription: {
type: "string"
},
TertiaryPhoneNumber: {
type: "string"
},
TertiaryPhoneDescription: {
type: "string"
},
FaxNumber:{
type: "string"
},
FaxDescription: {
type: "string"
},
Email: {
type: "string"
},
Website: {
type: "string"
},
PrimaryAddressLineOne: {
type: "string"
},
PrimaryAddressLineTwo: {
type: "string"
},
PrimaryAddressLineThree: {
type: "string"
},
PrimaryAddressCity: {
type: "string"
},
PrimaryAddressZip: {
type: "string"
},
PrimaryAddressState: {
type: "string"
},
PrimaryAddressCountry: {
type: "string"
},
MailingAddressSameAsPrimary: {
type: boolean
},
MailingAddressLineOne: {
type: "string"
},
MailingAddressLineTwo: {
type: "string"
},
MailingAddressLineThree: {
type: "string"
},
MailingAddressCity: {
type: "string"
},
MailingAddressZip: {
type: "string"
},
MailingAddressState: {
type: "string"
},
MailingAddressCountry: {
type: "string"
},
Contacts: [ ],
Notes: {
type: "string"
},
ClientTypeKey: {
type: "string"
},
ClientTypeDescription: {
type: "string"
},
ClientTypeNotes: {
type: "string"
},
LastModifiedDate: {
type: "string"
},
EmailStatementTemplateKey: {
type: int
},
EmailStatementTemplateDescription: {
type: "string"
},
}
},
UsageKey: {
type: "guid"
}
}
}Update ClientsPOST/AjeraAPI.ashx?{id}
UpdateClients is used to update, create or delete clients.
To create clients, Clients is set to empty, and UpdatedClients items are given an ClientKey with a negative value.
To update or delete clients, Clients must be provided with all fields populated with current data, most likely obtained from calling GetClients. If updating, UpdatedClients is populated with the desired values in place for each field, and optional fields may be omitted. If deleting, UpdatedClients has the optional “Delete” field set to true, and only ClientKey and LastModifiedDate fields are required.
CustomFields can be viewed/updated, the field names are prepended with the string CF_
Example URI
- id
string(required) Example: ew0KICAiRGF0YWJhc2VOYW1lIjogIkFqZXJhX01haW4iDQp9An unique identifier required for api access.
UpdateClientsHeaders
Content-Type: application/json
Accept: application/jsonBody
{
Method: "UpdateClients",
SessionToken: "",
MethodArguments: {
UpdatedClients: [
{
ClientKey: -1,
Description: "Shop Architects",
LastModifiedDate: "2015-03-11 16:22:54.229 GMT-0700",
Delete: false,
Status: "Active",
DateEstablished: "2015-03-11",
SendStatements: true,
CreateFinanceCharge: true,
AnnualPercentageRate: 0,
PrePaymentBeginningBalance: 0,
AccountID: "sldfkjsdf",
PrimaryPhoneNumber: "555-555-5555",
PrimaryPhoneDescription: "",
SecondaryPhoneNumber: "555-555-5555",
SecondaryPhoneDescription: "",
TertiaryPhoneNumber: "555-555-5555",
TertiaryPhoneDescription: "",
FaxNumber: "",
FaxDescription: "",
Email: "",
Website: "",
PrimaryAddressLineOne: "",
PrimaryAddressLineTwo: "",
PrimaryAddressLineThree: "",
PrimaryAddressCity: "",
PrimaryAddressZip: "",
PrimaryAddressState: "",
PrimaryAddressCountry: "",
MailingAddressSameAsPrimary: true,
MailingAddressLineOne: "",
MailingAddressLineTwo: "",
MailingAddressLineThree: "",
MailingAddressCity: "",
MailingAddressZip: "",
MailingAddressState: "",
MailingAddressCountry: "",
EmailStatementTemplateKey: 1,
Contacts: [
{
ContactKey: 1,
Order: 1,
Note: "text",
FirstName: "",
MiddleName: "",
LastName: "",
Title: "",
Company: ""
}
],
Notes: "",
ClientTypeKey: 1,
ClientTypeDescription: "",
ClientTypeNotes: ""
},{
ClientKey: 1,
Description: "Shop Architects",
LastModifiedDate: "2015-03-11 16:22:54.229 GMT-0700",
Delete: false,
Status: "Active",
DateEstablished: "2015-03-11",
SendStatements: true,
CreateFinanceCharge: true,
AnnualPercentageRate: 0,
PrePaymentBeginningBalance: 0,
AccountID: "sldfkjsdf",
PrimaryPhoneNumber: "555-555-5555",
PrimaryPhoneDescription: "",
SecondaryPhoneNumber: "555-555-5555",
SecondaryPhoneDescription: "",
TertiaryPhoneNumber: "555-555-5555",
TertiaryPhoneDescription: "",
FaxNumber: "",
FaxDescription: "",
Email: "",
Website: "",
PrimaryAddressLineOne: "",
PrimaryAddressLineTwo: "",
PrimaryAddressLineThree: "",
PrimaryAddressCity: "",
PrimaryAddressZip: "",
PrimaryAddressState: "",
PrimaryAddressCountry: "",
MailingAddressSameAsPrimary: true,
MailingAddressLineOne: "",
MailingAddressLineTwo: "",
MailingAddressLineThree: "",
MailingAddressCity: "",
MailingAddressZip: "",
MailingAddressState: "",
MailingAddressCountry: "",
Contacts: [
{
ContactKey: 1,
Order: 1,
Note: "text",
FirstName: "",
MiddleName: "",
LastName: "",
Title: "",
Company: ""
}
],
Notes: "",
ClientTypeKey: 1,
ClientTypeDescription: "",
ClientTypeNotes: ""
},{
ClientKey: 2,
LastModifiedDate: "2015-03-11 16:22:54.229 GMT-0700",
Delete: true
}
],
UnchangedClients: [
{
ClientKey: 1,
Description: "Shop Architects",
LastModifiedDate: "2015-03-11 16:22:54.229 GMT-0700",
Delete: false,
Status: "Active",
DateEstablished: "2015-03-11",
SendStatements: true,
CreateFinanceCharge: true,
AnnualPercentageRate: 0,
PrePaymentBeginningBalance: 0,
AccountID: "sldfkjsdf",
PrimaryPhoneNumber: "555-555-5555",
PrimaryPhoneDescription: "",
SecondaryPhoneNumber: "555-555-5555",
SecondaryPhoneDescription: "",
TertiaryPhoneNumber: "555-555-5555",
TertiaryPhoneDescription: "",
FaxNumber: "",
FaxDescription: "",
Email: "",
Website: "",
PrimaryAddressLineOne: "",
PrimaryAddressLineTwo: "",
PrimaryAddressLineThree: "",
PrimaryAddressCity: "",
PrimaryAddressZip: "",
PrimaryAddressState: "",
PrimaryAddressCountry: "",
MailingAddressSameAsPrimary: true,
MailingAddressLineOne: "",
MailingAddressLineTwo: "",
MailingAddressLineThree: "",
MailingAddressCity: "",
MailingAddressZip: "",
MailingAddressState: "",
MailingAddressCountry: "",
Contacts: [
{
ContactKey: 1,
Order: 1,
Note: "text",
FirstName: "",
MiddleName: "",
LastName: "",
Title: "",
Company: ""
}
],
Notes: "",
ClientTypeKey: 1,
ClientTypeDescription: "",
ClientTypeNotes: ""
}
]
UseSingleTransaction: false
}Schema
{
Method: "string, required",
UseSessionCookie: "boolean",
SessionToken: "string, required, unless UseSessionCookie is true",
MethodArguments: {
UpdatedClients: [
{
ClientKey: "int, required",
Description: "string, required",
LastModifiedDate: "string, required, date string format",
Delete: "boolean, required, default false"
Status: "string, required, default Active",
DateEstablished: "date string, optional, nullable",
SendStatements: "boolean, optional, default true",
CreateFinanceCharge: "boolean, optional, default true",
AnnualPercentageRate: "float, optional",
PrePaymentBeginningBalance: "double, optional, readonly",
AccountID: "string, optional, will only exist if AccountKey is populated",
PrimaryPhoneNumber: "string, optional, max(30 characters)",
PrimaryPhoneDescription: "string, optional, max(80 characters)",
SecondaryPhoneNumber: "string, optional, max(30 characters)",
SecondaryPhoneDescription: "string, optional, max(80 characters)",
TertiaryPhoneNumber: "string, optional, max(30 characters)",
TertiaryPhoneDescription: "string, optional, max(80 characters)",
FaxNumber: "string, optional, max(30 characters)",
FaxDescription: "string, optional, max(80 characters)",
Email: "string, optional, max(254 characters)",
Website: "string, optional, max(100 characters)",
PrimaryAddressLineOne: "string, optional, max(50 characters)",
PrimaryAddressLineTwo: "string, optional, max(50 characters)",
PrimaryAddressLineThree: "string, optional, max(50 characters)",
PrimaryAddressCity: "string, optional, max(30 characters)",
PrimaryAddressZip: "string, optional, max(20 characters)",
PrimaryAddressState: "string, optional, max(10 characters)",
PrimaryAddressCountry: "string, optional, max(30 characters)",
MailingAddressSameAsPrimary: "boolean, optional, default true",
MailingAddressLineOne: "string, optional, max(50 characters)",
MailingAddressLineTwo: "string, optional, max(50 characters)",
MailingAddressLineThree: "string, optional, max(50 characters)",
MailingAddressCity: "string, optional, max(30 characters)",
MailingAddressZip: "string, optional, max(20 characters)",
MailingAddressState: "string, optional, max(10 characters)",
MailingAddressCountry: "string, optional, max(30 characters)",
Contacts: [ "array, optional, max of 5 contacts per client"],
Notes: "string, optional, nullable",
ClientTypeKey: "int, optional, nullable",
ClientTypeDescription: "string, optional, max(80 characters), Only valid if ClientTypeKey is populated and valid",
ClientTypeNotes: "string, optional, nullable, Only valid if ClientTypeKey is populated and valid"
}
],
UnchangedClients: [] "array, required, see UpdatedClients"
UseSingleTransaction: "boolean, required"
}
}200Headers
Content-Type: application/jsonBody
{
Content: {
Clients:[]
},
Errors: [],
Message: "Success",
ResponseCode: 0,
UsageKey: "6e983af4-946f-4947-9fbd-a233f796f6b4"
}Schema
{
Content: {
type: "object"
},
Errors: {
type: "array"
},
Message: {
type: "string"
},
ResponseCode: {
type: int
},
UsageKey: {
type: "guid"
}
}List Client TypesPOST/AjeraAPI.ashx?{id}
ListClientTypes returns an array of Client Types, limited by the optional filters detailed below.
Each returned Client Type includes only very basic information. This method is intended to be used for querying Client Types for particular key values.
Example URI
- id
string(required) Example: ew0KICAiRGF0YWJhc2VOYW1lIjogIkFqZXJhX01haW4iDQp9An unique identifier required for api access.
ListClientTypesHeaders
Content-Type: application/json
Accept: application/jsonBody
{
Method: "ListClientTypes",
SessionToken: "",
MethodArguments: {
FilterByStatus: ["Active"]
}
}Schema
{
Method: "string, required",
SessionToken: "string",
MethodArguments: {
FilterByStatus: "string array, optional"
}
}200Headers
Content-Type: application/jsonBody
{
ResponseCode: 200,
Message: "Success",
Errors: [],
Content: {
ClientTypes: [{
ClientTypeKey: 1,
Description: "Architect",
Status: "Active",
Notes: "some random text"
}]
},
UsageKey: "d286b4e7-41fe-42f9-97e8-bfd842a77b88"
}Schema
{
ResponseCode: {
type: int
},
Message: {
type: "string"
},
Errors: {
type: "array"
},
Content: {
type: "object",
properties: {
ClientTypeKey: {
type: int
},
Description: {
type: "string"
},
Status: {
type: "string"
},
Notes: {
type: "string"
}
}
},
UsageKey: {
type: "guid"
}
}
}