Back to top

Ajera API

message for Ajera API general doc

For additional api methods see the following below:
Home
Clients API
Contacts API
Employees API
Vendors API
Projects API
GL Accounts 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 Timesheets
POST/AjeraAPI.ashx?{id}

ListTimesheets returns an array of Timesheets, limited by the optional filters detailed below.

Each returned Timesheet includes basic information about the timesheet. This method is intended to be used for querying Timesheets for particular key values, which can then be passed to GetTimesheets for more detailed information.

NOTE: This method is only accessible when Authorizing Employee is set and is an active employee.

Example URI

POST /AjeraAPI.ashx?ew0KICAiRGF0YWJhc2VOYW1lIjogIkFqZXJhX01haW4iDQp9
URI Parameters
HideShow
id
string (required) Example: ew0KICAiRGF0YWJhc2VOYW1lIjogIkFqZXJhX01haW4iDQp9

An unique identifier required for api access.

Request  ListTimesheets
HideShow
Headers
Content-Type: application/json
Accept: application/json
Body
{
  "Method": "ListTimesheets",
  "SessionToken": "",
  "MethodArguments": {
    "FilterByCompany": [
      1
    ],
    "FilterByEmployee": [
      26
    ],
    "FilterByNameLike": "Chris",
    "FilterByPaid": true,
    "FilterByUnpaid": true,
    "FilterBySubmitted": true,
    "FilterByUnsubmitted": true,
    "FilterByRejected": true,
    "FilterByEarliestTimesheetDate": "2025-01-12",
    "FilterByLatestTimesheetDate": "2025-01-12"
  }
}
Schema
{
  "Method": "string, required",
  "SessionToken": "string",
  "MethodArguments": {
    "FilterByCompany": "int array, optional",
    "FilterByEmployee": "int array, optional",
    "FilterByNameLike": "string, optional",
    "FilterByPaid": "boolean, optional",
    "FilterByUnpaid": "boolean, optional",
    "FilterBySubmitted": "boolean, optional",
    "FilterByUnsubmitted": "boolean, optional",
    "FilterByRejected": "boolean, optional",
    "FilterByEarliestTimesheetDate": "date string, optional",
    "FilterByLatestTimesheetDate": "date string, optional"
  }
}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "ResponseCode": 200,
  "Message": "Success",
  "Errors": [],
  "Content": {
    "Timesheets": [
      {
        "Timesheet Key": 147,
        "Company Key": 1,
        "Employee Key": 30,
        "Employee Status": "Active",
        "Employee": "Christopher Meehan",
        "First Name": "Christopher",
        "Middle Name": "E.",
        "Last Name": "Meehan",
        "My Employee": false,
        "Timesheet Date": "2012-09-09",
        "Timesheet Total": 25,
        "Submitted": false,
        "Supervisor Approved": false,
        "Accounting Approved": false,
        "Project Manager Approved": false,
        "Rejected": false,
        "Billed": true,
        "Paid": false,
        "Project Manager Approved Value": 0,
        "Paid Value": 0,
        "Rejected Value": 0,
        "Target Billable Percent": 50,
        "Actual Billable Percent": 72,
        "Company Name": "Accutera Architects",
        "Multilevel Employee": false,
        "Submitted Date": null,
        "Submitted By": "",
        "Accounting Approved Date": null,
        "Accounting Approved By": "",
        "Supervisor Approved Date": null,
        "Supervisor Approved By": ""
      }
    ]
  },
  "UsageKey": "6e983af4-946f-4947-9fbd-a233f796f6b4"
}
Schema
{
    "ResponseCode": {
        "type": "int"
    },
    "Message": {
        "type": "string"
    },
    "Errors": {
        "type": "array"
    },
    "Content": {
        "type": "object",
        "properties": {
            "Timesheets": {
                "type": "object array",
                "properties": {
                    "Timesheet Key": {
                        "type": "int"
                    },
                    "Company Key": {
                        "type": "int"
                    },
                    "Employee Key": {
                        "type": "int"
                    },
                    "Employee Status": {
                        "type": "string" ("Active", "Inactive")
                    },
                    "Employee": {
                        "type": "string"
                    },
                    "First Name": {
                        "type": "string"
                    },
                    "Middle Name": {
                        "type": "string"
                    },
                    "Last Name": {
                        "type": "string"
                    },
                    "My Employee": {
                        "type": "boolean"
                    },
                    "Timesheet Date": {
                        "type": "string" 
                    },
                    "Timesheet Total": {
                        "type": "decimal"
                    },
                    "Submitted": {
                        "type": "boolean"
                    },
                    "Supervisor Approved": {
                        "type": "boolean"
                    },
                    "Accounting Approved": {
                        "type": "boolean"
                    },
                    "Project Manager Approved": {
                        "type": "boolean"
                    },
                    "Rejected": {
                        "type": "boolean"
                    },
                    "Billed": {
                        "type": "boolean"
                    },
                    "Paid": {
                        "type": "boolean"
                    }
                }
            }
        }
    },
    "UsageKey": {
        "type": "guid"
    }
}

Get Timesheets
POST/AjeraAPI.ashx?{id}

GetTimesheets takes one or more key values, and returns an array of matching Timesheets with detailed information.

This method returns detailed information about the timesheet, including overhead entries and project-related entries with their daily hours and notes.

NOTE: This method is only accessible when Authorizing Employee is set and is an active employee.

Example URI

POST /AjeraAPI.ashx?ew0KICAiRGF0YWJhc2VOYW1lIjogIkFqZXJhX01haW4iDQp9
URI Parameters
HideShow
id
string (required) Example: ew0KICAiRGF0YWJhc2VOYW1lIjogIkFqZXJhX01haW4iDQp9

An unique identifier required for api access.

Request  GetTimesheets
HideShow
Headers
Content-Type: application/json
Accept: application/json
Body
{
  "Method": "GetTimesheets",
  "SessionToken": "",
  "MethodArguments": {
    "RequestedTimesheets": [
      147
    ]
  }
}
Schema
{
  "Method": "string, required",
  "SessionToken": "string",
  "MethodArguments": {
    "RequestedTimesheets": "int array, required"
  }
}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "ResponseCode": 200,
  "Message": "Success",
  "Errors": [],
  "Content": {
    "Timesheets": [
      {
        "TimesheetKey": 147,
        "TimesheetDate": "2012-09-09T00:00:00",
        "EmployeeKey": 30,
        "Overhead": {
          "Totals": {
            "Timesheet Overhead Group Detail": "Vacation",
            "D1": 0,
            "D2": 4,
            "D3": 3,
            "D4": 0,
            "D5": 0,
            "D6": 0,
            "D7": 0,
            "D1 Regular": 0,
            "D2 Regular": 4,
            "D3 Regular": 3,
            "D4 Regular": 0,
            "D5 Regular": 0,
            "D6 Regular": 0,
            "D7 Regular": 0,
            "Regular Hours": 0,
            "OT Hours": 0,
            "Total Hours": 0
          },
          "Detail": [
            {
              "Locked": false,
              "Timesheet Overhead Key": 147,
              "Employee Key": 30,
              "Timesheet Overhead Group Detail Key": 30,
              "Timesheet Overhead Group Detail": "General",
              "D1 Regular": 0,
              "D2 Regular": 4,
              "D3 Regular": 3,
              "D4 Regular": 0,
              "D5 Regular": 0,
              "D6 Regular": 0,
              "D7 Regular": 0,
              "D3 Notes": ""
            }
          ]
        },
        "Project": {
          "Totals": {
            "Project Description": "04-110 Milwaukie Hospital Landscape",
            "Phase Description": "Foyer Remodel",
            "Activity": "Project Management",
            "D1 Regular": 8,
            "D2 Regular": 4,
            "D3 Regular": 5,
            "D4 Regular": 0,
            "D5 Regular": 0,
            "D6 Regular": 0,
            "D7 Regular": 0,
            "D3 Overtime": 1,
            "D3 Notes": "Meeting with client about submitted floor plans."
          },
          "Detail": [
            {
              "Timesheet Project Key": 2,
              "Project Key": 32,
              "Phase Key": 33,
              "Activity Key": 5,
              "Employee Type Key": 3,
              "Project Description": "04-110 Milwaukie Hospital Landscape",
              "Phase Description": "Foyer Remodel",
              "Activity": "Project Management",
              "D1 Regular": 8,
              "D2 Regular": 4,
              "D3 Regular": 5,
              "D4 Regular": 0,
              "D5 Regular": 0,
              "D6 Regular": 0,
              "D7 Regular": 0,
              "D3 Overtime": 1,
              "D3 Notes": "Meeting with client about submitted floor plans.",
              "D3 OT Notes": ""
            }
          ]
        },
        "UnchangedData": {
          "Overhead": "base64encodeddata",
          "Project": "base64encodeddata"
        }
      }
    ]
  },
  "UsageKey": "6e983af4-946f-4947-9fbd-a233f796f6b4"
}
Schema
{
  "ResponseCode": {
    "type": "int"
  },
  "Message": {
    "type": "string"
  },
  "Errors": {
    "type": "array"
  },
  "Content": {
    "Timesheets": {
      "type": "object array",
      "properties": {
        "TimesheetKey": {
          "type": "int"
        },
        "TimesheetDate": {
          "type": "string"
        },
        "EmployeeKey": {
          "type": "int"
        },
        "Overhead": {
          "type": "object",
          "properties": {
            "Totals": {
              "type": "object"
            },
            "Detail": {
              "type": "object array"
            }
          }
        },
        "Project": {
          "type": "object",
          "properties": {
            "Totals": {
              "type": "object"
            },
            "Detail": {
              "type": "object array"
            }
          }
        },
        "UnchangedData": {
          "type": "object",
          "properties": {
            "Overhead": {
              "type": "string"
            },
            "Project": {
              "type": "string"
            }
          }
        }
      }
    }
  },
  "UsageKey": {
    "type": "guid"
  }
}

Create Timesheet
POST/AjeraAPI.ashx?{id}

CreateTimesheet is used to create a new timesheet for an employee. You can optionally prefill the timesheet with recent projects, scheduled projects, or copy an existing timesheet.

NOTE: This method is only accessible when Authorizing Employee is set and is an active employee.

Example URI

POST /AjeraAPI.ashx?ew0KICAiRGF0YWJhc2VOYW1lIjogIkFqZXJhX01haW4iDQp9
URI Parameters
HideShow
id
string (required) Example: ew0KICAiRGF0YWJhc2VOYW1lIjogIkFqZXJhX01haW4iDQp9

An unique identifier required for api access.

Request  CreateTimesheet
HideShow
Headers
Content-Type: application/json
Accept: application/json
Body
{
  "Method": "CreateTimesheet",
  "SessionToken": "",
  "MethodArguments": {
    "Timesheet": {
      "EmployeeKey": 26,
      "TimesheetDate": "2025-01-26",
      "PrefillRecent": false,
      "PrefillScheduled": true,
      "CopyFromTimesheetKey": 39,
      "ActivityKey": 48
    }
  }
}
Schema
{
  "Method": "string, required",
  "SessionToken": "string",
  "MethodArguments": {
    "Timesheet": {
      "EmployeeKey": "int, required",
      "TimesheetDate": "string, required",
      "PrefillRecent": "boolean, optional",
      "PrefillScheduled": "boolean, optional",
      "CopyFromTimesheetKey": "int, optional",
      "ActivityKey": "int, optional",
      "AllowPast90Days": "boolean, optional"
    }
  }
}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "ResponseCode": 200,
  "Message": "Success",
  "Errors": [],
  "Content": {
    "Timesheets": [
      {
        "TimesheetKey": 148,
        "TimesheetDate": "2025-01-26T00:00:00",
        "EmployeeKey": 26,
        "Overhead": {
          "Totals": {},
          "Detail": []
        },
        "Project": {
          "Totals": {},
          "Detail": []
        },
        "UnchangedData": {
          "Overhead": "base64encodeddata",
          "Project": "base64encodeddata"
        }
      }
    ]
  },
  "UsageKey": "6e983af4-946f-4947-9fbd-a233f796f6b4"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {}
}

Update Timesheets
POST/AjeraAPI.ashx?{id}

UpdateTimesheets is used to update existing timesheets. This method allows you to modify overhead and project entries for one or more timesheets.

NOTE: This method is only accessible when Authorizing Employee is set and is an active employee.

Example URI

POST /AjeraAPI.ashx?ew0KICAiRGF0YWJhc2VOYW1lIjogIkFqZXJhX01haW4iDQp9
URI Parameters
HideShow
id
string (required) Example: ew0KICAiRGF0YWJhc2VOYW1lIjogIkFqZXJhX01haW4iDQp9

An unique identifier required for api access.

Request  UpdateTimesheets
HideShow
Headers
Content-Type: application/json
Accept: application/json
Body
{
  "Method": "UpdateTimesheets",
  "SessionToken": "",
  "MethodArguments": {
    "Timesheets": [
      {
        "TimesheetKey": 147,
        "UpdatedOverheads": [
          {
            "Timesheet Overhead Group Detail Key": 30,
            "D1 Regular": 1
          }
        ],
        "UpdatedProjects": [
          {
            "Timesheet Project Key": 2,
            "D2 Regular": 1,
            "D2 Notes": "Client meeting"
          },
          {
            "IsNewRow": true,
            "Project Key": 32,
            "Phase Key": 33,
            "Activity Key": 2,
            "D3 Regular": 4,
            "D3 Notes": "Design review"
          }
        ],
        "UnchangedData": {
          "Overhead": "base64encodeddata",
          "Project": "base64encodeddata"
        }
      }
    ]
  }
}
Schema
{
  "Method": "string, required",
  "SessionToken": "string",
  "MethodArguments": {
    "Timesheets": [
      {
        "TimesheetKey": "int, required",
        "UpdatedOverheads": [
          {
            "Timesheet Overhead Group Detail Key": "int, required",
            "D1 Regular": "decimal, optional",
            "D2 Regular": "decimal, optional",
            "D3 Regular": "decimal, optional",
            "D4 Regular": "decimal, optional",
            "D5 Regular": "decimal, optional",
            "D6 Regular": "decimal, optional",
            "D7 Regular": "decimal, optional",
            "D1 Notes": "string, optional",
            "D2 Notes": "string, optional",
            "D3 Notes": "string, optional",
            "D4 Notes": "string, optional",
            "D5 Notes": "string, optional",
            "D6 Notes": "string, optional",
            "D7 Notes": "string, optional"
          }
        ],
        "UpdatedProjects": [
          {
            "Timesheet Project Key": "int, required for existing rows",
            "IsNewRow": "boolean, required for new rows",
            "Project Key": "int, required for new rows",
            "Phase Key": "int, required for new rows",
            "Activity Key": "int, required for new rows",
            "Employee Type Key": "int, optional",
            "D1 Regular": "decimal, optional",
            "D2 Regular": "decimal, optional",
            "D3 Regular": "decimal, optional",
            "D4 Regular": "decimal, optional",
            "D5 Regular": "decimal, optional",
            "D6 Regular": "decimal, optional",
            "D7 Regular": "decimal, optional",
            "D1 Notes": "string, optional",
            "D2 Notes": "string, optional",
            "D3 Notes": "string, optional",
            "D4 Notes": "string, optional",
            "D5 Notes": "string, optional",
            "D6 Notes": "string, optional",
            "D7 Notes": "string, optional"
          }
        ],
        "UnchangedData": {
          "Overhead": "string, required - base64 encoded string from GetTimesheets",
          "Project": "string, required - base64 encoded string from GetTimesheets"
        }
      }
    ]
  }
}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "ResponseCode": 200,
  "Message": "Success",
  "Errors": [],
  "Content": {
    "Timesheets": [
      {
        "TimesheetKey": 147,
        "TimesheetDate": "2012-09-09T00:00:00",
        "EmployeeKey": 30,
        "Overhead": {
          "Totals": {},
          "Detail": []
        },
        "Project": {
          "Totals": {},
          "Detail": []
        },
        "UnchangedData": {
          "Overhead": "base64encodeddata",
          "Project": "base64encodeddata"
        }
      }
    ]
  },
  "UsageKey": "6e983af4-946f-4947-9fbd-a233f796f6b4"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {}
}

Submit Timesheets
POST/AjeraAPI.ashx?{id}

SubmitTimesheets is used to submit one or more timesheets for approval. You can also use this method to unsubmit previously submitted timesheets.

NOTE: This method is only accessible when Authorizing Employee is set and is an active employee.

Example URI

POST /AjeraAPI.ashx?ew0KICAiRGF0YWJhc2VOYW1lIjogIkFqZXJhX01haW4iDQp9
URI Parameters
HideShow
id
string (required) Example: ew0KICAiRGF0YWJhc2VOYW1lIjogIkFqZXJhX01haW4iDQp9

An unique identifier required for api access.

Request  SubmitTimesheets
HideShow
Headers
Content-Type: application/json
Accept: application/json
Body
{
  "Method": "SubmitTimesheets",
  "SessionToken": "",
  "MethodArguments": {
    "RequestedTimesheets": [
      147,
      148
    ],
    "Unsubmit": false
  }
}
Schema
{
  "Method": "string, required",
  "SessionToken": "string",
  "MethodArguments": {
    "RequestedTimesheets": "int array, required",
    "Unsubmit": "boolean, optional"
  }
}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "ResponseCode": 200,
  "Message": "Success",
  "Errors": [],
  "Content": {
    "Timesheets": [
      {
        "TimesheetKey": 147,
        "TimesheetDate": "2012-09-09T00:00:00",
        "EmployeeKey": 30,
        "Status": "Submitted",
        "SubmittedDateTime": "2023-05-15T12:34:56",
        "SubmittedBy": 30,
        "Overhead": {
          "Totals": {},
          "Detail": []
        },
        "Project": {
          "Totals": {},
          "Detail": []
        },
        "UnchangedData": {
          "Overhead": "base64encodeddata",
          "Project": "base64encodeddata"
        }
      },
      {
        "TimesheetKey": 148,
        "TimesheetDate": "2012-09-16T00:00:00",
        "EmployeeKey": 30,
        "Status": "Submitted",
        "SubmittedDateTime": "2023-05-15T12:34:56",
        "SubmittedBy": 30,
        "Overhead": {
          "Totals": {},
          "Detail": []
        },
        "Project": {
          "Totals": {},
          "Detail": []
        },
        "UnchangedData": {
          "Overhead": "base64encodeddata",
          "Project": "base64encodeddata"
        }
      }
    ]
  },
  "UsageKey": "6e983af4-946f-4947-9fbd-a233f796f6b4"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {}
}

Generated by aglio on 23 Jun 2025