www.shiftdata.com Open in urlscan Pro
44.237.100.176  Public Scan

Submitted URL: http://shiftdata.com/
Effective URL: https://www.shiftdata.com/
Submission: On March 07 via api from US — Scanned from DE

Form analysis 0 forms found in the DOM

Text Content

NAV
JSON Example PHP Code

Overview
* Scope
Webhooks Getting Set Up Requests and Responses
* Selection Criteria
* Batches
  * Pagination
  * Performance Batching
  * Batch Requests
* Requests
  * Request Format
  * Request Signature
* Responses
  * Response Format
  * Successful Responses
  * Error Responses
Objects
* account object
  * account: basic attributes
  * account: extended attributes
  * account.acceptPrivacyPolicy
  * account.create
  * account.delete
  * account.deleteDocument
  * account.deleteImage
  * account.deleteResume
  * account.expiredCertification
  * account.get
  * account.getDocument
  * account.getImage
  * account.getResume
  * account.list
  * account.listByWorkgroup
  * account.listMemberships
  * account.listOpenids
  * account.listUpdated
  * account.resetPassword
  * account.self
  * account.sendPassword
  * account.sendWelcomeLetter
  * account.update
  * account.updateDocument
  * account.updateImage
  * account.updateResume
* accountPoints object
  * accountPoints: basic attributes
  * accountPoints.create
  * accountPoints.delete
  * accountPoints.list
  * accountPoints.shiftList
  * accountPoints.update
* attestation object
* attestationType object
  * attestationType.list
* availability object
  * availability.approve
  * availability.create
  * availability.delete
  * availability.get
  * availability.list
  * availability.update (not currently available)
* calendar object
  * calendar.summary
* client object
  * client.create
  * client.delete
  * client.get
  * client.list
  * client.update
* coverageBlock object
  * Basic Attributes
  * coverageBlock.list
* department object
  * department.create
  * department.delete
  * department.get
  * department.list
  * department.update
* directManager object
  * directManager.get
  * directManager.list
* location object
  * location.create
  * location.delete
  * location.list
  * location.update
* managerNote object
  * managerNote: basic attributes
  * managerNote.customFields
  * managerNote.get
  * managerNote.list
  * managerNote.create
  * managerNote.delete
  * managerNote.update
* managerNoteType object
  * managerNoteType.list
  * managerNoteType.create
  * managerNoteType.delete
  * managerNoteType.update
* membership object
  * membership.create
  * membership.delete
  * membership.list
  * membership.listExcluded
  * membership.tierList
  * membership.update
* message object
  * message.broadcast
  * message.direct
* news object
  * news.get
* openid object
  * openid.create
  * openid.delete
  * openid.update
* paycode object
  * paycode.create
  * paycode.delete
  * paycode.get
  * paycode.list
  * paycode.update
* paytype object
  * paytype.list
* profileConfiguration object
  * profileConfiguration.list
* profileData object
  * profileData.list
  * profileData.update
* profileType object
  * profileType.list
* registration object
  * registration.create
* resource object
  * Basic Attributes
  * resource.list
* role object
  * role.create
  * role.delete
  * role.get
  * role.assign
  * role.list
  * role.update
* shift object
  * shift: basic attributes
  * shift: extended attributes
  * shift.acknowledge
  * shift.assign
  * shift.bulkDelete
  * shift.bulkUpload
  * shift.bulkUploadGetSettings
  * shift.bulkUploadGetTemplates
  * shift.bulkUploadUpdateSettings
  * shift.bulkUploadStatus
  * shift.bulkUpdate
  * shift.bulkCopy
  * shift.confirm
  * shift.create
  * shift.customDropdownList
  * shift.customMultipickList
  * shift.customTextList
  * shift.delete
  * shift.deleteSignup
  * shift.get
  * shift.getAssignmentList
  * shift.getOfferedTrade
  * shift.list
  * shift.listUpdated
  * shift.markAbsent
  * shift.notification
  * shift.signup
  * shift.signupList
  * shift.summary
  * shift.unconfirm
  * shift.update
  * shift.whosOn
* system object
  * system.echo
  * system.endBatch
  * system.getUserKeys
  * system.timestamp
  * system.whoami
* teamCategory object
  * teamCategory.list
  * teamCategory.create
  * teamCategory.update
  * teamCategory.delete
* teamCategoryItem object
  * teamCategoryItem.list
  * teamCategoryItem.add
  * teamCategoryItem.undelete
  * teamCategoryItem.update
  * teamCategoryItem.delete
* timeOffRequest object
  * timeOffRequest: basic attributes
  * timeOffRequest: extended attributes
  * timeOffRequest.approve
  * timeOffRequest.create
  * timeOffRequest.delete
  * timeOffRequest.deny
  * timeOffRequest.get
  * timeOffRequest.list
  * timeOffRequest.update
* timecard object
  * timecard: basic attributes
  * timecard: extended attributes
  * timecard.approve
  * timecard.create
  * timecard.delete
  * timecard.exportTRAXPayroll
  * timecard.get
  * timecard.list
  * timecard.process
  * timecard.report
  * timecard.update
  * timecard.customDropdownList
  * timecard.shiftList
* timeclock object
  * timeclock: basic attributes
  * timeclock: extended attributes
  * timeclock.clockIn
  * timeclock.clockOut
  * timeclock.get
  * timeclock.list
  * timeclock.report
  * timeclock.status
  * timeclock.whosOn
* timezone object
  * timezone.get
  * timezone.list
* tradeboard object
  * tradeboard: basic attributes
  * tradeboard: extended attributes
  * tradeboard.accept
  * tradeboard.approve
  * tradeboard.create
  * tradeboard.delete
  * tradeboard.get
  * tradeboard.list
  * tradeboard.update
* voucher object
  * voucher.balance
  * voucher.refund
  * voucher.use
* workStatusType object
  * workStatusType.get
  * workStatusType.list
* workgroup object
  * workgroup: basic attributes
  * workgroup.create_clients
  * workgroup.addDepartments
  * workgroup.addLocations
  * workgroup.addRoles
  * workgroup.create
  * workgroup.delete
  * workgroup.deleteClients
  * workgroup.deleteDepartments
  * workgroup.deleteLocations
  * workgroup.deleteRoles
  * workgroup.get
  * workgroup.list
  * workgroup.listJoinable
  * workgroup.listClients
  * workgroup.listCoverageBlocks
  * workgroup.listDepartments
  * workgroup.listLocations
  * workgroup.listResources
  * workgroup.listRoles
  * workgroup.undelete
  * workgroup.update
 * Privacy Policy
 * Contact Us


OVERVIEW

Shiftboard offers a rich set of Application Programming Interfaces (APIs) to
allow external systems to interact with the Shiftboard platform. These APIs take
the form of JSON-RPC web service calls or Webhooks. Most Shiftboard application,
account, authorization, systems management, and site provisioning data is
accessible and the API is continually extended to encompass more of the
Shiftboard data and functionality.

All requests and responses are encoded using JavaScript Object Notation (JSON)
and encrypted using 256-bit Secure Sockets Layer (SSL). Unencrypted requests are
not accepted. Using JSON, HMAC, and Base64 libraries, it should be easy to
create, update, list and delete objects within the Shiftboard application. These
libraries should be available for all programming languages.

All requests include your organization's unique Access Key ID and are digitally
signed by computing an HMAC SHA1 signature of the request with your private
(secret) Signature Key. Your private Signature Key should NEVER be transmitted
or shared with anyone.

Please see the Requests section for details on making digitally signed requests.


SCOPE

Virtually every end-user interaction can be implemented using the web service.
In fact, all of Shiftboard's end-user applications use the web service. In
addition, various types of management functionality not available to end-users
are exposed via the web service.

The Shiftboard APIs are constantly evolving. Please ask about any objects or
extended functionality that can help meet the requirements of your project.


WEBHOOKS

Shiftboard can make an HTTP request to a customer-specified endpoint when
specific events occur. Supported events include the following:

 * account created
 * account updated
 * account deleted
 * shift created
 * shift updated
 * shift deleted
 * workgroup membership created
 * workgroup membership updated
 * workgroup membership deleted

Each of these events can be subscribed to independently (enabled/disabled and
endpoint specified).

The webhook call is an HTTP GET request with the URL parameterized with the ID
of the affected object. For example, if the account.create endpoint is specified
as ‘http://test.com/account/create/' then a notification will look like
‘http://test.com/account/create/###’ where ### is the ID of the newly created
account. The ID can be the internal Shiftboard ID, the external Customer ID (if
the site is configured to support that), or a customer-specified custom field on
the shift object.

For shifts, ‘###’ is the ID of the shift.

For workgroup memberships, there are two IDs: ‘###/###’. The first is the
workgroup ID, and the second is the account ID of the member.

For more information, or to get a webhook configured for your site, please
contact your Account Manager.

Reference: Webhooks


GETTING SET UP

Before you use the Shiftboard Web Services API, you must register with
Shiftboard and obtain:

 * an Access Key ID (a 36 character sequence)
   
   * For example: 135fc788-762b-46a6-a80f-3491c14ad26f

 * a secret Signature Key (a 40-character sequence)
   
   * For example: bkvqNVSokbDZVHvt+RzqsrVzI0w7fhcU/jo/eUcY

Caution: Your Signature Key is a secret, which only you and Shiftboard should
know. It is important to keep it confidential to protect your account. Store it
securely in a safe place. Never include it in your requests to Shiftboard, and
never e-mail it to anyone. Do not share it outside your organization, even if an
inquiry appears to come from Shiftboard. No one who legitimately represents
Shiftboard will ever ask you for your secret Signature Key.

The Access Key ID is associated with an API Account which will be added to your
organization's Shiftboard. You include the Access Key ID in all requests to the
Shiftboard Web Services API to identify yourself as the sender of the request,
and the associated API Account is used to authorize the requested action.

The Access Key ID is not a secret. To provide proof that you truly are the
sender of the request, you also include a digital signature calculated using
your secret Signature Key.


REQUESTS AND RESPONSES

Shiftboard Web Services are based on the JSON-RPC 2.0 specification, with some
extensions. At this time, only GET requests are supported (except for batch
requests, which use POST), with formatting based on the JSON-RPC Over HTTP
specification's GET request.


SELECTION CRITERIA

Methods that may apply selection criteria take a select attribute. The value of
this attribute is an object with method-dependent attributes. The select
attribute is optional for some methods and required for others. Default values
may apply for some methods.


BATCHES

There are three kinds of "batching" in the API: Pagination, Performance
Batching, and Batch Requests.


PAGINATION

> For example, to perform an initial request with a page size of 25, include a
> page attribute in your request:

page: {batch:25}


> If there is more than one page of results available, the response will include
> a page attribute like this:

page: {next: {batch:"25",start:26}, this: {batch:"25",start:1}}


> Use the value of the next attribute as the page attribute to get another page:

page: {batch:"25",start:26}


> and you will get a response including this:

page: {next: {batch:"25",start:51},
prev: {batch:"25",start:1},
this: {batch:"25",start:26}


> (The next attribute will only be present if in fact there is yet another page
> of data available.)

Methods that return paginated results optionally take a page attribute. The
value of this attribute is an object with batch and start attributes. batch
specifies the number of records to be returned with each request and must be
between 1 and 1000. If not specified, the default is 10. start specifies the
record number with which results should start. If not specified, the default is
1.

The response results may include a count attribute giving the total number of
records matching the selection criteria, if available.

If records were found, it will include a page attribute giving a pagination
object (in the format used by the page request attribute) for this page, the
next page, and/or the prev page, as applicable.


PERFORMANCE BATCHING

> Two requests in one batch. Note batch:true in each, and system.endBatch call
> at end.

location.create
{
 workgroup:1,
 name:"General Electric",
 zip:"12345",
 batch:true
}

location.create
{
 workgroup:1,
 name:"White House",
 address:"1600 Pennsylvania Ave NW",
 city:"Washington",
 state:"District of Columbia",
 batch:true
}

system.endBatch
{}


This second type of batching involves speeding up requests: if a large number of
non-interdependent requests will be sent, a batch attribute can be specified to
enable them to be processed more quickly, with a system.endBatch request sent at
the end to perform necessary operations that were deferred.

This mode should not be used when processing interdependent requests, for
example, adding locations and also adding shifts that use those locations or
adding workgroup relationships to those locations.


BATCH REQUESTS

> Request example:

[
  {
    "id": 1,
    "jsonrpc": "2.0",
    "method": "shift.list",
    "params": {
      "select": {
        "end_date": "2018-01-31",
        "start_date": "2018-01-01"
      }
    }
  },
  {
    "id": 2,
    "jsonrpc": "2.0",
    "method": "location.create",
    "params": {
      "workgroup": 1,
      "name": "General Electric",
      "zip": "12345"
    }
  }
]


> Response example (abbreviated):

[
  {
    "id": "1",
    "jsonrpc": "2.0",
    "result": {
      "shifts": [
        {
          "end_date": "2018-01-08T17:00:00",
          "id": "1111111",
          "start_date": "2018-01-08T09:00:00",
          "timezone": "Pacific Time (US/Can) (GMT-08:00)",
          "workgroup": "1"
        }
      ]
    },
  },
  {
    "id": "2",
    "jsonrpc": "2.0",
    "result": {
      "id": "284442"
    }
  }
]



The third type of batching is for sending multiple individual API calls in a
single request. The API supports the JSON-RPC 2.0 specification for batches,
using POST requests, where instead of supplying a JSON object of parameters, an
array of objects is supplied.

Each object in the array contains the jsonrpc, id, method, and params keys. The
access_key_id and signature parameters are put in the query string, not in the
POST contents. The request signature is for the entire POST contents.

Responses will also be an array, with the "id" in the response object matching
the "id" in the request object. If no "id" is supplied in a request object, no
response will be given for that part of the request.


REQUESTS


REQUEST FORMAT

A Shiftboard Web Services API request is issued via an HTTP GET request (or
POST, for batch requests) to https://api.shiftdata.com. Each request may have
the following components:

ID

An integer or string. Not used except in that a response should return the same
value as passed in the request. This field can be used by the client to
correlate a response with its request.

For batch requests, no results will be returned for an individual request unless
an id is supplied for that request.

JSONRPC

Version of the JSON-RPC specification for this request. Must always be the
string "2.0".

METHOD

A string giving the name of the procedure to be invoked.

PARAMS

A object (RFC 4627) that holds the actual parameter values for the invocation of
the procedure. All Shiftboard Web Services API methods require params, minimally
an empty object ({}). See Objects and Common Attributes.

ACCESS_KEY_ID

A 36 character string identifying the client to the Shiftboard Web Services API.
May be provided either in the GET request query string or in a cookie.

SIGNATURE

A 28 character digital signature authenticating the source of this request,
computed as described below. May be provided either in the GET request query
string or in a cookie.

Those components that may contain characters other than alphanumerics, '-', '.',
'_', or '~' should be URI encoded (RFC 3986), as is normal for an HTTP GET
request query string.


REQUEST SIGNATURE

Given the method name "echo" and the params "{ }", the data
to be signed is "methodechoparams{ }".  Given a signature key
"Xuzh+MDxcW9/CLPD1Z2wiSX51LVrQrStEZPQWk0P", the resulting
base64-encoded HMAC SHA1 signature is "gJ5Oy1E5W4u9XpjWyMoJytlScU8=".
Given an API access key of "57a67b3b-34e4-4c07-a8ca-e7ecb77a7f33",
a complete request would be

"https://api.shiftdata.com/?id=885&jsonrpc=2.0&method=echo&params=eyB9&signature=gJ5Oy1E5W4u9XpjWyMoJytlScU8%3D&access_key_id=57a67b3b-34e4-4c07-a8ca-e7ecb77a7f33"


$AccessKey = "ACCESS_KEY";
$Method = "account.list";
$Params = "{ }";
$Request = "method" . $Method . "params" . $Params;
$ShifboardSecretKey = "SECRET_KEY";
$Params = urlencode(base64_encode($Params));
$Sig = urlencode(base64_encode(hash_hmac('sha1', $Request, $ShifboardSecretKey, true)));

$URL = "https://api.shiftdata.com/servola/api/api.cgi?&access_key_id=" . $AccessKey . "&jsonrpc=2.0&id=1&method=" . $Method . "&params=" . $Params . "&signature=" . $Sig;


Each request is digitally signed by taking components of the request and
computing an HMAC SHA1 signature for them using a secret Signature Key (which
itself should never be transmitted). The calculated signature is then base64
encoded. The HMAC SHA1 algorithm is described in RFC 2104.

The data to be signed for GET requests is composed of four parts concatenated
with no separator:

 * The 6 character string method
 * The name of the method being called
 * The 6 character string params
 * The text being passed as params, prior to any base64 or URI encoding

For POST requests, the data to be signed is simply the entire contents of the
POST request.


RESPONSES


RESPONSE FORMAT

The response to a Shiftboard Web Services API request is a object (RFC 4627)
with the following attributes:

ID

The id provided in the request. If an error prevented the request from being
parsed, this attribute may be null.

JSONRPC

Version of the JSON-RPC specification for this response. Will always be the
string "2.0".

RESULT

A object providing the results of the request. Only present when the request was
successful. Contents are method-dependent: see Objects and Common Attributes.

ERROR

A object providing error information. Only present when the request failed.

SECONDS

If provided, number of seconds spent processing the request and formatting a
response.


SUCCESSFUL RESPONSES

The attributes returned in response results vary; see Objects.


ERROR RESPONSES

A properly formatted and authorized request should not result in an error;
please contact Shiftboard Support for assistance.


OBJECTS


ACCOUNT OBJECT


ACCOUNT: BASIC ATTRIBUTES

ID

A unique identifier for this account.

EXTERNAL_ID

The external identifier for this account.

NOTE: This field is only used or returned when external ids are enabled for the
site.

FIRST_NAME

LAST_NAME

SURNAME

Currently unused.

MIDDLE_NAME

Currently unused.

SCREEN_NAME

TITLE

Currently unused.

ADDRESS

ADDRESS_SECOND

Second address line

CITY

STATE

Full name of state/province/subdivision.

ZIP

Postal code.

REGION

Currently unused.

COUNTRY

EMAIL

Email address or dummy login email address. If a dummy address or email is being
returned from this address, the bad_email attribute will be true.

BAD_EMAIL

Boolean; true if the email address is a dummy login email address or email to
the email address is being returned.

HOME_PHONE

MOBILE_PHONE

OTHER_PHONE

Work/other phone.

PAGER

FAX

IS_SUPERVISOR

Indicates if this account a supervisor of another member of the site.

SUPERVISOR_ID

The account's direct_manager id.

DIRECT_MANAGER

The identifier of the account's direct manager they are supervised by.

URL

Web/blog address.

TIMEZONE

Timezone for this account.

IANA_TIMEZONE

The IANA timezone for this account.

PROFILE_TYPE

profile type identifier for this account.

ORG_HOLD

Boolean. Indicates whether this account is on hold.

ORG_PENDING

Pending code indicating on-boarding status of this account. Site configurable
pending code labels default to:

 * "0" Current

 * "1" Pending Registration

 * "2" In-Process

 * "3" Wait-Listed

 * "4" Temp/Seasonal Hold

 * "5" Stop Process

 * "6" Made Contact/Msg

 * "7" Awaiting Reregistration

System-defined pending codes are:

 * "1001" Expired Certification
 * "1002" Documents Missing
 * "1003" Documents Verified

ACCOUNT_POINTS

The current points value for the account (see the accountPoints object).


ACCOUNT: EXTENDED ATTRIBUTES

(not all attributes are available for all organizations)

EXTERNAL_ID

External ID for this account, if this organization uses external IDs.

NOTIFICATION_PREFERENCE

Notification preference for this account. Valid values:

 * "0" No Notifications

 * "1" Send Notifications

GET_REMINDERS

Boolean. Enables receiving of reminder messages.

GET_CONFIRMATIONS

Boolean. Enables receiving of confirmation messages.

DIGEST_TYPE

Type of notification digest for this account. Valid values:

 * "0" Send Immediately (no digest)

 * "1" Send Daily

 * "2" Send Weekly

SMS_TXT_NUMBER

Number used for SMS (text) messages. If site does not have Premium SMS enabled,
must also specify carrier.

CARRIER

Carrier ID for SMS (text) messages. Only used if site does not have Premium SMS
enabled.

LEVEL

User level in the organization

 * "2" member

 * "3" coordinator

 * "4" manager

USER_TYPE

Will be admin if a super-user, user otherwise.

OVERTIME_EXEMPT

Boolean.

PAY_RATE

FLAT_RATE

START_DATE

PAYCODE

Paycode identifier

PAY_RATE_OVERRIDES

Boolean. If false, indicates that for this account, pay_rate does not override
the rate associated with the account's paycode.

SENIORITY

Boolean.

SENIORITY_RANK

Seniority rank from 1 to 999999999, 1 being the highest rank.

SENIORITY_DATE

Seniority date.

PROFILE_UPDATED

Time profile information for this account was last updated

UPDATED

Time non-profile information for this account was last updated


ACCOUNT.ACCEPTPRIVACYPOLICY

> Request example:

{}


> Response example:

{
   "id" : "1",
   "jsonrpc" : "2.0",
   "result" : {},
   "seconds" : 0.08004
}


Try it!

Accepts the site privacy policy for the logged-in account. Read the policy at
https://www.shiftboard.com/privacy/.


ACCOUNT.CREATE

> Request example:

{
   "bad_email" : 1,
   "temp_password" : "test_password",
   "first_name" : "Joe",
   "last_name" : "Tester"
}


> Response example:

{
   "seconds" : "0.482992",
   "jsonrpc" : "2.0",
   "id" : "30",
   "result" : {
      "id" : 952
   }
}


Try it!

Creates a new account record.

REQUIRED PARAMETERS

first_name, last_name, and either email or the bad_email flag set true.

OPTIONAL PARAMETERS

Other attributes of a account object may be specified. In addition, the
following attributes may be specified:

EXISTS_OK

If the specified email address is already in use for an account on Shiftboard
for some other Organization, the specified account attributes are not allowed to
overwrite the existing account information. Normally, an error is returned
indicating that the email address was already in use. If exists_ok is true, the
existing account is added to the current organization's accounts instead. In
this case, only email and per-organization attributes (external_id and
profile_type) and options (add_default_workgroups and send_welcome_letter) are
used; any other attributes specified will be discarded (including temp_password
and openid).

ADD_DEFAULT_WORKGROUPS

If true, the new account will be added to any workgroups marked as organization
default workgroups.

SEND_WELCOME_LETTER

If true, the standard welcome letter, including the temporary password, will be
sent to the account's email address (the email parameter).

TEMP_PASSWORD

Normally, a random password is generated for the new account which is only
revealed to the new user in the welcome email. If specified, temp_password is
used instead.

OPENID

An openid url that will allow authentication to this account via

https://www.shiftboard.com/login/openid?http...

where http... is the designated url, URI-escaped. E.g. for openid
http://www.example.com/, use the login link

https://www.shiftboard.com/login/openid?http%3A%2F%2Fwww.example.com%2F

If this openid is already in use for any account in Shiftboard, an error will be
returned.

RESPONSE

On success, an id attribute will provide the identifier for the new account. If
exists_ok was specified, an existed boolean attribute is returned indicating
whether the email address was already in use for an account on Shiftboard.


ACCOUNT.DELETE

> Request example:

{
   "id" : "947"
}


> Response example:

{
   "seconds" : "0.173293",
   "jsonrpc" : "2.0",
   "id" : "49",
   "result" : {}
}


Try it!

Deletes an account record.

REQUIRED PARAMETERS

id or external_id

OPTIONAL PARAMETERS

UNCONFIRM_FUTURE_SHIFTS

Specify true if shifts on or after today for this account should be unconfirmed.

UNPUBLISH_FUTURE_SHIFTS

Specify true if shifts being unconfirmed should also be unpublished.

NOTIFY

Defaults to false. Specify true to indicate a notification email should be sent
to the owner of the deleted account.

RESPONSE

On success, empty results will be returned.


ACCOUNT.DELETEDOCUMENT

Try it!

Deletes an account document for a given account.

REQUIRED PARAMETERS

id or external_id and document_number

RESPONSE

On success, empty results will be returned.


ACCOUNT.DELETEIMAGE

Try it!

Deletes the user image for a given account.

REQUIRED PARAMETERS

id or external_id

RESPONSE

On success, empty results will be returned.


ACCOUNT.DELETERESUME

Try it!

Deletes the resume for a given account.'

REQUIRED PARAMETERS

id or external_id

RESPONSE

On success, empty results will be returned.


ACCOUNT.EXPIREDCERTIFICATION

> Request example:

{
   "id" : "947"
}


> Response example:

{
   "seconds" : "0.173293",
   "jsonrpc" : "2.0",
   "id" : "49",
   "result" : {}
}


Try it!

If an account is not on hold (org_hold is true and org_pending is 0), sets it to
Expired Certification org_pending status. Otherwise, does nothing.

REQUIRED PARAMETERS: ID OR EXTERNAL_ID

OPTIONAL PARAMETERS:

UNCONFIRM_FUTURE_SHIFTS: SPECIFY TRUE IF SHIFTS ON OR AFTER TODAY FOR THIS
ACCOUNT SHOULD BE UNCONFIRMED.

UNPUBLISH_FUTURE_SHIFTS: SPECIFY TRUE IF SUCH SHIFTS SHOULD BE UNPUBLISHED.

Response: On success, empty results will be returned.


ACCOUNT.GET

> Request example:

{
   "id" : 911
}


> Response example:

{
   "seconds" : "0.057072",
   "jsonrpc" : "2.0",
   "id" : "3",
   "result" : {
      "home_phone" : "",
      "bad_email" : false,
      "state" : "",
      "last_name" : "Tester",
      "email" : "test911@93.julian.example.com",
      "city" : "",
      "fax" : "",
      "url" : "",
      "address" : "",
      "id" : "911",
      "country" : "",
      "org_hold" : false,
      "timezone" : "",
      "middle_name" : "",
      "region" : "",
      "surname" : "",
      "profile_type" : "1",
      "other_phone" : "",
      "zip" : "",
      "org_pending" : "0",
      "pager" : "",
      "mobile_phone" : "",
      "title" : "",
      "first_name" : "Joe"
   }
}


Try it!

Returns information about a single account.

REQUIRED PARAMETERS

id or external_id

OPTIONAL PARAMETERS

ACCOUNT_POINTS_LIST

Boolean; if specified and true, the results returned will include the
account_points_list key. The value will be an array of 0 or more elements, or
null if account points are not available for the API call. See
accountPoints.list.

EXTENDED

Boolean; if specified and true or user_actions is true, the results returned
will include an extended set of attributes; otherwise a basic set of attributes
will be returned.

IMAGE

Boolean; if specified and true, the results returned will include an image_url
attribute giving a url to the account's user image or null if no image is
available.

IMAGE_EXPIRATION

Specifies the valid lifetime of the returned URL in seconds; default 300,
maximum 604800 (1 week).

QRCODE

Boolean; if specified and true, the results returned will include a qrcode
attribute giving the data for generating the account's qrcode.

TIMECLOCK_STATUS

Boolean; if specified and true, the results returned will include a clocked_in
attribute indicating that the account is currently clocked in and a
can_clock_in_out attribute indicating whether there is authorization to clock
this account in or out.

USER_ACTIONS

Boolean; if specified and true, a user_actions object will be returned with
attributes indicating what actions should be presented to the user to be
performed on this account

ADD_AVAILABILITY

DELETE_AVAILABILITY

SHOW_AVAILABILITY

Attributes may not be returned for applications that are not enabled for this
user/organization.

The response results will be an account object containing basic or basic and
extended account fields.


ACCOUNT.GETDOCUMENT

Try it!

Returns an account document for a single account.

REQUIRED PARAMETERS

id or external_id and document_number

OPTIONAL PARAMETERS

expiration (defaults to 300) to specify valid lifetime of the returned URL in
seconds. Maximum 604800 (1 week).

The response results will have an attribute url whose value can be used to fetch
the account document.


ACCOUNT.GETIMAGE

> Request example:

{
   "expiration" : 600,
   "id" : 911
}


> Response example:

{
   "seconds" : "0.057072",
   "jsonrpc" : "2.0",
   "id" : "3",
   "result" : {
      "url" : "https://www.shiftboard.com/servola/fetch.cgi?ss=269071;id=269119;expires=1355314332;signature=k_dWIcZ9Mk3HPSzkHgWvtOghFj8"
   }
}


Try it!

Returns image information about a single account.

REQUIRED PARAMETERS

id or external_id

OPTIONAL PARAMETERS

expiration (defaults to 300) to specify valid lifetime of the returned URL in
seconds. Maximum 604800 (1 week).

The response results will have an attribute url whose value can be used to fetch
the account image.


ACCOUNT.GETRESUME

Try it!

Returns resume information about a single account.

REQUIRED PARAMETERS

id or external_id

OPTIONAL PARAMETERS

expiration (defaults to 300) to specify valid lifetime of the returned URL in
seconds. Maximum 604800 (1 week).

The response results will have an attribute url whose value can be used to fetch
the account resume.


ACCOUNT.LIST

> Request example:

{}


> Response example:

{
   "seconds" : "0.015316",
   "jsonrpc" : "2.0",
   "id" : "3",
   "result" : {
      "count" : "1",
      "page" : {
         "this" : {
            "batch" : 25,
            "start" : 1
         }
      },
      "accounts" : [
         {
            "home_phone" : "18007467531",
            "bad_email" : false,
            "state" : "Washington",
            "last_name" : "Testing 2",
            "email" : "132997@servola.org",
            "city" : "Seattle",
            "fax" : "",
            "url" : "",
            "address" : "720 3rd Ave, Suite 2200",
            "id" : "2",
            "country" : "United States",
            "org_hold" : false,
            "timezone" : "Pacific Time (US/Can) (GMT-08:00)",
            "region" : "",
            "middle_name" : "",
            "profile_type" : "1",
            "surname" : "",
            "other_phone" : "",
            "zip" : "98104",
            "org_pending" : "0",
            "pager" : "",
            "mobile_phone" : "",
            "title" : "",
            "first_name" : "Auto"
         }
      ]
   }
}


Try it!

Returns information about accounts. Uses pagination. Uses select criteria.

OPTIONAL PARAMETERS

SELECT

An object specifying selection criteria for this request. Allowed criteria are:

ACCOUNT

A single account identifier or an array of identifiers to select.

WORKGROUP

A single workgroup identifier or an array of identifiers to select.

DIRECT_MANAGER

A single direct manager identifier or an array of identifiers to select. Must
have TRACK SUPERVISORS feature enabled in order to use this filter. Results will
be filtered to only those accounts who are supervised by the direct manager(s)
specified.

EMAIL

A single email address or an array of them to select.

EXTERNAL_ID

A single external_id or an array of them to select, if used by the site.

PROFILE_TYPE

A profile type identifier for which to select accounts.

ORG_HOLD

Hold status (boolean)

ORG_PENDING

On-boarding status

SEARCH

A generic search string; select accounts containing this string in any of:
first_name, last_name, first and last names combined, screen name, or, if used
by the site, external_id.

EXTENDED

Boolean; if specified and true, the results returned will include an extended
set of attributes; otherwise a basic set of attributes will be returned for each
account.

IMAGE

Boolean; if specified and true, the results returned will include an image_url
attribute giving a url to the account's user image or null if no image is
available.

IMAGE_EXPIRATION

Specifies the valid lifetime of the returned URL in seconds; default 300,
maximum 604800 (1 week).

QRCODE

Boolean; if specified and true, the results returned will include a qrcode
attribute giving the data for generating the account's qrcode.

SHARED

Boolean; if specified and true, the results returned will also include accounts
in workgroups that are shared to the account.

SORT

A single sort criterion or an array of criteria in order from major to minor.
Each criterion is either an attribute name (one of first_name, last_name,
account_points, or id) or an object with two attributes, name (one of the
supported sort attribute names) and direction (asc or desc).

TIMECLOCK_STATUS

Boolean; if specified and true, the results returned will include a clocked_in
attribute indicating that the account is currently clocked in and a
can_clock_in_out attribute indicating whether there is authorization to clock
this account in or out.

RESPONSE

The response results accounts attribute will be an array of the current page of
accounts. Each element of the array will be an account object containing basic
or basic and extended account fields.


ACCOUNT.LISTBYWORKGROUP

> Request example:

{
   "select" : {
      "workgroup" : "226094"
   }
}


> Response example:

{
   "seconds" : "0.045885",
   "jsonrpc" : "2.0",
   "id" : "35",
   "result" : {
      "members" : [
         {
            "home_phone" : "18007467531",
            "bad_email" : false,
            "state" : "Washington",
            "last_name" : "Testing 1",
            "email" : "132995@servola.org",
            "city" : "Seattle",
            "fax" : "",
            "url" : "",
            "address" : "720 3rd Ave, Suite 2200",
            "id" : "2",
            "country" : "United States",
            "org_hold" : false,
            "timezone" : "Pacific Time (US/Can) (GMT-08:00)",
            "region" : "",
            "middle_name" : "",
            "profile_type" : "1",
            "surname" : "",
            "other_phone" : "",
            "zip" : "98104",
            "org_pending" : "0",
            "pager" : "",
            "mobile_phone" : "",
            "title" : "",
            "first_name" : "Auto"
         },
         {
            "home_phone" : "",
            "bad_email" : false,
            "state" : "",
            "last_name" : "Tester",
            "email" : "test949@69.julian.example.com",
            "city" : "",
            "fax" : "",
            "url" : "",
            "address" : "",
            "id" : "949",
            "country" : "",
            "org_hold" : false,
            "timezone" : "",
            "middle_name" : "",
            "region" : "",
            "surname" : "",
            "profile_type" : "1",
            "other_phone" : "",
            "zip" : "",
            "org_pending" : "0",
            "pager" : "",
            "mobile_phone" : "",
            "title" : "",
            "first_name" : "Joe"
         },
         {
            "home_phone" : "",
            "bad_email" : false,
            "state" : "",
            "last_name" : "Tester",
            "email" : "test950@69.julian.example.com",
            "city" : "",
            "fax" : "",
            "url" : "",
            "address" : "",
            "id" : "950",
            "country" : "",
            "org_hold" : false,
            "timezone" : "",
            "middle_name" : "",
            "region" : "",
            "surname" : "",
            "profile_type" : "1",
            "other_phone" : "",
            "zip" : "",
            "org_pending" : "0",
            "pager" : "",
            "mobile_phone" : "",
            "title" : "",
            "first_name" : "Joe"
         },
         {
            "home_phone" : "",
            "bad_email" : false,
            "state" : "",
            "last_name" : "Tester",
            "email" : "test951@69.julian.example.com",
            "city" : "",
            "fax" : "",
            "url" : "",
            "address" : "",
            "id" : "951",
            "country" : "",
            "org_hold" : false,
            "timezone" : "",
            "middle_name" : "",
            "region" : "",
            "surname" : "",
            "profile_type" : "1",
            "other_phone" : "",
            "zip" : "",
            "org_pending" : "0",
            "pager" : "",
            "mobile_phone" : "",
            "title" : "",
            "first_name" : "Joe"
         }
      ],
      "count" : "4",
      "page" : {
         "this" : {
            "batch" : 25,
            "start" : 1
         }
      }
   }
}


Try it!

Returns information about accounts with membership in a workgroup. Uses
pagination.

REQUIRED PARAMETERS

select object with a workgroup attribute identifying the workgroup whose members
should be returned. E.g. {select:{workgroup:12345}}.

OPTIONAL PARAMETERS

SEARCH

A generic search string; select accounts containing this string in any of:
first_name, last_name, first and last names combined, screen name, or, if used
by the site, external_id.

SORT

A single sort criterion or an array of criteria in order from major to minor.
Each criterion is either an attribute name (one of first_name, last_name, or id)
or an object with two attributes, name (one of the supported sort attribute
names) and direction (asc or desc).

EXTENDED

Boolean; if specified and true, the results returned will include an extended
set of attributes; otherwise a basic set of attributes will be returned for each
account.

The response results members attribute will be an array of the current page of
members. Each element of the array will be a member object.

Currently, this method only returns members with org_hold false and org_pending
code "0" (Current).


ACCOUNT.LISTMEMBERSHIPS

> Request example:

{
   "select" : {
      "member" : 950
   }
}


> Response example:

{
   "seconds" : "0.058298",
   "jsonrpc" : "2.0",
   "id" : "36",
   "result" : {
      "count" : "1",
      "page" : {
         "this" : {
            "batch" : 25,
            "start" : 1
         }
      },
      "workgroups" : [
         {
            "zip" : "60616",
            "name" : "Test Workgroup 226094",
            "id" : "226094",
            "code" : "A001"
         }
      ]
   }
}


Try it!

Returns information about workgroups to which a member belongs. Uses pagination.
Uses select criteria.

OPTIONAL PARAMETERS

SELECT

An object specifying selection criteria for this request

MEMBER

The member for which to select workgroups; defaults to the current user.

LEVEL

The membership level for which to select workgroups. The filter is a lower
limit; any workgroups which the member matches with specified level and above,
will be returned.

EXTERNAL_MEMBER

The member for which to select workgroups, identified by their external_id;
defaults to the current user.

SEARCH

A generic search string; select workgroups containing this string in name or
code.

UNION_WITH_MEMBER

Member identifier. If provided, this method will return only those workgroups in
which both the member/caller and the sepcified union_with_member belong to.

UNION_WITH_EXTERNAL_MEMBER

Member identifier, identified by their external_id. If provided, and external
identifiers are enabled for the site; this method will return only those
workgroups in which both the member/caller and the sepcified union_with_member
belong to.

REFERENCED_OBJECTS

Boolean, defaults to true. Indicates that, in addition to the workgroups
attribute, the results should include a referenced_objects attribute giving
information about objects referred to by the returned workgroups.

The response results workgroups attribute will be an array of the current page
of selected workgroups. Each element of the array will be a workgroup object
containing basic workgroup fields.

If requested, the response results referenced_objects attribute will be an
object containing one or more object type names as attributes; for each object
type the value will be an array of those instances of that type of object which
are referred to in the workgroups results, with only selected minimal attributes
provided

SORT

A single sort criterion or an array of criteria in order from major to minor.
Each criterion is either an attribute name (one of name, or code) or an object
with two attributes, name (one of the supported sort attribute names) and
direction (asc or desc).

ACCOUNT

id, first_name, last_name, and screen_name attributes are provided.


ACCOUNT.LISTOPENIDS

> Request example:

{
   "account" : 918
}


> Response example:

{
   "seconds" : "0.050461",
   "jsonrpc" : "2.0",
   "id" : "44",
   "result" : {
      "count" : 1,
      "account_openids" : [
         {
            "openid" : "http://openid4.example.com/",
            "id" : "785"
         }
      ]
   }
}


Try it!

Returns information about account_openid objects for a given account.

REQUIRED PARAMETERS

account or external_account

The response results account_openids attribute will be an array of the
account_openid objects for the designated account.


ACCOUNT.LISTUPDATED

> Request example:

{
   "select" : {
      "updated_since" : 1284655937
   }
}


> Response example:

{
   "seconds" : "0.057788",
   "jsonrpc" : "2.0",
   "id" : "19",
   "result" : {
      "count" : "1",
      "page" : {
         "this" : {
            "batch" : 25,
            "start" : 1
         }
      },
      "accounts" : [
         {
            "home_phone" : "",
            "bad_email" : false,
            "state" : "",
            "last_name" : "Tester",
            "email" : "test913@93.julian.example.com",
            "city" : "",
            "fax" : "",
            "url" : "",
            "address" : "",
            "id" : "913",
            "country" : "",
            "org_hold" : false,
            "timezone" : "",
            "middle_name" : "",
            "region" : "",
            "surname" : "",
            "profile_type" : "1",
            "other_phone" : "",
            "zip" : "",
            "org_pending" : "0",
            "pager" : "",
            "mobile_phone" : "",
            "title" : "",
            "first_name" : "Updated"
         }
      ]
   }
}


Try it!

Returns information about accounts created or updated since a given date. Uses
pagination. Uses select criteria.

OPTIONAL PARAMETERS

EXTENDED

Boolean; if specified and true, the results returned will include an extended
set of attributes; otherwise a basic set of attributes will be returned for each
account.

SELECT

An object specifying selection criteria for this request. Note that
updated_since will have a default value if not specified. The available criteria
include all account.list selection criteria with the addition of

UPDATED_SINCE

A system.timestamp previously returned by the system.timestamp method. Only
accounts updated since this date will be selected. Defaults to 24 hours ago. If
more than 30 days ago, only accounts updated in the last 30 days will be
selected.

PROFILE_UPDATE

If specified and true, report accounts whose profile information has been
updated. Otherwise, report only accounts whose non-profile information has been
updated.

The response results accounts attribute will be an array of the current page of
accounts. Each element of the array will be an account object containing basic
account fields.


ACCOUNT.RESETPASSWORD

> Request example:

{
   "account" : 945
}


> Response example:

{
   "seconds" : "0.060454",
   "jsonrpc" : "2.0",
   "id" : "6",
   "result" : {}
}


Try it!

Resets the password for an account to a randomly chosen value and sends the new
password to the account's email address. If the account has no email address or
is not receiving email, no error will result and the password will be changed.

REQUIRED PARAMETERS

account or external_account, a single account identifier or an array of
identifiers of accounts for which to reset the password.

No more than 10000 accounts may be specified in a single request.

RESPONSE

On success, empty results will be returned.

Note that this method may be deprecated in the future and replaced with a method
to initiate a user-controlled password reset process.


ACCOUNT.SELF

> Request example:

{}


> Response example:

{
   "seconds" : "0.04608",
   "jsonrpc" : "2.0",
   "id" : "4",
   "result" : {
      "home_phone" : "18007467531",
      "bad_email" : false,
      "state" : "Washington",
      "last_name" : "Testing 1",
      "email" : "132995@servola.org",
      "city" : "Seattle",
      "fax" : "",
      "url" : "",
      "address" : "720 3rd Ave, Suite 2200",
      "id" : "2",
      "country" : "United States",
      "org_hold" : false,
      "timezone" : "Pacific Time (US/Can) (GMT-08:00)",
      "region" : "",
      "middle_name" : "",
      "profile_type" : "1",
      "surname" : "",
      "other_phone" : "",
      "zip" : "98104",
      "org_pending" : "0",
      "pager" : "",
      "mobile_phone" : "",
      "title" : "",
      "first_name" : "Auto"
   }
}


Try it!

Returns information about the account associated with the API key making the
request.

OPTIONAL PARAMETERS

EXTENDED

Boolean; if specified and true or user_actions is true, the results returned
will include an extended set of attributes; otherwise a basic set of attributes
will be returned.

IMAGE

Boolean; if specified and true, the results returned will include an image_url
attribute giving a url to the account's user image or null if no image is
available.

IMAGE_EXPIRATION

Specifies the valid lifetime of the returned URL in seconds; default 300,
maximum 604800 (1 week).

QRCODE

Boolean; if specified and true, the results returned will include a qrcode
attribute giving the data for generating the account's qrcode.

USER_ACTIONS

Boolean; if specified and true, a user_actions object will be returned with
attributes indicating what actions should be presented to the user to be
performed on this account

ADD_AVAILABILITY

DELETE_AVAILABILITY

SHOW_AVAILABILITY

Attributes may not be returned for applications that are not enabled for this
user/organization.

USER_PERMISSIONS

An array of named permissions to check; if specified, a user_permissions object
will be returned with the given named permissions as attributes and Boolean
values indicating whether each named permission is allowed.

The response results will be an account object containing basic or basic and
extended account fields.

If the account is a manager of the organization or one or more workgroups, the
additional attribute workgroup_manager will be true. If the account is a
coordinator of one or more workgroups, the additional attribute
workgroup_coordinator will be true.

If user_actions were requested, a user_actions attribute will also be returned.


ACCOUNT.SENDPASSWORD

> Request example:

{
   "account" : 944
}


> Response example:

{
   "seconds" : "0.075872",
   "jsonrpc" : "2.0",
   "id" : "3",
   "result" : {}
}


Try it!

Sends a password reset link for an account to the account's email address. If
the account has no email address or is not receiving email, no error will
result.

REQUIRED PARAMETERS

account or external_account, a single account identifier or an array of
identifiers of accounts for which to send the password reset.

No more than 10000 accounts may be specified in a single request.

RESPONSE

On success, empty results will be returned.


ACCOUNT.SENDWELCOMELETTER

> Request example:

{
   "account" : 917
}


> Response example:

{
   "seconds" : "0.081154",
   "jsonrpc" : "2.0",
   "id" : "40",
   "result" : {}
}


Try it!

Send a welcome email to the account's email address, giving them their password.
If the account has no email address or is not receiving email, no error will
result.

REQUIRED PARAMETERS: ACCOUNT OR EXTERNAL_ACCOUNT, A SINGLE ACCOUNT IDENTIFIER OR
AN ARRAY OF IDENTIFIERS OF ACCOUNTS FOR WHICH TO SEND A WELCOME LETTER.

ACCOUNT

A single account identifier or an array of identifiers to select. No more than
10000 accounts may be specified in a single request.

EXTERNAL_ACCOUNT

A single external ID (or an array of them if used by the site). No more than
10000 accounts may be specified in a single request.

WORKGROUP

Optional, only send welcome email to accounts that belongs to the specified
group

UNSENT

Optional, an integer value. * value is possive - number of months since the
welcome email was sent out last time. * value is '0' - welcome email will be
sent out to all accounts. * value is '-1' - welcome email will only be sent out
to new members the welcome email has never been sent out to before.

PROFILE_TYPE

Optional, either a single value or an array of profile-types (the enumeration
key of the profile-type, example value [2,3])

RESPONSE

On success, empty results will be returned.


ACCOUNT.UPDATE

> Request example:

{
   "email" : "test952@69.julian.example.com",
   "bad_email" : 0,
   "notification_preference" : 1,
   "id" : 952
}


> Response example:

{
   "seconds" : "0.157625",
   "jsonrpc" : "2.0",
   "id" : "31",
   "result" : {}
}


Try it!

Updates an account object.

REQUIRED PARAMETERS

id or external_id

OPTIONAL PARAMETERS

UNCONFIRM_FUTURE_SHIFTS

Specify true if, when org_hold is being changed to true and/or org_pending is
being changed to a non-0 value, shifts on or after today for this account should
be unconfirmed.

UNPUBLISH_FUTURE_SHIFTS

Specify true if shifts being unconfirmed should also be unpublished.

Other account object attributes may be specified.

NOTE: Updating another account's email address or notification options is not
allowed if the account is active with more than one organization's Shiftboard.

RESPONSE

On success, empty results will be returned.


ACCOUNT.UPDATEDOCUMENT

Try it!

Updates an account document for a single account.

REQUIRED PARAMETERS

id or external_id and document_number

OPTIONAL PARAMETERS

expiration (defaults to 300) to specify valid lifetime of the returned URL in
seconds. Maximum 3600 (1 hour).

The response results will have an attribute url to which the new/updated
document may be POSTed.

Upon success, the request to the url will return an HTTP 204 status code.


ACCOUNT.UPDATEIMAGE

Try it!

Updates the user image for a single account.

REQUIRED PARAMETERS

id or external_id

OPTIONAL PARAMETERS

expiration (defaults to 300) to specify valid lifetime of the returned URL in
seconds. Maximum 3600 (1 hour).

The response results will have an attribute url to which the new/updated user
image may be POSTed.

Upon success, the request to the url will return an HTTP 204 status code.


ACCOUNT.UPDATERESUME

Try it!

Updates the resume for a single account.

REQUIRED PARAMETERS

id or external_id

OPTIONAL PARAMETERS

expiration (defaults to 300) to specify valid lifetime of the returned URL in
seconds. Maximum 3600 (1 hour).

The response results will have an attribute url to which the new/updated resume
may be POSTed.

When posting to the returned url, one of the following content-types should be
specified:

 * application/vnd.openxmlformats-officedocument.wordprocessingml.document
 * application/msword
 * text/plain
 * text/rtf
 * application/pdf
 * application/vnd.ms-office

Upon success, the request to the url will return an HTTP 204 status code.


ACCOUNTPOINTS OBJECT


ACCOUNTPOINTS: BASIC ATTRIBUTES

ID

A unique identifier for this points record.

ACCOUNT_POINTS

The points for the record. A number from -100.000 to 100.000.

CREATED_BY

The ID of the account that created the record.

CREATED_BY_NAME

The screen name of created_by.

CREATED_DATE

The datetime the points were created, in UTC.

DATE

The date the points are for (e.g., the start_date of the shift, or the date
supplied in accountPoints.create), in the site’s timezone.

DISPLAY_DATE

The date formatted for the user.

DISPLAY_EXPIRATION_DATE

The expiration_date formatted for the user.

EXPIRATION_DATE

The date (no time) the points expire.

REASON

The text reason for the points. For ad hoc points, it is just the text of reason
(a string from 0 to 4096 bytes). For attendance points, it is the label
associated with reason_id.

REASON_ID

The ID of the reason given for the points, if created by an attendance action.
Else null.

SHIFT

A shift object, if attached to a shift. Else null.

TYPE

One of ad_hoc, absent, arrive_late, or leave_early.


ACCOUNTPOINTS.CREATE

> Request example:

{
   "account" : 113,
   "date" : "2020-07-02",
   "account_points" : 10,
   "reason" : "wore a New York Yankees t-shirt"
}


> Response example:

{
   "result" : {
      "id" : 1001
   }
}


Try it!

Creates a new ad hoc accountPoints record.

REQUIRED PARAMETERS

account_points. Additionally, either date OR shift (a shift ID) is required, and
either account OR external_account.

OPTIONAL PARAMETERS

reason

RESPONSE

On success, an id attribute will provide the identifier for the new
accountPoints record.


ACCOUNTPOINTS.DELETE

> Request example:

{
   "id" : 1001
}


> Response example:

{
   "result" : {}
}


Deletes an ad hoc accountPoints record.

REQUIRED PARAMETERS

id

RESPONSE

On success, returns an empty object.


ACCOUNTPOINTS.LIST

> Request example:

{
   "account" : 113
}


> Response example:

{
   "result" : {
      "account_points" : [
         {
            "account": "113",
            "account_points" : 10,
            "created_by" : 114,
            "created_by_name" : "Deb Nicol",
            "created_date" : "2020-07-02T20:59:19Z",
            "date" : "2020-07-02",
            "display_date" : "Thursday, July 2, 2020",
            "display_expiration_date" : "Friday, Jan 1, 2100",
            "expiration_date" : "2100-01-01",
            "id" : 1001,
            "reason" : "wore a New York Yankees t-shirt",
            "reason_id" : null,
            "shift" : null,
            "type" : "ad_hoc",
            "user_actions" : {
               "delete" : true,
               "edit" : true,
            }
         },
         {
            "account": "113",
            "account_points" : 1,
            "created_by" : 113,
            "created_by_name" : "Jet the Dog",
            "created_date" : "2020-07-01T13:50:22Z",
            "date" : "2020-07-01",
            "display_date" : "Wednesday, July 1, 2020",
            "display_expiration_date" : "Thursday, July 1, 2021",
            "expiration_date" : "2021-07-01",
            "id" : 994,
            "reason" : "Emergency",
            "reason_id" : 36425,
            "shift" : {
               "display_adj_start_time" : "11:50pm",
               "display_date" : "2020-07-15",
               "display_end_time" : "11:30am (Thurs)",
               "display_start_time" : "11:30pm",
               "display_time" : "11:30pm - 11:30am (Thurs)",
               "end_date" : "2020-07-01T20:00:00Z",
               "id" : 323451686,
               "local_arrive_late_datetime" : "2020-07-15T23:50:00",
               "local_end_date" : "2020-07-16T11:30:00",
               "local_start_date" : "2020-07-15T23:30:00",
               "local_timezone" : "Central Time (US/Can) (GMT-06:00)",
               "start_date" : "2020-07-01T13:00:00Z",
               "workgroup" : 2699032,
               "workgroup_label" : "Team A"
            },
            "type" : "absent",
            "user_actions" : {
                "delete" : false,
                "edit" : false
            }
         }
      ],
      "total" : 11,
      "user_actions" : {
         "create" : true
      }
   }
}


Try it!

Returns active accountPoints records for an account, sorted in reverse order by
date.

REQUIRED PARAMETERS

account or external_account

OPTIONAL PARAMETERS

USER_ACTIONS

Boolean; if specified and true, a user_actions object will be returned with
attributes indicating what actions may be presented to the user to perform on
each accountPoints object (edit, delete), and accountPoints actions on the
account itself (create).

Attendance account points cannot be edited or deleted directly, so booleans for
those will always be false.

RESPONSE

The response results account_points attribute will be an array of accountPoints.
Each element of the array will be an accountPoints object, including a
user_actions attribute.

Also returned will be a total attribute with the current total points for the
account, and a user_actions attribute.


ACCOUNTPOINTS.SHIFTLIST

> Request example:

{
   "select" : {
      "covering_member" : "114"
   }
}


Try it!

Exactly the same as shift.list, except for the following differences:

 * date parameters may not be specified; shifts after today (in the
   organization's timezone) or shifts whose points would already be expired will
   be excluded
 * the results are ordered by shift start date, in reverse order


ACCOUNTPOINTS.UPDATE

> Request example:

{
   "id" : 1001,
   "date" : "2020-07-02",
   "account_points" : 10,
   "reason" : "wore a New York Yankees t-shirt"
}


> Response example:

{
   "result" : {
      "id" : 1003
   }
}


Updates an ad hoc accountPoints record. A new record, with a new ID, will be
created in its place, with the updated information.

REQUIRED PARAMETERS

id

OPTIONAL PARAMETERS

reason, date OR shift (a shift ID), account_points

RESPONSE

On success, an id attribute will provide the identifier for the new
accountPoints record.


ATTESTATION OBJECT

attestation objects have the following attributes:

ID

Unique identifier (UUID) for this attestation. Automatically generated with
attestation.create.

ATTESTATION_TYPE_ID

ID for the related attestationType object. Required.

ACCOUNT

The account identifier for this attestation. Either account or external_account
is required.

EXTERNAL_ACCOUNT

The external account identifier for this attestation. Either account or
external_account is required.

ACTIVE

Boolean for whether this attestation is active. Default is the auto_activation
setting of the attestationType.

VALID

Boolean for whether this attestation is valid, based on whether it meets the
requirements of the attestationType (for example, if name_setting is required in
the type, and name is NULL in the attestation, the attestation is invalid). An
invalid attestation will not be used for shift conflict checking.

NAME

Name of the attestation object (255-character string). Optional (depending on
attestationType settings).

START_DATE

Date at which this attestation starts; null if attestation extends indefinitely
into the past. Optional (depending on attestationType settings).

END_DATE

Date at which this attestation ends; null if attestation extends indefinitely
into the future. Optional (depending on attestationType settings).

TIMEZONE

An IANA timezone name, e.g. America/Los_Angeles. See IANA Time Zone Database for
more information. Default is the timezone of the account, or if not set, the
site.

DOCUMENT

Boolean for whether this attestation has an attached document.

Additionally, there is a special kind of attestation objects called an
"exemption" record, used for when an account is exempt from that
attestationType. It is created/deleted with separate methods (attestation.exempt
and attestation.unexempt), and never modified.

Exemption attestation objects have the following attributes:

ID

Unique identifier (UUID) for this attestation. Automatically generated with
attestation.create.

ACCOUNT

The account identifier for this attestation. Either account or external_account
is required.

EXTERNAL_ACCOUNT

The external account identifier for this attestation. Either account or
external_account is required.

EXEMPT

Boolean for whether this attestation is an exemption record.


ATTESTATIONTYPE OBJECT

attestationType objects have the following attributes:

ID

Unique identifier (UUID) for this attestation. Automatically generated with
attestationType.create.

NAME

Name of the attestation type (255-character string). Must be unique. Required.

ENABLED

Boolean for whether this attestation type is enabled. Default is true.

HOLD_ACCOUNT

Boolean for whether accounts with this attestation type will be put on hold on
when the account falls into an "expired" state (i.e., it has attestations of
this type that have expired, and currently has no active attestations of this
type). Used only with advanced onboarding. Default is false.

AUTO_ACTIVATION

Boolean for whether a new attestation record defaults to active. Default is
true.

NAME_REQUIRED

START_DATE_REQUIRED

END_DATE_REQUIRED

DOCUMENT_REQUIRED

Setting for whether the attestation field is required for an attestation of this
type. When one of these settings is changed, the attestations of that type are
not modified, though whether they are valid may change. optional: in the API and
UI, but not required to be valid. required: in the API and UI, and required to
be valid. unused: not in the API or UI, and not required to be valid. One of
optional, required, unused. Default is optional.

EXAMPLE 1: If an attestation has a start_date and then the attestation type's
start_date_required is set to unused, the record will be treated as though its
start_date is blank, though the stored start_date will not change.

EXAMPLE 2: If start_date_required is then changed to optional or required, the
stored start_date will be used.

EXAMPLE 3: If the stored start_date is blank and start_date_required is changed
from optional or unused to required, the attestation will no longer be valid.


ATTESTATIONTYPE.LIST

> Request example:

{
  "select" : {
    "workgroup" : "226084"
  }
}


> Response example:

{
  "id" : "1",
  "jsonrpc" : "2.0",
  "result" : {
    "attestationTypes" : [
      {
        "auto_activation" : false,
        "document_required" : "optional",
        "enabled" : true,
        "end_date_required" : "optional",
        "hold_account" : false,
        "id" : "01234567-890a-bcde-f012-3456789abcde",
        "name" : "Contract",
        "name_required" : "optional",
        "permissions" : "{}",
        "start_date_required" : "optional"
      },
      {
        "auto_activation" : false,
        "document_required" : "optional",
        "enabled" : true,
        "end_date_required" : "optional",
        "hold_account" : false,
        "id" : "12345678-90ab-cdef-0123-456789abcdef",
        "name" : "Certifications",
        "name_required" : "optional",
        "permissions" : "{}",
        "start_date_required" : "optional"
      }
    ]
  },
  "seconds" : "0.089939"
}


Try it!

Returns attestation type records for the org.

REQUIRED PARAMETERS

 * select - An object specifying selection criteria for this request. Allowed
   criteria are:
   * workgroup (team)

RESPONSE

On success, the selected attestationType records will be returned as an array in
the "attestationTypes" key.


AVAILABILITY OBJECT

availability objects have the following attributes:

ID

Unique identifier for this availability.

ACCOUNT

Account identifier for this availability.

EXTERNAL_ACCOUNT

The external account identifier for this object.

NOTE: This field is only used or returned when external ids are enabled for the
site.

BUSY

false if the availability record indicates availability; true if it indicates
unavailability.

START_DATE

Date at which this availability starts; null if availability extends
indefinitely into the past.

END_DATE

Date at which this availability ends; null if availability extends indefinitely
into the future.

START_TIME

Start time for each date of this availability, in RFC 3339 partial time format
(e.g. "13:00:00"), or null if the availability extends from the beginning of the
day.

note: It is not possible to specify the seconds for start_time. This value
should always be set to: "00"

END_TIME

End time for each date of this availability, in RFC 3339 partial time format
(e.g. "13:00:00"), or null if the availability extends to the end of the day.

note: It is not possible to specify the seconds for end_time. This value should
always be set to: "00"

WORKGROUP

Workgroup identifier for this availability or null if no workgroup

SUNDAY

MONDAY

TUESDAY

WEDNESDAY

THURSDAY

FRIDAY

SATURDAY

true for all days of the week (within the date range, if specified) to which
this availability applies.


AVAILABILITY.APPROVE

Try it!

Approves request to change an availability record.

Parameters:

ID

Required. id of the availability record for which to be approved/denied change.

APPROVE

Required. Boolean, indicates that, availability record is approved or denied.
True is approved, false is denied.

MESSAGE

Optional. A text message that is included in notification message.

Response: On success, empty results will be returned.


AVAILABILITY.CREATE

Try it!

Creates a new availability record.

Required Parameters:

ACCOUNT

account identifier or array of account identifiers

NOTE: If you are calling this method with the account parameter,
external_account will be ignored (if included).

EXTERNAL_ACCOUNT

external account identifier or array of external account identifiers

NOTE: If you are calling this method with the account parameter,
external_account will be ignored (if included).

EXTERNAL_ACCOUNT

external account identifier or array of external account identifiers

NOTE: If you are calling this method with the external_account parameter,
account will be ignored (if included).

BUSY

false if the availability record indicates availability; true if it indicates
unavailability.

Any availability object attributes may be specified. If no day of week
attributes are specified, all applicable (i.e. within the date range, if
specified) days of the week will default to true; otherwise, at least one
applicable day of week attribute must be true.

Additionally, if start_date and end_date are not specified, a date attribute may
be specified with a single date or array of dates for which to create
availability records.

Response: On success, if either the account or date parameters is an array, an
empty object is returned; otherwise, an id attribute will provide the identifier
for the new availability record.


AVAILABILITY.DELETE

> Request example:

{
   "id" : "2753"
}


> Response example:

{
   "seconds" : "0.058344",
   "jsonrpc" : "2.0",
   "id" : "67",
   "result" : {}
}


Try it!

Deletes an availability record.

Required parameter: id.

Response: On success, empty results will be returned.


AVAILABILITY.GET

Returns information about an availability record.

Parameters:

ID

Required. id of the availability record for which to return information.

REFERENCED_OBJECTS

Boolean, defaults to true. Indicates that, in addition to the availability
attribute, the results should include a referenced_objects attribute giving
information about objects referred to by the returned availability record.

The response results availability attribute will be the selected availability
object.

If requested, the response results referenced_objects attribute will be an
object containing one or more object type names as attributes; for each object
type the value will be an array of those instances of that type of object which
are referred to in the availability results or in its associated shift, with
only selected minimal attributes provided:

ACCOUNT

id, first_name, last_name, and screen_name attributes are provided.


AVAILABILITY.LIST

> Request example:

{
   "select" : {
      "account" : 1
   }
}


> Response example:

{
   "seconds" : "0.089939",
   "jsonrpc" : "2.0",
   "id" : "10",
   "result" : {
      "availability" : [
         {
            "sunday" : false,
            "friday" : true,
            "account" : "1",
            "start_time" : "11:00:00",
            "tuesday" : true,
            "monday" : true,
            "end_time" : "12:00:00",
            "end_date" : null,
            "wednesday" : true,
            "saturday" : false,
            "thursday" : true,
            "id" : "236471",
            "start_date" : "2013-04-01",
            "busy" : true
         },
         {
            "sunday" : false,
            "friday" : false,
            "account" : "1",
            "start_time" : "05:00:00",
            "tuesday" : false,
            "monday" : false,
            "end_time" : "11:00:00",
            "end_date" : null,
            "wednesday" : false,
            "saturday" : true,
            "thursday" : false,
            "id" : "237006",
            "start_date" : null,
            "busy" : false
         }
      ],
      "count" : "5",
      "page" : {
         "this" : {
            "batch" : 10,
            "start" : 1
         }
      }
   }
}


Try it!

Returns information about account availability data. Uses select criteria. Uses
pagination.

Parameters:

SELECT

An object specifying selection criteria for this request. The available criteria
include:

ACCOUNT

The account identifier or array of account identifiers for which to return
availability.

EXTERNAL_ACCOUNT

The external account identifier or array of external account identifiers for
which to return availability.

START_DATE

END_DATE

The date range for which to return availability (including any availability that
extends before and/or after the given date range); either or both dates may be
null to indicate a date range extending indefinitely into the past or future,
respectively. start_date defaults to today, end_date to null.

START_TIME

END_TIME

Start and end time in RFC 3339 partial time format (e.g. 13:45:00). Return only
availability records that encompass this time range; if either is specified,
both must be.

WORKGROUP

Workgroup identifier if only availability specific to a given workgroup should
be returned, or null if only availability not specific to any workgroup should
be returned.

BUSY

True if only Busy availability should be returned; false if only Available
availability should be returned.

SUNDAY

MONDAY

TUESDAY

WEDNESDAY

THURSDAY

FRIDAY

SATURDAY

Booleans; return only availability for the given days of the week.

ANY_SELECTED_DAY

Boolean, default false. If true, return availability for any of the selected
days; if false, return availability records that are for all of the selected
days.

ORG_HOLD

Boolean account hold status.

ORG_PENDING

Account onboarding status.

SCOPE

A value of 'by_account' requests availability for a specific account (defaulting
to the user's account if no account criterion is provided). A value of
'siteadmin' requests all availability for the entire site and is only allowed
for site administrators. A value of 'managed_workgroups' requests availability
for members of the workgroups managed by the user and is only allowed for
workgroup managers. 'siteadmin' is the default for site administrators,
'managed_workgroups' is the default for managers, and 'by_account' is the
default for others.

REFERENCED_OBJECTS

Boolean, defaults to true. Indicates that, in addition to the availability
attribute, the results should include a referenced_objects attribute giving
information about objects referred to by the returned availability records.

The response results availability attribute will be an array of the current page
of availability. Each element of the array will be an availability object.

If requested, the response results referenced_objects attribute will be an
object containing one or more object type names as attributes; for each object
type the value will be an array of those instances of that type of object which
are referred to in the availability results, with only selected minimal
attributes provided:

ACCOUNT

id, first_name, last_name, and screen_name attributes are provided.

SORT

A single sort criterion or an array of criteria in order from major to minor.
Each criterion is either an attribute name (one of first_name, last_name) or an
object with two attributes, name (one of the supported sort attribute names) and
direction (asc or desc).


AVAILABILITY.UPDATE (NOT CURRENTLY AVAILABLE)

Please let us know if you would like access to this method.


CALENDAR OBJECT

calendar objects have the following attributes:

START_DATE

The starting date for querying the calendar object.

END_DATE

The ending date for querying the calendar object.


CALENDAR.SUMMARY

> Request example:

{
   "shifts" : {
      "coverage_type" : [
         "mine",
         "available",
         "confirmed"
      ]
   },
   "include_shifts" : true,
   "include_tradeboard" : true,
   "timeOffRequests" : {
      "member" : 1,
      "status" : 0
   },
   "workgroups" : [],
   "include_timeOff" : true,
   "tradeboard" : {
      "trade_complete" : true
   },
   "end_date" : "2017-02-28",
   "start_date" : "2017-02-01"
}


> Response example:

{
   "seconds" : "0.391969",
   "jsonrpc" : "2.0",
   "id" : "3",
   "result" : {
      "summaries" : [
         {
            "trades" : false,
            "confirmed" : true,
            "date" : "2017-04-01",
            "timeOffRequest" : false,
            "mine" : true,
            "available" : true
         },
         {
            "trades" : true,
            "confirmed" : true,
            "date" : "2017-04-02",
            "timeOffRequest" : true,
            "mine" : true,
            "available" : true
         },
         {
            "trades" : true,
            "confirmed" : true,
            "date" : "2017-04-03",
            "timeOffRequest" : true,
            "mine" : true,
            "available" : true
         }
      ]
   }
}


Try it!

Get a summarized list of data for a given date range.

Required parameters:

START_DATE

END_DATE

Optional parameters:

WORKGROUPS

Selects only the included workgroups, if and only if array contains elements

INCLUDE_SHIFTS

Include shift information. If not defined, this property is set to true

SHIFTS

Additional configuration for what shift information to display. Options are as
follows:

COVERAGE_TYPE

Coverage type array with possible values of `mine`, `available`, `confirmed`,
`signup_list`, and `no_pick_up`. If not specified, all of these types are
included in the response.

INCLUDE_TIMEOFF

Include time off information. If not defined, this property is set to true

TIMEOFFREQUESTS

Additional configuration for what time off information to display. Options are
as follows:

STATUS

Accepts any valid timeOffRequest status

MEMBER

Only show data relevant to the specified member. Accepts the internal Shiftboard
Member ID (small integer).

EXTERNAL_MEMBER

Only show data relevant to the specified member. Accepts an external Member ID
(only if site is configured to use external IDs).

INCLUDE_TRADEBOARD

Include tradeboard information. If not defined, this property is set to true.

TRADEBOARD

Additional configuration for what tradeboard information to display. The only
option is:

TRADE_COMPLETE

Accepts Tradeboard's trade_complete

Response: On success, an array of summaries will be returned.

On error, one of the following error codes may be returned:

 * Missing start_date
 * Missing end_date
 * Invalid exists value
 * Invalid exists criteria


CLIENT OBJECT

client objects have the following attributes:

ID

A unique identifier for this client.

NAME

The name of this client. Maximum length 128 characters.

BUSINESS_NAME

Business name. Maximum length 100 characters.

ADDRESS

Address line (e.g. "123 Main St"). Maximum length 100 characters.

ADDRESS_SECOND

Second address line. Maximum length 100 characters.

CITY

City. Maximum length 100 characters.

STATE

Abbreviation or full name of state/province/subdivision. Maximum length 64
characters.

ZIP

Postal code. Maximum length 12 characters.

COUNTRY

Country. Maximum length 24 characters.

CONTACT_FIRST_NAME

First name of contact person. Maximum length 100 characters.

CONTACT_LAST_NAME

Last name of contact person. Maximum length 100 characters.

CONTACT_PHONE

Phone number of contact person. Maximum length 100 characters.

CONTACT_EMAIL

Email address of contact person. Maximum length 255 characters.

Notes

SPECIAL_INSTRUCTIONS


CLIENT.CREATE

> Request example:

{
   "workgroup" : "226072",
   "name" : "client 887"
}


> Response example:

{
   "seconds" : "0.391969",
   "jsonrpc" : "2.0",
   "id" : "3",
   "result" : {
      "id" : "988"
   }
}


> Request example with "exists_ok" set:

{
   "workgroup" : "226072",
   "name" : "client 887",
   "exists_ok": true
}


> Response example when client didn't already exist:

{
   "seconds" : "0.391969",
   "jsonrpc" : "2.0",
   "id" : "3",
   "result" : {
      "id" : "988",
      "new": true
   }
}


> Response example when client already existed:

{
   "seconds" : "0.391969",
   "jsonrpc" : "2.0",
   "id" : "3",
   "result" : {
      "id" : "988",
      "new": false
   }
}


Try it!

Creates a new client record.

Parameters: Any attributes of a client object (except id) may be specified. A
unique name parameter must be specified. Additionally, a workgroup parameter
must be specified to create initial workgroup relationships for this client. It
may be either a single workgroup identifier or an array of identifiers of
workgroups that use this client.

Response: On success, an id attribute will provide the identifier for the new
client.


CLIENT.DELETE

Try it!

Deletes a client.

Required parameter: id.

On success, empty results will be returned.


CLIENT.GET

> Request example:

{
   "id" : "988"
}


> Response example:

{
   "seconds" : "0.065741",
   "jsonrpc" : "2.0",
   "id" : "7",
   "result" : {
      "special_instructions" : "test special instructions",
      "country" : "USA",
      "contact_phone" : "5555551212",
      "contact_last_name" : "test",
      "name" : "client 887",
      "contact_first_name" : "client",
      "state" : "WA",
      "city" : "testmetro",
      "zip" : "90210",
      "notes" : "test note",
      "address_second" : "apt 1 test",
      "contact_email" : "test@example.com",
      "id" : "988",
      "address" : "123 test st",
      "business_name" : "test"
   }
}


Try it!

Returns information about a single client.

Required parameter: id

The response results will be a client object.


CLIENT.LIST

> Request example:

{
   "select" : {
      "client" : "988"
   }
}


> Response example:

{
   "seconds" : "0.065741",
   "jsonrpc" : "2.0",
   "id" : "7",
   "result" : {
      "count" : "1",
      "page" : {
         "this" : {
            "batch" : 25,
            "start" : 1
         }
      },
      "clients" : [
         {
            "special_instructions" : "test special instructions",
            "country" : "USA",
            "contact_phone" : "5555551212",
            "contact_last_name" : "test",
            "name" : "client 887",
            "contact_first_name" : "client",
            "state" : "WA",
            "city" : "testmetro",
            "zip" : "90210",
            "notes" : "test note",
            "address_second" : "apt 1 test",
            "contact_email" : "test@example.com",
            "id" : "988",
            "address" : "123 test st",
            "business_name" : "test"
         }
      ]
   }
}


Try it!

Returns information about clients. Uses pagination.

Optional parameters:

SELECT

An object specifying selection criteria for this request. Allowed criteria are:

CLIENT

A single client identifier or array of client identifiers.

SEARCH

A generic search string; select clients containing this string in their name.

WORKGROUP

The response results clients attribute will be an array of the current page of
clients. Each element of the array may have the following attributes:

ID

A unique identifier for this client.

NAME

The name of this client.


CLIENT.UPDATE

> Request example:

{
   "special_instructions" : "test special instructions",
   "contact_phone" : "5555551212",
   "contact_last_name" : "test",
   "country" : "USA",
   "contact_first_name" : "client",
   "state" : "WA",
   "city" : "testmetro",
   "zip" : 90210,
   "notes" : "test note",
   "contact_email" : "test@example.com",
   "address_second" : "apt 1 test",
   "address" : "123 test st",
   "id" : "988",
   "business_name" : "test"
}


> Response example:

{
   "seconds" : "0.04165",
   "jsonrpc" : "2.0",
   "id" : "6",
   "result" : {}
}


Try it!

Updates a client object.

Required parameter: id. Any other client object attributes may be specified.

Response: On success, empty results will be returned.


COVERAGEBLOCK OBJECT


BASIC ATTRIBUTES

ID

A unique identifier for this coverage block

NAME

Coverage block name

DAYS

Number of days for this coverage block

DUR

String; duration of the coverage block in: hours, minutes, and seconds

START_TIME

Starting time for the coverage block

END_TIME

End time for the coverage block

BREAKS

Number of breaks during the coverage block

UNPAID_MINS

Number of minutes of unpaid time off during the coverage block


COVERAGEBLOCK.LIST

Try it!

> Request example:

{
    "select": {
        "time_block": 20175
    }
}


> Response example:

{
  "count": 1,
  "page": {
    "this": {
      "batch": 10,
      "start": 1
    }
  },
  "shift/coverage blocks": [
    {
      "breaks": "",
      "days": "0",
      "dur": "8:00:00",
      "end_time": "17:00:00",
      "id": "20175",
      "name": "8hr coverage block",
      "start_time": "09:00:00",
      "unpaid_mins": 0
    }
  ]
}


Returns information about coverage blocks. Uses pagination.

Optional parameters:

select object with a time_block attribute identifying a single coverage block or
array of coverage blocks to be returned. E.g. {select:{time_block:12345}}.

select object with a workgroup attribute identifying a single workgroup to be
returned. E.g. {select:{time_block:12345, workgroup: 54321}}.

SHOW_ONLY_WORKGROUP_LISTABLES

Only return results for the workgroup specified (in select).

EXCLUDE_SITE

Boolean; if a manager of the team, don't include coverage blocks associated with
the site itself with those for the team.


DEPARTMENT OBJECT

department objects have the following attributes:

ID

A unique identifier for this department.

NAME

The name of this department. Maximum length 128 characters.


DEPARTMENT.CREATE

> Request example:

{
   "workgroup" : "226086",
   "name" : "Test Department 0.0207031441686816"
}


> Response example:

{
   "seconds" : "0.19451",
   "jsonrpc" : "2.0",
   "id" : "55",
   "result" : {
      "id" : "949"
   }
}


Try it!

Creates a new department record.

Parameters: Any attributes of a department object (except id) may be specified.
A unique name parameter must be specified. Additionally, a workgroup parameter
must be specified to create initial workgroup relationships for this department.
It may be either a single workgroup identifier or an array of identifiers of
workgroups that use this department.

Response: On success, an id attribute will provide the identifier for the new
department.


DEPARTMENT.DELETE

Try it!

Deletes a department.

Required parameter: id.

On success, empty results will be returned.


DEPARTMENT.GET

> Request example:

{
   "id" : "948"
}


> Response example:

{
   "seconds" : "0.093228",
   "jsonrpc" : "2.0",
   "id" : "4",
   "result" : {
      "name" : "department 977",
      "id" : "948"
   }
}


Try it!

Returns information about departments. Uses pagination.

Optional parameters: select object with a department attribute identifying a
single department or array of departments to be returned.
E.g.{select:{department:12345}}

The response results departments attribute will be an array of the current page
of departments. Each element of the array may have the following attributes:

ID

A unique identifier for this department.

NAME

The name of this department.


DEPARTMENT.LIST

> Request example:

{
   "select" : {
      "department" : "948"
   }
}


> Response example:

{
   "seconds" : "0.093228",
   "jsonrpc" : "2.0",
   "id" : "4",
   "result" : {
      "count" : "1",
      "page" : {
         "this" : {
            "batch" : 25,
            "start" : 1
         }
      },
      "departments" : [
         {
            "name" : "department 977",
            "id" : "948"
         }
      ]
   }
}


Try it!

Returns information about departments. Uses pagination.

Optional parameters:

SELECT

An object specifying selection criteria for this request. Allowed criteria are:

DEPARTMENT

A single department identifier or array of department identifiers.

SEARCH

A generic search string; select departments containing this string in their
name.

WORKGROUP

Single workgroup to filter results to be returned.

NOTE: If the call is made on behalf of a manager, the caller must also specify
the boolean value exclude_site to limit the results to only the workgroup
specified.

SHOW_ONLY_WORKGROUP_LISTABLES

Only return results for the workgroup.

EXCLUDE_SITE

Boolean; if a manager of the team, don't include departments associated with the
site itself with those for the team.

SITEWIDE

Boolean; query for all departments across all workgroups that the user has
access to. Enabled by default for manager accounts.

The response results departments attribute will be an array of the current page
of departments. Each element of the array may have the following attributes:

ID

A unique identifier for this department.

NAME

The name of this department.

DESCRIPTION

Description of the department


DEPARTMENT.UPDATE

> Request example:

{
   "workgroup" : "226086",
   "name" : "Test Department 949",
   "id" : "949"
}


> Response example:

{
   "seconds" : "0.116093",
   "jsonrpc" : "2.0",
   "id" : "56",
   "result" : {}
}


Try it!

Updates a department object.

Required parameter: id. Any other department object attributes may be specified.

Response: On success, empty results will be returned.


DIRECTMANAGER OBJECT

direct manager objects have the following attributes:

ID

A unique identifier for this direct manager.

NAME

The name of the direct manager

ACCOUNT

The Shiftboard id of the direct manager account

EXTERNAL_ACCOUNT

The external id of the direct manager account

NOTE: The external_account identifier will only be returned when the site is
configured to use external identifiers.


DIRECTMANAGER.GET

> Request example:

{
   "id" : "1"
}


> Response example:

{
   "seconds" : "0.093228",
   "jsonrpc" : "2.0",
   "id" : "12345",
   "result" : {
      "account": "99",
      "id" : "1",
      "name" : "First Last",
   }
}


Try it!

Returns information about a direct manager.

Required parameter: id

The response result will be a direct manager object that contains the following
attributes:

ID

A unique identifier for this direct manager.

NAME

The name of this direct manager.

ACCOUNT

The account id of the direct manager.

EXTERNAL_ACCOUNT

The external id of the direct manager (if external identifiers are enabled for
the site)


DIRECTMANAGER.LIST

> Request example:

{
   "select" : {
      "direct_manager" : "948"
   }
}


> Response example:

{
   "seconds" : "0.093228",
   "jsonrpc" : "2.0",
   "id" : "4",
   "result" : {
      "count" : "1",
      "page" : {
         "this" : {
            "batch" : 25,
            "start" : 1
         }
      },
      "direct_managers" : [
         {
            "account": 12345,
            "id" : "1",
            "name" : "First Last"
         }
      ]
   }
}


Try it!

Returns information about direct managers. Uses pagination.

Optional parameters: select object with a direct_manager attribute identifying a
single direct manager or array of direct managers to be returned.
E.g.{select:{direct_manager:12345}}

The response results direct_managers attribute will be an array of the current
page of direct managers. Each element of the array may have the following
attributes:

Optional parameters:

SELECT

An object specifying selection criteria for this request. Allowed criteria are:

DIRECT_MANAGER

A single direct_manager identifier or array of direct_manager identifiers.

SEARCH

A generic search string; select direct_managers containing this string in their
name.

WORKGROUP

Single workgroup to filter results to be returned.

NOTE: If the call is made on behalf of a manager, the caller must also specify
the boolean value exclude_site to limit the results to only the workgroup
specified.

SHOW_ONLY_WORKGROUP_LISTABLES

Only return results for the workgroup.

EXCLUDE_SITE

Boolean; if a manager of the team, don't include direct_managers associated with
the site itself with those for the team.

SITEWIDE

Boolean; query for all direct_managers across all workgroups that the user has
access to. Enabled by default for manager accounts.

The response results direct_managers attribute will be an array of the current
page of direct_managers. Each element of the array may have the following
attributes:

ID

A unique identifier for this direct manager.

NAME

The name of this direct manager.

ACCOUNT

The Shiftboard id of the direct manager account

EXTERNAL_ACCOUNT

The external id of the direct manager account

NOTE: The external_account identifier will only be returned when the site is
configured to use external identifiers.


LOCATION OBJECT

location objects have the following attributes:

ID

A unique identifier for this location.

NAME

The name of this location. Maximum length 96 characters.

DESCRIPTION

A description of this location. Maximum length 255 characters.

ADDRESS

Address line (e.g. "123 Main St"). Maximum length 100 characters.

ADDRESS_SECOND

Second address line. Maximum length 100 characters.

CITY

City. Maximum length 100 characters.

STATE

Abbreviation or full name of state/province/subdivision. Maximum length 64
characters.

ZIP

Postal code. Maximum length 12 characters.

COUNTRY

Country. Maximum length 24 characters.

CONTACT_FIRST_NAME

First name of contact person. Maximum length 100 characters.

CONTACT_LAST_NAME

Last name of contact person. Maximum length 100 characters.

CONTACT_PHONE

Phone number of contact person. Maximum length 100 characters.

CONTACT_EMAIL

Email address of contact person. Maximum length 255 characters.

NOTES

SPECIAL_INSTRUCTIONS

LATLON

Optional latitude/longitude for more precise map location, e.g.
"34.015137,-118.791438".

DERIVED_LATLON

Latitude/longitude as calculated by the system, when possible; not updateable.

GEOFENCE_RADIUS

Allowed geofence radius for clocking in to shifts with this location, in meters;
only the following values are allowed: "-1" (no restriction), "10", "25", "50",
"100", "250", or null to use the site setting value.

GEOFENCE_ALLOW_IVR

Boolean; allow clocking in to shifts with this location via IVR, even when
geofencing is enforced and a geofence radius is set.


LOCATION.CREATE

> Request example:

{
   "workgroup" : "226092",
   "zip" : 90210,
   "name" : "Test Location 0.287588880766943",
   "description": "A test location named with a random floating-point identifier"
}


> Response example:

{
   "seconds" : "1.616022",
   "jsonrpc" : "2.0",
   "id" : "15",
   "result" : {
      "id" : "29120"
   }
}


Try it!

Creates a new location record.

Parameters: Any attributes of a location object (except id) may be specified. A
unique name parameter and either a zip parameter or all of address, city, and
state must be specified. Additionally, a workgroup parameter must be specified
to create initial workgroup relationships for this location. It may be either a
single workgroup identifier or an array of identifiers of workgroups that use
this location.

Response: On success, an id attribute will provide the identifier for the new
location.


LOCATION.DELETE

> Request example:

{
   "id" : "12345"
}


> Response example:

{
   "seconds" : "0.058344",
   "jsonrpc" : "2.0",
   "id" : "42",
   "result" : {}
}


Try it!

Deletes a location record.

Required parameter: id.

Response: On success, empty results will be returned.


LOCATION.LIST

> Request example:

{
   "select" : {
      "location" : "29117"
   }
}


> Response example:

{
   "seconds" : "0.052861",
   "jsonrpc" : "2.0",
   "id" : "10",
   "result" : {
      "count" : "1",
      "locations" : [
         {
            "id" : "29117",
            "name" : "location 556",
            "description" : "Not really his real address...",
            "address" : "1 Main St",
            "address_second" : "Apt 1I",
            "city" : "Beverly Hills",
            "contact_email" : "test@example.com",
            "contact_first_name" : "Luke",
            "contact_last_name" : "Perry",
            "contact_phone" : "555-555-1212",
            "country" : "USA",
            "latlon" : "",
            "notes" : "That's we're we want to be",
            "special_instructions" : "Livin' in Beverly Hills",
            "state" : "California",
            "zip" : "90210"
         }
      ],
      "page" : {
         "this" : {
            "batch" : 25,
            "start" : 1
         }
      }
   }
}


Try it!

Returns information about locations. Uses pagination.

Optional parameters:

SELECT

An object specifying selection criteria for this request. Allowed criteria are:

LOCATION

A single location identifier or array of location identifiers.

SEARCH

A generic search string; select locations containing this string in their name.

DEPARTMENT

Single department or array of departments to be returned.

WORKGROUP

Single workgroup to filter results to be returned.

NOTE: If the call is made on behalf of a manager, the caller must also specify
the boolean value exclude_site to limit the results to only the workgroup
specified.

SHOW_ONLY_WORKGROUP_LISTABLES

Only return results for the workgroup.

EXCLUDE_SITE

Boolean; if a manager of the team, don't include departments associated with the
site itself with those for the team.

SITEWIDE

Boolean; query for all departments across all workgroups that the user has
access to. Enabled by default for manager accounts.

The response results locations attribute will be an array of the current page of
locations. Each element of the array may have the following attributes:

ID

A unique identifier for this location.

NAME

The name of this location.

ADDRESS

Address line (e.g. "123 Main St").

ADDRESS_SECOND

Second address line.

CITY

STATE

Full name of state/province/subdivision.

ZIP

Postal code.

COUNTRY

CONTACT_FIRST_NAME

CONTACT_LAST_NAME

CONTACT_PHONE

NOTES

SPECIAL_INSTRUCTIONS

LATLON


LOCATION.UPDATE

> Request example:

{
   "workgroup" : "226092",
   "name" : "Test Location 29120",
   "id" : "29120"
}


> Response example:

{
   "seconds" : "0.942479",
   "jsonrpc" : "2.0",
   "id" : "16",
   "result" : {}
}


Try it!

Updates a location object.

Required parameter: id. Any other location object attributes may be specified.

Response: On success, empty results will be returned.


MANAGERNOTE OBJECT


MANAGERNOTE: BASIC ATTRIBUTES

ID

A unique identifier for this managerNote.

ACCOUNT

Identifier of the account to which this managerNote is assigned.

ACTIVITY_DATE

The date of the manager note activity

ADMIN_ONLY

Boolean; indicates this managerNote is accessible only to site administrators

CREATED_BY

The account identifier of the account that created the manager note record

CREATION_DATE

The date and UTC time the manager note record was created

LAST_UPDATED

Date and UTC time managerNote was updated

CUSTOM_BOOLEAN_[NUMBER]

Boolean; If enabled in the application settings, the value of the custom boolean
associated with the manager note record

CUSTOM_DROPDOWN_[NUMBER]

If enabled in the application settings, the value of the custom dropdown
selected associated with the manager note record

CUSTOM_TEXTAREA_[NUMBER]

If enabled in the application settings, the value of the custom textarea
associated with the manager note record

NOTE_TYPE

The selected note type of the manager note record or null if no type

NOTES

The notes associated with the manager note record

SCORE

The score associated with the manager note record

SHIFT

The shift associated with the manager note record or null if no shift

UPDATED_BY

The site user who last updated the manager note record

WORKGROUP

The workgroup associated with the manager note record

Not all fields will be configured to be used for all organizations or set for
all managerNote.


MANAGERNOTE.CUSTOMFIELDS

> Request example:

{}


> Response example:

{
   "custom_fields" : [
      {
         "label" : "ImaBoolean",
         "name" : "custom_boolean_1",
         "type" : "boolean"
      },
      {
         "label" : "ImaDropdown",
         "name" : "custom_dropdown_3",
         "type" : "dropdown",
         "values" : [
            "a",
            "b",
            "c"
         ]
      },
      {
         "label" : "ImaTextarea",
         "name" : "custom_textarea_2",
         "type" : "textarea"
      }
   ]
}


Try it!

Returns information about configured manager notes custom fields.

Parameters: none


MANAGERNOTE.GET

> Request example:

{
   "select" : {
      "start_date" : "2019-01-01",
      "end_date" : "2019-01-01",
   },
   "user_actions" : true
}


> Response example:

{
    "manager_note": {
        "account": "1",
        "activity_date": null,
        "admin_only": false,
        "created_by": "1",
        "creation_date": "2019-01-01 18:27:36",
        "custom_boolean_1": true,
        "custom_dropdown_1": "first option",
        "custom_textarea_1": "text found in the text area",
        "id": "11111",
        "last_updated": "2019-01-01 18:27:36",
        "note_type": "1234",
        "notes": "These are some notes",
        "org_id": "1",
        "score": "11",
        "shift": "12345",
        "updated_by": "1",
        "user_actions": {
            "delete": true,
            "edit": true
        },
        "workgroup": "999999"
    },
    "referenced_objects": {
        "account": [
            {
                "id": "1",
                "name": "User Account Name"
            }
        ],
        "custom_dropdown": [
            {
                "name": "custom_dropdown_1",
                "values": [
                    "first option",
                    "second option",
                ]
            }
        ],
        "note_type": [
            {
                "id": "1234",
                "name": "Note Type Selected",
                "org_id": "1"
            }
        ],
        "score": [
            "11 - Excellent"
        ],
        "workgroup": [
            {
                "id": "999999",
                "name": "Workgroup Name"
            }
        ]
    }
}


Try it!

Returns information about a manager note

Parameters:

ID

Required. id of the manager note for which to return information.

USER_ACTIONS

Boolean; if specified and true, a user_actions object will be returned with
attributes indicating what actions may be presented to the user to perform on
this manager note.


MANAGERNOTE.LIST

> Request example:

{
   "select" : {
      "start_date" : "2019-01-01",
      "end_date" : "2019-01-01",
   },
   "user_actions" : true
}


> Response example:

{
    "count": "2",
    "manager_notes": [
        {
            "account": "2",
            "activity_date": null,
            "admin_only": false,
            "created_by": "1",
            "creation_date": "2019-01-01 18:27:36",
            "id": "12345",
            "note_type": "7317",
            "notes": "These are some notes",
            "score": "11",
            "shift": null,
            "updated_by": null,
            "user_actions": {
                "delete": true,
                "edit": true
            },
            "workgroup": "9999"
        },
        {
            "account": "7",
            "activity_date": null,
            "admin_only": false,
            "created_by": "1",
            "creation_date": "2019-01-01 12:27:09",
            "id": "685471",
            "note_type": "1",
            "notes": "These are some notes",
            "score": "8",
            "shift": null,
            "updated_by": null,
            "user_actions": {
                "delete": false,
                "edit": false
            },
            "workgroup": "1111"
        }
    ],
    "page": {
        "this": {
            "batch": 10,
            "start": 1
        }
    },
    "referenced_objects": {
        "account": [
            {
                "id": "2",
                "name": "Account Name"
            },
            {
                "id": "7",
                "name": "Account Name"
            }
        ],
        "note_type": [
            {
                "id": "1",
                "name": "Note type",
                "org_id": "11111"
            }
        ],
        "score": [
            "11 - Excellent",
            "8 - Good"
        ],
        "workgroup": [
            {
                "id": "9999",
                "name": "Workgroup Name"
            },
            {
                "id": "1111",
                "name": "Workgroup Name"
            }
        ]
    }
}


Try it!

Returns information about manager notes. Uses pagination.

Optional parameters:

USER_ACTIONS

Boolean; if specified and true, a user_actions object will be returned with
attributes indicating what actions may be presented to the user for each manager
note returned.

SELECT

An object specifying selection criteria for this request.

WORKGROUP

Workgroup identifier; filter results by workgroup

ACCOUNT

Account identifier; filter results by account

ADMIN_ONLY

Boolean; Only return notes that are or are not accessible only to the site
administrator

START_DATE

Creation start date; if included, end_date is required. Filter results to those
notes created in the specified date range.

END_DATE

Creation end date; if included, start_date is required. Filter results to those
notes created in the specified date range.

ACTIVITY_START_DATE

Activity start date; if included, activity_end_date is required. Filter results
to those notes with activity in the specified date range.

ACTIVITY_START_DATE

Activity end date; if included, activity_start_date is required. Filter results
to those notes with activity in the specified date range.

SHIFT

Shift identifier; filter results by shift

NOTE_TYPE

Note type identifier; filter results by note type

NO_ACTIVITY

Boolean; limit results to those manager notes that have had no activity


MANAGERNOTE.CREATE

> Request example:

{
   "account": 1,
   "score": 10,
   "admin_only": true,
   "notes": "Notes to be read by admin only",
   "shift": 12345
}


> Response example:

{
    "id": 123456789
}


Try it!

Creates a new manager note.

Required Parameters:

ACCOUNT

Account identifier

Optional Parameters:

All manager note attributes are allowed with the exception of creation_date,
user_actions, and last_updated


MANAGERNOTE.DELETE

> Request example:

{
   "id": 1234567890
}


> Response example:

{}


Try it!

Deletes a new manager note. This method requires that the caller is a site
administrator or the manager who created the note.

Required Parameters:

ID

Manager note identifier


MANAGERNOTE.UPDATE

> Request example:

{
   "id": 123456789,
   "score": 9
}


> Response example:

{}


Try it!

Updates a new manager note.

Required Parameters:

ID

Account identifier

Optional Parameters:

Most of the manager notes attributes can be modified, with the exception of
creation_date, user_actions, account, and last_updated


MANAGERNOTETYPE OBJECT

managerNoteType objects have the following attributes:

ID

A unique identifier for this managerNoteType.

NAME

A unique name for this managerNoteType.


MANAGERNOTETYPE.LIST

> Request example:

{}


> Response example:

{
    "manager_note_type": [
        {
            "id": "1111",
            "name": "Progress"
        },
        {
            "id": "1112",
            "name": "Review"
        }
    ]
}


Try it!

Retrieves a list of manager note types.

This list is always accessible to site admins, and managers. Depending on site
settings, coordinators may also be able to retrieve this list.


MANAGERNOTETYPE.CREATE

> Request example:

{
   "name": "Manager Note Type Name"
}


> Response example:

{
    "id": 12345
}


Try it!

Creates a new manager note type.

Note: This method is only accessible to site administrators.

REQUIRED PARAMETERS

 * name - A unique name is required


MANAGERNOTETYPE.DELETE

> Request example:

{
   "id": 12345
}


> Response example:

{}


Try it!

Delete a new manager note type.

Note: This method is only accessible to site administrators.

REQUIRED PARAMETERS

 * id


MANAGERNOTETYPE.UPDATE

> Request example:

{
   "id": 12345,
   "name": "Updated Manager Note Type Name"
}


> Response example:

{}


Try it!

Updates a new manager note type.

Note: This method is only accessible to site administrators.

REQUIRED PARAMETERS

 * id
 * name - A unique name is required


MEMBERSHIP OBJECT

membership objects have the following attributes:

ID

Pseudo-id (workgroup-member) for callers that need a fixed ID string.

MEMBER

The account identifier for this membership.

EXTERNAL_ACCOUNT

The external account identifier for this object.

NOTE: This field is only used or returned when external ids are enabled for the
site.

WORKGROUP

The workgroup identifier for this membership.

LEVEL

Level Membership Type 2 member 3 coordinator 4 manager

CREATION_DATE

The datetime (in UTC) that this object was created.


MEMBERSHIP.CREATE

> Request example:

{
   "workgroup" : [ "226094", "12345" ],
   "level" : 4,
   "member" : [
      949,
      950
   ]
}


> Response example:

{
   "seconds" : "0.064361",
   "jsonrpc" : "2.0",
   "id" : "34",
   "result" : {}
}


Try it!

Creates new workgroup/account memberships.

Required parameters:

MEMBER

A single account identifier or an array of identifiers of accounts for which to
create memberships for each specified workgroup.

NOTE: If you are calling this method with the external_member parameter, member
is not required.

EXTERNAL_MEMBER

A single external account identifier or an array of external identifiers of
accounts for which to create memberships for each specified workgroup.

NOTE: If you are calling this method with the member parameter, external_member
is not required, and will be ignored.

WORKGROUP

A single workgroup identifier or an array of identifiers of workgroups for which
to create memberships for each specified account.

LEVEL

User level for which to create memberships.

TIER

Optional; tier at which to create memberships if membership tiers are enabled.

No more than 10,000 memberships may be specified in one request.

If one or more of the specified memberships already exist, the remaining
memberships (if any) will be created and no error will be returned. Existing
user levels will remain unchanged.

Response: On success, empty results will be returned.


MEMBERSHIP.DELETE

> Request example:

{
   "workgroup" : "226094",
   "member" : 950
}


> Response example:

{
   "seconds" : "0.055246",
   "jsonrpc" : "2.0",
   "id" : "37",
   "result" : {}
}


Try it!

Deletes workgroup/account memberships.

Required parameters:

MEMBER

A single account identifier or an array of identifiers of accounts for which to
delete memberships for each specified workgroup.

NOTE: If you are calling this method with the external_member parameter, member
is not required.

EXTERNAL_MEMBER

A single external account identifier or an array of external identifiers of
accounts for which to delete memberships for each specified workgroup.

NOTE: If you are calling this method with the member parameter, external_member
is not required.

WORKGROUP

A single workgroup identifier or an array of identifiers of workgroups for which
to delete memberships for each specified account. Currently, only a single
workgroup may be specified.

If one or more of the specified memberships doesn't exist, the remaining
memberships (if any) will be deleted and no error will be returned.

Response: On success, empty results will be returned.


MEMBERSHIP.LIST

> Request example:

{
   "select" : {
      "workgroup" : [
         2,
         1171
      ]
   }
}


> Response example:

{
   "seconds" : "0.035573",
   "jsonrpc" : "2.0",
   "id" : "",
   "result" : {
      "memberships" : [
         {
            "id" : "2-2",
            "creation_date" : "2018-01-02 02:24:00",
            "workgroup" : "2",
            "level" : "2",
            "member" : "2",
            "profile_type_id" : "1"
         },
         {
            "id" : "1171-2",
            "creation_date" : "2018-01-02 02:24:00",
            "workgroup" : "1171",
            "level" : "2",
            "member" : "2".
            "profile_type_id" : "1"
         },
         {
            "id" : "2-3",
            "creation_date" : "2018-01-02 02:24:00",
            "workgroup" : "2",
            "level" : "2",
            "member" : "3",
            "profile_type_id" : "1"
         },
         {
            "id" : "1171-3",
            "creation_date" : "2018-01-02 02:24:00",
            "workgroup" : "1171",
            "level" : "2",
            "member" : "3",
            "profile_type_id" : "1"
         }
      ],
      "referenced_objects" : {
         "workgroup" : [
            {
               "name" : "Front Desk",
               "id" : "1171"
            },
            {
               "name" : "Ushers",
               "id" : "2"
            }
         ],
         "account" : [
            {
               "email" : "pjones@example.com",
               "external_id" : "42648",
               "id" : "2",
               "first_name" : "Paul",
               "last_name" : "Jones",
               "screen_name" : "Paul Jones"
            },
            {
               "email" : "susana@example.com",
               "external_id" : "46037",
               "id" : "3",
               "first_name" : "Susan",
               "last_name" : "Adams",
               "screen_name" : "Susan Adams"
            }
         ]
      },
      "count" : "9569",
      "page" : {
         "next" : {
            "batch" : 2,
            "start" : 3
         },
         "this" : {
            "batch" : 2,
            "start" : 1
         }
      }
   }
}


Try it!

Returns information about workgroup/account memberships. Uses pagination. Uses
select criteria.

Required parameters:

SELECT

An object specifying selection criteria for this request. Either member or
workgroup must be specified. The available criteria include:

MEMBER

A single account identifier or an array of account identifiers indicating
accounts for whom to return memberships.

NOTE: If you are calling this method with the external_member parameter, member
is not required.

EXCLUDE_WORKGROUP

A single workgroup identifier, or an array of workgroup identifiers. Any
accounts returned must not belong to these workgroups.

INCLUDE_WORKGROUP

A single workgroup identifier. Any accounts returned must belong to this
workgroup.

EXTERNAL_MEMBER

A single external account identifier or an array of external account identifiers
indicating accounts for whom to return memberships.

NOTE: If you are calling this method with the external_member parameter, member
is not required.

WORKGROUP

A single workgroup identifier or an array of workgroup identifiers indicating
workgroup for which to return memberships.

LEVEL

User level of memberships to return.

TIER

Tier or array of tiers of memberships to return.

ORG_HOLD

Boolean; if specified and true, indicates that accounts on hold should be
included in the returned results.

ORG_PENDING

Boolean; if specified and true, indicates that accounts with pending status
should be included in the returned results.

REFERENCED_OBJECTS

Boolean, defaults to true. Indicates that, in addition to the memberships
attribute, the results should include a referenced_objects attribute giving
information about the accounts and workgroups referred to by the returned
memberships.

The response results memberships attribute will be an array of the current page
of memberships. Each element of the array will be a membership object.

If requested, the response results referenced_objects attribute will be an
object containing one or more object type names as attributes; for each object
type the value will be an array of those instances of that type of object which
are referred to in the memberships results, with only selected minimal
attributes provided:

ACCOUNT

id, first_name, last_name, screen_name, and email attributes are provided.

WORKGROUP

id and name attributes are provided.


MEMBERSHIP.LISTEXCLUDED

> Request example:

{
    "workgroup" : [
       2,
       1171
    ]
}


> Response example:

{
   "seconds" : "0.035573",
   "jsonrpc" : "2.0",
   "id" : "",
   "result" : {
      "count" : 2,
      "members" : [
         {
            "member" : "2",
            "profile_type_id" : "1"
         },
         {
            "member" : "3",
            "profile_type_id" : "1"
         }
      ],
      "referenced_objects" : {
         "account" : [
            {
               "email" : "pjones@example.com",
               "external_id" : "42648",
               "id" : "2",
               "first_name" : "Paul",
               "last_name" : "Jones",
               "screen_name" : "Paul Jones"
            },
            {
               "email" : "susana@example.com",
               "external_id" : "46037",
               "id" : "3",
               "first_name" : "Susan",
               "last_name" : "Adams",
               "screen_name" : "Susan Adams"
            }
         ]
      },
      "page" : {
         "next" : {
            "batch" : 2,
            "start" : 3
         },
         "this" : {
            "batch" : 2,
            "start" : 1
         }
      }
   }
}


Try it!

Returns information about accounts that are not members of the given workgoups.
Uses pagination. Uses select criteria.

Required parameters:

REFERENCED_OBJECTS

Boolean, defaults to true. Indicates that, in addition to the memberships
attribute, the results should include a referenced_objects attribute giving
information about the accounts referred to.

The response results members attribute will be an array of the current page of
accounts. Each element of the array will be a member object.

If requested, the response results referenced_objects attribute will be an
object containing one or more object type names as attributes; for each object
type the value will be an array of those instances of that type of object which
are referred to in the members results, with only selected minimal attributes
provided:

ACCOUNT

id, first_name, last_name, screen_name, and email attributes are provided.


MEMBERSHIP.TIERLIST

> Request example:

{
}


> Response example:

{
   "seconds" : "0.017018",
   "jsonrpc" : "2.0",
   "id" : "3",
   "result" : {
      "tiers": {
         "10" : "Platinum",
         "7" : "Copper",
         "8" : "Silver",
         "9" : "Gold"
      }
   }
}


Try it!

Shows membership tiers that are enabled.

Response: An object with tier identifiers ("1" through "10") as attributes and
the corresponding labels for those tiers as values.


MEMBERSHIP.UPDATE

> Request example:

{
   "workgroup" : 132994,
   "level" : 4,
   "member" : 946
}


> Response example:

{
   "seconds" : "0.068018",
   "jsonrpc" : "2.0",
   "id" : "3",
   "result" : {}
}


Try it!

Updates user levels for workgroup/account memberships.

Required parameters:

MEMBER

A single account identifier or an array of identifiers of accounts for which to
update memberships for each specified workgroup.

NOTE: If you are calling this method with the external_member parameter, member
is not required.

EXTERNAL_MEMBER

A single external account identifier or an array of external identifiers of
accounts for which to update memberships for each specified workgroup.

NOTE: If you are calling this method with the member parameter, external_member
is not required.

WORKGROUP

A single workgroup identifier or an array of identifiers of workgroups for which
to update memberships for each specified account. Currently, only a single
workgroup may be specified.

LEVEL

User level to which to update memberships.

TIER

Optional; tier to which to update memberships if membership tiers are enabled.

If one or more of the specified memberships doesn't exist, the remaining
memberships (if any) will be updated and no error will be returned.

Response: On success, empty results will be returned.


MESSAGE OBJECT


MESSAGE.BROADCAST

> Request example:

{
  "message" : "everyone get out of the building now",
  "subject" : "read this when you have time",
  "sender" : {
    "name" : "Your Boss",
    "email" : "your.boss@example.com"
  },
  "cc" : true,
  "sms" : true,
  "workgroups" : ["1", "2"],
  "location" : "3",
  "client" : "4",
  "department" : "5",
  "role" : "6",
  "reference_id" : "my event id",
  "profile_type" : "7",
  "tier" : "8",
  "level" : ["level"],
  "score" : {
    "no_score" : true,
    "value" : "10",
    "cmp" : ">="
  },
  "org_hold" : false,
  "org_pending" : 2,
  "restrict_delivery" : {
    "type" : "with_assignment",
    "start_date" : "2018-07-01T00:00:00",
    "end_date" : "2018-08-01T00:00:00",
    "dates" : ["2018-08-02","2018-08-03"]
  },
  "link_account" : true,
  "link_referrals" : true,
  "link_schedule" : true,
  "login_info" : true,
  "personalize" : true,
  "zip" : {
    "zip_code" : "98101",
    "range" : "50"
  }
}


> Response example:

{
  "id" : "1",
  "jsonrpc" : "2.0",
  "result": {
    "sent": [
      {
        "account": "My User",
        "email": "my.user@example.com",
        "id": "8"
      },
      {
        "account": "Your User",
        "email": "your.user@example.com",
        "id": "92"
      }
    ],
    "sent_count": 2,
    "warning": [
      {
        "message": "Message could not be sent to addresses marked as undeliverable",
        "unsent": [
          {
            "account": "Some User",
            "email": "some.user@example.com",
            "id": "234"
          }
        ],
        "unsent_count": 1
      }
    ]
  },
  "seconds" : "0.089939"
}


Try it!

Sends a broadcast message. Only site admins can send messages to everyone.
Managers can send messages to the workgroups they manage; coordinators can do
the same, if the site is set to allow it.

REQUIRED PARAMETERS

 * subject - text string of the message subject
 * level - array of strings for what level of accounts to send to. For site
   messages: member, team_mgr, site_admin; For workgroup messages: member,
   coordinator, manager (ignored for coordinators)
 * workgroups - array of workgroup IDs to send to (required unless site admin)

OPTIONAL PARAMETERS

 * return_sent_accounts - the number of accounts to return a success for in
   result.sent; if this limit is exceeded, no results are returned (default 0,
   no results)
 * return_unsent_accounts - the number of accounts to return warnings for in
   result.warning.emails; if this limit is exceeded, no warnings are returned
   (default 0, no results)
 * message - plain text message
 * sender - object describing the sender of the message
   * email - email address of the sender (default: email address of the sending
     account)
   * name - name of the sender (default: none)
 * cc - boolean to send copy back to sending account (default: false)
 * sms - boolean to also send message via SMS (default: false)
 * link_account - boolean to include the account link in the message (default
   false)
 * link_referrals - boolean to include the referral link in the message (default
   false)
 * link_schedule - boolean to include the schedule link in the message (default
   false)
 * login_info - boolean to include the login info in the message (default false)
 * personalize - boolean to personalize the message (default false)

OPTIONAL FILTERS

Filters further resrict which accounts to send the message to. Defaults are no
additional restrictions.

 * tier - an exact team tier (must match the account's tier for one or more of
   the specified workgroups) (numeric value)
 * profile_type - the profile of the accounts to send to
 * org_hold - boolean whether to send users on admin hold (default false)
 * org_pending - an onboarding status (may only be specified if org_hold is
   false)
 * score - object describing the score of the accounts to send to
   * value - the score value
   * cmp - a string for the comparison operator, one of: >= (or better;
     default), <= (or worse), == (exactly)
   * no_score - also include accounts with no score
 * zip - object of ZIP code restrictions
   * zip_code - ZIP code to restrict to
   * range - distance in miles from the ZIP code (default: 0)
 * restrict_delivery - object describing who to further restrict delivery to. It
   has a type, and then other restrictions, including date ranges for the type,
   etc.
   * Example: if without_assignment is selected, with a start_date of
     2018-08-01, end_date of 2018-08-07, and location of 1001, then only
     accounts who were not assigned a shift for that location, between those
     dates, will be sent the message.
   * NOTES
     * options relating to shifts specifically only apply to a type of
       with_assignment, without_assignment, and without_acknowledgment
     * signed_on and not_signed_on only apply to org messages, not workgroup
       messages
     * no options apply to a type of everyone
     * start_date and end_date must both be set for start_date, end_date, dates,
       or start_time to be used
   * type - string of one of the following values
     * everyone - all matching accounts (default)
     * with_assignment - if the account was assigned a shift
     * without_assignment - if the account was not assigned a shift
     * signed_on - if the account was signed on
     * not_signed_on - if the account was not signed on
     * without_acknowledgment - if the account did not acknowledge a shift
   * start_date - a date at or after to restrict the type (signed on, didn't
     sign on, had assignment, didn't have assignment, or didn't acknolwedge, at
     or after this datetime)
   * end_date - a date at or before to restrict the type
   * dates - array of additional arbitrary dates for restricting
   * start_time - the time the shift started (in HH:MM:SS format)
   * location - the location ID for the shift
   * client - the client ID for the shift
   * department - the department ID for the shift
   * role - the role ID for the shift
   * reference_id - the reference ID for the shift

RESPONSE

On success, include the list of addresses sent to in the sent key, and a list of
warning objects, if any addresses could not be sent to.


MESSAGE.DIRECT

> Request example:

{
  "message" : "everyone get out of the building now",
  "subject" : "read this when you have time",
  "account" : [1, 23, 45, 72],
  "sms" : true,
  "urgent" : true
}


> Response example:

{
  "id" : "1",
  "jsonrpc" : "2.0",
  "result": {
      "sent": [
        {
          "account": "Bri Lum",
          "email": "364@servola.org",
          "email_sent": "1",
          "id": "364",
          "sms_sent": ""
        },
        {
          "account": "Charlie Watts",
          "email": "2834156@servola.org",
          "email_sent": "1",
          "id": "2834156",
          "sms_sent": "1"
        }
      ],
      "sent_count": 2,
      "warning": [
        {
          "message": "Message could not be sent to addresses marked as undeliverable",
          "unsent": [
            {
              "account": "Andrew Allison",
              "email": "3953240@ishifts.com",
              "email_sent": "",
              "id": "3953240",
              "sms_sent": ""
            },
            {
              "account": "Bri Lum",
              "email": "364@servola.org",
              "email_sent": "1",
              "id": "364",
              "sms_sent": ""
            }
          ],
          "unsent_count": 2
        },
        {
          "message": "Not Authorized to send email to account",
          "unsent": [
            {
              "account": "Paul Allison",
              "email": "2834193@servola.org",
              "id": "2834193"
            }
          ],
          "unsent_count": 1
        }
      ]
    },
  "seconds" : "0.03719"
}


Try it!

Sends a direct message. Only site admins can send messages to everyone. Managers
can send messages to members of the workgroups they manage; coordinators can do
the same, if the site is set to allow it, members can can only send messages to
primary contact of their workgroup and to contact for the site.

REQUIRED PARAMETERS

One of account and external_account is required * account - the account
(shiftboard_id) to direct message or an array of account identifiers

NOTE: If you are calling this method with the account parameter,
external_account will be ignored (if included).

 * external_account - the external_account (external_id) to direct message or an
   array of external account identifiers

OPTIONAL PARAMETERS

 * subject - text string of the message subject

 * message - plain text message

 * urgent - boolean to mark message as urgent (default: false)

 * sms - boolean to also send message via SMS if site configured (default:
   false)

RESPONSE

On success, include the list of addresses sent to in the sent key, and a list of
warning objects, if any addresses could not be sent to or if sender is not
authorized to send to account. The section warning can have two sub-sections,
one for messages that was not fully sent out due to either a bad email address
or missing sms number. The other section contains account that user is not
authorized to message.

Note that account "Bri Lum" is included in both section 'sent' and in 'warning'
for messages marked as undeliverable. The reason is that the request was to
email and sms but in this case no sms was sent out. See the two status
indicators "sms_sent" and "email_sent"


NEWS OBJECT


NEWS.GET

> Request example:

{}


> Response example:

{
   "seconds" : "0.065741",
   "jsonrpc" : "2.0",
   "id" : "7",
   "result" : {
      "news" : {
         "member" : "Member news goes here",
         "team" : {
            "Example" : {
               "news" : "This is the news section for my Workgroup"
            }
         },
         "manager" : "Manager news goes here"
      }
   }
}


Try it!

Returns the news for managers, teams, and members.

Optional parameters:

ORG_ID


OPENID OBJECT

openid objects have the following attributes:

ID

A unique identifier for this openid object.

ACCOUNT

EXTERNAL_ACCOUNT

OPENID


OPENID.CREATE

> Request example:

{
   "openid" : "http://openid4.example.com/",
   "account" : 918
}


> Response example:

{
   "seconds" : "0.064778",
   "jsonrpc" : "2.0",
   "id" : "43",
   "result" : {
      "id" : 785
   }
}


Try it!

Adds an openid to an existing account.

Required Parameters:

ACCOUNT

A single account identifier or an array of identifiers of accounts.

NOTE: If you are calling this method with the external_account parameter,
account is not required.

EXTERNAL_ACCOUNT

A single external account identifier or an array of external identifiers of
accounts.

NOTE: If you are calling this method with the account parameter,
external_account is not required.

OPENID

An openid url that will allow authentication to this account via

https://www.shiftboard.com/login/openid?http...

where http... is the designated url, URI-escaped. E.g. for openid
http://www.example.com/, use the login link

https://www.shiftboard.com/login/openid?http%3A%2F%2Fwww.example.com%2F

If this openid is already in use for any account in Shiftboard, an error will be
returned.

Response: On success, an id attribute will provide the identifier for the new
account_openid.


OPENID.DELETE

> Request example:

{
   "id" : "785"
}


> Response example:

{
   "seconds" : "0.051149",
   "jsonrpc" : "2.0",
   "id" : "46",
   "result" : {}
}


Try it!

Deletes an account_openid object.

Required Parameter: id. Deleting an account_openid object is not allowed if the
account is active with more than one organization's Shiftboard.

Response: On success, empty results will be returned.


OPENID.UPDATE

> Request example:

{
   "openid" : "http://openid4.example.com/new",
   "id" : 785
}


> Response example:

{
   "seconds" : "0.064496",
   "jsonrpc" : "2.0",
   "id" : "45",
   "result" : {}
}


Try it!

Updates an account_openid object.

Required Parameter: id. Any other account_openid object attributes may be
specified. If openid is updated and the new openid is already in use for any
account in Shiftboard, an error will be returned. Updating an account_openid
object is not allowed if the account is active with more than one organization's
Shiftboard.

Response: On success, empty results will be returned.


PAYCODE OBJECT

paycode objects have the following attributes:

ID

A unique identifier for this paycode.

NAME

The name of this paycode. Maximum length 64 characters.

DESCRIPTION

A description for this paycode.

PAY_RATE

Pay rate (e.g. "10.00")


PAYCODE.CREATE

Try it!

Creates a new paycode record.

Parameters: Any attributes of a paycode object (except id) may be specified. A
unique name parameter must be specified.

Response: On success, an id attribute will provide the identifier for the new
paycode.


PAYCODE.DELETE

Try it!

Deletes a paycode.

Required parameter: id.

On success, empty results will be returned.


PAYCODE.GET

> Request example:

{
   "id" : 2020
}


> Response example:

{
   "seconds" : "0.025599",
   "jsonrpc" : "2.0",
   "id" : "7",
   "result" : {
      "pay_rate" : "15.00",
      "name" : "universal minimum wage",
      "id" : "2020",
      "description" : ""
   }
}


Try it!

Returns information about a single paycode.

Required parameter: id.

The response results will be a paycode object.


PAYCODE.LIST

> Request example:

{
   "select" : {
      "paycode" : 2020
   }
}


> Response example:

{
   "seconds" : "0.025599",
   "jsonrpc" : "2.0",
   "id" : "7",
   "result" : {
      "count" : "1",
      "page" : {
         "this" : {
            "batch" : 25,
            "start" : 1
         }
      },
      "paycodes" : [
         {
            "pay_rate" : "15.00",
            "name" : "universal minimum wage",
            "id" : "2020",
            "description" : ""
         }
      ]
   }
}


Try it!

Returns information about paycodes. Uses pagination.

Optional parameters: select object with a paycode attribute identifying a single
paycode or array of paycodes to be returned. E.g.{select:{paycode:12345}}

The response results paycodes attribute will be an array of paycode objects for
the current page of paycodes.


PAYCODE.UPDATE

Try it!

Updates a paycode object.

Required parameter: id. Any other paycode object attributes may be specified.

Response: On success, empty results will be returned.


PAYTYPE OBJECT

paytype objects have the following attributes:

ID

A unique identifier for this paytype.

NAME

The name of this paytype. Maximum length 64 characters.

DESCRIPTION

A description for this paytype.


PAYTYPE.LIST

> Request example:

{
    "select" : {
       "paytype" : [2020, 2021]
    }
}


> Response example:

{
    "seconds" : "0.025599",
    "jsonrpc" : "2.0",
    "id" : "7",
    "result" : {
       "count" : "1",
       "page" : {
          "this" : {
             "batch" : 25,
             "start" : 1
          }
       },
       "paytypes" : [
          {
             "id" : "2020",
             "name" : "Per Diem",
             "description" : "Daily rate"
          },
          {
             "id" : "2021",
             "name" : "Mileage",
             "description" : "Mileage Reimbursement"
          }
       ]
    }
}


Try it!

Returns information about paytypes. Uses pagination.

Optional parameters: select object with a paytype attribute identifying a single
paytype or array of paytypes to be returned. E.g.{select:{paytype:12345}}

The response results paytypes attribute will be an array of paytype objects for
the current page of paytypes.


PROFILECONFIGURATION OBJECT

profileConfiguration objects have the following attributes:

ID

PROFILE_OPTION

integer identifying the system profile item for which this is the configuration;
such profile items may be used at most once per profile type

PROFILE_TYPE

PAGE

SECTION

COLUMN

SORT

LABEL

TYPE

READ_AUTHORIZATION

WRITE_AUTHORIZATION

CONSTRAINT_LIST

Only used for some types; format varies by type

FORM_NAME

Internally used string unique to each profile_option


PROFILECONFIGURATION.LIST

> Request example:

{
   "select" : {
      "profile_option" : 130,
      "page" : 1,
      "profile_type" : 1
   }
}


> Response example:

{
   "seconds" : "0.012632",
   "jsonrpc" : "2.0",
   "id" : "10",
   "result" : {
      "profile_configuration" : [
         {
            "page" : "1",
            "section" : "3",
            "column" : "2",
            "sort" : "8",
            "constraint_list" : "",
            "profile_type" : "1",
            "profile_option" : "130",
            "write_authorization" : "Managers and higher",
            "label" : "First Name of Reference",
            "type" : "varchar100",
            "id" : "2692",
            "read_authorization" : "Members and higher"
         }
      ]
   }
}


Try it!

Returns information about profile configuration. Uses select criteria.

Parameters:

SELECT

An object specifying selection criteria for this request. The available criteria
include:

PROFILE_TYPE

The profileType identifier for which to return profile configuration

PROFILE_OPTION

The profile option for which to return configurations

PAGE

The page within the profile_type for which to return configurations

FORM_NAME

A form_name string or array of such strings for which to return configurations

The response results profile_configuration attribute will be an array of
profileConfiguration objects.


PROFILEDATA OBJECT

profileData objects have the following attributes:

ACCOUNT

EXTERNAL_ACCOUNT

PROFILE_OPTION

integer identifying the profile item for which this is the data

VALUE

value of this profile item, or if the profile item has more than one value, an
array of values.


PROFILEDATA.LIST

> Request example:

{
   "select" : {
      "account" : 1
   }
}


> Response example:

{
   "seconds" : "0.105116",
   "jsonrpc" : "2.0",
   "id" : "",
   "result" : {
      "count" : 4,
      "page" : {
         "this" : {
            "batch" : 10,
            "start" : 1
         }
      },
      "profile_data" : [
         {
            "profile_option" : "620",
            "account" : "1",
            "value" : "(encrypted)"
         },
         {
            "profile_option" : "16",
            "account" : "1",
            "value" : "206-555-1234"
         },
         {
            "profile_option" : "186",
            "account" : "1",
            "value" : "Brother"
         },
         {
            "profile_option" : "37",
            "account" : "1",
            "value" : [
               "Data Entry",
               "Driver"
            ]
         }
      ]
   }
}


Try it!

Returns information about account profile data. Uses select criteria. Uses
pagination.

Parameters:

SELECT

An object specifying selection criteria for this request. Minimally either
account or profile_type must be specified. The available criteria include:

ACCOUNT

The account identifier or array of account identifiers for which to return
profile data. When requesting profile data for multiple accounts, it is
recommended the caller use an array of account identifiers to increase
efficiency, and reduce the overhead of making multiple requests to the API.

NOTE: If you are calling this method with the external_account parameter,
account is not required.

EXTERNAL_ACCOUNT

The external account identifier or array of external account identifiers for
which to return profile data. When requesting profile data for multiple
accounts, it is recommended the caller use an array of account identifiers to
increase efficiency, and reduce the overhead of making multiple requests to the
API.

NOTE: If you are calling this method with the account parameter,
external_account is not required.

PROFILE_TYPE

The profileType identifier for which to return profile data; defaults to the
profile type of the first account specified.

WORKGROUP

If specified, only select data for accounts which are members of this workgroup.

PROFILE_OPTION

The profile option for which to return data.

The response results profile_data attribute will be an array of the current page
of profile data. Each element of the array will be a profileData object.


PROFILEDATA.UPDATE

> Request example:

{
   "account" : 1,
   "profile_data" : [
      {
         "profile_option" : 186,
         "value" : "Sister"
      },
      {
         "profile_option" : 16,
         "value" : "206-555-4321"
      }
   ]
}


> Response example:

{
   "seconds" : "0.204804",
   "jsonrpc" : "2.0",
   "id" : "",
   "result" : {}
}


Try it!

Updates multiple profileData objects for a given account.

Required parameters:

ACCOUNT

The account identifier or array of account identifiers for which to update
profile data. When requesting profile data for multiple accounts, it is
recommended the caller use an array of account identifiers to increase
efficiency, and reduce the overhead of making multiple requests to the API.

NOTE: If you are calling this method with the external_account parameter,
account is not required.

EXTERNAL_ACCOUNT

The external account identifier or array of external account identifiers for
which to update profile data. When requesting profile data for multiple
accounts, it is recommended the caller use an array of account identifiers to
increase efficiency, and reduce the overhead of making multiple requests to the
API.

NOTE: If you are calling this method with the account parameter,
external_account is not required.

PROFILE_DATA

Array of objects with profile_option and value attributes designating which
profile options are to be updated and their new values.

Response: On success, empty results will be returned.


PROFILETYPE OBJECT

profileType objects have the following attributes:

ID

A unique identifier for this profile type.

NAME

The name of this profile type.


PROFILETYPE.LIST

> Request example:

{}


> Response example:

{
   "seconds" : "0.039222",
   "jsonrpc" : "2.0",
   "id" : "1",
   "result" : {
      "count" : "2",
      "page" : {
         "this" : {
            "batch" : 25,
            "start" : 1
         }
      },
      "profile_types" : [
         {
            "name" : "Basic Profile",
            "id" : "1",
            "pages" : [
                {
                    "id" : "2",
                    "name" : "Page 1",
                    "sort" : "1",
                },
                {
                    "id" : "3",
                    "name" : "Page 2",
                    "sort" : "2",
                }
            ]
         },
         {
            "name" : "Staff",
            "id" : "2",
            "pages" : [
                {
                    "id" : "1",
                    "name" : "Basic Information"",
                    "sort" : "1",
                }
            ]
         }
      ]
   }
}


Try it!

Returns information about profile types. Uses pagination.

Optional parameters: select object with a profile_type attribute identifying a
single profile type to be returned. E.g. {select:{profile_type:12345}}

The response results profile_types attribute will be an array of the current
page of profile_types. Each element of the array will be a profile_type object.


REGISTRATION OBJECT

registration objects have the following attributes:

ID

A unique identifier for this registration.

PROFILE_TYPE

profileType identifier for this registration.

DATA

An array of objects, each of which has a form_name and a value attribute.


REGISTRATION.CREATE

> Request example:

{
   "data" : [
      {
         "value" : "Tester",
         "form_name" : "last_name"
      },
      {
         "value" : "Joe",
         "form_name" : "first_name"
      },
      {
         "value" : "joe.tester@example.com",
         "form_name" : "email"
      },
      {
         "value" : "12345",
         "form_name" : "zip"
      },
      {
         "value" : "M",
         "form_name" : "tshirt_size"
      },
      {
         "value" : "English",
         "form_name" : "fluent_languages"
      },
      {
         "value" : "Mandarin Chinese",
         "form_name" : "fluent_languages"
      },
      {
         "value" : 5,
         "form_name" : "birthdate_day"
      },
      {
         "value" : 4,
         "form_name" : "birthdate_month"
      },
      {
         "value" : 1972,
         "form_name" : "birthdate_year"
      }
   ],
   "profile_type" : 1
}


> Response example:

{
   "seconds" : "0.082992",
   "jsonrpc" : "2.0",
   "id" : "31",
   "result" : {
      "id" : 43
   }
}


Try it!

Creates a new registration record.

Parameters: profile_type must be specified. data must be specified and must
include any required registration form fields.

User pictures and resumes are not yet supported.

date, month/day, or month/year types should be given in two or three separate
fields (e.g. birthdate_day, birthdate_month, birthdate_year) with integer
values.

Response: On success, an id attribute will provide the identifier for the new
registration.


RESOURCE OBJECT


BASIC ATTRIBUTES

ID

A unique identifier for this resource

NAME

Resource name

DESCRIPTION

Description of the resource

NOTES

Notes about the resource


RESOURCE.LIST

Try it!

> Request example:

{
    "select": {
        "resource": 52
    }
}


> Response example:

{
  "count": 1,
  "page": {
    "this": {
      "batch": 10,
      "start": 1
    }
  },
  "resources": [
    {
      "description": "This is a Test Resource",
      "id": "52",
      "name": "TestResource",
      "notes": "Test resource notes",
    }
  ]
}


Returns information about resources. Uses pagination.

Optional parameters:

select object with a resource attribute identifying a single resource or array
of resources to be returned. E.g. {select:{resource:12345}}.

select object with a workgroup attribute identifying a single workgroup to be
returned. E.g. {select:{resource:12345, workgroup: 54321}}.

SHOW_ONLY_WORKGROUP_LISTABLES

Only return results for the workgroup specified (in select).

EXCLUDE_SITE

Boolean; if a manager of the team, don't include resources associated with the
site itself with those for the team.


ROLE OBJECT

role objects have the following attributes:

ID

A unique identifier for this role.

NAME

The name of this role. Maximum length 48 characters.


ROLE.CREATE

> Request example:

{
   "workgroup" : "226086",
   "name" : "Test Role 0.699796458722442"
}


> Response example:

{
   "seconds" : "0.319621",
   "jsonrpc" : "2.0",
   "id" : "51",
   "result" : {
      "id" : "2282"
   }
}


Try it!

Creates a new role record.

Parameters: Any attributes of a role object (except id) may be specified. A
unique name parameter must be specified. Additionally, a workgroup parameter
must be specified to create initial workgroup relationships for this role. It
may be either a single workgroup identifier or an array of identifiers of
workgroups that use this role.

Response: On success, an id attribute will provide the identifier for the new
role.


ROLE.DELETE

Try it!

Deletes a role.

Required parameter: id.

On success, empty results will be returned.


ROLE.GET

> Request example:

{
   "id" : "2281"
}


> Response example:

{
   "seconds" : "0.115639",
   "jsonrpc" : "2.0",
   "id" : "4",
   "result" : {
      "name" : "role 813",
      "id" : "2281"
   }
}


Try it!

Returns information about roles. Uses pagination.

Optional parameters: select object with a role attribute identifying a single
role or array of roles to be returned. E.g. {select:{role:12345}}

The response results roles attribute will be an array of the current page of
roles. Each element of the array may have the following attributes:

ID

A unique identifier for this role.

NAME

The name of this role.


ROLE.ASSIGN

> Request example:

{
   "workgroup" : 56789,
   "account" : 12345,
   "role" : [
      1,
      2,
      3
   ]
}


> Response example:

{
   "seconds" : "0.115639",
   "jsonrpc" : "2.0",
   "id" : "4",
   "result" : {}
}


Try it!

Enables or disables roles for a member of a workgroup that uses restricted
roles.

EXTERNAL_ACCOUNT

external account ID to be updated, if this organization uses external IDs.

ACCOUNT

account to be updated

WORKGROUP

workgroup the member belongs to

ROLE

One or more ids of roles that are associated with the given workgroup.

ENABLE

false if the specified roles shoud be disabled for this member; otherwise the
specified roles will be enabled.


ROLE.LIST

> Request example:

{
   "select" : {
      "role" : "2281"
   }
}


> Response example:

{
   "seconds" : "0.115639",
   "jsonrpc" : "2.0",
   "id" : "4",
   "result" : {
      "roles" : [
         {
            "name" : "role 813",
            "id" : "2281"
         }
      ],
      "count" : "1",
      "page" : {
         "this" : {
            "batch" : 25,
            "start" : 1
         }
      }
   }
}


Try it!

Returns information about roles. Uses pagination.

Optional parameters:

SELECT

An object specifying selection criteria for this request. Allowed criteria are:

ROLE

A single role identifier or array of role identifiers.

SEARCH

A generic search string; select roles containing this string in their name.

WORKGROUP

Single workgroup to filter results to be returned.

NOTE: If the call is made on behalf of a manager, the caller must also specify
the boolean value exclude_site to limit the results to only the workgroup
specified.

SHOW_ONLY_WORKGROUP_LISTABLES

Only return results for the workgroup.

EXCLUDE_SITE

Boolean; if a manager of the team, don't include roles associated with the site
itself with those for the team.

SITEWIDE

Boolean; query for all roles across all workgroups that the user has access to.
Enabled by default for manager accounts.

The response results roles attribute will be an array of the current page of
roles. Each element of the array may have the following attributes:

ID

A unique identifier for this role.

NAME

The name of this role.


ROLE.UPDATE

> Request example:

{
   "workgroup" : "226086",
   "name" : "Test Role 2282",
   "id" : "2282"
}


> Response example:

{
   "seconds" : "0.141744",
   "jsonrpc" : "2.0",
   "id" : "52",
   "result" : {}
}


Try it!

Updates a role object.

Required parameter: id. Any other role object attributes may be specified.

Response: On success, empty results will be returned.


SHIFT OBJECT


SHIFT: BASIC ATTRIBUTES

ID

A unique identifier for this shift.

COUNT

The number of positions represented by this shift record.

QTY

The total number of positions represented by this and associated records.

START_DATE

The date or date and time on which this shift begins. For an all-day shift, this
is date in RFC 3339 full date format (e.g. "2009-04-01"). Otherwise, this is a
datetime (e.g. "2009-04-01T13:00:00").

END_DATE

The date and time on which this shift ends, (e.g. "2009-04-01T17:00:00"). Not
specified for all-day or open-ended shifts.

dur_hrs Integer; shift duration in hours. Required when creating a shift with a
use_time value of 2. Likewise this value will only be returned when querying for
shifts whose use_time value is equal to 2.

dur_mins Integer; shift duration in minutes. Required when creating a shift with
a use_time value of 2. Likewise this value will only be returned when querying
for shifts whose use_time value is equal to 2.

TIMEZONE

The timezone for which the shift is scheduled.

WORKGROUP

The shift's workgroup.

SUBJECT

The shift's subject. Maximum length 100 characters.

LOCATION

The location id for the shift, if specified.

ROLE

The role id for the shift, if specified.

CLIENT

The client id for the shift, if specified.

DEPARTMENT

The department id for the shift, if specified.

COVERED

true if the shift is covered.

PUBLISHED

true if the shift is published.

URGENT

true if the shift is critical to have covered.

COVERING_MEMBER

If the shift is covered by a member, the id of the member's account.

EXTERNAL_COVERING_MEMBER

If the shift is covered by a member, the external id of the member's account.

USE_TIME (DEPRECATED)

Integer; shift type identifier. Valid use_time values are in the range of 1-5.
1: shift/coverage block 2: start time/duration 3: start/end time 4: open
ended/tbd 5: anytime

TIME_BLOCK

Integer; time block identifier. Required when creating a shift with a use_time
value of 1. Likewise this value will only be returned when querying for shifts
whose use_time value is equal to 1.


SHIFT: EXTENDED ATTRIBUTES

DETAILS

Additional details about the shift.

NO_PICK_UP

Boolean

SIGNUP_LIST

Boolean

NO_TRADE

Boolean

REFERENCE_ID

WORK_STATUS_TYPE

The workStatusType id for the shift, if specified.

LINKTITLE

LINKURL

ROOM_FLOOR

ZIPCODE

PAY_RATE

BASE_RATE

NO_CREDIT

Boolean

EXTRA_CREDIT

ABSENT_REASON

Integer

ARRIVE_LATE_DATETIME

Datetime

ARRIVE_LATE_REASON

Integer

ARRIVE_LATE_REASON_LABEL

String

LEAVE_EARLY_DATETIME

Datetime

LEAVE_EARLY_REASON

Integer

LEAVE_EARLY_REASON_LABEL

String

CUSTOM_TEXT_1

CUSTOM_TEXT_2

CUSTOM_TEXT_3

CUSTOM_MULTIPICK

Array of custom_multipick identifiers for the shift

ACKNOWLEDGED

Boolean; shift has been acknowledged or declined (declined if
acknowledge_decline_reason is not null).

ACKNOWLEDGED_AT

Date/time of acknowledgement or most recent modification to the acknowledgement.

ACKNOWLEDGE_DECLINE_REASON

Decline reason identifier; present only if declined.

ACKNOWLEDGED_NOTES

RESOURCE

Array of resource identifiers for this shift

CUSTOM_DROPDOWN_1

CUSTOM_DROPDOWN_2

CUSTOM_DROPDOWN_3

CUSTOM_DROPDOWN_4

CUSTOM_DROPDOWN_5

CUSTOM_DROPDOWN_6

CUSTOM_DROPDOWN_7

CUSTOM_DROPDOWN_8

CUSTOM_DROPDOWN_9

CUSTOM_DROPDOWN_10

CUSTOM_DROPDOWN_11

CUSTOM_DROPDOWN_12

CUSTOM_DROPDOWN_13

CUSTOM_DROPDOWN_14

CUSTOM_DROPDOWN_15

CUSTOM_TEXTAREA

CREATED

UTC time shift was created

STATUS_UPDATED

UTC time shift was published, unpublished, assigned, confirmed, or unconfirmed

UPDATED

UTC time shift was otherwise updated

BREAKS

Array of breaks for the shift; each break has the following attributes:

NAME

START_TIME

The time in which a shift break starts, in RFC 3339 full date format (e.g.
"2009-04-01").

DISPLAY_TIME

DURATION_MINUTES

PAID

Boolean.

IS_A_TRADE

Boolean; true if this shift has been offered for trade by the covering member.

Not all fields will be configured to be used for all organizations or set for
all shifts.

ABSENT_REASON - INTEGER

ARRIVE_LATE_REASON - INTEGER

LEAVE_EARLY_REASON - INTEGER


SHIFT.ACKNOWLEDGE

> Request example:

{
   "id" : 2753501
}


> Response example:

{
   "seconds" : "0.280633",
   "jsonrpc" : "2.0",
   "id" : "3",
   "result" : {
      "message" : "You have acknowledged this position:\n\nWednesday, May 20, 2015, 9:55am to 11:55am\nFront Desk"
   }
}


Try it!

Acknowledge or decline a shift.

REQUIRED PARAMETER

ID

Optional parameters:

ACKNOWLEDGE_DECLINE_REASON

acknowledge decline reason identifier, if the acknowledgement is to decline.

ACKNOWLEDGED_NOTES

Response: On success, a message attribute will provide a brief notification
message.


SHIFT.ASSIGN

This method is used by workgroup managers and site admins to assign a shift. By
default, all conflict checking that is enabled for the site will be applied (can
be overridden with the assignability_checks attribute); the publication state of
the shift does not change (can be set to published by sending: "publish": true);
and the shift is only acknowledged if auto-ack is on for this workgroup (can
force acknowledgement by sending: "acknowledge": true).

> Request example:

{
  "id" : 2753501,
  "covering_member" : 47,
}


> Response example:

{
   "seconds" : "0.280633",
   "jsonrpc" : "2.0",
   "id" : "3",
   "result" : {
      "message" : "You have assigned this position:\n\nWednesday, May 20, 2015, 9:55am to 11:55am\nAssignee: John Doe\nFront Desk"
   }
}


Try it!

Assign a shift. Can also publish the shift and/or mark the shift as
acknowledged.

REQUIRED PARAMETER

ID

ID of the shift to be assigned.

COVERING_MEMBER OR EXTERNAL_COVERING_MEMBER

ID of member to whom the shift is to be assigned.

OPTIONAL PARAMETERS

PUBLISH

set to true to publish the shift

ACKNOWLEDGE

set to true to acknowledge shift

NO_NOTIFY

set to true to disable notification

ASSIGNABILITY_CHECKS

set to false to disable processing of Assignability parameters

ASSIGNABILITY PARAMETERS

To use assignability checks, the assignability_checks parameter must be true or
not specified; additionally, the following options may be available, based on
enabled features:

conflicts_ok - boolean

daily_overtime_ok - boolean

weekly_overtime_ok - boolean

timeoff_ok - boolean

consecutive_days - boolean

short_turnaround - boolean

ignore_attestation_types - boolean

attestation_type - array of attestationTypeId

ignore_role - boolean


SHIFT.BULKDELETE

Delete multiple shifts with a single call. This method processes bulk deletes
asynchronously, meaning the caller will be returned a success message
immediately (assuming valid parameters were sent), and the processing of these
shift delete operations will happen out-of-band. Once all shift deletions have
completed, a report will be emailed to the API caller. This report will detail
the number of successes, failures, and provide details about why a failure
occurred.

> Request example:

{
   "shifts" : [2753501, 2753502],
}


> Response example:

{
   "seconds" : "0.178901",
   "jsonrpc" : "2.0",
   "id" : "43",
   "result" : {
        "message": "Bulk delete has been started. You will receive an email with results."
    }
}


Try it!

Updates multiple shift objects in a single call.

REQUIRED PARAMETER

shifts - Array of shift identifiers.

OPTIONAL PARAMETERS

Most other shift object attributes may be specified. Please see the shift.update
documentation for more information.

Try it!

Deletes a shift record.

Required parameter: id.

Optional Parameters:

notify_on_delete Boolean; if the shift is assigned, notify covering member upon
deletion of the shift.

notify_message Custom text to be included when notifying shift owner upon
deletion of shift.


SHIFT.BULKUPLOAD

Prepare the system to ingest and process a spreadsheet file containing one or
more shift records. Upon executing this method, the caller will receive a unique
identifier and unique upload URL that is valid for the next 10 minutes. The
identifier can be used in conjunction with shift.bulkUploadStatus to poll the
current status of the bulk upload operation.

In order to upload a file to the URL specified, the file should be POSTed with
the content-type header matching the file type for the file being uploaded. If a
file is POSTed with a content-type header that does not match the file type
being uploaded to the server, an error will occur and the file will NOT be
processed.

Valid file types are xls, xlsx, and csv.

VALID CONTENT-TYPE HEADERS AND FILE ASSOCIATIONS

content-type extension file type application/vnd.ms-excel xls Microsoft Excel
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx Microsoft
Excel Open XML Spreadsheet text/csv csv Comma-separated values

> Request example:

{}


> Response example:

{
   "id": 12345,
   "url": "https://www.shiftboard.com/servola/docs/upload.cgi?ss=9999999;type=shift_upload;expires=1735689600;signature=AAABBBBCCCCDDDEEEFFF;id=12345"
}


Try it!

REQUIRED PARAMETERS

None

OPTIONAL PARAMETERS

None


SHIFT.BULKUPLOADGETSETTINGS

Retrieve a list of configuration settings related to bulk upload operations.
This list of configuration settings will include all site specific bulk upload
operation settings as well as any site configuration overrides previously
configured by the caller.

Try it!

> Request example:

{}


> Response example:

{
    "bulk_upload_settings": {
        "add_org_custom_multipick": true,
        "add_org_custom_multipick_2": false,
        "add_org_member": true,
        "add_org_venue": true,
        "add_team": false,
        "add_time_block": false,
        "auto_conflicts_ok": false,
        "auto_is_available": true,
        "auto_timeoff_ok": false,
        "by_seniority": false,
        "conflicts_ok": false,
        "include_holds": true,
        "is_available": false,
        "notify": true,
        "past_dates": false,
        "seniority_required": false,
        "single_shift_per_day": true,
        "timeoff_ok": false,
        "use_acct_org_id_off": false
    }
}


REQUIRED PARAMETERS

None

OPTIONAL PARAMETERS

None

CONFIGURATION SETTINGS

Where items do not already exist setting|Description| --|-- add_team|Create New
Teams add_venue|Create New Locations add_role|Create New Roles add_client|Create
New Clients add_department|Create New Departments add_custom_multipick|Create
New MP Labels add_custom_multipick_2|Create New Custom Multipick
add_resource|Create New Resources add_time_block|Create New Shift/Coverage
Blocks

Where associations do not already exist setting|Description| --|--
add_org_venue|Add Locations/Maps to Teams add_org_role|Add Roles to Teams
add_org_client|Authorize Clients to Teams add_org_department|Authorize
Departments to Teams add_org_custom_multipick|Authorize MP Labels to Teams
add_org_custom_multipick_2|Authorize Custom Multipick to Teams
add_org_resource|Authorize Resources to Teams add_org_time_block|Add Shift
Blocks to Teams

When making assignments setting|Description| --|-- conflicts_ok|Allow Conflicts
is_available|Listed in Available
timeoff_ok|Ignore approved Time Off
include_holds|Assign to members in hold/inactive status add_org_member|Add
necessary Team memberships - (you must be an authorized manager)

When using auto-assignments setting|Description| --|-- by_seniority|Honor
Seniority
seniority_required|Skipping members without Seniority auto_conflicts_ok|Allow
Conflicts
auto_is_available|Listed in Available
auto_timeoff_ok|Ignore approved Time Off
single_shift_per_day|Restrict members to a single shift per day

Load Past Coverage setting|Description| --|-- past_dates|Allow expired/past
dates

Send Notifications setting|Description| --|-- notify|For assigned/auto-assigned
positions


SHIFT.BULKUPLOADGETTEMPLATES

Retrieve a list of URLS that identify site specific or general spreadhseet
templates for bulk upload operations. These templates can be used for proper
formatting required for the system to ingest spreadsheets uploaded to a
shift.bulkUpload generated URL.

Try it!

> Request example:

{}


> Response example:

{
    "bulk_upload_templates": {
        "extended": "https://www.servola.com/servola/fetch.cgi?ss=9999999;type=shift_select_template;expires=1569506891;signature=yk-hqoq49vdhdq-_RhEed1cMpxc;id=extended",
        "simple": "https://www.servola.com/servola/fetch.cgi?ss=9999999;type=shift_select_template;expires=1569506891;signature=WerevztiM5S87NUK3sSjBVCO3JM;id=simple",
        "standard": "https://www.servola.com/servola/fetch.cgi?ss=9999999;type=shift_select_template;expires=1569506891;signature=fNU7bCK97kJt_T8BQz3u3QmqvIc;id=standard",
        "universal": "https://www.servola.com/servola/fetch.cgi?ss=9999999;type=shift_select_template;expires=1569506891;signature=NmgXece9beOta36RQEW1GXcdgSc;id=universal"      
    }
}


REQUIRED PARAMETERS

None

OPTIONAL PARAMETERS

None


SHIFT.BULKUPLOADUPDATESETTINGS

Update configuration settings related to bulk upload operations. These
configuration settings are caller specific, and do not have any effect on bulk
configuration settings for the site or other users.

Try it!

> Request example:

{
   "notify": true,
   "add_org_member": false
}


> Response example:

{}


REQUIRED PARAMETERS

None

OPTIONAL PARAMETERS

Any of the configuration options returned from shift.bulkUploadGetSettings are
valid.


SHIFT.BULKUPLOADSTATUS

Provide a means to poll for the status of bulk upload operations. This method is
used in conjunction with return values from shift.bulkUpload. The caller can use
the identifier returned by the aformentioned method to see the current status of
a file that has been posted to the bulk upload URL associated with this
identifier.

Try it!

> Request example:

{
   "id": 12345
}


> Response example:

{
    "error_count": 0,
    "errors": [],
    "rows": "1",
    "status": "Loaded",
    "status_code": "3"
}


REQUIRED PARAMETERS

ID

unique identifier associated with the file posted to the upload URL returned
from shift.bulkUpload

OPTIONAL PARAMETERS

None

STATUS CODES AND DEFINITIONS

status_code status description 0 Verified The file has been uploaded and
verified as either valid or invalid 1 Cancelled An internal server error has
occurred, and processing has been interrupted 3 Loaded The shifts in the file
have been created and/or an exception file has been created 6 Pending The file
has been verified, is valid, and the data is waiting to be loaded into the
schedule via a Servola process 7 Awaiting Upload A URL has been generated 8
Upload Error The file could not be parsed or processed


SHIFT.BULKUPDATE

This method is for modifying the same details on multiple shifts. This method
processes bulk updates asynchronously, meaning the caller will be returned a
success message immediately (assuming valid parameters were sent), and the
processing of these shift update operations will happen out-of-band. Once all
updates have been completed, a report will be emailed to the API caller. This
report will detail the number of successes, failures, and provide details about
why a failure occurred.

> Request example:

{
   "count" : 1,
   "timezone" : "Greenwich Mean Time : Dublin, Lisbon, London (GMT)",
   "subject" : "updated",
   "qty" : 1,
   "published" : true,
   "workgroup" : "226084",
   "end_date" : "2010-09-17T14:30:00",
   "covered" : true,
   "start_date" : "2010-09-17T14:00:00",
   "shifts" : [2753501, 2753502],
}


> Response example:

{
   "seconds" : "0.178901",
   "jsonrpc" : "2.0",
   "id" : "43",
   "result" : {
        "message": "Bulk update has been started. You will receive an email with results."
    }
}


Updates multiple shift objects in a single call.

REQUIRED PARAMETER

shifts - Array of shift identifiers.

OPTIONAL PARAMETERS

START_TIME

If specified, all shifts that have a set start time will be updated to begin at
this new start time. NOTE: Updating the start time will have no affect on the
dates on which these shifts occur.

END_TIME

If specified, all shifts that have a set end time will be updated to end at this
new end time. NOTE: Updating the end time will have no affect on the dates on
which these shifts occur.

ADDITIONAL ATTRIBUTES

Most other shift object attributes may be specified. Please see the shift.update
documentation for more information.


SHIFT.BULKCOPY

This method is for copying a single or multiple shifts to a date in the future.
This method processes bulk copies asynchronously, meaning the caller will be
returned a success message immediately (assuming valid parameters were sent),
and the copying of shifts will happen out-of-band. Once all shifts in the range
have been copied, a report will be emailed to the API caller.

> Request example:

{
   "select": {
      "start_date": "2019-01-01",
      "end_date": "2019-01-15",
      "member": 12345,
      "workgroup": 11111,
   },
   "copy_forward_date": "2019-02-01",
   "copy_forward_assigned": true,
   "copy_forward_published": true,
   "is_available": false,
   "conflicts_ok": true,
   "daily_overtime_ok": false,
   "weekly_overtime_ok": true
}


> Response example:

{
   "seconds" : "0.178901",
   "jsonrpc" : "2.0",
   "id" : "43",
   "result" : {
        "message": "Bulk copy has been started. You will receive an email with results."
    }
}


Copies multiple shift objects to a date in the future using a single call to the
API. The structure of the shifts selected, including breaks, repeating days, and
times will be copied forward starting at the new date specified. All filters use
select criteria.

REQUIRED PARAMETER

copy_forward_date - Day in the future to copy the shifts to.

OPTIONAL PARAMETERS

COPY_FORWARD_ASSIGNED

Boolean; preserve assignment for copied shifts.

COPY_FORWARD_AUTOASSIGN

Boolean; autoassign copied shifts.

COPY_FORWARD_PUBLISHED

Boolean; publish copied shifts. Defaults to true.

COPY_FORWARD_UNASSIGN_ON_CONFLICT

Boolean; If true, will unassign conflicting shifts, otherwise the shift will be
left assigned and unpublished. If both copy_forward_unassign_on_conflict and
copy_forward_autoassign are set to true conflicting shifts will be unassigned
and then autoassigned to other workers that are not in conflict.

START_DATE

Filter for shifts beginning at this date. Uses select criteria.

END_DATE

Filter for shifts that end on or before this date. Uses select criteria.

START_TIME

Filter for shifts that begin on the start date specified at this start time.
Uses select criteria.

DUR_HRS

Duration in hours. Uses select criteria.

DUR_MINS

Duration in minutes. Uses select criteria.

WORKGROUP

Filter for shifts that belong to this workgroup. Can be specified as a singluar
or an array of ids. Uses select criteria.

MEMBER

Filter for shifts that are assigned to this member. Uses select criteria.

PROFILE_TYPE

Filter for shifts that are assigned to this profile type. Uses select criteria.

REPEATING SHIFT PARAMETERS

It is possible to filter for shifts using a repeating interval pattern. In order
to do so, some additional parameters are required in the select criteria:

REPEATING_SHIFT

Boolean; specifies the caller is creating a series of repeating shifts.

REPEATING_SHIFT_TYPE

Type of repeating shift.

Type Meaning frequency Frequency days_of_week Days of Week

REPEATING_SHIFT_END_DATE

The date of the final shift in the repeating series in RFC 3339 full date format
(e.g. "2018-01-01").

REPEATING_SHIFT_INTERVAL

Specifies the interval in which the series will be created. Valid interval
options are below:

Interval Meaning every Every every_other Every Other every_third Every Third
every_fourth Every Fourth every_fifth Every Fifth every_sixth Every Sixth

NOTE: every_fifth and every_sixth are only available when creating daily shifts.

REPEATING_SHIFT_FREQUENCY

Specifies the frequency for a frequency based repeating series. Valid frequency
options are below:

Frequency day week month year

NOTE: Parameter is required when repeating_shift_type is frequency

REPEATING_SHIFT_DAYS_OF_WEEK

Array. Specifies which days of the week to create shifts for in a repeating
series. Valid options are below:

Day Meaning 0 Sunday 1 Monday 2 Tuesday 3 Wednesday 4 Thursday 5 Friday 6
Saturday

NOTE: Parameter is required when repeating_shift_type is days_of_week

ADDITIONAL_DATES

Array. Additional shift dates to be created alongside the specified repeating
series. Dates must be in RFC 3339 full date format (e.g. "2018-01-01")

ASSIGNABILITY PARAMETERS

It is possible to modify the assignment of the copied shifts using assignability
checks. Below are a list of options that will affect how the copied shifts will
be assigned:

is_available - boolean

by_seniority - boolean

seniority_required - boolean

single_shift_per_day - boolean

conflicts_ok - boolean

daily_overtime_ok - boolean

weekly_overtime_ok - boolean

timeoff_ok - boolean

consecutive_days - boolean

short_turnaround - boolean

ignore_attestation_types - boolean

attestation_type - array of attestationTypeId

ignore_role - boolean


SHIFT.CONFIRM

This method is used by anyone to pick up a shift for themselves. By default, all
conflict checking that is enabled for the site and is applicable to pick-up
shifts is applied (this cannot be changed), and the shift will be acknowledged
(this cannot be changed).

> Request example:

{
   "id" : 2753501
}


> Response example:

{
   "seconds" : "0.443989",
   "jsonrpc" : "2.0",
   "id" : "2",
   "result" : {
      "message" : "You have accepted this position:\n\nWednesday, May 20, 2015, 9:55am to 11:55am\nFront Desk"
   }
}


Try it!

Confirms a shift.

REQUIRED PARAMETER

id: ID of the shift to be assigned.

OPTIONAL PARAMETERS

covering_member or external_covering_member: Assign the specified user to the
shift (rather than assigning the current user). Only available to workgroup
managers.

ASSIGNABILITY PARAMETERS

To use assignability checks, the assignability_checks parameter must be true;
then, the following options may be available, based on enabled features:

is_available - boolean

by_seniority - boolean

seniority_required - boolean

single_shift_per_day - boolean

conflicts_ok - boolean

daily_overtime_ok - boolean

weekly_overtime_ok - boolean

timeoff_ok - boolean

consecutive_days - boolean

short_turnaround - boolean

ignore_attestation_types - boolean

attestation_type - array of attestationTypeId

ignore_role - boolean

RESPONSE

On success, a message attribute will provide a brief notification message. If
the shift had a count > 1, a new shift object will have been created and the id
of the new shift will also be returned.


SHIFT.CREATE

> Request example:

{
   "workgroup" : "226085",
   "department" : "949",
   "location" : "29118",
   "start_date" : "2010-09-17T12:00:00",
   "role" : "2282"
}


> Response example:

{
   "seconds" : "1.007354",
   "jsonrpc" : "2.0",
   "id" : "57",
   "result" : {
      "id" : 2753502
   }
}


Try it!

Creates a new shift record.

PARAMETERS

Most attributes of a shift object except id may be specified. Minimally,
workgroup and start_date parameters must be specified. timezone will default to
the organization's timezone. location will default to the workgroup's default
location, if set. external_covering_member/covering_member are mutually
exclusive, and may only be specified if the shift is covered. If either is
specified as an array, single positions of the shift will be assigned to the
indicated members. covered may only be true if the shift is published. Start and
end dates may only fall on even five minute times. Either count or qty may be
specified and both will be set for the new shift, defaulting to 1; if both are
specified, they must be equal. count must be 1 for a covered shift.

OPTIONAL PARAMETERS

notify_on_create Boolean; send a notification message to the covering member for
this shift.

notify_message Additional text to include in notification message.

REPEATING SHIFT PARAMETERS

It is possible to use this method to create a series of repeating (repeating)
shifts. In order to do so, some additional parameters are required:

REPEATING_SHIFT

Boolean; specifies the caller is creating a series of repeating shifts.

REPEATING_SHIFT_TYPE

Type of repeating shift.

Type Meaning frequency Frequency days_of_week Days of Week

REPEATING_SHIFT_END_DATE

The date of the final shift in the repeating series in RFC 3339 full date format
(e.g. "2018-01-01").

REPEATING_SHIFT_INTERVAL

Specifies the interval in which the series will be created. Valid interval
options are below:

Interval Meaning every Every every_other Every Other every_third Every Third
every_fourth Every Fourth every_fifth Every Fifth every_sixth Every Sixth

NOTE: every_fifth and every_sixth are only available when creating daily shifts.

REPEATING_SHIFT_FREQUENCY

Specifies the frequency for a frequency based repeating series. Valid frequency
options are below:

Frequency day week month year

NOTE: Parameter is required when repeating_shift_type is frequency

REPEATING_SHIFT_DAYS_OF_WEEK

Array. Specifies which days of the week to create shifts for in a repeating
series. Valid options are below:

Day Meaning 0 Sunday 1 Monday 2 Tuesday 3 Wednesday 4 Thursday 5 Friday 6
Saturday

NOTE: Parameter is required when repeating_shift_type is days_of_week

ADDITIONAL_DATES

Array. Additional shift dates to be created alongside the specified repeating
series. Dates must be in RFC 3339 full date format (e.g. "2018-01-01")

ASSIGNABILITY PARAMETERS

To use assignability checks, the assignability_checks parameter must be true;
then, the following options may be available, based on enabled features:

is_available - boolean

by_seniority - boolean

seniority_required - boolean

single_shift_per_day - boolean

conflicts_ok - boolean

daily_overtime_ok - boolean

weekly_overtime_ok - boolean

timeoff_ok - boolean

consecutive_days - boolean

short_turnaround - boolean

ignore_attestation_types - boolean

attestation_type - array of attestationTypeId

ignore_role - boolean

DELAYED PUBLICATION PARAMETERS

Depending on enabled site features, a shift can be scheduled for publishing some
date and time in the future, with optionally different datetimes per tier. NB:
When setting any of the delayed publication dates, all of them must be set;
previous values will be ignored.

For tiers, the higher tiers (10 is highest) have to be the same as, or earlier
than, the lower tiers (1 is lowest), or an error will be returned. Setting a
lower tier and leaving higher tiers empty will set the empty, higher tiers to
the same value as the closest lower tier.

All of the dates are set in datetime format (e.g. "2009-04-01T13:00:00Z"), in
UTC. They can also be set to the string now, instead of a datetime.

To publish immediately to a single tier, merely that tier to now.

Setting the shift's published value from true to false, or false to true,
removes all publication dates.

tier1_publish_date_utc..tier10_publish_date_utc - datetime

The individual datetimes for each tier. Only tiers supported for the
organization are shown. If tier support is not enabled, none are shown. If a
value is set to null, the shift will not be published to members at that tier.

publish_date_utc - datetime

The earliest publish datetime of the shift (if tiers used, the earliest of those
datetimes). If set, publish_date_utc will override and blank out all of the tier
publish datetimes.

publish_level - integer (read-only)

The current publish level of the shift. For example, if tier6_publish_date_utc
is in the past, and tier5_publish_date_utc is in the future, then publish_level
will be 6.

RESPONSE

On success, an id attribute will provide the identifier for the new shift. When
creating a series of repeating shifts, the id returned will be an array of
identifiers, one id for each of the shifts created in the series.


SHIFT.CUSTOMDROPDOWNLIST

> Request example:

{}


> Response example:

{
    "custom_listable_1": {
        "25013": "Listable 1 Value A",
        "25014": "Listable 1 Value B"
    },
    "custom_listable_2": {
        "25015": "Listable 2 Value A",
        "25016": "Listable 2 Value B",
        "25017": "Listable 2 Value C"
    },
    "custom_listable_3": {
        "25018": "Listable 3 Value A",
        "25019": "Listable 3 Value B",
        "25020": "Listable 3 Value C",
        "25021": "Listable 3 Value D"
    }
}


Try it!

Returns information about shift related custom dropdown list objects.

Required Parameter: none

Optional Parameters: none

Response: On success, an object will be returned containing all shift custom
dropdown listables that have been created, and are enabled for the site.


SHIFT.CUSTOMMULTIPICKLIST

> Request example:

{}


> Response example:

{
    "custom_multipick": [
        {
            "description": "Multipick Value One",
            "id": "5551209",
            "name": "One"
        },
        {
            "description": "Multipick Value Two",
            "id": "5551210",
            "name": "Two"
        }
    ],
    "custom_multipick_2": [
        {
            "description": "Choice A",
            "id": "5551211",
            "name": "A"
        },
        {
            "description": "Choice B",
            "id": "5551212",
            "name": "B"
        },
        {
            "description": "Choice C",
            "id": "5551213",
            "name": "C"
        }
    ],
    "custom_multipick_3": []
}


Try it!

Returns information about shift related custom multi-pick list objects.

Required Parameter: none

Optional Parameters: none

Response: On success, an object will be returned containing all shift custom
multi-pick listables that have been created, and are enabled for the site.


SHIFT.CUSTOMTEXTLIST

> Request example:

{}


> Response example:

{
    "custom_text_1": {
        "label": "Custom Text 1",
        "permissions": {
            "auth_read": 2,
            "auth_write": 4
        }
    },
    "custom_text_2": {
        "label": "Custom Text 2",
        "permissions": {
            "auth_read": 2,
            "auth_write": 4
        }
    },
    "custom_text_3": {
        "label": "Custom Text 3",
        "permissions": {
            "auth_read": 5,
            "auth_write": 2
        }
    },
    "custom_textarea": {
        "label": "Custom Text Area",
        "permissions": {
            "auth_read": 2,
            "auth_write": "4"
        }
    }
}


Returns permissions for shift related custom multi text/text area objects.

Required Parameter: none

Optional Parameters: none

Response: On success, an object will be returned containing all shift custom
text objects that have been created, and are enabled for the site.


SHIFT.DELETE

> Request example:

{
   "id" : "2753500"
}


> Response example:

{
   "seconds" : "0.058344",
   "jsonrpc" : "2.0",
   "id" : "67",
   "result" : {}
}


Deletes a shift record.

Required parameter: id.

Optional Parameters:

notify_on_delete Boolean; notify covering member upon deletion of the shift.

notify_message Custom text to be included when notifying shift owner upon
deletion of shift.

Response: On success, empty results will be returned.


SHIFT.DELETESIGNUP

Try it!

Deletes a member from a shift's signup list.

Parameters:

ID

Required. id of the shift for which to remove a sign up.

MEMBER

Required. id of the account to remove from the sign up list (defaults to the
current user). May be a single id or an array of ids.

NOTE: If you are calling this method with the member parameter, external_member
will be ignored (if included).

EXTERNAL_MEMBER

Required. external id of the account to remove from the sign up list (defaults
to the current user). May be a single id or an array of ids.

NOTE: If you are calling this method with the external_member parameter, member
will be ignored (if included).

Response: On success, empty results will be returned.


SHIFT.GET

> Request example:

{
   "id" : 2753499
}


> Response example:

{
   "seconds" : "0.062897",
   "jsonrpc" : "2.0",
   "id" : "25",
   "result" : {
      "shift" : {
         "reference_id" : "",
         "linkurl" : "",
         "work_status_type" : "0",
         "signup_list" : false,
         "id" : "2753499",
         "start_date" : "2010-09-17T12:00:00",
         "count" : "1",
         "timezone" : "Pacific Time (US/Can) (GMT-08:00)",
         "subject" : "",
         "urgent" : false,
         "zipcode" : "60616",
         "details" : "",
         "qty" : "1",
         "workgroup" : "226081",
         "published" : false,
         "covered" : false,
         "no_pick_up" : false,
         "room_floor" : "",
         "linktitle" : ""
      }
   }
}


Try it!

Returns information about a coverage shift.

Parameters:

ID

Required. id of the shift for which to return information.

EXTENDED

Boolean; if not specified or true or user_actions is true, the results returned
will be an extended set of attributes; otherwise a basic set of attributes will
be returned for each shift.

USER_ACTIONS

Boolean; if specified and true, a user_actions object will be returned with
attributes indicating what actions (e.g. cover, uncover, assign, delete,
acknowledge) may be presented to the user.

ABSENT - BOOLEAN, ATTENDANCE FEATURE AVAILABLE FOR THIS SHIFT

ABSENT_REASONS - LIST OF 0 OR MORE REASON OBJECTS; KEYS ARE ID (INT), REASON
(TEXT), SELECTED (BOOLEAN), AND ACCOUNT_POINTS (FLOAT)

ARRIVE_LATE - BOOLEAN, ALLOWED TO SET ARRIVE_LATE_REASON FOR THIS SHIFT

ARRIVE_LATE_MAX_ADJUST - INT, MAXIMUM NUMBER OF MINUTES FROM THE START TIME THAT
A SHIFT MAY BE MARKED LATE

ARRIVE_LATE_REMOVE - BOOLEAN, WHETHER OR NOT THE USER CAN REMOVE THE ARRIVE LATE
REASON/DATETIME (THEY MAY STILL BE ABLE TO CREATE OR EDIT, DEPENDING ON VALUES
OF ARRIVE_LATE AND ARRIVE_LATE_REASONS)

ARRIVE_LATE_REASONS - SAME AS ABSENT_REASONS

ASSIGN - CAN ASSIGN SHIFT

CHANGE - CAN MODIFY SHIFT

CHANGE_CUSTOM_TEXT_N - CAN MODIFY THE NUMBERED CUSTOM TEXT FIELD OF THE SHIFT

COVER - CAN COVER SHIFT

CREATE_NOTE - CAN CREATE MANAGER NOTE FOR SHIFT

DELETE - CAN DELETE SHIFT

LEAVE_EARLY - BOOLEAN, ALLOWED TO SET LEAVE_EARLY FOR THIS SHIFT

LEAVE_EARLY_MAX_ADJUST - INT, MAXIMUM NUMBER OF MINUTES FROM THE END TIME THAT A
SHIFT MAY BE MARKED EARLY

LEAVE_EARLY_REMOVE - BOOLEAN, WHETHER OR NOT THE USER CAN REMOVE THE ARRIVE LATE
REASON/DATETIME (THEY MAY STILL BE ABLE TO CREATE OR EDIT, DEPENDING ON VALUES
OF LEAVE_EARLY AND LEAVE_EARLY_REASONS)

LEAVE_EARLY_REASONS - SAME AS ABSENT_REASONS

PUBLISH - CAN PUBLISH SHIFT

REASSIGN - CAN REASSIGN SHIFT

TIMECLOCK - CAN CLOCK IN TO SHIFT

UNCOVER - CAN UNASSIGN SHIFT

UNPUBLISH - CAN UNPUBLISH SHIFT

VIEW_CUSTOM_TEXT_N - CAN VIEW THE NUMBERED CUSTOM TEXT FIELD OF THE SHIFT

DISPLAY_TIME

Boolean; if specified and true, the returned shift will include other attributes
giving a string presentation of when the shift is scheduled.

DENORMALIZE

denormalize is deprecated; where possible, the results referenced_objects
attribute should be used instead.

Boolean; if specified and true, all identifiers (except the shift id itself) in
the returned shift object will be replaced with corresponding names, etc.
suitable for display, and the following attributes may be added:

LOCATION_DETAILS

An object providing one or more of the following attributes, when available:
zipcode, address, city, state, country, latitude, longitude.

DISPLAY_DATE

The start date of the shift, formatted for display (including weekday name).

DISPLAY_ADJ_END_TIME

The end time of the shift, formatted for display, adjusted for late/early.

DISPLAY_ADJ_START_TIME

The start time of the shift, formatted for display, adjusted for late/early.

DISPLAY_END_TIME

The end time of the shift, formatted for display.

DISPLAY_START_TIME

The start time of the shift, formatted for display.

DISPLAY_TIME

The time range of the shift, formatted for display.

LOCAL_ARRIVE_LATE_DATETIME

The (possibly TZ-adjusted) datetime that the member arrived late

LOCAL_END_DATE

The (possibly TZ-adjusted) end datetime of the shift

LOCAL_LEAVE_EARLY_DATETIME

The (possibly TZ-adjusted) datetime that the member left early

LOCAL_START_DATE

The (possibly TZ-adjusted) start datetime of the shift

LOCAL_TIMEZONE

The timezone the local times are adjusted for. When updating
arrive_late_datetime or leave_early_datetime (using the starting values from
local_start_date / local_end_date), also pass local_timezone to ensure the API
can convert the time to the correct timezone (optionally use a local_timezone of
GMT to submit the values in GMT).

REFERENCED_OBJECTS

Boolean, defaults to true unless denormalize is true. Indicates that, in
addition to the shift attribute, the results should include a referenced_objects
attribute giving information about objects referred to by the returned shift.

The response results shift attribute will be the selected shift object.

If user_actions were requested, a user\_actions attribute will also be returned.

If requested, the response results referenced_objects attribute will be an
object containing one or more object type names as attributes; for each object
type the value will be an array of those instances of that type of object which
are referred to in the shift results, with only selected minimal attributes
provided:

ACCOUNT

id, first_name, last_name, and screen_name attributes are provided.

CLIENT

id and name attributes are provided.

DEPARTMENT

id and name attributes are provided.

LOCATION

id and name attributes are provided.

ROLE

id and name attributes are provided.

TIMEZONE

name and iana_timezone attributes are provided.

workStatusType

id and name attributes are provided.

WORKGROUP

id and name attributes are provided.

acknowledgeDeclineReason

id and label attributes are provided.

IMAGE

Boolean; if specified and true, the results returned will include an image_url
attribute giving a url to the shift's covering_member's user image or null if no
image is available.

CUSTOM_MULTIPICK

id and name attributes are provided.

CUSTOM_DROPDOWN_1

id and name attributes are provided.

CUSTOM_DROPDOWN_2

id and name attributes are provided.

CUSTOM_DROPDOWN_3

id and name attributes are provided.

CUSTOM_DROPDOWN_4

id and name attributes are provided.

CUSTOM_DROPDOWN_5

id and name attributes are provided.

CUSTOM_DROPDOWN_6

id and name attributes are provided.

CUSTOM_DROPDOWN_7

id and name attributes are provided.

CUSTOM_DROPDOWN_8

id and name attributes are provided.

CUSTOM_DROPDOWN_9

id and name attributes are provided.

CUSTOM_DROPDOWN_10

id and name attributes are provided.

CUSTOM_DROPDOWN_11

id and name attributes are provided.

CUSTOM_DROPDOWN_12

id and name attributes are provided.

CUSTOM_DROPDOWN_13

id and name attributes are provided.

CUSTOM_DROPDOWN_14

id and name attributes are provided.

CUSTOM_DROPDOWN_15

id and name attributes are provided.

RESOURCE

id, name, and label attributes are provided.


SHIFT.GETASSIGNMENTLIST

> Request example:

{
   "workgroup" : 12345,
   "shift" : {
      "id" : 123456789
   }
}


> Response example:

{
   "seconds" : "0.058344",
   "jsonrpc" : "2.0",
   "id" : "67",
   "result" : {
      "unassignable" : {
         "5" : "John Smith - Has Conflicts (My Team)"
      },
      "assignable" : {
         "1" : "Bob Doe",
         "2" : "Jane Doe"
      },
      "assignable_order" : [ "2", "1" ],
      "unassignable_order" : [ "5" ]
   }
}


Try it!

Returns availability information as to who is and is not assignable to a shift.
The shift in this case could be one that currently exists, or a shift to be
created later.

Required parameters:

WORKGROUP

The id for the workgroup.

Optional parameters:

SHIFT

Object. The shift object allows for the following optional parameters:

Field Description id start_date start_time end_date end_time timezone Timezone
defaults to the site's timezone if one is not provided in the request. role Role
is required for role restriction. unpaid_mins Required for overtime checking.
location Location id of shift (venue). reference_id If specified, requests only
shifts with the given reference IDs (case insensitive) (either a single
reference ID or an array of reference IDs). covering_member If specified,
requests only shifts covered by the workgroup member. external_covering_member
If the shift is covered by a member, the external id of the member's account.

ADDITIONAL_DATES

Array. Additional shift dates to be checked alongside the specified shift and/or
repeating series. Dates must be in RFC 3339 full date format (e.g. "2018-01-01")

REPEATING SHIFT PARAMETERS

It is possible to use this method to check a series of repeating shifts. In
order to do so, some additional parameters are required:

REPEATING_SHIFT

Boolean; specifies the caller is checking a series of repeating shifts.

REPEATING_SHIFT_TYPE

Type of repeating shift.

Type Meaning frequency Frequency days_of_week Days of Week

REPEATING_SHIFT_END_DATE

The date of the final shift in the repeating series in RFC 3339 full date format
(e.g. "2018-01-01").

REPEATING_SHIFT_INTERVAL

Specifies the interval for the series. Valid interval options are below:

Interval Meaning every Every every_other Every Other every_third Every Third
every_fourth Every Fourth every_fifth Every Fifth every_sixth Every Sixth

NOTE: every_fifth and every_sixth are only available when checking daily shifts.

REPEATING_SHIFT_FREQUENCY

Specifies the frequency for a frequency based repeating series. Valid frequency
options are below:

Frequency day week month year

NOTE: The repeating_shift_frequency parameter is required when
repeating_shift_type is frequency

REPEATING_SHIFT_DAYS_OF_WEEK

Array. Specifies which days of the week to check shifts for in a repeating
series. Valid options are below:

Day Meaning 0 Sunday 1 Monday 2 Tuesday 3 Wednesday 4 Thursday 5 Friday 6
Saturday

NOTE: The repeating_shift_days_of_week parameter is required when
repeating_shift_type is days_of_week

LIMIT

Maximum number of results to return; default site dropdown list limit.

USE_TIME

Needed if open ended or all day should do overtime/conflict/availability/timeoff
checking.

INCLUDE_HOLDS

Boolean; default false (members on hold not included).

CONFLICTS_OK

Boolean; default false (conflicts checked, if date/times specified).

DAILY_OVERTIME_OK

Boolean; default false (conflicts checked, if date/times specified).

DISPLAY_SCREEN_NAME

Boolean; default false. This property if provided, will display an account's
screen name in the results instead of the default full name.

DISPLAY_ACCOUNT_INFO

Boolean; default false. This property if provided, will display a limited set of
account details in the results instead of the default full name.

WEEKLY_OVERTIME_OK

Boolean; default false (conflicts checked, if date/times specified).

IS_AVAILABLE

Boolean; default false (availability not checked).

TIMEOFF_OK

Boolean; default true (timeoff not checked).

SENIORITY_REQUIRED

Boolean; default false, ignored unless sorting by_seniority.

SINGLE_SHIFT_PER_DAY

Boolean; default false.

IS_AUTOASSIGNABLE

Boolean; default false.

STANDBY

Boolean; default false, standby signups only

ROLE_RESTRICTION

Boolean; default false; apply role restrictions, if there is a role and the team
uses restrictions.

IGNORE_ROLE

Boolean; default false; ignore role restrictions.

MIN_LEVEL

Default 1, maximum level to exclude (e.g. 3 to exclude non-manager, 2 to exclude
members).

MAX_LEVEL

Maximum level to include (e.g. 2 to exclude coordinators/managers).

PHRASE

Match in first name, last name, fullname

COVERAGE_SIGNUP_LIST_EID

Exclude members already signed up for this eid (start_date must also be
specified).

ACCOUNTS

List of accounts to limit results to.

EXCLUDE_ACCOUNTS

List of accounts to exclude from results to.

PROFILE_TYPE

Only members with this profile type.

EXTENDED_FILTER

> Request example with extended_filter specified:

{
   "workgroup" : 12345,
   "shift" : {
      "id" : 123456789
   },
   "profile_type": 1,
   "extended_filter": { "emergency_contact": "Joe Blow" }
}


Specification to filter on profile options (profile_type must be specified). A
complete list of valid options can be found by calling the
profileConfiguration.list method. The relevant fields are profile\_type and
form\_name.

RANGE

Range of accounts in miles from venue zipcode.

MIN_SCORE

Minimum score.

NO_SCORE

Include members with no score (min_score must be specified).

BY_SENIORITY

Order by those with seniority by seniority date or rank, then with seniority and
no date/rank, then no seniority (random within those). The order can be found in
the assignable_order and unassignable_order arrays in the response.

RANDOMIZE

Return results in random order.

MANDATORY_DAYS_OFF

Mandatory days off settings (hash).

TIER

The user's tier.

TIER_GE

The user's minimum tier.

LANG

The user's language (or if user has not set one, the site's default).

CONSECUTIVE_DAYS

Allow shifts on N consecutive days if beta feature is enabled (boolean).

SHORT_TURNAROUND

Allow shifts that have a short (N hours) turnaround if beta feature is enabled
(boolean).

IGNORE_ATTESTATION_TYPES

Array of attestationType IDs to ignore.


SHIFT.GETOFFEREDTRADE

> Request example:

{
   "id" : "56789012",
   "extended" : true
}


> Response example:

{
   "seconds" : "0.128193",
   "jsonrpc" : "2.0",
   "id" : "15",
   "result" : {
      "referenced_objects" : {
         "workgroup" : [
            {
               "name" : "Help Desk",
               "id" : "412345"
            }
         ],
         "department" : [
            {
               "name" : "Distribution",
               "label" : "Distribution",
               "id" : "9942"
            }
         ],
         "timezone" : [
            {
               "name" : "Pacific Time (US/Can) (GMT-08:00)",
               "iana_timezone" : "America/Los_Angeles"
            }
         ],
         "location" : [
            {
               "name" : "Training / Meetings",
               "id" : "92580"
            }
         ],
         "shift" : [
            {
               "display_time" : "1pm to 2pm",
               "department" : "9942",
               "reference_id" : "",
               "linkurl" : "",
               "work_status_type" : "5",
               "start_date" : "2014-01-29T13:00:00",
               "signup_list" : false,
               "id" : "56789012",
               "count" : "1",
               "timezone" : "Pacific Time (US/Can) (GMT-08:00)",
               "display_date" : "January 29, 2014",
               "location" : "92580",
               "subject" : "",
               "covering_member" : "47",
               "urgent" : false,
               "zipcode" : "94132",
               "qty" : "1",
               "details" : "details!",
               "workgroup" : "412345",
               "published" : true,
               "no_credit" : false,
               "end_date" : "2014-01-29T14:00:00",
               "covered" : true,
               "no_pick_up" : false,
               "no_trade" : false,
               "room_floor" : "room/floor",
               "linktitle" : ""
            }
         ],
         "account" : [
            {
               "id" : "39",
               "screen_name" : null,
               "last_name" : "Foster",
               "first_name" : "Joanie"
            },
            {
               "seniority_order" : "19999-12-31 23:59:59",
               "id" : "47",
               "profile_type" : "3",
               "screen_name" : "Stan Wilson",
               "last_name" : "Wilson",
               "first_name" : "Stan"
            }
         ],
         "workStatusType" : [
            {
               "name" : "Salary/Exempt",
               "id" : "5"
            }
         ]
      },
      "tradeboard" : {
         "trade_completed" : "2014-01-21T20:40:38Z",
         "shift" : "56789012",
         "notes" : "Need to see the dentist; please take this trade",
         "id" : "12345",
         "traded_to" : "47",
         "traded_by" : "39",
         "trade_complete" : true
      }
   }
}


Try it!

Returns information about a tradeboard posting for a coverage shift.

Parameters:

ID

Required. id of the shift for which to return information.

EXTENDED

Boolean; if specified and true, the results returned will include an extended
set of attributes; otherwise a basic set of attributes will be returned for each
tradeboard posting.

REFERENCED_OBJECTS

Boolean, defaults to true. Indicates that, in addition to the tradeboard
attribute, the results should include a referenced_objects attribute giving
information about objects referred to by the returned tradeboard posting.

The response results tradeboard attribute will be the selected tradeboard
object.

If requested, the response results referenced_objects attribute will be an
object containing one or more object type names as attributes; for each object
type the value will be an array of those instances of that type of object which
are referred to in the tradeboard results or in its associated shift, with only
selected minimal attributes provided:

ACCOUNT

id, first_name, last_name, and screen_name attributes are provided.

NOTE: external_id will also be returned in the results if external ids are
enabled for the site.

CLIENT

id and name attributes are provided.

DEPARTMENT

id and name attributes are provided.

LOCATION

id and name attributes are provided.

ROLE

id and name attributes are provided.

SHIFT

All basic shift attributes will be provided. If the extended parameter is true,
extended shift attributes will also be provided. Additionally, display_date and
display_time attributes contain formatted strings describing the shift's start
and end time.

TIMEZONE

name and iana_timezone attributes are provided.

workStatusType

id and name attributes are provided.

WORKGROUP

id and name attributes are provided.


SHIFT.LIST

> Request example:

{
   "select" : {
      "workgroup" : "226084"
   }
}


> Response example:

{
   "seconds" : "0.081433",
   "jsonrpc" : "2.0",
   "id" : "44",
   "result" : {
      "shifts" : [
         {
            "count" : "1",
            "timezone" : "Greenwich Mean Time : Dublin, Lisbon, London (GMT)",
            "subject" : "updated",
            "qty" : "1",
            "workgroup" : "226084",
            "published" : true,
            "covered" : true,
            "end_date" : "2010-09-17T14:30:00",
            "id" : "2753501",
            "start_date" : "2010-09-17T14:00:00"
         }
      ],
      "count" : "1",
      "page" : {
         "this" : {
            "batch" : 25,
            "start" : 1
         }
      }
   }
}


Try it!

Returns information about coverage shifts. Uses pagination. Uses select
criteria.

Optional parameters:

EXTENDED

Boolean; if specified and true or user_actions is true, the results returned
will include an extended set of attributes; otherwise a basic set of attributes
will be returned for each shift.

REFERENCED_OBJECTS

Boolean, defaults to true. Indicates that, in addition to the shifts attribute,
the results should include a referenced_objects attribute giving information
about objects referred to by the returned shifts.

DISPLAY_TIME

Boolean; if specified and true, the results returned will include a display_time
attribute giving a string presentation of when the shift is scheduled.

AGGREGATION_MODE

If specified, aggregated results are returned. Options are:

SIMILAR

Shifts with the same start_date, end_date, timezone, workgroup, covering_member,
covered, published, location, role, and urgent attributes are aggregated.

SIMILAR_SUBJECT

Shifts with the same start_date, end_date, timezone, subject, covering_member,
covered, published, location, role, and urgent attributes are aggregated.

DATE

Shifts with the same start_date, workgroup, covered, published, and urgent
attributes are aggregated.

DATE_SUBJECT

Shifts with the same start_date, subject, covered, published, and urgent
attributes are aggregated.

Each result element will have an aggregate_count attribute indicating how many
elements were aggregated. count and qty will be summed for the aggregated
elements; other fields that are not aggregated over will be omitted from results
that aggregate more than one element.

IMAGE

Boolean; if specified and true, the results returned will include an image_url
attribute giving a url to the shift's covering_member's user image or null if no
image is available.

IMAGE_EXPIRATION

Specifies the valid lifetime of the returned URL in seconds; default 300,
maximum 604800 (1 week).

TIMECLOCK_STATUS

Boolean; if specified and true, the results returned will include a clocked_in
attribute indicating that the shift's covering_member is currently clocked in
(though not necessarily for this shift) and a can_clock_in_out attribute
indicating whether there is authorization to clock that covering member in or
out.

NO_LOCATION

Boolean; if specified and true, the results returned will include shifts that do
not have an assigned location (in addition to the locations specified in
select), false excludes shifts without locations.

DIRECT_MANAGER_ACCOUNT

Account ID; if specified, shifts will be filtered by the account ID of the
manager of members to whom the shifts are assigned

EXTERNAL_DIRECT_MANAGER_ACCOUNT

External Account ID; if specified, shifts will be filtered by the external
account ID of the manager of members to whom the shifts are assigned

SHARED

Boolean; if specified and true, the results returned will also include shifts
that are covered and published from workgroups that are shared to the account.

USER_ACTIONS

Boolean; if specified and true, a user_actions object will be returned with
attributes indicating what actions (e.g. cover, uncover, assign, delete,
acknowledge) may be presented to the user.

LABELS

Boolean; if specified and true, displayable labels are returned for many id
attributes. E.g. in addition to "role":"123", "role_label":"Bartender" will be
returned.

SELECT

> Select shifts which start between January 1st, 2018 and January 7th, 2018
> (inclusive), are published, and have not been filled.


 {
     select: {
         start_date: "2018-01-01",
         end_date: "2018-01-07",
         published: true,
         covered: false
     }
}


An object specifying selection criteria for this request. Note that start_date
and end_date will have default values if not specified. The available criteria
include:

START_DATE

The earliest date of coverage to select, in RFC 3339 full date format (e.g.
"2009-04-01"). Defaults to today.

END_DATE

The latest date of coverage to select, in RFC 3339 full date format. Defaults to
7 days after the start_date.

DISPLAY_START_DATE

The earliest date of coverage to select, in RFC 3339 full date format (e.g.
"2009-04-01"). This should be used instead of start_date when selecting shifts
that include workers across multiple timezones.

DISPLAY_END_DATE

The latest date of coverage to select, in RFC 3339 full date format. This should
be used instead of end_date when selecting shifts that include workers across
multiple timezones.

PUBLISHED

If specified, true requests only published shifts, false requests only
unpublished shifts.

COVERED

If specified, true requests only covered shifts, false requests only uncovered
shifts.

URGENT

If specified, true requests only urgent shifts, false requests only non-urgent
shifts.

NO_PICK_UP

If specified, true requests only "No Pick-Up" shifts, false requests only
non-"No Pick-Up" shifts.

SIGNUP_LIST

If specified, true requests only Signup List shifts, false requests only
non-Signup List shifts.

LOCATION

If specified, requests only shifts with the given locations (either a single
location id or an array of ids). Use 0 for shifts with no location.

ROLE

If specified, requests only shifts with the given roles (either a single role id
or an array of ids). Use 0 for shifts with no role.

CLIENT

If specified, and the site is configured to use client for schedule items,
requests only shifts with the given roles (either a single client id or an array
of ids). Use 0 for shifts with no client.

DEPARTMENT

If specified, and the site is configured to use department for schedule items,
requests only shifts with the given departments (either a single department id
or an array of ids). Use 0 for shifts with no department.

START_TIME

If specified, requests only shifts with the given starting times (either a
single time or an array of times), in RFC 3339 partial time format (e.g.
"13:00:00").

WORKGROUP

If specified, requests only shifts for the given workgroups. May be a single
workgroup or an array of workgroups.

SCOPE

If specified, a value of 'my_calendar' requests shifts normally shown to a user
on the calendar, that is, shifts for workgroups for which the user is a
coordinator or manager, shifts covered by the user, or approved, open shifts for
workgroups for which the user is a member. A value of 'siteadmin' requests all
shifts for the entire site and is only allowed for site administrators. A value
of 'managed_workgroups' requests shifts for the workgroups managed by the user
and is only allowed for workgroup managers. A value of 'report' is like
'siteadmin' for site administrators and like 'managed_workgroups' for others.
'siteadmin' is the default for site administrators while 'my_calendar' is the
default for all others.

REFERENCE_ID

If specified, requests only shifts with the given reference IDs (case
insensitive) (either a single reference ID or an array of reference IDs).

SUBJECT

If specified, only shifts with the matching subject (subject or body of the
shift) will be selected.

KEYWORDS

If specified, only select shifts with the keywords given as an array or a single
string (which is treated as whitespace separated keywords unless 'exact'
matching). keywords parameter works together with parameter 'match'.

MATCH

String, defaults to 'any'. Works together with 'keywords' parameter. Recognizes
three values: 'any', 'all' and 'exact'. If 'any' is specified, it will match if
any word from 'subject' parameter appears in either 'subject' or in 'details' of
the shift. If 'all' is specified, it will match if all words from 'subject'
parameter appears in either 'subject' or all words appear in 'details' of the
shift. If 'exact' is specified, it will match if a keyword is an exact match
with 'subject' parameter and the entirety of the 'subject' field or exact match
with the entirety of the 'details' field of the shift.

COVERING_MEMBER

If specified, requests only shifts covered by the workgroup members. May be a
single account id or an array.

NOTE: If you are calling this method with the external_covering_member
parameter, covering_member will be ignored, and is not required.

EXTERNAL_COVERING_MEMBER

If specified, requests only shifts covered by the workgroup members. May be a
single account id or an array.

NOTE: If you are calling this method with the covering_member parameter,
external_covering_member will be ignored, and is not required.

EXCLUDE_COVERING_MEMBER

If specified, excludes shifts covered by the workgroup members. May be a single
account id or an array.

ONLY_DELETED_WORKGROUPS

If specified and true, only shifts for deleted workgroups will be selected; if
specified and false, shifts for both deleted and non-deleted workgroups will be
selected. Otherwise (the default), only shifts for non-deleted workgroups will
be selected.

PROFILE_TYPE

If specified, only shifts with covering members with this profile type
identifier will be selected.

ACKNOWLEDGED

If specified and true, only shifts that have been acknowledged (including being
declined) will be selected.

CUSTOM_MULTIPICK, CUSTOM_MULTIPICK_2,3,...

If specified, only shifts with the given custom multipick identifier (and
possibly other custom multipick identifiers) will be selected.

RESOURCE

If specified, only shifts with the given resource identifier (and possibly other
resource identifiers) will be selected.

ATTENDEE_FILLED

If specified and false, only shifts for which additional attendees may be added
will be selected; if specified and true, only shifts which have attendees but
for which no additional attendees may be added will be selected.

ABSENT

If specified and true, only shifts that have been marked "Absent" will be
selected; if specified and false, only shifts that have not been marked "Absent"
will be selected.

ARRIVE_LATE

If specified and true, only shifts that have been marked "Arrive Late" will be
selected; if specified and false, only shifts that have not been marked "Arrive
Late" will be selected.

LEAVE_EARLY

If specified and true, only shifts that have been marked "Leave Early" will be
selected; if specified and false, only shifts that have not been marked "Leave
Early" will be selected.

ATTENDANCE

An enumerated string (or array of them) of absent, arrive_late, or leave_early.
Shifts matching any of the supplied strings will be returned. An empty array
will select only shifts that match none of absent, arrive_late, or leave_early.

WORKGROUP_OR_COVERING

If true, select shifts where the workgroup OR covering_member filter applies.
Otherwise, select shifts for which both filters (if specified) apply.

CUSTOM_DROPDOWN_1,2,3,...

If specified, only shifts with the given custom dropdown identifiers will be
selected. May be a single identifier or an array of identifiers.

CUSTOM_DROPDOWN_4

If specified, only shifts with the given custom_dropdown_4 identifiers will be
selected. May be a single identifier or an array of identifiers.

CUSTOM_DROPDOWN_5

If specified, only shifts with the given custom_dropdown_5 identifiers will be
selected. May be a single identifier or an array of identifiers.

CUSTOM_DROPDOWN_6

If specified, only shifts with the given custom_dropdown_6 identifiers will be
selected. May be a single identifier or an array of identifiers.

CUSTOM_DROPDOWN_7

If specified, only shifts with the given custom_dropdown_7 identifiers will be
selected. May be a single identifier or an array of identifiers.

CUSTOM_DROPDOWN_8

If specified, only shifts with the given custom_dropdown_8 identifiers will be
selected. May be a single identifier or an array of identifiers.

CUSTOM_DROPDOWN_9

If specified, only shifts with the given custom_dropdown_9 identifiers will be
selected. May be a single identifier or an array of identifiers.

CUSTOM_DROPDOWN_10

If specified, only shifts with the given custom_dropdown_10 identifiers will be
selected. May be a single identifier or an array of identifiers.

CUSTOM_DROPDOWN_11

If specified, only shifts with the given custom_dropdown_11 identifiers will be
selected. May be a single identifier or an array of identifiers.

CUSTOM_DROPDOWN_12

If specified, only shifts with the given custom_dropdown_12 identifiers will be
selected. May be a single identifier or an array of identifiers.

CUSTOM_DROPDOWN_13

If specified, only shifts with the given custom_dropdown_13 identifiers will be
selected. May be a single identifier or an array of identifiers.

CUSTOM_DROPDOWN_14

If specified, only shifts with the given custom_dropdown_14 identifiers will be
selected. May be a single identifier or an array of identifiers.

CUSTOM_DROPDOWN_15

If specified, only shifts with the given custom_dropdown_15 identifiers will be
selected. May be a single identifier or an array of identifiers.

COVERAGE_TYPE

One of or an array of the following (if an array, any shifts that meet at least
one of the criteria are selected):

MINE

Select only shifts published and assigned to the current user.

CONFIRMED

Select only shifts published and assigned to someone other than the current
user.

AVAILABLE

Select only shifts published and not assigned.

ROOM_FLOOR

If specified, only shifts with the given room_floor (case insensitive) will be
selected. May be a single value or an array of values.

CUSTOM_TEXT_1,2,3,...

If specified, only shifts with the given custom text value (case insensitive)
will be selected. May be a single value or an array of values. Ignored unless
the user is a site administrator or, if the custom text field is readable by
managers, you have specified a scope of report or managed_workgroups (see scope
above) and the user is a manager.

START_TIME_FROM, START_TIME_THROUGH

Times in RFC 3339 partial-time format (e.g. "12:34:00"). Must be an even minute.
If specified, only shifts with a start_time in the given range will be selected.
If start_time_from is greater than start_time_through, shifts with a start_time
on or after start_time_from OR on or before start_time_through will be selected.

END_TIME_FROM, END_TIME_THROUGH

Times in RFC 3339 partial-time format (e.g. "12:34:00"). Must be an even minute.
If specified, only shifts with a end_time in the given range will be selected.
If end_time_from is greater than end_time_through, shifts with a end_time on or
after end_time_from OR on or before end_time_through will be selected.

DISPLAY_START_TIME_FROM, DISPLAY_START_TIME_THROUGH

Like start_time_from and start_time_through, except that it will filter using
the display time.

DISPLAY_END_TIME_FROM, DISPLAY_END_TIME_THROUGH

Like end_time_from and end_time_through, except that it will filter using the
display time.

ORG_HOLD

True if only assigned shifts with an assignee in hold status should be returned.
False if only assigned shifts with an assignee not in hold status should be
returned.

ORG_PENDING

Return assigned shifts where the assignee has this onboarding status.

The response results shifts attribute will be an array of the current page of
selected shifts. Each element of the array will be an shift object containing
basic or basic and extended shift fields.

If requested, the response results referenced_objects attribute will be an
object containing one or more object type names as attributes; for each object
type the value will be an array of those instances of that type of object which
are referred to in the shifts results, with only selected minimal attributes
provided:

ACCOUNT

id, first_name, last_name, and screen_name attributes are provided.

CLIENT

id and name attributes are provided.

DEPARTMENT

id and name attributes are provided.

LOCATION

id and name attributes are provided.

ROLE

id and name attributes are provided.

TIMEZONE

name and iana_timezone attributes are provided.

workStatusType

id and name attributes are provided.

WORKGROUP

id and name attributes are provided.

ACKNOWLEDGE_DECLINE_REASON

id and label attributes are provided.

CUSTOM_MULTIPICK

id and name attributes are provided.

CUSTOM_DROPDOWN_1

id and name attributes are provided.

CUSTOM_DROPDOWN_2

id and name attributes are provided.

CUSTOM_DROPDOWN_3

id and name attributes are provided.

CUSTOM_DROPDOWN_4

id and name attributes are provided.

CUSTOM_DROPDOWN_5

id and name attributes are provided.

CUSTOM_DROPDOWN_6

id and name attributes are provided.

CUSTOM_DROPDOWN_7

id and name attributes are provided.

CUSTOM_DROPDOWN_8

id and name attributes are provided.

CUSTOM_DROPDOWN_9

id and name attributes are provided.

CUSTOM_DROPDOWN_10

id and name attributes are provided.

CUSTOM_DROPDOWN_11

id and name attributes are provided.

CUSTOM_DROPDOWN_12

id and name attributes are provided.

CUSTOM_DROPDOWN_13

id and name attributes are provided.

CUSTOM_DROPDOWN_14

id and name attributes are provided.

CUSTOM_DROPDOWN_15

id and name attributes are provided.

RESOURCE

id, name, and label attributes are provided.


SHIFT.LISTUPDATED

> Request example:

{
   "select" : {
      "updated_since" : 1284656001
   }
}


> Response example:

{
   "seconds" : "0.056182",
   "jsonrpc" : "2.0",
   "id" : "36",
   "result" : {
      "shifts" : [
         {
            "count" : "1",
            "timezone" : "Pacific Time (US/Can) (GMT-08:00)",
            "subject" : "updated",
            "qty" : "1",
            "published" : false,
            "workgroup" : "226082",
            "covered" : false,
            "start_date" : "2010-09-17T12:00:00",
            "id" : "2753500"
         }
      ],
      "count" : "1",
      "page" : {
         "this" : {
            "batch" : 25,
            "start" : 1
         }
      }
   }
}


Try it!

Returns information about coverage shifts created or updated since a given date.
Uses pagination. Uses select criteria.

Optional parameters:

EXTENDED

Boolean; if specified and true, the results returned will include an extended
set of attributes; otherwise a basic set of attributes will be returned for each
shift.

SELECT

An object specifying selection criteria for this request. Note that
updated_since will have a default value if not specified. The available criteria
include all shift.list selection criteria with the addition of:

UPDATED_SINCE

A system.timestamp previously returned by the system.timestamp method. Only
shifts updated since this date will be selected. Defaults to 24 hours ago. If
more than 30 days ago, only shifts updated in the last 30 days will be selected.

STATUS_UPDATE

If specified and true, report only shifts whose status has been updated.
Confirm, unconfirm, assign, reassign, publish, and unpublish actions are
considered status changes. Otherwise, report only shifts whose other data has
been updated.

The response results shifts attribute will be an array of the current page of
selected shifts. Each element of the array will be a shift object.


SHIFT.MARKABSENT

> Request example:

{
   "id" : 2753499,
   "absent_reason" : 2,
   "duplicate" : true
}


> Response example:

{
    "seconds": 0.205401,
    "jsonrpc": "2.0",
    "id": "1",
    "result": {
      "new_id": 2753500
    }
}


Try it!

Marks a shift as absent.

Parameters:

ID

Required. id of the shift for which to return information.

ABSENT_REASON

Optional. ID of the reason for the absence.

DUPLICATE

Optional. Boolean for whether to duplicate the shift when marking absent.

The response results will be an empty object on success, unless duplicate is
true, in which case the new shift ID will be returned.


SHIFT.NOTIFICATION

Try it!

Returns notification information about a coverage shift. This method is
experimental and subject to change without notice.

Parameters:

ID

Required. id of the shift for which to return information.

The response results shift attribute will be an object with selected attributes
of the shift object.

The response results accounts attribute will be an array of objects with
selected attributes of accounts that should be notified.


SHIFT.SIGNUP

Try it!

Signs up a member to a shift's signup list.

Parameters:

ID

Required. id of the shift for which to sign up.

MEMBER

id of the account to sign up (defaults to the current user)

NOTE: If you are calling this method with the member parameter, external_member
will be ignored (if included).

EXTERNAL_MEMBER

external id of the account to sign up (defaults to the current user)

NOTE: If you are calling this method with the external_member parameter, member
will be ignored (if included).

MESSAGE

optional message

Response: On success, empty results will be returned.


SHIFT.SIGNUPLIST

Try it!

Returns information about signups for a coverage shift.

Parameters:

ID

Required. id of the shift for which to return information.

REFERENCED_OBJECTS

Boolean, defaults to true. Indicates that the results should include a
referenced_objects attribute giving information about objects referred to in the
returned signups.

Upon success, the returned object will have the following attributes:

ALREADY_SIGNED_UP

Boolean. The user is already signed up for this signup list.

CAN_MANAGE_LIST

Boolean. The user can add/remove/process/message signup list members.

CAN_REMOVE_SIGNUP

Boolean. The user can remove their signup for this signup list.

CAN_SIGNUP

Boolean. The user can sign up for this signup list.

SIGNUPS

An array of signups the user is authorized to see for the selected shift. Each
signup object will have the following attributes:

MEMBER

account identifier

MESSAGE

optional message provided at time of signup

PROCESSED

Boolean.

If requested, the response results referenced_objects attribute will be an
object containing one or more object type names as attributes; for each object
type the value will be an array of those instances of that type of object which
are referred to in the shift results, with only selected minimal attributes
provided:

ACCOUNT

id, first_name, last_name, and screen_name attributes are provided.


SHIFT.SUMMARY

> Request example:

{
   "aggregate" : "start_date",
   "exists" : {
      "critical" : {
         "published" : true,
         "covered" : false,
         "urgent" : true
      },
      "unpublished" : {
         "published" : false
      },
      "confirmed" : {
         "published" : true,
         "covered" : true,
         "exclude_covering_member" : 123
      },
      "mine" : {
         "published" : true,
         "covered" : true,
         "covering_member" : 123
      },
      "available" : {
         "published" : true,
         "covered" : false,
         "urgent" : false
      }
   },
   "select" : {
      "workgroup" : [
         123456,
         234567
      ],
      "end_date" : "2015-06-30",
      "start_date" : "2015-06-01"
   }
}


> Response example:

{
   "seconds" : "0.362897",
   "jsonrpc" : "2.0",
   "id" : "25",
   "result" : {
      "referenced_objects" : {},
      "summary" : [
         {
            "critical" : false,
            "unpublished" : false,
            "confirmed" : false,
            "start_date" : "2015-06-03",
            "mine" : true,
            "available" : false
         },
         {
            "critical" : true,
            "unpublished" : false,
            "confirmed" : false,
            "start_date" : "2015-06-08",
            "mine" : true,
            "available" : true
         },
         {
            "critical" : false,
            "unpublished" : true,
            "confirmed" : false,
            "start_date" : "2015-06-12",
            "mine" : false,
            "available" : true
         }
      ]
   }
}


Try it!

This method is experimental and subject to change.

Returns summary information about selected shifts.

Parameters:

SELECT

Selection criteria. For defaults and allowed criteria, refer to shift.list.

AGGREGATE

Shift attribute name or array of names by which to summarize; defaults to
start_date. Currently supported values: start_date.

AUTO_AGGREGATE

Boolean; options, if specified and true, the returned result will be grouped by
Start Date and either Workgroup or Subject depending on the Application setting
for Schedules/Calenders "Display by Subject(Not Workgroup)". If setting is Yes,
result is grouped by Start Date and Subject, if set to No, the result is grouped
by Start Date and Workgroup.

Difference between aggreate for Workgroup and Subject. When the Application
setting for Schedules/Calenders "Display by Subject(Not Workgroup)" is No, the
aggregate is for a Start Date and Workgroup, the Label contain the Workgroup
Name, and there is also a field to indicate the id for the workgroup, called
"workgroup". When the Application setting is Yes, the aggregate is for Start
Date and Subject, the Label will be the Subject or the special value "Misc."
This special value is used when the subject is missing. Also, there is an extra
field called "label_orig", this contains the real subject, this means, the true
value for Subject and it is be the empty string.

See the example

> Request example: ```JSON { "auto_aggregate": true, "exists": { "available": {
> "covered": false, "published": true }, "confirmed": { "acknowledged": true,
> "covered": true, "published": true }, "unacknowledged": { "acknowledged":
> false, "covered": true, "published": true }, "unpublished": { "published":
> false }, "unpublished_available": { "covered": false, "published": false },
> "unpublished_confirmed": { "covered": true, "published": false } },
> "include_count": true, "select": { "display_end_date": "2020-04-03",
> "display_start_date": "2020-02-29" } }

> Response example:

```JSON
{
  "referenced_objects": {},
  "summary": [
    {
      "key": "2020-03-01",
      "value": [
        {
          "available": 0,
          "confirmed": 0,
          "date": "2020-03-01",
          "label": "CMT",
          "unacknowledged": 1,
          "unpublished": 0,
          "unpublished_available": 0,
          "unpublished_confirmed": 0,
          "workgroup": "2834160"
        }
      ]
    },
    {
      "key": "2020-03-17",
      "value": [
        {
          "available": 2,
          "confirmed": 1,
          "date": "2020-03-17",
          "label": "CNA",
          "unacknowledged": 1,
          "unpublished": 3,
          "unpublished_available": 1,
          "unpublished_confirmed": 2,
          "workgroup": "2834161"
        },
        {
          "available": 0,
          "confirmed": 1,
          "date": "2020-03-17",
          "label": "Home Health Aides",
          "unacknowledged": 0,
          "unpublished": 1,
          "unpublished_available": 1,
          "unpublished_confirmed": 0,
          "workgroup": "2834157"
        },
        {
          "available": 0,
          "confirmed": 1,
          "date": "2020-03-17",
          "label": "RN",
          "unacknowledged": 0,
          "unpublished": 0,
          "unpublished_available": 0,
          "unpublished_confirmed": 0,
          "workgroup": "2834158"
        }
      ]
    },
    {
      "key": "2020-03-26",
      "value": [
        {
          "available": 1,
          "confirmed": 0,
          "date": "2020-03-26",
          "label": "CMT",
          "unacknowledged": 0,
          "unpublished": 1,
          "unpublished_available": 1,
          "unpublished_confirmed": 0,
          "workgroup": "2834160"
        },
        {
          "available": 0,
          "confirmed": 0,
          "date": "2020-03-26",
          "label": "Home Health Aides",
          "unacknowledged": 1,
          "unpublished": 1,
          "unpublished_available": 1,
          "unpublished_confirmed": 0,
          "workgroup": "2834157"
        }
      ]
    }
  ]
}



EXISTS

Object with arbitrarily named attributes with selection criteria objects as
values.

SHARED

Boolean; if specified and true, the results returned will also include shifts
that are covered and published from workgroups that are shared to the account.

INCLUDE_COUNT

Boolean; if specified and true, the results returned will also include the
totals for each attribute returned.

REFERENCED_OBJECTS

Boolean, defaults to true. For future use. Indicates that, in addition to the
summary attribute, the results should include a referenced_objects attribute
giving information about objects referred to by the returned summary data.

The response results summary attribute will provide an array containing an
element for each distinct set of values found of the specified aggregate
attributes. Each element will be an object with an attribute for each of the
specified aggregate attributes giving the value found, and additional attributes
for each named set of additional criteria specified in exists giving a Boolean
value to indicate whether shifts with those additional criteria were found with
the given aggregate attribute values.


SHIFT.UNCONFIRM

> Request example:

{
   "id" : 2753501
}


> Response example:

{
   "seconds" : "0.123864",
   "jsonrpc" : "2.0",
   "id" : "46",
   "result" : {}
}


Try it!

Confirms a shift.

Required parameter: id.

Response: On success, empty results will be returned. Note that if the shift had
a quantity, the particular shift that was unconfirmed may have been merged with
other unconfirmed shifts and deleted.


SHIFT.UPDATE

This method is for changing details about a shift. When assigning a shift no
conflict checking of that assignment will be done unless explicitly enabled via
the assignability_checks and conflicts_ok parameters. Furthermore, by default
the assignment will not be acknowledged nor published. To acknowledge the
assignment see the shift.acknowledge or shift.assign methods. To publish a
shift, set the published parameter to true.

> Request example:

{
   "count" : 1,
   "timezone" : "Greenwich Mean Time : Dublin, Lisbon, London (GMT)",
   "subject" : "updated",
   "qty" : 1,
   "published" : true,
   "workgroup" : "226084",
   "end_date" : "2010-09-17T14:30:00",
   "covered" : true,
   "start_date" : "2010-09-17T14:00:00",
   "id" : 2753501
}


> Response example:

{
   "seconds" : "0.178901",
   "jsonrpc" : "2.0",
   "id" : "43",
   "result" : {}
}


Try it!

Updates a shift object.

REQUIRED PARAMETER

id. Most other shift object attributes may be specified.

OPTIONAL PARAMETERS

notify Boolean; notify covering member upon update, or notify the workgroup on
publishing an uncovered shift.

The count of a shift is the number of positions available for that specific
shift, whereas the qty is the total positions for all related shifts. Counts may
not be directly modified: to increase or decrease available counts, modify the
qty field, which will update the qty for all related shifts, increasing or
decreasing the count only for the related uncovered shift. Therefore, qty cannot
be decreased below the total count for all related covered shifts. If qty is set
to the total count for all related covered shifts, the uncovered shift, now with
count 0, is deleted.

If covering_member is specified as an array, single positions of the shift will
be assigned to the indicated members.

To set absent_reason, no_credit must also be set to true (even if already true).

To set arrive_late_reason or leave_early_reason, arrive_late_datetime and
leave_early_datetime must also be set.

Setting arrive_late_reason or leave_early_reason will un-set absent_reason /
no_credit; similarly, setting the latter will un-set the former.
arrive_late_reason and leave_early_reason can be set together, but if either is
set in the same update call as absent_reason / no_credit, the system will return
an error.

ASSIGNABILITY PARAMETERS

To use assignability checks, the assignability_checks parameter must be true;
then, the following options may be available, based on enabled features:

is_available - boolean

by_seniority - boolean

seniority_required - boolean

single_shift_per_day - boolean

conflicts_ok - boolean

daily_overtime_ok - boolean

weekly_overtime_ok - boolean

timeoff_ok - boolean

consecutive_days - boolean

short_turnaround - boolean

ignore_attestation_types - boolean

attestation_type - array of attestationTypeId

ignore_role - boolean

RESPONSE

On success, if the shift was updated, empty results will be returned. If the
shift had a count > 1 and the update was only applied to a portion of the count,
a new shift object will have been created and the id of the new shift will be
returned. If qty is modified on a covered shift, the id of the modified
uncovered shift will be returned.


SHIFT.WHOSON

> Request example:

{}


> Response example:

{
    "count": "1",
    "page": {
        "this": {
            "batch": 10,
            "start": 1
        }
    },
    "referenced_objects": {
        "account": [
            {
                "first_name": "First",
                "id": "1",
                "last_name": "Last",
                "screen_name": "First Last",
                "seniority_order": "12014-09-12 08:57:52"
            }
        ],
        "location": [
            {
                "id": "1234",
                "name": "API Test Site"
            }
        ],
        "timezone": [
            {
                "name": "Pacific Time (US/Can) (GMT-08:00)",
                "iana_timezone": "America/Los_Angeles"
            }
        ],
        "workgroup": [
            {
                "id": "11111",
                "name": "CNA"
            }
        ]
    },
    "shifts": [
        {
            "client": null,
            "count": "1",
            "covered": true,
            "covering_member": "9",
            "department": null,
            "display_time": "Anytime",
            "id": "123456",
            "location": "1234",
            "name": "",
            "published": true,
            "qty": "1",
            "role": null,
            "start_date": "2019-01-01",
            "subject": "",
            "timezone": "Pacific Time (US/Can) (GMT-08:00)",
            "urgent": false,
            "use_time": "5",
            "workgroup": "11111"
        }
    ]
}


Returns information about coverage shifts currently underway. Uses #pagination.

Optional parameters

EXTENDED

Boolean; if specified and true, the results returned will include an extended
set of attributes; otherwise a basic set of attributes will be returned for each
shift.

REFERENCED_OBJECTS

Boolean, defaults to true. Indicates that, in addition to the shifts attribute,
the results should include a referenced_objects attribute giving information
about objects referred to by the returned shifts.

IMAGE

Boolean; if specified and true, the results returned will include an image_url
attribute giving a url to the shift's covering_member's user image or null if no
image is available.

IMAGE_EXPIRATION

Specifies the valid lifetime of the returned URL in seconds; default 300,
maximum 604800 (1 week).

TIMECLOCK_STATUS

Boolean; if specified and true, the results returned will include a clocked_in
attribute indicating that the shift's covering_member is currently clocked in
(though not necessarily for this shift) and a can_clock_in_out attribute
indicating whether there is authorization to clock that covering member in or
out.

The response results "shifts" attribute will be an array of the current page of
shifts. Each element of the array will be an shift object containing basic or
basic and extended shift fields and a "display_time" attribute giving a string
presentation of when the shift is scheduled.

If requested, the response results "referenced_objects" attribute will be an
object containing one or more object type names as attributes; for each object
type the value will be an array of those instances of that type of object which
are referred to in the "shifts" results, with only selected minimal attributes
provided:

ACCOUNT

id, first_name, last_name, and screen_name attributes are provided.

CLIENT

id and name attributes are provided.

DEPARTMENT

id and name attributes are provided.

LOCATION

id and name attributes are provided.

ROLE

id and name attributes are provided.

TIMEZONE

name and iana_timezone attributes are provided.

WORKSTATUSTYPE

id and name attributes are provided.

WORKGROUP

id and name attributes are provided.

SELECT

An object specifying selection criteria for this request

NOT_CLOCKED_IN

Boolean, if specified and true, the result will be filter to only return workers
who has not clocked.


SYSTEM OBJECT


SYSTEM.ECHO

> Request example:

{
   "false" : false,
   "true" : true,
   "null" : null
}


> Response example:

{
   "seconds" : "0.040819",
   "jsonrpc" : "2.0",
   "id" : "3",
   "result" : {
      "false" : false,
      "true" : true,
      "null" : null
   }
}


Try it!

For use in client testing only. Returns the object passed as params as its
result.


SYSTEM.ENDBATCH

> Request example:

{}


> Response example:

{
   "seconds" : "0.273929",
   "jsonrpc" : "2.0",
   "id" : "41",
   "result" : {}
}


Try it!

Ends a batch of requests.

See Performance Batching for more details.


SYSTEM.GETUSERKEYS

Requests api keys and secrets for user accounts in sites controlled by the
calling api user. Reserved for use by certain api users.

> Request example

{
  "external_id": "12345678"
}


> Response example

{
  "seconds": "0.055196",
  "jsonrpc": "2.0",
  "id": "1",
  "result": {
    "sites": [
      {
        "org_id": "132994",
        "site_id": "1349",
        "business_unit": "West Texas",
        "site_name": "SB Test 1",
        "access_key": "5a177d26-2e8b-11e9-ba0c-5fa51e230eef",
        "secret_key": "1DzCrI0+Iu2oZ0m5d3W9kAFKOT9w+hvS6p0srnn/"
      }
    ]
  }
}


Finds accounts not in onboarding or on hold with a given external_id in those
sites the calling api user controls and returns api keys to access those sites
as that account and site information.

Required parameters:

EXTERNAL_ID

The response results sites attribute will be an array of objects with org_id,
site_id, business_unit, site_name, access_key, and secret_key attributes.

If no account is found, the sites array will be empty.

Try it!


SYSTEM.TIMESTAMP

> Request example:

{}


> Response example:

{
   "seconds" : "0.039812",
   "jsonrpc" : "2.0",
   "id" : "2",
   "result" : {
      "localtime" : "2014-09-17T14:08:28-0700",
      "timezone" : "America/Los_Angeles",
      "timestamp" : 1410988108,
      "24_hour_clock" : true
   }
}


Try it!

Returns the current time. The timestamp attribute is epoch seconds, for later
use as the updated_since select criterion by some methods. The localtime
attribute is the RFC 3339 date-time for the current time in the organization's
timezone. The "24_hour_clock" attribute is true if the organization is
configured to display time in a 24-hour format. The timezone attribute is the
organization's selected time zone.


SYSTEM.WHOAMI

Returns account, the account id for the registered API user.

> Request example:

{}


> Response example:

{
   "seconds" : "0.04893",
   "jsonrpc" : "2.0",
   "id" : "1",
   "result" : {
      "account" : "2"
   }
}


Try it!

NOTE: external_account, the external account id for the registered API user will
be included if external ids are enabled for the site.


TEAMCATEGORY OBJECT

teamCategory objects have the following attributes:

ID

A unique identifier for this category.

CATEGORY

The numeric identifier for the workgroup category to which this team category
belongs.

LABEL

The label for this team category.


TEAMCATEGORY.LIST

> Request example:

{}


> Response example:

{
   "seconds" : "0.051276",
   "jsonrpc" : "2.0",
   "id" : "21",
   "result" : [
      {
         "label" : "Sales",
         "category" : 1,
         "id" : 2743
      }
   ]
}


Try it!

Lists all current team categories.


TEAMCATEGORY.CREATE

> Request example:

{
   "label" : "Sales",
   "category" : 1
}


> Response example:

{
   "seconds" : "0.051276",
   "jsonrpc" : "2.0",
   "id" : "21",
   "result" : {
      "label" : "Sales",
      "category" : 1,
      "id" : 2351
   }
}


Try it!

Creates a new team category.

Only five (5) team categories are allowed.

Required parameters:

CATEGORY

The numeric identifier for the category.

LABEL

The label for this category.

Response: On success, the created teamCategory will be returned.


TEAMCATEGORY.UPDATE

> Request example:

{
   "label" : "Corporate Relations",
   "id" : 2334
}


> Response example:

{
   "seconds" : "0.051276",
   "jsonrpc" : "2.0",
   "id" : "21",
   "result" : {
      "label" : "Corporate Relations",
      "category" : 3,
      "id" : 2334
   }
}


Try it!

Updates the label on a team category.

Required parameters:

ID

The unique identifier for the category.

LABEL

The new label for this category.

Response: On success, the updated teamCategory will be returned


TEAMCATEGORY.DELETE

> Request example:

{
   "id" : 2313
}


> Response example:

{
   "seconds" : "0.051276",
   "jsonrpc" : "2.0",
   "id" : "21",
   "result" : {}
}


Try it!

Deletes a team category.

Required parameters:

ID

The unique identifier for the category.

Response: On success, an empty results will be returned


TEAMCATEGORYITEM OBJECT

teamCategoryItem objects have the following attributes:

ID

A unique identifier for this category item.

CATEGORY

The numeric identifier for the category of this item.

NAME

The name for this category item.


TEAMCATEGORYITEM.LIST

> Request example:

{
   "select" : {
      "category" : 3
   }
}


> Response example:

{
   "seconds" : "0.051276",
   "jsonrpc" : "2.0",
   "id" : "21",
   "result" : {
      "count" : 2,
      "page" : {
         "this" : {
            "batch" : 10,
            "start" : 1
         }
      },
      "items" : [
         {
            "name" : "Inside Sales",
            "category" : 3,
            "id" : 2329
         },
         {
            "name" : "Outside Sales",
            "category" : 3,
            "id" : 2327
         }
      ]
   }
}


Try it!

Lists all items associated with a team category. Uses pagination.

Optional parameters: select object with a category or label attribute
identifying a single numerical category of items to be returned and a deleted
Boolean attribute to indicate deleted teamCategoryItems should be returned. E.g.
{"select":{"category":3}}


TEAMCATEGORYITEM.ADD

> Request example:

{
   "name" : "Inside Sales",
   "category" : 1
}


> Response example:

{
   "seconds" : "0.051276",
   "jsonrpc" : "2.0",
   "id" : "21",
   "result" : {
      "name" : "Inside Sales",
      "category" : 1,
      "id" : 2335
   }
}


Try it!

Creates a new item under a team category.

Required parameters:

ID

A unique identifier for this category item.

NAME

The name for this category item.

Response: On success, the created teamCategoryItem will be returned.


TEAMCATEGORYITEM.UNDELETE

> Request example:

{
   "id" : 2334
}


> Response example:

{
   "seconds" : "0.051276",
   "jsonrpc" : "2.0",
   "id" : "21",
   "result" : {}
}


Try it!

Undeletes a deleted team category item.

Required parameters:

ID

A unique identifier for this category item.

Response: On success, empty results will be returned


TEAMCATEGORYITEM.UPDATE

> Request example:

{
   "name" : "SE Regional",
   "id" : 2334
}


> Response example:

{
   "seconds" : "0.051276",
   "jsonrpc" : "2.0",
   "id" : "21",
   "result" : {
      "name" : "SE Regional",
      "category" : 2,
      "id" : 2334
   }
}


Try it!

Updates the name of an item within a team category.

Required parameters:

ID

A unique identifier for this category item.

NAME

The name for this category item.

Response: On success, the updated teamCategoryItem will be returned


TEAMCATEGORYITEM.DELETE

> Request example:

{
   "id" : 2432
}


> Response example:

{
   "seconds" : "0.051276",
   "jsonrpc" : "2.0",
   "id" : "21",
   "result" : {}
}


Try it!

Deletes an item within a team category.

Required parameters:

ID

The unique identifier for the category item.

Response: On success, an empty results will be returned


TIMEOFFREQUEST OBJECT


TIMEOFFREQUEST: BASIC ATTRIBUTES

ID

A unique identifier for this timeOffRequest.

START_DATE

The date or date and time on which this timeOffRequest begins. For an all-day
timeOffRequest, this is date in RFC 3339 full date format (e.g. "2009-04-01").
Otherwise, this is a datetime (e.g. "2009-04-01T13:00:00").

END_DATE

The date and time on which this timeOffRequest ends, (e.g.
"2009-04-01T17:00:00"). Not specified for all-day or open-ended timeOffRequests.

USE_TIME

Time off request type

Value Type 3 Start & End Date 4 Open Ended 5 All Day

TIMEZONE

WORKGROUP

The timeOffRequest's workgroup or null if no workgroup

MEMBER

The account for which this is a request

EXTERNAL_MEMBER

The external account identifier for which this is a request

SUMMARY

Summary information about this request

STATUS

Value Meaning 0 New 2 Approved 3 Denied

PAID

Boolean; indicates whether this time off is paid or unpaid

CATEGORY

Category for this time off request, or null if the request has no category.


TIMEOFFREQUEST: EXTENDED ATTRIBUTES

DETAILS

Additional details for this request

ADMIN_NOTES

(site administrators only)

STATUS_REASON

Reason for approval or denial of request

LAST_STATUS_UPDATE

Datetime of last status update for this request

STATUS_UPDATE_BY

account that last updated this request's status


TIMEOFFREQUEST.APPROVE

Try it!

Approves a time off request.

Required parameter:

ID

Time off request identifier or array of time off request identifiers.

Optional parameter:

STATUS_REASON

If not specified, status_reason will remain unchanged.

UNCONFIRM

Boolean. In case of conflicts the conflicted shifts will be unconfirmed.

UNPUBLISH

Boolean. In case of conflicts the conflicted shifts will be unpublished.

Response: On success, empty results will be returned if neither
unconfirmed/unpublished has been specified.

If a conflict was found and if either unconfirmed/unpublished was specified, the
result set will have one field "conflicts" containing an array of conflict
descriptions. Each element describes one conflict in terms of start date for the
shift, the team name and a text with details for the conflict.

TIMEOFFID

The id for the timeoff request that caused a conflict

PERSON

The display name for the person of the timeoff request. This is also the person
that was assigned to the shift. The shift might no longer be assigned.

SHIFTID

The id of the conflicting shift

END_DATE

The end date of the conflicting shift

END_TIME

The end time of the conflicting shift

START_DATE

The start date of the conflicting shift

START_TIME

The start time of the conflicting shift

TEAM

The team name of the conflicting shift. Be aware that the team name might not
match the team of specified in the time off. This could be the case for instance
if the time off request was specified without a team and that the user
requesting the information has privilege to the team that the conflicting shift
belongs to.

TEXT

A description of what caused the conflict. This is normally how many hours that
are overlapping.

{
  "success": true,
  "data": {
    "conflicts": [
      {
        "end_date": "2019-03-04",
        "end_time": "14:25:00",
        "person": "Sally Swanson",
        "shiftid": "249930061",
        "start_date": "2019-03-04",
        "start_time": "06:45:00",
        "team": "Home Health Aides",
        "text": "Conflicts by 7 hrs 40 mins",
        "timeoffid": "744530"
      }
    ]
  }
}



TIMEOFFREQUEST.CREATE

Try it!

Creates a new timeOffRequest record.

Parameters: Any attributes of a timeOffRequest object except "id",
"last_status_update", or "status_update_by" may be specified. Minimally,
"start_date" and "member/external_member" must be specified. "timezone" defaults
to the organization's timezone. "status" defaults to "0" (New). "paid" defaults
to false. Start and end dates may only fall on even five minute times.

Response: On success, an id attribute will provide the identifier for the new
timeOffRequest.


TIMEOFFREQUEST.DELETE

Try it!

Deletes a timeOffRequest record.

Required parameter: id.

Response: On success, empty results will be returned.


TIMEOFFREQUEST.DENY

Try it!

Denies a time off request.

ID

Time off request identifier or array of time off request identifiers.

Optional parameter: status_reason. If not specified, status_reason will remain
unchanged.

Response: On success, empty results will be returned.


TIMEOFFREQUEST.GET

Try it!

Returns information about a timeOffRequest.

Parameters:

ID

Required. id of the timeOffRequest for which to return information.

EXTENDED

Boolean; if specified and false, the results returned will be a basic set of
attributes; otherwise an extended set of attributes will be returned for each
timeOffRequest.

USER_ACTIONS

Boolean; if specified and true, a user_actions object will be returned with
attributes indicating what actions (e.g. delete, update) may be presented to the
user.

REFERENCED_OBJECTS

Boolean, defaults to true. Indicates that, in addition to the timeOffRequest
attribute, the results should include a referenced_objects attribute giving
information about objects referred to by the returned time off request.

DISPLAY_TIME

Boolean; if specified and true, the results returned will include a display_time
attribute giving a string presentation of what time range the time off is
requested.

The response results "timeOffRequest" attribute will be the selected
timeOffRequest object.

If user_actions were requested, a user_actions attribute will also be returned.

If requested, the response results referenced_objects attribute will be an
object containing one or more object type names as attributes; for each object
type the value will be an array of those instances of that type of object which
are referred to in the "timeOffRequest" results, with only selected minimal
attributes provided:

ACCOUNT

id, first_name, last_name, and screen_name attributes are provided.

NOTE: external_id will also be returned in the results if external ids are
enabled for the site.

id, first_name, last_name, and screen_name attributes are provided.

TIMEZONE

name and iana_timezone attributes are provided.

WORKGROUP

id and name attributes are provided.


TIMEOFFREQUEST.LIST

Try it!

Returns information about timeOffRequests. Uses pagination. Uses select
criteria.

Optional parameters:

EXTENDED

Boolean; if specified and true, the results returned will include an extended
set of attributes; otherwise a basic set of attributes will be returned for each
timeOffRequest.

USER_ACTIONS

Boolean; if specified and true, a user_actions object will be returned for each
timeOffRequest with attributes indicating what actions (e.g. delete, update,
approve) may be presented to the user.

REFERENCED_OBJECTS

Boolean, defaults to true. Indicates that, in addition to the timeOffRequests
attribute, the results should include a referenced_objects attribute giving
information about objects referred to by the returned time off request.

DISPLAY_TIME

Boolean; if specified and true, the results returned will include a display_time
attribute giving a string presentation of what time range the time off is
requested.

SELECT

An object specifying selection criteria for this request. Note that start_date
and end_date will have default values if not specified. The available criteria
include:

START_DATE

The earliest date of coverage to select, in RFC 3339 full date format (e.g.
"2009-04-01"). Defaults to today.

END_DATE

The latest date of coverage to select, in RFC 3339 full date format. Defaults to
7 days after the start_date.

PROFILE_TYPE

If specified, requests only timeOffRequests for accounts having one of the
specified profile_type(s). The specified value is the profile_type_id or array
of profile_type_id(s) for the account requesting the timeoff.

STATUS

If specified, requests only timeOffRequests with the status.

MEMBER

If specified, requests only timeOffRequests for the given account.

The response results "timeOffRequests" attribute will be an array of the current
page of selected timeOffRequests. Each element of the array will be an
timeOffRequest object containing basic or basic and extended timeOffRequest
fields.

If requested, the response results referenced_objects attribute will be an
object containing one or more object type names as attributes; for each object
type the value will be an array of those instances of that type of object which
are referred to in the "timeOffRequest" results, with only selected minimal
attributes provided:

NOTE: If you are calling this method with the external_member parameter, member
is not required.

EXTERNAL_MEMBER

If specified, requests only timeOffRequests for the given account.

NOTE: If you are calling this method with the member parameter, external_member
is not required, and will be ignored.

ACCOUNT

id, first_name, last_name, and screen_name attributes are provided.

TIMEZONE

name and iana_timezone attributes are provided.

WORKGROUP

id and name attributes are provided.

SORT

If specified, the name of a preconfigured sort criteria. There are three valid
values that can be used: creation_date, start_date and name.

creation_date sorts by creation_date in descending order so the most recent
request are listed first. If a day contains multiple time off requests, the day
is further sorted by start_time, end_date and end_time.

start_date sorts by start_date in descending order (most future day to past). If
a day contain multiple time off requests then these are further sorted by
start_time, then by end_date in descending order then end_time

name sorts by last_name then first_name. If a person has multiple time off
request then these are further sorted by start_date in descenting order and then
start_time


TIMEOFFREQUEST.UPDATE

Try it!

Updates a timeOffRequest object.

Required parameter: id. Any timeOffRequest object attributes other than
last_status_update and status_update_by may be specified.

Response: On success, if the timeOffRequest was updated, empty results will be
returned.


TIMECARD OBJECT


TIMECARD: BASIC ATTRIBUTES

ID

A unique identifier for this timecard

WORKGROUP

Workgroup identifier

ACCOUNT

Account identifier

EXTERNAL_ACCOUNT

External account identifier. Can be used in lieu of account if external
identifiers are enabled for the site.

NOTE: If both account and external_account are included, the external_account
value will be ignored.

SHIFT

Shift identifier or null if there is no shift associated with this timecard
object

APPROVED

true if the timecard is approved

PROCESSED

true if the timecard is processed

START_DATE

Start date in RFC 3339 full-date format (e.g. "2009-04-01")

START_TIME

Start time in RFC 3339 partial-time format (e.g. "23:55:00") or null if no start
time was provided

DURATION

Duration in HHH:MM:SS format (e.g. "1:05:00" or "120:00:00")


TIMECARD: EXTENDED ATTRIBUTES

WORK_STATUS_TYPE

The workStatusType id for the timecard

LOCATION

The location id for the timecard, if specified

ROLE

The role id for the timecard, if specified

CLIENT

The client id for the timecard, if specified

DEPARTMENT

The department id for the timecard, if specified

MILEAGE

Mileage for the timecard, if specified

EXPENSE_NOTES

Expense notes, if specified

NOTES

Notes, if specified

MANAGER_NOTES

Manager notes, if specified

Not all fields will be exposed to all users.

Not all fields will be configured to be used for all organizations or set for
all timecards.


TIMECARD.APPROVE

Try it!

> Request example:

{ "id": [123456, 654321], "approved": true }


> Response example:

{"seconds":"0.052778","jsonrpc":"2.0","id":"48","result":{"approved":2}}


Approve one or more timecard records.

Parameters: id One or more timecards to approve approved Boolean; approve or
un-approve one or more timecards

Response: On success, the number of "approved" or "unapproved" results are
returned.


TIMECARD.CREATE

Try it!

Creates a new timecard record.

Parameters: Any attributes of a timecard object (except id) may be specified.

Response: On success, an id attribute will provide the identifier for the new
timecard.


TIMECARD.DELETE

> Request example:

{
   "id" : "226089"
}


> Response example:

{
   "seconds" : "0.052778",
   "jsonrpc" : "2.0",
   "id" : "48",
   "result" : {}
}


Try it!

Deletes a timecard record.

Required parameter: id.

Response: On success, empty results will be returned.


TIMECARD.EXPORTTRAXPAYROLL

Try it!

Initiates a TRAXPayroll timecard export.

Parameters:

INLINE_CONTENT

If true, report data will be directly returned; if false, a one-time url for
fetching the report data will be returned.

SELECT

Selection criteria (optional):

START_DATE

Earliest timecard start date to select; defaults to 30 days ago. If overtime is
enabled, the day of week must match the configured workweek start day.

END_DATE

Latest timecard start date to select; defaults to today. If overtime is enabled,
the day of week must match the weekday before the configured workweek start day
(i.e. the end of the workweek).

WORKGROUP

Single workgroup identifier or array of workgroup identifiers to report

ACCOUNT

Single account identifier or array of account identifiers to report

NOTE: If you are calling this method with the account parameter,
external_account is not required.

EXTERNAL_ACCOUNT

Single external account identifier or array of external account identifiers to
report

NOTE: If you are calling this method with the account parameter,
external_account is not required, and will be ignored.

APPROVED

true to select only approved timecards, false to select only timecards not yet
approved

PROCESSED

true to select only processed timecards, false to select only timecards not yet
processed

CLIENT

DEPARTMENT

ROLE

WORK_STATUS_TYPE

LOCATION

USE_WORKWEEK_START_TIME

Boolean; if specified and true, modifies the selection to be from the configured
workweek start time on the specified start_date to the configured workweek start
time on the day following the specified end_date; if weekly overtime is enabled
and the configured workweek start time is not midnight, this must be specified
as true.

Response: If inline_content is true, a content attribute will provide an array
of the requested data; otherwise, a url attribute giving a link that may be used
one time only, within 5 minutes of the API request, to generate the requested
report.


TIMECARD.GET

Try it!

Returns information about a timecard object.

Parameters:

ID

Required. id of the timecard object for which to return information.

EXTENDED

Boolean; if specified and false, the results returned will be a basic set of
attributes; otherwise an extended set of attributes will be returned for each
timecard.

REFERENCED_OBJECTS

Boolean, defaults to true. Indicates that, in addition to the timecard
attribute, the results should include a referenced_objects attribute giving
information about objects referred to by the returned timecard.

EDITABLE_FIELDS

Boolean; if specified and true, the results returned will include a list of
timecard fields that are editable by the caller (based on auth level).

The response results timecard attribute will be the selected timecard object.

If requested, the response results referenced_objects attribute will be an
object containing one or more object type names as attributes; for each object
type the value will be an array of those instances of that type of object which
are referred to in the timecard results, with only selected minimal attributes
provided:

ACCOUNT

id, first_name, last_name, and screen_name attributes are provided.

NOTE: external_id will also be returned in the results if external ids are
enabled for the site

CLIENT

id and name attributes are provided.

DEPARTMENT

id and name attributes are provided.

LOCATION

id and name attributes are provided.

ROLE

id and name attributes are provided.

workStatusType

id and name attributes are provided.

WORKGROUP

id and name attributes are provided.


TIMECARD.LIST

Try it!

Returns information about timecard objects. Uses pagination. Uses select
criteria.

Optional parameters:

EXTENDED

Boolean; if specified and true, the results returned will include an extended
set of attributes; otherwise a basic set of attributes will be returned for each
timecard object.

REFERENCED_OBJECTS

Boolean, defaults to true. Indicates that, in addition to the timecards
attribute, the results should include a referenced_objects attribute giving
information about objects referred to by the returned timecard objects.

SELECT

An object specifying selection criteria for this request. Note that start_date
and end_date will have default values if not specified. The available criteria
include:

START_DATE

Earliest timecard start date to select; defaults to 30 days ago

END_DATE

Latest timecard start date to select; defaults to today

WORKGROUP

Single workgroup identifier or array of workgroup identifiers to report

ACCOUNT

Single account identifier or array of account identifiers to report

NOTE: If you are calling this method with the account parameter,
external_account is not required, and will be ignored.

EXTERNAL_ACCOUNT

Single external account identifier or array of external account identifiers to
report

NOTE: If you are calling this method with the account parameter,
external_account is not required, and will be ignored.

APPROVED

true to select only approved timecards, false to select only timecards not yet
approved

PROCESSED

true to select only processed timecards, false to select only timecards not yet
processed

CLIENT

DEPARTMENT

ROLE

WORK_STATUS_TYPE

LOCATION

The response results timecards attribute will be an array of the current page of
selected timecard objects. Each element of the array will be an timecard object
containing basic or basic and extended timecard fields.

If requested, the response results referenced_objects attribute will be an
object containing one or more object type names as attributes; for each object
type the value will be an array of those instances of that type of object which
are referred to in the timecards results, with only selected minimal attributes
provided:

ACCOUNT

id, first_name, last_name, and screen_name attributes are provided.

CLIENT

id and name attributes are provided.

DEPARTMENT

id and name attributes are provided.

LOCATION

id and name attributes are provided.

ROLE

id and name attributes are provided.

workStatusType

id and name attributes are provided.

WORKGROUP

id and name attributes are provided.


TIMECARD.PROCESS

> Request example:

{ "id": [123456, 654321], "processed": true }


> Response example:

{"seconds":"0.052778","jsonrpc":"2.0","id":"48","result":{"processed":2}}


Process one or more timecard records.

Parameters: id One or more timecards to process process Boolean; process or
un-process one or more timecards

Response: On success, the number of "approved" or "unapproved" results are
returned.


TIMECARD.REPORT

Try it!

Generates a pre-authorized link to download a timecard report.

Parameters:

REPORT_TYPE

One of: basic (default), extended, adherence

FORMAT

One of: csv (default), xls

SELECT

Selection criteria (optional):

START_DATE

Earliest timecard start date to select; defaults to 30 days ago.

END_DATE

Latest timecard start date to select; defaults to today.

WORKGROUP

Single workgroup identifier or array of workgroup identifiers to report

ACCOUNT

Single account identifier or array of account identifiers to report

NOTE: If you are calling this method with the account parameter,
external_account is not required, and will be ignored.

EXTERNAL_ACCOUNT

Single external account identifier or array of external account identifiers to
report

NOTE: If you are calling this method with the account parameter,
external_account is not required, and will be ignored.

APPROVED

true to select only approved timecards, false to select only timecards not yet
approved

PROCESSED

true to select only processed timecards, false to select only timecards not yet
processed

CLIENT

DEPARTMENT

ROLE

WORK_STATUS_TYPE

LOCATION

Response: A url attribute giving a link that may be used one time only, within 5
minutes of the API request, to generate the requested report.


TIMECARD.UPDATE

Try it!

Updates a timecard object.

Required parameter: id. Any other timecard object attributes may be specified.

Response: On success, empty results will be returned.


TIMECARD.CUSTOMDROPDOWNLIST

> Request example:

{}


> Response example:

{
    "custom_listable_1": {
        "1550": "Red",
        "1551": "Blue",
        "1552": "Green"
    },
    "custom_listable_2": {
        "1553": "Breakfast",
        "1554": "Lunch",
        "1555": "Dinner"
    },
    "custom_listable_4": {
        "1558": "Baseball",
        "1559": "Skiing",
        "1560": "Soccer",
        "1561": "Football"
    }
}


Try it!

Returns information about timecard related custom dropdown list objects.

Required Parameter: none

Optional Parameters: none

Response: On success, an object will be returned containing all timecard custom
drop down listables that have been created, and are enabled for the site.


TIMECARD.SHIFTLIST

> Request example:

{
   "member" : "1"
}


> Response example:

{
   "seconds" : "2.811506",
   "jsonrpc" : "2.0",
   "id" : "21",
   "result" : {
                 "referenced_objects": {
                       "workgroup": {
                         "123456": "My Team"
                       }
                 },
                 "shifts": [
                    {
                        "agent": "12345",
                        "approved": "1",
                        "client": null,
                        "count": "1",
                        "covered": true,
                        "department": null,
                        "display_time": "7am - 11:10am",
                        "dur_hrs": "4",
                        "dur_mins": "10",
                        "end_date": "2018-02-06T11:10:00",
                        "id": "1234567890",
                        "name": "",
                        "qty": "1",
                        "role": "0",
                        "start_date": "2018-02-06T07:00:00",
                        "subject": "",
                        "timezone": "Pacific Time (US/Can) (GMT-08:00)",
                        "urgent": false,
                        "use_time": "2",
                        "venue": "0",
                        "workgroup": "123456"
                    }
                 ]
   }
}


Try it!

Returns list of shifts (un)associated with timecards depending on timekeepr
settings configured in Shiftboard

Required parameters:

MEMBER

Integer; The id of the member to query on.

The response results "shifts" attribute will be an array of the selected
timecard objects that are (un)associated with shifts.


TIMECLOCK OBJECT


TIMECLOCK: BASIC ATTRIBUTES

ID

A unique identifier for this timeclock object

WORKGROUP

A workgroup identifier or null if not clocked in

ACCOUNT

Account identifier

EXTERNAL_ACCOUNT

External account identifier

CLOCKED_IN

Time that the user clocked in

CLOCKED_OUT

Time that the user clocked out or null if not clocked out

SHIFT

shift identifier or null if there is no shift associated with this timeclock
object


TIMECLOCK: EXTENDED ATTRIBUTES

CLOCKED_IN_LOCAL

Time that the user clocked in, in the organization's timezone

CLOCKED_OUT_LOCAL

Time that the user clocked out, in the organization's timezone, or null if not
clocked out

TIMEZONE

The organization's timezone

CLOCKIN_NOTES

(if specified)

CLOCKOUT_NOTES

(if specified)

CLOCKIN_IPADDR

(if specified)

CLOCKOUT_IPADDR

(if specified)

CLOCKIN_PHONE

(if specified)

CLOCKOUT_PHONE

(if specified)

CLOCKIN_LOCATION

CLOCKOUT_LOCATION

Location of clockin/clockout, if known. An object with the following attributes:

LATITUDE

LONGITUDE

TIME

ACCURACY

meters of 68% confidence of latitude/longitude

CLOCKIN_DEVICE_ID

(if specified)

CLOCKOUT_DEVICE_ID

(if specified)


TIMECLOCK.CLOCKIN

> Request example:

{}


> Response example:

{
   "seconds" : "2.903725",
   "jsonrpc" : "2.0",
   "id" : "37",
   "result" : {
      "id" : 62064
   }
}


Try it!

Clocks in a given account.

Parameters:

ACCOUNT

optional, defaults to current user

NOTE: If you are calling this method with the account parameter,
external_account is not required, and will be ignored.

EXTERNAL_ACCOUNT

optional, defaults to current user

NOTE: If you are calling this method with the account parameter,
external_account is not required, and will be ignored.

WORKGROUP

optional, defaults to clocking in to the organization

SHIFT

the shift to associate with this clock in; optional or required depending on
organization settings

CLOCKED_IN

optional, the time to record the user as having clocked in

PHONE

optional, phone number used to clock in (for IVR systems)

LATITUDE

optional, latitude of clock in

LONGITUDE

optional, longitude of clock in

LOCATION_ACCURACY

optional, meters of 68% confidence of latitude/longitude

LOCATION_TIME

optional, time of latitude/longitude/accuracy fix.

note: location_time must be defined when including latitude, longitude, and/or
location_accuracy, otherwise these parameters will be ignored.

DEVICE_ID

optional, arbitrary string identifying timeclock device

IP_ADDRESS

IP address that originated this clock in (defaults to address issuing this api
request)

NOTES

optional, arbitrary text

Response: On success, returns id of the newly created timeclock object.


TIMECLOCK.CLOCKOUT

> Request example:

{}


> Response example:

{
   "seconds" : "2.944529",
   "jsonrpc" : "2.0",
   "id" : "43",
   "result" : {
      "timecard" : 111673
   }
}


Try it!

Clocks out a given account and creates a timecard for the clock in.

Parameters:

ACCOUNT

optional, defaults to current user

NOTE: If you are calling this method with the account parameter,
external_account is not required, and will be ignored.

EXTERNAL_ACCOUNT

optional, defaults to current user

NOTE: If you are calling this method with the account parameter,
external_account is not required, and will be ignored.

WORKGROUP

optional, defaults to the organization; must match the workgroup to which the
account is clocked in

APPROVE

boolean, default false; indicates whether the timecard object created for this
clock in should be approved

CLOCKED_OUT

optional, the time to record the user as having clocked out

LATITUDE

optional, latitude of clock in

LONGITUDE

optional, longitude of clock in

LOCATION_ACCURACY

optional, meters of 68% confidence of latitude/longitude

LOCATION_TIME

optional, time of latitude/longitude/accuracy fix.

note: location_time must be defined when including latitude, longitude, and/or
location_accuracy, otherwise these parameters will be ignored.

DEVICE_ID

optional, arbitrary string identifying timeclock device

IP_ADDRESS

IP address that originated this clock out (defaults to address issuing this api
request)

NOTES

optional, arbitrary text

Response: On success, returns timecard, the id of the newly created timecard
object.


TIMECLOCK.GET

Try it!

Returns information about a timeclock object.

Parameters:

ID

Required. id of the timeclock object for which to return information.

EXTENDED

Boolean; if specified and false, the results returned will be a basic set of
attributes; otherwise an extended set of attributes will be returned for each
timeclock.

REFERENCED_OBJECTS

Boolean, defaults to true. Indicates that, in addition to the timeclock
attribute, the results should include a referenced_objects attribute giving
information about objects referred to by the returned timeclock.

The response results timeclock attribute will be the selected timeclock object.

If requested, the response results referenced_objects attribute will be an
object containing one or more object type names as attributes; for each object
type the value will be an array of those instances of that type of object which
are referred to in the timeclocks results, with only selected minimal attributes
provided:

ACCOUNT

id, first_name, last_name, and screen_name attributes are provided.

NOTE: external_id will also be returned in the results if external ids are
enabled for the site

TIMEZONE

name and iana_timezone attributes are provided.

WORKGROUP

id and name attributes are provided.


TIMECLOCK.LIST

Try it!

Returns information about timeclock objects. Uses pagination. Uses select
criteria.

Optional parameters:

EXTENDED

Boolean; if specified and true, the results returned will include an extended
set of attributes; otherwise a basic set of attributes will be returned for each
timeclock object.

REFERENCED_OBJECTS

Boolean, defaults to true. Indicates that, in addition to the timeclocks
attribute, the results should include a referenced_objects attribute giving
information about objects referred to by the returned timeclock objects.

SELECT

An object specifying selection criteria for this request. Note that start_date
and end_date will have default values if not specified. The available criteria
include:

START_DATE

Earliest clock in date to select

END_DATE

Latest clock in date to select

CLOCKED_OUT

Boolean; true to include only already clocked out timeclock records, false to
include only not yet clocked out timeclock records. Omit to include all records.

WORKGROUP

Single workgroup identifier or array of workgroup identifiers to report

ACCOUNT

Single account identifier or array of account identifiers to report

NOTE: If you are calling this method with the account parameter,
external_account is not required, and will be ignored.

EXTERNAL_ACCOUNT

Single external account identifier or array of external account identifiers to
report

NOTE: If you are calling this method with the account parameter,
external_account is not required, and will be ignored.

The response results timeclocks attribute will be an array of the current page
of selected timeclock objects. Each element of the array will be an timeclock
object containing basic or basic and extended timeclock fields.

If requested, the response results referenced_objects attribute will be an
object containing one or more object type names as attributes; for each object
type the value will be an array of those instances of that type of object which
are referred to in the timeclocks results, with only selected minimal attributes
provided:

ACCOUNT

id, first_name, last_name, and screen_name attributes are provided.

TIMEZONE

name and iana_timezone attributes are provided.

WORKGROUP

id and name attributes are provided.


TIMECLOCK.REPORT

> Request example:

{
   "format" : "xls",
   "report_type" : "total_hour",
   "select" : {
      "start_date" : "2012-10-01"
   }
}


> Response example:

{
   "seconds" : "2.811506",
   "jsonrpc" : "2.0",
   "id" : "21",
   "result" : {
      "url" : "https://www.shiftboard.com/servola/fetch.cgi?ss=14;type=report;key=5085a260feff2760;signature=kRMtQqcLl0SULDYifhdg3OH4uIU;format=excel"
   }
}


Try it!

Generates a pre-authorized link to download a timeclock report.

Parameters:

REPORT_TYPE

Required. One of: basic, extended, total_hour

FORMAT

One of: csv (default), xls

SELECT

Selection criteria (optional):

START_DATE

Earliest clock in date to report (or, for total_hour report, earliest date
during which someone was clocked in)

END_DATE

Latest clock in date to report (or, for total_hour report, latest date during
which someone was clocked in)

CLOCKED_OUT

Boolean; true to include only already clocked out timeclock records, false to
include only not yet clocked out timeclock records. Omit to include all records.

WORKGROUP

Single workgroup identifier or array of workgroup identifiers to report

ACCOUNT

Single account identifier or array of account identifiers to report

NOTE: If you are calling this method with the account parameter,
external_account is not required, and will be ignored.

EXTERNAL_ACCOUNT

Single external account identifier or array of external account identifiers to
report

NOTE: If you are calling this method with the account parameter,
external_account is not required, and will be ignored.

Response: A url attribute giving a link that may be used one time only, within 5
minutes of the API request, to generate the requested report.


TIMECLOCK.STATUS

> Request example:

{}


> Response example:

{
   "seconds" : "2.811506",
   "jsonrpc" : "2.0",
   "id" : "21",
   "result" : {
      "workgroup" : null,
      "account" : "4826",
      "shift" : null,
      "clocked_in" : null,
      "clocked_out" : null
   }
}


Try it!

Reports clocked in/out status of an account.

Parameters:

ACCOUNT

Optional, defaults to current user

NOTE: If you are calling this method with the account parameter,
external_account is not required, and will be ignored.

EXTERNAL_ACCOUNT

Optional, defaults to current user

NOTE: If you are calling this method with the account parameter,
external_account is not required, and will be ignored.

LATITUDE

Optional, latitude of clock in. If specified, longitude and location_accuracy
must also be specified.

LONGITUDE

Optional, longitude of clock in. If specified, latitude and location_accuracy
must also be specified.

LOCATION_ACCURACY

Optional, meters of 68% confidence of latitude/longitude. If specified, latitude
and longitude must also be specified.

Response: On success, returns basic timeclock attributes. If the account is
clocked in, they will reflect that timeclock object; otherwise, timeclock
attributes other than account will be null.

If not clocked in and shifts can be associated to timeclock entries, an
additional boolean shift_required attribute will be present and indicate whether
an associated shift is required and a shifts_available attribute will provide an
array of possible shifts to associate (with those shifts most likely to be
intended first), each element of the array providing the following attributes:

CATEGORY

A string with the value current, next, or previous, indicating whether the shift
is scheduled for now, in the future, or in the past.

SHIFT

The shift identifier to specify when clocking in.

WORKGROUP

The workgroup identifier to specify when clocking in.

DESCRIPTION

A string describing when and for what team the shift is scheduled.

TIMEZONE

The timezone of the shift.

Additionally, if latitude/longitude/location_accuracy are specified, each
element of the array will provide the following 3 attributes:

GEOFENCE_RADIUS

The allowed geofence radius in meters, or null if there is no restriction.

DISTANCE_OUTSIDE

The distance in meters of the user's location outside the allowed geofence, or 0
if the user is not outside.

GEOFENCE_TIMECLOCK_ALLOWED

If the shift requires the member to be within the geofenced area, this boolean
is false if the member is outside the area (that is, geofence_status is
inaccurate, or outside).

GEOFENCE_STATUS

A string describing the user's position with respect to the geofence. One of:

NO_RESTRICTION

There is no geofence restriction for this shift.

UNKNOWN_LOCATION

There is no latitude/longitude known for this shift

INACCURATE

The location provided is not accurate enough.

INSIDE

The user is within the geofence.

INSIDE_EDGE

The user's location is within the geofence, but the circle of accuracy extends
outside it.

OUTSIDE_EDGE

The user's location is outside the geofence, but the circle of accuracy extends
inside it.

OUTSIDE

The user is outside the geofence.

The shifts_available array entries will be sorted as follows:

 * First sort by category: current, followed by next, then previous

 * If current, sort by "most recently started," then "longest shift"

 * If next, sort by "next to start," then "longest shift"

 * If previous, sort by "most recently ended," then "longest shift"

The response will provide an additional org_level attribute, indicating the
account's level in the organization (2, 3, or 4), as well as screen_name,
first_name, and last_name account attributes.


TIMECLOCK.WHOSON

Returns information about timeclock entries currently clocked in. Uses
pagination.

Optional parameters:

EXTENDED

Boolean; if specified and true, the results returned will include an extended
set of attributes; otherwise a basic set of attributes will be returned for each
timeclock entry.

REFERENCED_OBJECTS

Boolean, defaults to true. Indicates that, in addition to the timeclocks
attribute, the results should include a referenced_objects attribute giving
information about objects referred to by the returned timeclock entries.

IMAGE

Boolean; if specified and true, the results returned will include an image_url
attribute giving a url to the timeclock's account's user image or null if no
image is available.

IMAGE_EXPIRATION

Specifies the valid lifetime of the returned URL in seconds; default 300,
maximum 604800 (1 week).

The response results "timeclocks" attribute will be an array of the current page
of timeclock entries. Each element of the array will be a timeclock object
containing basic or basic and extended timeclock fields. Additionally, a
can_clockout boolean attribute will be returned indicating whether the api user
is authorized to clock out this timeclock entry.

If requested, the response results "referenced_objects" attribute will be an
object containing one or more object type names as attributes; for each object
type the value will be an array of those instances of that type of object which
are referred to in the "timeclocks" results, with only selected minimal
attributes provided:

ACCOUNT

id, first_name, last_name, and screen_name attributes are provided.

TIMEZONE

name and iana_timezone attributes are provided.


TIMEZONE OBJECT

timezone objects have the following minimal attributes:

NAME

A unique displayable name used to identify this timezone. Currently, one of the
following strings:

 * "International Date Line West (GMT-12:00)"
 * "Midway Island, Samoa (GMT-11:00)"
 * "Hawaii (GMT-10:00)"
 * "Alaska (GMT-09:00)"
 * "Pacific Time (US/Can) (GMT-08:00)"
 * "Arizona (GMT-07:00)"
 * "Mountain Time (US/Can) (GMT-07:00)"
 * "Chihuahua, La Paz, Mazatlan (GMT-07:00)"
 * "Saskatchewan (GMT-06:00)"
 * "Central Time (US/Can) (GMT-06:00)"
 * "Guadalajara, Mexico City, Monterrey (GMT-06:00)"
 * "Indiana (East) (GMT-05:00)"
 * "Bogota, Lima, Quito (GMT-05:00)"
 * "Eastern Time (US/Can) (GMT-05:00)"
 * "Caracas, La Paz (GMT-04:30)"
 * "Atlantic Time (Can) (GMT-04:00)"
 * "Santiago (GMT-04:00)"
 * "Newfoundland (GMT-03:30)"
 * "Buenos Aires, Georgetown (GMT-03:00)"
 * "Mid-Atlantic (GMT-02:00)"
 * "Cape Verde Is. (GMT-01:00)"
 * "Azores (GMT-01:00)"
 * "Casablanca, Monrovia (GMT)"
 * "Greenwich Mean Time : Dublin, Lisbon, London (GMT)"
 * "Brussels, Copenhagen, Madrid, Paris (GMT+01:00)"
 * "Belgrade, Bratislava, Budapest, Prague (GMT+01:00)"
 * "Amsterdam, Berlin, Bern, Rome, Vienna (GMT+01:00)"
 * "Sarajevo, Skopje, Warsaw, Zagreb (GMT+01:00)"
 * "Harare, Pretoria (GMT+02:00)"
 * "Cairo (GMT+02:00)"
 * "Jerusalem (GMT+02:00)"
 * "Athens, Beirut, Istanbul, Minsk (GMT+02:00)"
 * "Bucharest (GMT+02:00)"
 * "Helsinki, Kyiv, Riga, Sofia, Vilnius (GMT+02:00)"
 * "Nairobi (GMT+03:00)"
 * "Kuwait, Riyadh (GMT+03:00)"
 * "Moscow, St. Petersburg, Volgograd (GMT+03:00)"
 * "Baghdad (GMT+03:00)"
 * "Tehran (GMT+03:30)"
 * "Abu Dhabi, Muscat (GMT+04:00)"
 * "Baku, Tbilisi, Yerevan (GMT+04:00)"
 * "Kabul (GMT+04:30)"
 * "Islamabad, Karachi, Tashkent (GMT+05:00)"
 * "Chennai, Kolkata, Mumbai, New Delhi (GMT+05:30)"
 * "Kathmandu (GMT+05:45)"
 * "Astana, Dhaka (GMT+06:00)"
 * "Almaty, Novosibirsk (GMT+06:00)"
 * "Rangoon (GMT+06:30)"
 * "Bangkok, Hanoi, Jakarta (GMT+07:00)"
 * "Krasnoyarsk (GMT+07:00)"
 * "Beijing, Chongqing, Hong Kong, Urumqi (GMT+08:00)"
 * "Kuala Lumpur, Singapore (GMT+08:00)"
 * "Taipei (GMT+08:00)"
 * "Perth (GMT+08:00)"
 * "Irkutsk, Ulaan Bataar (GMT+08:00)"
 * "Seoul (GMT+09:00)"
 * "Osaka, Sapporo, Tokyo (GMT+09:00)"
 * "Yakutsk (GMT+09:00)"
 * "Darwin (GMT+09:30)"
 * "Adelaide (GMT+09:30)"
 * "Brisbane (GMT+10:00)"
 * "Guam, Port Moresby (GMT+10:00)"
 * "Vladivostok (GMT+10:00)"
 * "Hobart (GMT+10:00)"
 * "Canberra, Melbourne, Sydney (GMT+10:00)"
 * "Magadan, Solomon Is., New Caledonia (GMT+11:00)"
 * "Fiji, Kamchatka, Marshall Is. (GMT+12:00)"
 * "Auckland, Wellington (GMT+12:00)"
 * "Nuku'alofa (GMT+13:00)"

IANA_TIMEZONE

The IANA timezone name for this timezone (e.g. America/Los_Angeles).

timezone objects have the following additional basic attributes:

STANDARD_OFFSET

The offset from UTC when DST is not being observed (e.g. -08:00).

ABBREVIATIONS

The standard abbreviation(s) for this timezone (e.g. PST/PDT).


TIMEZONE.GET

Try it!

Returns information about a timezone.

Parameters:

NAME

Required. The unique display name of the timezone for which to return
information.

The response results timezone attribute will be the selected timezone object.


TIMEZONE.LIST

Try it!

Returns information about timezones. Uses pagination.

Parameters: None

The response results timezones attribute will be an array of the current page of
selected timezones. Each element of the array will be an timezone object
containing basic timezone attributes.


TRADEBOARD OBJECT


TRADEBOARD: BASIC ATTRIBUTES

ID

A unique identifier for this tradeboard.

SHIFT

shift identifier for this trade.

TRADED_BY

account identifier originally assigned this shift.

TRADED_TO

account identifier that accepted this trade, or null if the trade is not
completed.

TRADE_COMPLETE

Boolean.

STATUS

Integer with one of the following values: - 1 - Pending - Trade is awaiting
permission to be offered - 2 - Offered - Trade is offered - 3 - Unapproved -
Trade is awaiting approval of completion - 4 - Complete - Trade is completed


TRADEBOARD: EXTENDED ATTRIBUTES

NOTES

TRADE_COMPLETED

time at which this trade was completed.


TRADEBOARD.ACCEPT

> Request example:

{
   "id" : 2753501
}


> Response example:

{
   "seconds" : "0.188065",
   "jsonrpc" : "2.0",
   "id" : "45",
   "result" : {}
}


Try it!

Takes a shift offered on the tradeboard.

Required parameter: id.

Response: On success, empty results will be returned.


TRADEBOARD.APPROVE

This API call can be used in two situations.

The first situation is when an employee request permission to post a shift to be
traded. In this case the API is called to approve or deny the shift to be traded
to another employees.

The second situation is when a shift has been posted as a trade and an employee
is requesting to cover the shift. In this cass the API is called to approve or
deny the employee to cover the shift.

Parameters:

ID

Required. id of the tradeboard posting for which to be approved or denied.

APPROVAL

Required. Boolean indicating if tradeboard is approved or denied to either be
put up for trade (situation 1) or for being cover by another employee (situation
2)

NOTES

Optional. Text that is attached to notification. This can be used when a shift
is submitted to be posted as a trade. The text will be attached to the request
to trade. This parameter is only used when the shift is requested to be posted
as a trade (situation 1).

NO_NOTIFY

Optional. Boolean indicating if a notification is created when the trade is
requested to be covered by another employee. If "true", a notification will be
send out. If "false", no notification will be send out. This parameter is only
used when the trade is approved/denied to be covered by another employee
(situation 2 )


TRADEBOARD.CREATE

> Request example:

{
   "shift" : 12345678
}


> Response example:

{
   "seconds" : "0.207354",
   "jsonrpc" : "2.0",
   "id" : "59",
   "result" : {
      "id" : 92873
   }
}


Try it!

Creates a new tradeboard posting.

Required Parameter:

SHIFT

shift identifier for this trade.

Optional Parameters:

NOTES

Response: On success, an id attribute will provide the identifier for the new
tradeboard posting.


TRADEBOARD.DELETE

> Request example:

{
   "id" : "2753"
}


> Response example:

{
   "seconds" : "0.058344",
   "jsonrpc" : "2.0",
   "id" : "67",
   "result" : {}
}


Try it!

Deletes a tradeboard posting.

Required parameter: id.

Response: On success, empty results will be returned.


TRADEBOARD.GET

> Request example:

{
   "id" : "123456",
   "extended" : true
}


> Response example:

{
   "seconds" : "0.128193",
   "jsonrpc" : "2.0",
   "id" : "15",
   "result" : {
      "referenced_objects" : {
         "workgroup" : [
            {
               "name" : "Help Desk",
               "id" : "412345"
            }
         ],
         "department" : [
            {
               "name" : "Distribution",
               "label" : "Distribution",
               "id" : "9942"
            }
         ],
         "timezone" : [
            {
               "name" : "Pacific Time (US/Can) (GMT-08:00)",
               "iana_timezone" : "America/Los_Angeles"
            }
         ],
         "location" : [
            {
               "name" : "Training / Meetings",
               "id" : "92580"
            }
         ],
         "shift" : [
            {
               "display_time" : "1pm to 2pm",
               "department" : "9942",
               "reference_id" : "",
               "linkurl" : "",
               "work_status_type" : "5",
               "start_date" : "2014-01-29T13:00:00",
               "signup_list" : false,
               "id" : "56789012",
               "count" : "1",
               "timezone" : "Pacific Time (US/Can) (GMT-08:00)",
               "display_date" : "January 29, 2014",
               "location" : "92580",
               "subject" : "",
               "covering_member" : "47",
               "urgent" : false,
               "zipcode" : "94132",
               "qty" : "1",
               "details" : "details!",
               "workgroup" : "412345",
               "published" : true,
               "no_credit" : false,
               "end_date" : "2014-01-29T14:00:00",
               "covered" : true,
               "no_pick_up" : false,
               "no_trade" : false,
               "room_floor" : "room/floor",
               "linktitle" : ""
            }
         ],
         "account" : [
            {
               "id" : "39",
               "screen_name" : null,
               "last_name" : "Foster",
               "first_name" : "Joanie"
            },
            {
               "seniority_order" : "19999-12-31 23:59:59",
               "id" : "47",
               "profile_type" : "3",
               "screen_name" : "Stan Wilson",
               "last_name" : "Wilson",
               "first_name" : "Stan"
            }
         ],
         "workStatusType" : [
            {
               "name" : "Salary/Exempt",
               "id" : "5"
            }
         ]
      },
      "tradeboard" : {
         "trade_completed" : "2014-01-21T20:40:38Z",
         "shift" : "56789012",
         "notes" : "Need to see the dentist; please take this trade",
         "id" : "123456",
         "traded_to" : "47",
         "traded_by" : "39",
         "trade_complete" : true
      }
   }
}


Try it!

Returns information about a tradeboard posting.

Parameters:

ID

Required. id of the tradeboard posting for which to return information.

EXTENDED

Boolean; if specified and true, the results returned will include an extended
set of attributes; otherwise a basic set of attributes will be returned for each
tradeboard posting.

REFERENCED_OBJECTS

Boolean, defaults to true. Indicates that, in addition to the tradeboard
attribute, the results should include a referenced_objects attribute giving
information about objects referred to by the returned tradeboard posting.

The response results tradeboard attribute will be the selected tradeboard
object.

If requested, the response results referenced_objects attribute will be an
object containing one or more object type names as attributes; for each object
type the value will be an array of those instances of that type of object which
are referred to in the tradeboard results or in its associated shift, with only
selected minimal attributes provided:

ACCOUNT

id, first_name, last_name, and screen_name attributes are provided.

NOTE: external_id will also be returned in the results if external ids are
enabled for the site.

CLIENT

id and name attributes are provided.

DEPARTMENT

id and name attributes are provided.

LOCATION

id and name attributes are provided.

ROLE

id and name attributes are provided.

SHIFT

All basic shift attributes will be provided. If the extended parameter is true,
extended shift attributes will also be provided. Additionally, display_date and
display_time attributes contain formatted strings describing the shift's start
and end time.

TIMEZONE

name and iana_timezone attributes are provided.

workStatusType

id and name attributes are provided.

WORKGROUP

id and name attributes are provided.


TRADEBOARD.LIST

> Request example:

{
   "select" : {
      "end_date" : "2014-07-18",
      "start_date" : "2014-07-12"
   }
}


> Response example:

{
   "seconds" : "0.087686",
   "jsonrpc" : "2.0",
   "id" : "3",
   "result" : {
      "referenced_objects" : {
         "workgroup" : [
            {
               "name" : "Floor Staff",
               "id" : "226093"
            }
         ],
         "account" : [
            {
               "id" : "20",
               "screen_name" : "Johnny Smith",
               "last_name" : "John",
               "first_name" : "Smith"
            }
         ],
         "shift" : [
            {
               "workgroup" : "226093",
               "display_time" : "10am to 11am",
               "display_date" : "July 13, 2014",
               "id" : "25687871"
            }
         ]
      },
      "tradeboard" : [
         {
            "shift" : "25687871",
            "id" : "1123",
            "trade_complete" : false,
            "traded_by" : "20",
            "traded_to" : null
         }
      ],
      "count" : "1",
      "page" : {
         "this" : {
            "batch" : 10,
            "start" : 1
         }
      }
   }
}


Try it!

Returns information about tradeboard postings. Uses pagination. Uses select
criteria.

Optional parameters:

EXTENDED

Boolean; if specified and true, the results returned will include an extended
set of attributes; otherwise a basic set of attributes will be returned for each
tradeboard posting.

REFERENCED_OBJECTS

Boolean, defaults to true. Indicates that, in addition to the tradeboard
attribute, the results should include a referenced_objects attribute giving
information about objects referred to by the returned tradeboard postings.

SELECT

An object specifying selection criteria for this request. Note that start_date
and end_date will have default values if not specified. The available criteria
include:

START_DATE

The earliest date of coverage to select, in RFC 3339 full date format (e.g.
"2009-04-01"). Defaults to today.

END_DATE

The latest date of coverage to select, in RFC 3339 full date format. Defaults to
14 days after the start_date.

TRADE_COMPLETE

If specified, true requests only completed trades, false requests only
uncompleted trades.

The response results tradeboard attribute will be an array of the current page
of selected tradeboard postings. Each element of the array will be a tradeboard
object containing basic or basic and extended tradeboard fields.

If requested, the response results referenced_objects attribute will be an
object containing one or more object type names as attributes; for each object
type the value will be an array of those instances of that type of object which
are referred to in the tradeboard results or their associated shifts, with only
selected minimal attributes provided:

ACCOUNT

id, first_name, last_name, and screen_name attributes are provided.

NOTE: external_id will also be returned in the results if external ids are
enabled for the site.

SHIFT

id and workgroup attributes are provided. Additionally, display_date and
display_time attributes contain formatted strings describing the shift's start
and end time.

WORKGROUP

id and name attributes are provided.


TRADEBOARD.UPDATE

> Request example:

{
   "notes" : "I'd like to trade for a shift the following Wednesday",
   "id" : 2345
}


> Response example:

{
   "seconds" : "0.178901",
   "jsonrpc" : "2.0",
   "id" : "43",
   "result" : {}
}


Try it!

Updates a tradeboard posting's notes.

Required parameter: id.

Optional parameter: notes.

Response: On success, empty results will be returned.


VOUCHER OBJECT

voucher objects have the following minimal attributes:

ID

A unique identifier for this voucher.

ACCOUNT

Identifier of the account to which this voucher is assigned.

CANCELLED

Boolean.

CREDIT_EARNED

Numeric, two decimal places

CREDIT_USED

Numeric, two decimal places

EXPIRATION_DATE

Date credit expires/expired (UTC)

EARNED_DATE

Date credit was earned (UTC)


VOUCHER.BALANCE

Try it!

Checks the user's voucher balance of available credit.

Parameters:

ORG_ID

optional, organization for which to return voucher products; defaults to the
user's organization; if specified, must be that or that organization's parent

Response: On success, returns a balance attribute and a voucher_product
attribute giving an array of available product objects with id, name, and
credits attributes.


VOUCHER.REFUND

Try it!

Refunds credit to the user's voucher balance.

Parameters:

VOUCHER_TRANSACTION_ID

id of transaction to refund

RECEIPT

receipt attribute previously returned by voucher.use

LATITUDE

optional, latitude of clock in

LONGITUDE

optional, longitude of clock in

LOCATION_ACCURACY

optional, meters of 68% confidence of latitude/longitude

LOCATION_TIME

optional, time of latitude/longitude/accuracy fix

DEVICE_ID

optional, arbitrary string identifying issuing device

DEVICE_NAME

optional, arbitrary string with a displayable name for device

ORG_ID

optional, organization for which to update the voucher transaction; defaults to
the user's organization; if specified, must be that or that organization's
parent

Response: On success, returns empty results.


VOUCHER.USE

Try it!

Uses credit from the user's voucher balance.

Parameters:

CREDIT

amount of credit to use.

LATITUDE

optional, latitude of clock in

LONGITUDE

optional, longitude of clock in

LOCATION_ACCURACY

optional, meters of 68% confidence of latitude/longitude

LOCATION_TIME

optional, time of latitude/longitude/accuracy fix

DEVICE_ID

optional, arbitrary string identifying issuing device

DEVICE_NAME

optional, arbitrary string with a displayable name for device

VOUCHER_PRODUCT

optional, the particular product for which credits are being redeemed

ORG_ID

optional, organization for which to record the voucher transaction; defaults to
the user's organization; if specified, must be that or that organization's
parent

Response: On success, returns a voucher_transaction_id attribute and a string
receipt attribute.


WORKSTATUSTYPE OBJECT

workStatusType objects have the following minimal attributes:

ID

A unique identifier for this workStatusType.

NAME

A displayable name used to identify this workStatusType.


WORKSTATUSTYPE.GET

Try it!

Returns information about a workStatusType.

Parameters:

ID

Required. The unique identifier of the workStatusType for which to return
information.

The response results "workStatusType" attribute will be the selected
workStatusType object.


WORKSTATUSTYPE.LIST

Try it!

Returns information about workStatusTypes. Uses pagination.

Parameters: None

The response results "workStatusTypes" attribute will be an array of the current
page of selected workStatusTypes. Each element of the array will be an
workStatusType object containing basic workStatusType attributes.


WORKGROUP OBJECT


WORKGROUP: BASIC ATTRIBUTES

ID

A unique identifier for this workgroup.

NAME

The name of this workgroup.

ZIP

The postal code for this workgroup.

CODE

The nickname or code for this workgroup.

CONTACT_ACCOUNT

The account identifier of the primary contact for this workgroup.

EXTERNAL_CONTACT_ACCOUNT

The external account identifier of the primary contact for this workgroup. This
field is optional, and should be used instead of contact_account if your site is
configured to support external identifiers and you wish to key off of the
external id instead.

Extended workgroup objects may also have these attributes:

ORG_DEFAULT

Boolean; true if new organization accounts by default get membership in this
workgroup.

DESCRIPTION

Workgroup description shown to current members.

AUTO_ADD

Boolean; true if members may add themselves to this workgroup; false if add
requests require manager approval.

VIEW_PUBLIC

Boolean; true if recruiting new members within the organization.

VIEW_PUBLIC_NON_ORG

Boolean; true if recruiting new members from outside the organization.

PUBLIC_EMAIL

Email address to include in recruiting information.

PUBLIC_PHONE

Phone number to include in recruiting information.

PUBLIC_CODE

Summary description of workgroup to include in recruiting information.

PUBLIC_INFO

Long description of workgroup to include in recruiting information.

SELF_REMOVE

Boolean; true if members can remove themselves from membership in this
workgroup.

ALLOW_READONLY

An integer corresponding to the various possible values for sharing:

 * 0: none
 * 1: share with this workgroup
 * 2: share with specified groups
 * 3: share with all workgroup for the site

(This value cannot be set directly, see allow_shared)

ALLOW_SHARED

Boolean; true shifts for this workgroup are shown in the shared schedule view
(depending on the value of allow_readonly: "allow_readonly":0 means
"allow_shared":false, and other values of allow_readonly are
"allow_shared":true).

To set this, either set a boolean, or an integer, corresponding to
allow_readonly.

ALLOW_SHARED_GROUPS

An object of workgroups (ID => name) to share with (if "allow_readonly":2).

To set this, use a comma-separated string of workgroup IDs. Can only be set with
workgroup.update, not workgroup.create.

SHOW_CONFIRMED

Boolean; true if the count of covered shifts by date for this workgroup is
visible to all workgroup members.

MEMBER_ADD_SHIFT

Boolean; true if workgroup members are allowed to add their own covered shifts
to the schedule.

SHOW_OPEN

Boolean; true if the count of open shifts by date for this workgroup is shown to
all workgroup members.

CANCEL_PERIOD

Number of days prior to a shift within which a workgroup member may cancel.

ALLOWED_CONFLICT_MINS

Number of minutes of overlap between shifts with the same location and workgroup
to consider not a conflict.

TIMEZONE

LOCATION

Default location identifier for this workgroup's shifts.

URL

Workgroup website.

ADDRESS

Mailing address address line.

CITY

Mailing address city.

STATE

Full name of mailing address state/province/subdivision.

COUNTRY

Full name of mailing address country.

OFFICE_PHONE

MOBILE_PHONE

OTHER_PHONE

FAX

PAGER

(Not all attributes will be provided to all users.)

LEVEL

User level within the workgroup.

 * 2 - member
 * 3 - coordinator
 * 4 - manager


WORKGROUP.CREATE_CLIENTS

Try it!

Creates new workgroup/client relationships.

Required parameters:

CLIENT

A single client identifier or an array of identifiers of clients for which to
create workgroup relationships for each specified workgroup.

WORKGROUP

A single workgroup identifier or an array of identifiers of workgroups for which
to create client relationships for each specified client.

No more than 10000 workgroup client relationships may be specified in one
request.

If one or more of the specified workgroup client relationships already exist,
the remaining relationships (if any) will be created and no error will be
returned.

Response: On success, empty results will be returned.


WORKGROUP.ADDDEPARTMENTS

> Request example:

{
   "workgroup" : "226073",
   "department" : "948"
}


> Response example:

{
   "seconds" : "0.041209",
   "jsonrpc" : "2.0",
   "id" : "6",
   "result" : {}
}


Try it!

Creates new workgroup/department relationships.

Required parameters:

DEPARTMENT

A single department identifier or an array of identifiers of departments for
which to create workgroup relationships for each specified workgroup.

WORKGROUP

A single workgroup identifier or an array of identifiers of workgroups for which
to create department relationships for each specified department.

No more than 10000 workgroup department relationships may be specified in one
request.

If one or more of the specified workgroup department relationships already
exist, the remaining relationships (if any) will be created and no error will be
returned.

Response: On success, empty results will be returned.


WORKGROUP.ADDLOCATIONS

> Request example:

{
   "workgroup" : "226074",
   "location" : "29117"
}


> Response example:

{
   "seconds" : "0.792919",
   "jsonrpc" : "2.0",
   "id" : "12",
   "result" : {}
}


Try it!

Creates new workgroup/location relationships.

Required parameters:

LOCATION

A single location identifier or an array of identifiers of locations for which
to create workgroup relationships for each specified workgroup.

WORKGROUP

A single workgroup identifier or an array of identifiers of workgroups for which
to create location relationships for each specified location.

No more than 10000 workgroup location relationships may be specified in one
request.

If one or more of the specified workgroup location relationships already exist,
the remaining relationships (if any) will be created and no error will be
returned.

Response: On success, empty results will be returned.


WORKGROUP.ADDROLES

> Request example:

{
   "workgroup" : "226077",
   "role" : "2281"
}


> Response example:

{
   "seconds" : "0.067753",
   "jsonrpc" : "2.0",
   "id" : "6",
   "result" : {}
}


Try it!

Creates new workgroup/role relationships.

Required parameters:

ROLE

A single role identifier or an array of identifiers of roles for which to create
workgroup relationships for each specified workgroup.

WORKGROUP

A single workgroup identifier or an array of identifiers of workgroups for which
to create role relationships for each specified role.

No more than 10000 workgroup role relationships may be specified in one request.

If one or more of the specified workgroup role relationships already exist, the
remaining relationships (if any) will be created and no error will be returned.

Response: On success, empty results will be returned.


WORKGROUP.CREATE

> Request example:

{
   "zip" : 60616,
   "name" : "Test Workgroup 48659",
   "code" : "A001"
}


> Response example:

{
   "seconds" : "0.358585",
   "jsonrpc" : "2.0",
   "id" : "22",
   "result" : {
      "id" : "226094"
   }
}


Try it!

Creates a new workgroup record.

Parameters: Any attributes of a workgroup object (except id) may be specified. A
unique name parameter must be specified. Some workgroup attributes will default
from organization values or configuration settings if not specified or invalid.

Response: On success, an id attribute will provide the identifier for the new
workgroup.


WORKGROUP.DELETE

> Request example:

{
   "id" : "226089"
}


> Response example:

{
   "seconds" : "0.052778",
   "jsonrpc" : "2.0",
   "id" : "48",
   "result" : {}
}


Try it!

Deletes a workgroup record.


WORKGROUP.DELETECLIENTS

> Request example:

{
   "client" : "988",
   "workgroup" : "226072"
}


> Response example:

{
   "seconds" : "0.056321",
   "jsonrpc" : "2.0",
   "id" : "10",
   "result" : {}
}


Try it!

Required parameter: id.

Response: On success, empty results will be returned.

Deletes workgroup/client relationships.

Required parameters:

CLIENT

A single client identifier or an array of identifiers of clients for which to
delete workgroup relationships for each specified workgroup.

WORKGROUP

A single workgroup identifier or an array of identifiers of workgroups for which
to delete client relationships for each specified client.

No more than 10000 workgroup client relationships may be specified in one
request.

If one or more of the specified workgroup client relationships doesn't exist,
the remaining relationships (if any) will be deleted and no error will be
returned.

Response: On success, empty results will be returned.


WORKGROUP.DELETEDEPARTMENTS

> Request example:

{
   "workgroup" : "226073",
   "department" : "948"
}


> Response example:

{
   "seconds" : "0.061248",
   "jsonrpc" : "2.0",
   "id" : "8",
   "result" : {}
}


Try it!

Deletes workgroup/department relationships.

Required parameters:

DEPARTMENT

A single department identifier or an array of identifiers of departments for
which to delete workgroup relationships for each specified workgroup.

WORKGROUP

A single workgroup identifier or an array of identifiers of workgroups for which
to delete department relationships for each specified department.

No more than 10000 workgroup department relationships may be specified in one
request.

If one or more of the specified workgroup department relationships doesn't
exist, the remaining relationships (if any) will be deleted and no error will be
returned.

Response: On success, empty results will be returned.


WORKGROUP.DELETELOCATIONS

> Request example:

{
   "workgroup" : "226074",
   "location" : "29117"
}


> Response example:

{
   "seconds" : "0.809674",
   "jsonrpc" : "2.0",
   "id" : "8",
   "result" : {}
}


Try it!

Deletes workgroup/location relationships.

Required parameters:

LOCATION

A single location identifier or an array of identifiers of locations for which
to delete workgroup relationships for each specified workgroup.

WORKGROUP

A single workgroup identifier or an array of identifiers of workgroups for which
to delete location relationships for each specified location.

No more than 10000 workgroup location relationships may be specified in one
request.

If one or more of the specified workgroup location relationships doesn't exist,
the remaining relationships (if any) will be deleted and no error will be
returned.

Response: On success, empty results will be returned.


WORKGROUP.DELETEROLES

> Request example:

{
   "workgroup" : "226077",
   "role" : "2281"
}


> Response example:

{
   "seconds" : "0.067934",
   "jsonrpc" : "2.0",
   "id" : "8",
   "result" : {}
}


Try it!

Deletes workgroup/role relationships.

Required parameters:

ROLE

A single role identifier or an array of identifiers of roles for which to delete
workgroup relationships for each specified workgroup.

WORKGROUP

A single workgroup identifier or an array of identifiers of workgroups for which
to delete role relationships for each specified role.

No more than 10000 workgroup role relationships may be specified in one request.

If one or more of the specified workgroup role relationships doesn't exist, the
remaining relationships (if any) will be deleted and no error will be returned.

Response: On success, empty results will be returned.


WORKGROUP.GET

> Request example:

{
   "id" : "226093",
   "extended" : true,
   "include_permissions" : true
}


> Response example:

{
  "permissions": {
    "add_member_message": {
      "auth_write": true
    },
    "agent_private_only": {
      "auth_write": true
    },
    "allow_readonly": {
      "auth_write": true
    },
    "allow_shared": {
      "auth_write": true
    },
    "allow_shared_groups": {
      "auth_write": true
    },
    "allowed_conflict_mins": {
      "auth_write": true
    },
    "auto_shift_acknowledge": {
      "auth_write": true
    },
    "cancel_period": {
      "auth_write": true
    },
    "coordinator_assign": {
      "auth_write": true
    },
    "def_paytype": {
      "auth_write": true
    },
    "def_time_block": {
      "auth_write": true
    },
    "member_add_shift": {
      "auth_write": true
    },
    "no_pickups_message": {
      "auth_write": true
    },
    "no_trade": {
      "auth_write": true
    },
    "reminder_confirmation_custom_message": {
      "auth_write": true
    },
    "restrict_add_members": {
      "auth_write": true
    },
    "restrict_set_member_levels": {
      "auth_write": true
    },
    "restricted_roles": {
      "auth_write": true
    },
    "self_remove": {
      "auth_write": true
    },
    "show_confirmed": {
      "auth_write": true
    },
    "show_open": {
      "auth_write": true
    },
    "standby_min_score": {
      "auth_write": true
    },
    "standby_no_score": {
      "auth_write": true
    },
    "standby_notification_message": {
      "auth_write": true
    },
    "standby_notifications": {
      "auth_write": true
    },
    "standby_range": {
      "auth_write": true
    },
    "standby_use_range": {
      "auth_write": true
    },
    "standby_use_score": {
      "auth_write": true
    },
    "use_app_20": {
      "auth_write": true
    },
    "use_app_29": {
      "auth_write": true
    }
  },
  "referenced_objects": {
    "account": [
      {
        "first_name": "John",
        "id": "1",
        "last_name": "Smith",
        "screen_name": "John Smith"
      }
    ]
  },
  "workgroup": {
    "add_member_message": null,
    "address": "",
    "agent_private_only": "0",
    "allow_readonly": "3",
    "allow_shared": true,
    "allow_shared_groups": {},
    "allowed_conflict_mins": "360",
    "auto_add": true,
    "auto_shift_acknowledge": false,
    "cancel_period": "-1",
    "city": "",
    "code": "The Nacho Team",
    "contact_account": "1",
    "coordinator_assign": false,
    "country": "United States",
    "def_pay_rate": "0.00",
    "def_paytype": null,
    "def_time_block": null,
    "description": "Team Nacho has no location.",
    "fax": "",
    "flat_rate": null,
    "id": "928136",
    "level": 4,
    "location": "0",
    "member_add_shift": true,
    "mobile_phone": null,
    "name": "Team Nacho",
    "no_pickups_message": null,
    "no_trade": "0",
    "office_phone": "n/a",
    "org_default": false,
    "other_phone": null,
    "pager": null,
    "public_code": null,
    "public_email": "john.smith@servola.org",
    "public_info": "This group is for members only.\r\n\r\nAdd this group or inquire about membership",
    "public_phone": "n/a",
    "reminder_confirmation_custom_message": null,
    "restrict_add_members": "0",
    "restrict_set_member_levels": "0",
    "restricted_roles": "0",
    "self_remove": false,
    "show_confirmed": false,
    "show_open": false,
    "standby_min_score": null,
    "standby_no_score": null,
    "standby_notification_message": null,
    "standby_notifications": null,
    "standby_range": null,
    "standby_use_range": null,
    "standby_use_score": null,
    "state": "Washington",
    "team_category_1": null,
    "team_category_2": null,
    "team_category_3": null,
    "team_category_4": null,
    "team_category_5": null,
    "timezone": "Pacific Time (US/Can) (GMT-08:00)",
    "url": "https://www.shiftboard.com/johnsmithtest",
    "use_app_20": null,
    "use_app_29": null,
    "view_public": true,
    "view_public_non_org": true,
    "zip": ""
  }
}


Try it!

Returns information about a workgroup.

Parameters:

ID

Required. id of the workgroup for which to return information.

EXTENDED

Boolean; if specified and false, the results returned will be a basic set of
attributes; otherwise an extended set of attributes will be returned for each
shift.

INCLUDE_PERMISSIONS

Boolean, defaults to false. Indicates that, in addition to the workgroup
attribute, the results should include a permissions attribute giving information
about write permission for individual fields returned in workgroup attribute.
The fields that are listed in permissions section are those workgroup fields
that can be configured.

REFERENCED_OBJECTS

Boolean, defaults to true. Indicates that, in addition to the workgroup
attribute, the results should include a referenced_objects attribute giving
information about objects referred to by the returned workgroup.

The response results workgroup attribute will be the selected workgroup object.

If requested, the response results referenced_objects attribute will be an
object containing one or more object type names as attributes; for each object
type the value will be an array of those instances of that type of object which
are referred to in the workgroup results, with only selected minimal attributes
provided:

ACCOUNT

id, first_name, last_name, and screen_name attributes are provided.


WORKGROUP.LIST

> Request example:

{
   "select" : {
      "workgroup" : "226093"
   },
   "extended" : true
}


> Response example:

{
   "seconds" : "0.051276",
   "jsonrpc" : "2.0",
   "id" : "21",
   "result" : {
      "count" : "1",
      "page" : {
         "this" : {
            "batch" : 25,
            "start" : 1
         }
      },
      "workgroups" : [
         {
            "contact_account" : "948",
            "public_info" : "some public info",
            "state" : "California",
            "org_default" : true,
            "url" : "http://www.servola.org/",
            "address" : "1 Main St",
            "id" : "226093",
            "allowed_conflict_mins" : "90",
            "code" : "thecode",
            "level": 2,
            "location" : "29120",
            "timezone" : "Greenwich Mean Time : Dublin, Lisbon, London (GMT)",
            "public_phone" : "5555551212",
            "view_public" : true,
            "show_confirmed" : true,
            "name" : "Test Workgroup 226093",
            "description" : "some info",
            "zip" : "90210",
            "mobile_phone" : "5555551212",
            "view_public_non_org" : true,
            "auto_add" : true,
            "public_email" : "test@servola.org",
            "public_code" : "public code",
            "city" : "Beverly Hills",
            "fax" : "5555551212",
            "allow_shared" : true,
            "self_remove" : true,
            "country" : "USA",
            "office_phone" : "5555551212",
            "cancel_period" : "5",
            "member_add_shift" : false,
            "show_open" : true,
            "other_phone" : "5555551212",
            "pager" : "5555551212"
         }
      ]
   }
}


Try it!

Returns information about workgroups. Uses pagination. Uses select criteria.

Optional parameters:

SELECT

An object specifying selection criteria for this request. May specify selected
workgroup object attributes and values to select. The following additional
criteria may be specified:

DELETED

true if deleted workgroups should be returned.

SEARCH

A generic search string; select workgroups containing this string in name or
code.

EXTENDED

Boolean; if specified and true, the results returned will include an extended
set of attributes; otherwise a basic set of attributes will be returned for each
workgroup.

LEVEL

Filter workgroups based on the caller's membership level. The filter is a lower
limit; any workgroups the caller has access to and is the specified level and
above, will be returned.

SHARED

Boolean; if specified and true, the results returned will also include
workgroups that are shared to the account.

REFERENCED_OBJECTS

Boolean, defaults to true. Indicates that, in addition to the workgroups
attribute, the results should include a referenced_objects attribute giving
information about objects referred to by the returned workgroups.

The response results workgroups attribute will be an array of the current page
of selected workgroups. Each element of the array will be a workgroup object
containing basic or basic and extended workgroup fields.

If requested, the response results referenced_objects attribute will be an
object containing one or more object type names as attributes; for each object
type the value will be an array of those instances of that type of object which
are referred to in the workgroups results, with only selected minimal attributes
provided:

ACCOUNT

id, first_name, last_name, and screen_name attributes are provided.


WORKGROUP.LISTJOINABLE

For sites that allow for internal team recruitment, this method will list all
public workgroups that are accepting new members from within the site. Only
workgroups that the requesting member is not already a member of will be
returned.

> Request example:

{}


> Response example:

{ "id" : "1", "jsonrpc" : "2.0", "result" : { "count" : "2", "page" : { "this" : { "batch" : "20", "start" : 1 } }, "workgroups" : [ { "code" : "", "contact_account" : "88810", "id" : "23041", "level" : 1, "name" : "First Joinable Workgroup", "user_actions" : { "delete" : false, "edit" : false, "view" : false, "view_members" : false }, "zip" : "98765" }, { "code" : "", "contact_account" : "88810", "id" : "23052", "level" : 1, "name" : "Second Joinable Workgroup", "user_actions" : { "delete" : false, "edit" : false, "view" : false, "view_members" : false }, "zip" : "98765" } ] }, "seconds" : 0.090942 }


Try it!

Returns information about workgroups. Uses pagination. Uses select criteria.


WORKGROUP.LISTCLIENTS

> Request example:

{
   "select" : {
      "workgroup" : "226072"
   }
}


> Response example:

{
   "seconds" : "0.040039",
   "jsonrpc" : "2.0",
   "id" : "9",
   "result" : {
      "count" : "1",
      "page" : {
         "this" : {
            "batch" : 25,
            "start" : 1
         }
      },
      "workgroup_clients" : [
         {
            "client" : "988",
            "workgroup" : "226072"
         }
      ]
   }
}


Try it!

Returns information about workgroup/client relationships. Uses pagination.

Optional parameters: select object with the following optional attributes:

CLIENT

A single client identifier or an array of identifiers of clients for which to
look up workgroup relationships. By default, all clients will be queried.

WORKGROUP

A single workgroup identifier or an array of identifiers of workgroups for which
to look up client relationships. By default, all workgroups for which the API
user is a manager will be queried.

The response results workgroup_clients attribute will be an array of the current
page of workgroup client relationships. Each element of the array may have the
following attributes:

CLIENT

A client identifier.

WORKGROUP

A workgroup identifier.


WORKGROUP.LISTCOVERAGEBLOCKS

Returns information about workgroup/coverage block relationships. Uses
pagination. Uses select criteria.

Optional parameters: "select" object with the following optional attributes:

workgroup A single workgroup identifier or an array of identifiers of workgroups
for which to look up coverage block relationships. By default, all workgroups
for which the API user is a manager will be queried.

The response results "workgroup_shift/coverage blocks" attribute will be an
array of the current page of workgroup coverage block relationships. Each
element of the array may have the following attributes: days Number of days the
coverage block spans. duration Number of hours the coverage block spans.
end_time The time in which the coverage block ends. name The name of the
coverage block. start_time The time in which the coverage block starts.
time_block The coverage block identifier. workgroup A workgroup identifier.


WORKGROUP.LISTDEPARTMENTS

> Request example:

{
   "select" : {
      "workgroup" : "226085"
   }
}


> Response example:

{
   "seconds" : "0.050097",
   "jsonrpc" : "2.0",
   "id" : "60",
   "result" : {
      "count" : "1",
      "page" : {
         "this" : {
            "batch" : 25,
            "start" : 1
         }
      },
      "workgroup_departments" : [
         {
            "workgroup" : "226085",
            "department" : "949"
         }
      ]
   }
}


Try it!

Returns information about workgroup/department relationships. Uses pagination.

Optional parameters: select object with the following optional attributes:

DEPARTMENT

A single department identifier or an array of identifiers of departments for
which to look up workgroup relationships. By default, all departments will be
queried.

WORKGROUP

A single workgroup identifier or an array of identifiers of workgroups for which
to look up department relationships. By default, all workgroups for which the
API user is a manager will be queried.

The response results workgroup_departments attribute will be an array of the
current page of workgroup department relationships. Each element of the array
may have the following attributes:

DEPARTMENT

A department identifier.

WORKGROUP

A workgroup identifier.


WORKGROUP.LISTLOCATIONS

> Request example:

{
   "select" : {
      "workgroup" : "226085"
   }
}


> Response example:

{
   "seconds" : "0.056378",
   "jsonrpc" : "2.0",
   "id" : "59",
   "result" : {
      "count" : "1",
      "page" : {
         "this" : {
            "batch" : 25,
            "start" : 1
         }
      },
      "workgroup_locations" : [
         {
            "workgroup" : "226085",
            "location" : "29118"
         }
      ]
   }
}


Try it!

Returns information about workgroup/location relationships. Uses pagination.

Optional parameters: select object with the following optional attributes:

LOCATION

A single location identifier or an array of identifiers of locations for which
to look up workgroup relationships. By default, all locations will be queried.

WORKGROUP

A single workgroup identifier or an array of identifiers of workgroups for which
to look up location relationships. By default, all workgroups for which the API
user is a manager will be queried.

The response results workgroup_locations attribute will be an array of the
current page of workgroup location relationships. Each element of the array may
have the following attributes:

LOCATION

A location identifier.

WORKGROUP

A workgroup identifier.


WORKGROUP.LISTRESOURCES

Returns information about workgroup/resource relationships. Uses pagination.
Uses select criteria.

Optional parameters: "select" object with the following optional attributes:
resource A single resource identifier or an array of identifiers of resources
for which to look up workgroup relationships. By default, all resources will be
queried. workgroup A single workgroup identifier or an array of identifiers of
workgroups for which to look up resource relationships. By default, all
workgroups for which the API user is a manager will be queried.

The response results "workgroup_resources" attribute will be an array of the
current page of workgroup resource relationships. Each element of the array may
have the following attributes: resource A resource identifier. workgroup A
workgroup identifier.

> Request example:

{"select":{"workgroup":"226085"}}


> Response example:

{"seconds":"0.148687","jsonrpc":"2.0","id":"58","result":{"workgroup_resources":[{"workgroup":"226085","resource":"2"}],"count":"1","page":{"this":{"batch":25,"start":1}}}}


Try it!


WORKGROUP.LISTROLES

> Request example:

{
   "select" : {
      "workgroup" : "226085"
   }
}


> Response example:

{
   "seconds" : "0.148687",
   "jsonrpc" : "2.0",
   "id" : "58",
   "result" : {
      "count" : "1",
      "workgroup_roles" : [
         {
            "workgroup" : "226085",
            "role" : "2282"
         }
      ],
      "page" : {
         "this" : {
            "batch" : 25,
            "start" : 1
         }
      }
   }
}


Returns information about workgroup/role relationships. Uses pagination.

Optional parameters:

RESTRICTED_ROLES

Boolean, defaults to false. If true and the caller is a site administrator, each
workgroup_roles element will also include an account attribute giving an array
of account ids of accounts with the role enabled for the workgroup.

SELECT

An object specifying selection criteria for this request. The available criteria
include:

ROLE

A single role identifier or an array of identifiers of roles for which to look
up workgroup relationships. By default, all roles will be queried.

WORKGROUP

A single workgroup identifier or an array of identifiers of workgroups for which
to look up role relationships. By default, all workgroups for which the API user
is a manager will be queried.

The response results workgroup_roles attribute will be an array of the current
page of workgroup role relationships. Each element of the array may have the
following attributes:

ROLE

A role identifier.

WORKGROUP

A workgroup identifier.

INCLUDE_PERMISSIONS

Boolean, defaults to false. This parameter is outside of the scope of the select
object. Indicates that, in addition to the workgroup attribute, the results
should include a permissions attribute giving information about write permission
for individual fields returned in workgroup attribute. The fields that are
listed in permissions section are those workgroup fields that can be configured.


WORKGROUP.UNDELETE

> Request example:

{
   "id" : "226089"
}


> Response example:

{
   "seconds" : "0.052778",
   "jsonrpc" : "2.0",
   "id" : "48",
   "result" : {}
}


Try it!

Undeletes a workgroup record.

Required parameter id, a workgroup identifier or array of workgroup identifiers.

Optional boolean parameter add_former_workgroup_members (defaults to true)
requests that memberships removed when the workgroup was deleted be re-added if
possible.

Response: On success, empty results will be returned.


WORKGROUP.UPDATE

> Request example:

{
   "name" : "Test Workgroup 226094",
   "id" : "226094"
}


> Response example:

{
   "seconds" : "0.542458",
   "jsonrpc" : "2.0",
   "id" : "23",
   "result" : {}
}


Try it!

Updates a workgroup record.

Required parameter: id. Any other workgroup object attributes may be specified.

Response: On success, empty results will be returned.

JSON Example PHP Code