api login

BigTime's staff api provides access to the list of users in the system.

Getting a listing of Staff
try it
  • Click the GET button below to view the information returned by this url.

  • Get

By submitting a simple query to this api, you'll get a listing of staffer data (we return the "simple" view on the listings page). No additional parameters are required/supported.
HEADERS:  X-Auth-Token:{YourAPIToken}, X-Auth-Realm:{YourFirmId}
HTTP GET:  /staff?{ShowInactive=true}
HTTP RESPONSE:  (array of Staff objects ("basic" view -- see below for details)

Pulling the detail for a specific staffer.
try it
  • Get

You can use a simple GET request to pull the details associated with a single entry. Note that the BASIC view fields will be returned by default. You should also note that a user cannot pull data for an entity they are not permitted to view in the BigTime program. This can often become a problem when back-end services are using the api without system-wide permissions.

HEADERS:  X-Auth-Token:{YourAPIToken}, X-Auth-Realm:{YourFirmId}
HTTP GET:  /staff/detail/{systemid}?&View={Detailed/Basic}
HTTP RESPONSE:  (Staff object -- see below for details)

Creating a NEW staffer.
try it
  • Post

Note that only the fields listed in the Update view (below) should be included in your post to this url. Any other data will be ignored. BigTime doesn't care about the order in which field data is posted, and none of the fields are case sensitive. Note that any validation errors will return a 400 error, and an invalid permission will return a 405 (eg - attempting to create a staffer when you don't have that right).

HEADERS:  X-Auth-Token:{YourAPIToken}, X-Auth-Realm:{YourFirmId}
HTTP GET:  /staff/add/?inviteUser={true/false}
HTTP RESPONSE:  (Staff object -- see below for details)

Invite Existing Staff to BigTime
try it
  • Post

This endpoint can be used to invite existing staff to BigTime.

Request Format

HEADERS:  X-Auth-Token:{YourAPIToken}, X-Auth-Realm:{YourFirmId}
HTTP POST:  /staff/invite
POST CONTENT:
{  
   "InviteStaffSids":[  
		1000,
		1001,
		1002,
		...,
		n
   ]
}

HTTP STATUS: 200 Success.
HTTP STATUS: 202 Completed with errors.
HTTP RESPONSE: 
{
    "SuccessfullyInvitedStaffSids": [
		1001,
		...,
		n,
    ],
    "FailedInviteStaffErrors": {
        "StaffSids": [
			1000,
			1002
		],
        "FailureErrorMessages": [
            {
                "StaffSid": 1000,
                "ErrorMessage": "The system failed to invite the staff."
            },
            {
                "StaffSid": 1002,
                "ErrorMessage": "The system failed to invite the staff."
            },
		]
    }
}

Retrieve Staff Allocation Details

This endpoint can be used to fetch staff allocations by week or month for a specified date range. Failing to submit a valid value for any of the fields listed in the request object will raise an error. In order to use this endpoint you will need permissions to view task budget data. You will only recieve a response containing staffer data your have permission to view.

Request Format

HEADERS:  X-Auth-Token:{YourAPIToken}, X-Auth-Realm:{YourFirmId}
HTTP GET:  /staff/staffAllocations/?startDate={Date}&endDate={Date}&allocationPeriodType={weekly/monthly}
HTTP RESPONSE:  (StaffAllocationSummaryDetail object -- see below for fields)

StaffSkills

This section of the API is concerned with managing skills and staff skill assignmnets.

GET /Staff/SkillTypes

This endpoint is used to fetch the Skill Types present in BigTime. These values are then used in Skill creation.

Request Format
HEADERS:  X-Auth-Token:{YourAPIToken}, X-Auth-Realm:{YourFirmId}
HTTP GET:  /staff/skillTypes
Response Format
HTTP STATUS: 200 Success.
HTTP STATUS: 403 Forbidden.
HTTP STATUS: 5xx Error.

HTTP RESPONSE: 
{
    "1": "Skill",
    "2": "Certification",
    "3": "Language",
    "4": "Other"
}

GET /Staff/Skill

This endpoint is used to fetch existing Skills from the BigTime system.

Request Format
HEADERS:  X-Auth-Token:{YourAPIToken}, X-Auth-Realm:{YourFirmId}
HTTP GET:  /staff/skill
Response Format
HTTP STATUS: 200 Success.
HTTP STATUS: 403 Forbidden.
HTTP STATUS: 5xx Error.

HTTP RESPONSE: 
[
    {
        "SkillSID": long,
        "SkillNm": string,
        "SkillDesc": string,
        "SkillTypeSID": long,
        "SkillCategorySID": long,
        "SkillCategoryNm": string,
        "RoleList": long[],
        "IsExpiring": bool,
        "IsRating": bool,
        "CreatedDt": date,
        "ModifiedDt": date
    },
	...
]

POST /Staff/Skill
try it
  • Post

This endpoint is used to create Skills in the BigTime system.

Request Format
HEADERS:  X-Auth-Token:{YourAPIToken}, X-Auth-Realm:{YourFirmId}
HTTP POST:  /staff/skill
HTTP REQUEST: 
{
    "SkillNm": string,
    "SkillDesc": string,
    "SkillTypeSID": long,
    "SkillCategorySID": long,
    "SkillCategoryNm":string
    "RoleList": long[],
    "IsExpiring": bool
    "IsRating": bool
}
Response Format
HTTP STATUS: 200 Success.
HTTP STATUS: 4xx User Error.
HTTP STATUS: 403 Forbidden.
HTTP STATUS: 5xx Error.

HTTP RESPONSE: 
{
	"SkillSID": long,
    "SkillNm": string,
    "SkillDesc": string,
    "SkillTypeSID": long,
    "SkillCategorySID": long,
    "SkillCategoryNm":string
    "RoleList": long[],
    "IsExpiring": bool,
    "IsRating": bool,
	"CreatedDt": date,
	"ModifiedDt": date,
}

DELETE /Staff/Skill
try it

This endpoint is used to remove Skills from the BigTime system.

Request Format
HEADERS:  X-Auth-Token:{YourAPIToken}, X-Auth-Realm:{YourFirmId}
HTTP DELETE:  /staff/skill
HTTP REQUEST: 
{
	"id":0
}
Response Format
HTTP STATUS: 200 Success.
HTTP STATUS: 4xx User Error.
HTTP STATUS: 403 Forbidden.
HTTP STATUS: 5xx Error.

HTTP RESPONSE: 
{
    "success": true
}

GET /Staff/SkillAssignment

This endpoint is used to fetch existing skills currently assigned to a designated Staffer.

Request Format
HEADERS:  X-Auth-Token:{YourAPIToken}, X-Auth-Realm:{YourFirmId}
HTTP GET:  /staff/SkillAssignment/{staffId}
Response Format
HTTP STATUS: 200 Success.
HTTP STATUS: 403 Forbidden.
HTTP STATUS: 5xx Error.

HTTP RESPONSE: 
[
    {
        "StaffSkillSID": long,
        "StaffSID": long,
        "FName": string,
        "SName": string,
        "FullName": string,
        "SkillSID": long,
        "SkillNm": string,
        "SkillDesc": string,
        "IndustrySID": long,
        "IndustryNm": string,
        "SkillCategoryNm": string,
        "SkillTypeSID": long,
        "SkillTypeNm": string,
        "IsExpiring": bool,
        "IsRating": bool,
        "Rating": decimal,
        "CreatedDt": date,
        "CreatedBy": string,
        "ModifiedDt": date,
        "ModifiedBy": string,
        "StaffSkillCertificationSID": long,
        "FileType": long,
        "IsExpired": bool,
        "CertificationAssetName": string,
        "CertificationCreatedBy": string,
        "CertificationModifiedBy": string
    },
	...
]

POST /Staff/SkillAssignment
try it
  • Post

This endpoint is used to assign Skills to Staffers in the BigTime system.

Request Format
HEADERS:  X-Auth-Token:{YourAPIToken}, X-Auth-Realm:{YourFirmId}
HTTP POST:  /staff/SkillAssignment
HTTP REQUEST: 
{
    "StaffSid": long,
    "SkillSid": long,
    "IndustrySID": long,
    "Rating": decimal,
    "IsActive": bool
}
Response Format
HTTP STATUS: 200 Success.
HTTP STATUS: 4xx User Error.
HTTP STATUS: 403 Forbidden.
HTTP STATUS: 5xx Error.

HTTP RESPONSE: 
{
    "StaffSkillSID": long,
    "StaffSID": long,
    "SkillSID": long,
    "IndustrySID": long,
    "Rating": decimal,
    "CreatedDt": date,
    "ModifiedDt": date,
    "IsActive": bool
}

DELETE /Staff/SkillAssignment
try it

This endpoint is used to remove Skills assignments from Staffers in the BigTime system.

Request Format
HEADERS:  X-Auth-Token:{YourAPIToken}, X-Auth-Realm:{YourFirmId}
HTTP DELETE:  /staff/SkillAssignment
HTTP REQUEST: 
{
	"id":0
}
Response Format
HTTP STATUS: 200 Success.
HTTP STATUS: 4xx User Error.
HTTP STATUS: 403 Forbidden.
HTTP STATUS: 5xx Error.

HTTP RESPONSE: 
{
    "success": true
}

Staffer Custom Fields

By submitting a simple query to this api, you'll get a list of custom fields for a specific staffer.

Getting a list of staffer custom fields.

You can use a GET request to pull the list of custom fields for a specific staffer. Note that a user cannot pull staffer custom field data for a staffer they are not permitted to view in the BigTime program. This can often become a problem when back-end services are using the api without system-wide permissions. No additional parameters are required/supported.

HEADERS:  X-Auth-Token:{YourAPIToken}, X-Auth-Realm:{YourFirmId}
HTTP GET:  /staff/UDFList/{sid}
HTTP RESPONSE:  (array of Staffer Custom Field objects -- see below for details)

Getting a list of staffer custom fields by field name.

You can use a POST request to pull a list of custom fields with a specific field name. If you decide to not specify a field name or pass an empty list, the below query will return a full list of custom fields for all your staffers. Note that a user cannot pull staffer custom field data for a staffer they are not permitted to view in the BigTime program. This can often become a problem when back-end services are using the api without system-wide permissions. No additional parameters are required/supported.

HEADERS:  X-Auth-Token:{YourAPIToken}, X-Auth-Realm:{YourFirmId}
HTTP POST:  /staff/UDFListByName
POST CONTENT:
[
	"Custom Field Name 1",
	"Custom Field Name 2",
	..
]
HTTP RESPONSE:  (array of Staffer Custom Field objects -- see below for details)

Updating existing custom fields on a staffer.

You can use a POST request to update an existing staffer's custom field list. To do this, POST to this URL with the staffer SID and a JSON array of Staffer Custom Fields objects. Your staffer's custom fields will be set according to the JSON array passed to this URL. Note again, validation errors will return a 400 error, and an invalid permission will return a 405.

HEADERS:  X-Auth-Token:{YourAPIToken}, X-Auth-Realm:{YourFirmId}
HTTP POST:  /staff/UDFList/{sid}
POST CONTENT:
{  
   "UDFList":[  
      {  
         "Sid":6789,
         "Value":"0"
      },
      {  
         "Sid":6790,
         "Value":"1"
      }, 
	  ...
   ]
}
HTTP RESPONSE:  (updated array of Staffer Custom Field objects -- see below for details)

Staff: Field Details

For each of the operations listed above, you will post or "get" one or more staff objects. The list below is a complete catalog of fields available through the api (including the views within which those fields are found). Take special note of the AddUpdate and Update views. Required fields are flagged with an "*" character, and fields marked with a "!" character require the ViewPersonalData permit type to view and update.

FieldTypeDescriptionView(s)
StaffSid Integer Unique SID code for this record. Basic, Detailed, Update*
FName String First (given) name. Basic, Detailed, Update
SName String Last (family) name. Basic, Detailed, AddUpdate*
Title String Business title/position Basic, Detailed, Update
ManagerID Integer The StaffSid of the staffer's manager Basic, Detailed, Update
Address Address** The address object attached to this contact (see details below). Basic, Detailed, Update!
EMail String Primary email address Basic, Detailed, AddUpdate*!
Phone_Cell String Primary phone number Basic, Detailed, Update!
Phone_Wk String Additional phone Basic, Detailed, Update!
Phone_Hm String Additional phone Basic, Detailed, Update!
Notes String Free form notes field Basic, Detailed, Update
IsInactive True/False Inactive stafferss have this value set to TRUE. Basic, Detailed, Update
Status Integer The status code controls the specific reason behind a staffer's deactivation (eg - on-leave, terminated). The available values for this list are controlled by the administrator in BigTime's settings section. Detailed,AddUpdate
Start_dt Date Start date for the staff member (defaults to today if a staffer is created without one). Detailed,AddUpdate
Term_dt Date When a staffer is terminated, this date contains the date it is closed "as of." Detailed,AddUpdate
UsePayrollItem Integer TRUE if payroll item data should be posted to the accouting system (QuickBooks or Xero specifically) when BigTime posts timesheet data. Detailed, Update
Capacity Integer We track total 'available' hours per staffer so that we can track utilization. This field will return the total hours this staffer has in a "typical" month (eg - 20 days). Most firms set this number between 140 and 160 by default. Simple,Detailed,AddUpdate
CostFactor Numeric Detailed,AddUpdate
HourRateType Integer Detailed,AddUpdate
Rate1 Integer Staff billing rate (there can be up to 5 billing rates assigned to each staff member and customer's can be assiged "staff rate" 1-5 as their base rate). Detailed,AddUpdate
Rate2 Integer Staff billing rate (there can be up to 5 billing rates assigned to each staff member and customer's can be assiged "staff rate" 1-5 as their base rate). Detailed,AddUpdate
Rate3 Integer Staff billing rate (there can be up to 5 billing rates assigned to each staff member and customer's can be assiged "staff rate" 1-5 as their base rate). Detailed,AddUpdate
Rate4 Integer Staff billing rate (there can be up to 5 billing rates assigned to each staff member and customer's can be assiged "staff rate" 1-5 as their base rate). Detailed,AddUpdate
Rate5 Integer Staff billing rate (there can be up to 5 billing rates assigned to each staff member and customer's can be assiged "staff rate" 1-5 as their base rate). Detailed,AddUpdate
StaffOrgId Integer Detailed,AddUpdate
StaffType Integer Detailed,AddUpdate
HomeTimezone String The staffer's home timezone (see picklist/timezones for possible values). Note that this can be blank if the staffer's home timezone is the same as the firm's. Detailed,AddUpdate
DtCreated Date UTC Date that the staffer was created in the system. Basic, Detailed
DtModified Date UTC Date that the staffer was last modified by anyone (including external systems like QuickBooks or Xero). Basic, Detailed, Update
SecurityGroup Integer ID of Security Group you want staffer to be assigned. Security Groups and their corresponding ID can be pulled from /picklist/FieldValues/SecurityGroups endpoint. Please see the Picklists section of the API documentation for more details. AddUpdate
DefaultRole Integer ID of the Project Team Role you want the staffer to be assigned to. Project Team Roles and their corresponding ID can be pulled from /picklist/FieldValues/LookupProjectTeamRoles endpoint. Please see the Picklists section of the API documentation for more details. Basic, Detailed, Update
UdfList Udfs** A list of custom fields defined on the staffer. Detailed
SSN String A staffer's social security number. This value is encrypted. !
Salary Numeric A staffer's salary. This value is encrypted. !
PostTimeAsBilled Boolean Set TRUE if a Staffer is set to create their time into a Vendor bill. Detailed
Additional fields if integrated with QuickBooks

FieldTypeDescriptionView(s)
QBEmployeeId String ID for a QuickBooks Employee. Detailed, Update
QBVendorId String ID For a QuickBooks Vendor. Detailed, Update
QBClassDefaultId String Allows the User to set a default Class. Detailed, Update
Additional fields if integrated with Sage Intacct

FieldTypeDescriptionView(s)
IAEmployeeId String ID for an Intacct Employee. Detailed, Update
IAVendorId String ID for an Intacct Vendor. Detailed, Update
IAClassDefaultId Integer Allows the User to set a default Class. Detailed, Update
Address Object Field Details

FieldTypeDescriptionView(s)
Id Integer Unique SID code for this record. Note that this value is an attribute on the main Address object if you are downloading xml. Basic, Detailed, Update*
Address String Street address (can be multi-line) Basic, Detailed, Update
City String Basic, Detailed, Update
State String State, Province or county (depending on the address' country of origin) Basic, Detailed, Update
Zip String Postal code Basic, Detailed, Update
Country String Country of origin. Basic, Detailed, Update
Staffer Custom Field Object Details

FieldTypeDescriptionView(s)
Sid Integer Unique SID for the Custom Field. Basic, Detailed, Update*
Name String Name of the Custom Field. Basic, Detailed
Value String Value of the Custom Field. Basic, Detailed, Update*
StaffAllocationSummaryDetail Object Details

FieldTypeDescriptionView(s)
details Array of StaffAllocationDetail Objects Collection of staff allocations resulting from the GET request. GET StaffAllocations
StaffAllocationDetail Object Details

FieldTypeDescription
StaffSid Integer Unique SID code for this record.
StaffFName String First (given) name.
StaffSName String Last (family) name.
StaffCC1
StaffCC2
StaffCC3
Integer Each project/staffer in the system can be assigned up to 3 cost center values (eg - office, partner, department). Those cost centers are useful for reporting -- and they are set by the administrator in the settings area. Note that you can see the list of available cost center values for this field by pulling data from the PICKLIST area (picklist/fieldValues/CCenter1 - CCenter3).
StaffOrgID Integer Indicates the ID of the organization the staffer is a member of.
StaffInactive True/False Inactive stafferss have this value set to TRUE.
StaffStatus Integers The status code controls the specific reason behind a staffer's deactivation (eg - on-leave, terminated). The available values for this list are controlled by the administrator in BigTime's settings section.
RealCapacity Integer We track total 'available' hours per staffer so that we can track utilization. This field will return the total hours this staffer has based on holidays, settings, and other allocations.
RawCapacity Integer We track total 'available' hours per staffer so that we can track utilization. This field will return the total hours this staffer has in a "typical" month (eg - 20 days). Most firms set this number between 140 and 160 by default.
ProjectSid Integer Unique SID code for this project record.
ProjectDName String Since some firms use project "name" and others use "code," BigTime supports a display name that makes it easier to identify a project out of context (eg - in a timesheet or a report). Often, the display name is a simple a "Client:Project", but it can include any combination of the project's name, code, client name, client code and "type." This value is set by a firm's administrator and used throughout the system. Typically, when a new project is created in the system, the display name is auto-filled. So, DisplayName is not a required field when a new project is created.
ProjectCC1
ProjectCC2
ProjectCC3
Integer Each project/staffer in the system can be assigned up to 3 cost center values (eg - office, partner, department). Those cost centers are useful for reporting -- and they are set by the administrator in the settings area. Note that you can see the list of available cost center values for this field by pulling data from the PICKLIST area (picklist/fieldValues/CCenter1 - CCenter3).
ProjectBillable True/False FALSE if a project is an internal (non-billing) project. All time/expense charges on projects marked as IsNoCharge are flagged as non-billable automatically when a user submits them.
ProjectInactive True/False Indicates if the project the staffer was allocated to is active or inactive.
ProjectDeactivated True/False Indicates if the project the staffer was allocated to was deactivated manually.
ProjectTypeId Integer Unique SID code for the project's TYPE.
ProjectStatusProd Integer The production status code controls the specific reason behind a project's deactivation (eg - on-hold, cancelled, closed). The available values for this list are controlled by the administrator in BigTime's settings section.
Period Integer A simplified expression indicating the start date of the period in question. This field in conjunction with the AllocationPeriodType determine the range the response will cover.
AllocatedHours Decimal The number of hours allocated for the staff in the specified period.
StaffRole Integer ID of the Project Team Role you want the staffer to be assigned to. Project Team Roles and their corresponding ID can be pulled from /picklist/FieldValues/LookupProjectTeamRoles endpoint. Please see the Picklists section of the API documentation for more details.
IsRole True/False Indicates if the allocation was applied via the staffers role or directly.