openapi: 3.0.4 info: title: Bench AccountActivities PersonUnavailabilities API description: "
\n The API is currently at version 1.0. All API endpoints (other than\n authentication) require you to specify the API version as part of the path.\n
\n Authentication requests should be made to /auth/signin,\n as documented below. All other API requests should be made to\n sub-paths of /rp/api/1.0/....\n
\n API requests are authenticated using an OAuth Bearer token.\n You can get a token by authenticating your user by sending a\n POST request to /auth/signin, with \"username and \"password\"\n parameters form-encoded in the body of the request.\n\n POST /auth/signin HTTP/1.1\n Content-Type: application/x-www-form-urlencoded\n\n username=user@example.com&password=some-secret-password\n
\n The response will be a JSON object including both\n \"access_token\" and \"refresh_token\" property.\n All other requests against the Bench API should include an\n authorization header: Authorization: Bearer xxxYYYzzz,\n where xxxYYYzzz is the value of \"access_token\" in the response.\n
\n For example:\n\n $ curl https://bench.gobridgit.com/auth/signin -H 'Content-Type: application/x-www-form-urlencoded' --data-urlencode 'username=someone@example.com' --data-urlencode 'password=[...snip...]'\n {\n \"access_token\": \"...snip...\",\n \"token_type\": \"Bearer\",\n \"refresh_token\": \"...snip...\"\n \"expiry\": \"2020-01-01T00:00:00.413440849Z\"\n }\n\n
\n The refresh token can be used to generate new session by request with /auth/token endpoint:\n\n POST /auth/token HTTP/1.1\n Content-Type: application/x-www-form-urlencoded\n\n grant_type=refresh_token&refresh_token=tGzv3JOkF0XG5Qx2TlKWIA\n
\n Note that once the refresh token is used, the previous access and refresh token is no longer valid.\n
\n For example:\n\n $ curl https://bench.gobridgit.com/auth/token -H 'Content-Type: application/x-www-form-urlencoded' --data-urlencode 'grant_type=refresh_token' --data-urlencode 'refresh_token=[...snip...]'\n {\n \"access_token\": \"...snip...\",\n \"token_type\": \"Bearer\",\n \"refresh_token\": \"...snip...\"\n \"expiry\": \"2020-01-01T00:00:00.413440849Z\"\n }\n
\n Several of the API endpoints are paginated. These are denoted by\n including the offset (zero-based offset) and limit query\n parameters. For example, to request the 10 items,\n set the offset=0 to limit=10.\n
\n NOTE: the result set contains items with index of 0-9\n
\n To request the next 10 items (starting at index 10),\n set the offset=10 to limit=10\n
\n Responses to paginated API endpoints return a JSON array of objects.\n If there are results beyond the page you have requested, the server\n will set a query-has-more: true header in the response.\n
\n GET and DELETE requests should have parameters encoded as URL query\n parameters. Boolean values should be encoded as true and\n false, not as 1 and 0.\n
\n Errors are returned for some response codes such as 400 Bad Request in the\n following format:\n\n {\n \"errors\": [\n {\n \"errorType\": \"ValidationError\",\n \"description\": \"The value of Name must be a string with a minimum length of 1 and a maximum length of 8 and not whitespace.\",\n \"field\": \"Name\",\n \"values\": [\n null\n ]\n }\n ],\n \"title\": \"One or more validation errors occurred.\",\n \"status\": 400,\n \"instance\": \"api/v1/accounts/0/persons\",\n \"requestUid\": \"123e4567-e89b-12d3-a456-426614174000\"\n }\n
{
"errors": [
{
"errorType": "ValidationError",
"description": "End date cannot be before start date",
"errorCode": null,
"values": [
"2020-04-19",
"2020-04-18"
],
"innerException": null,
"hResult": -2146233088
}
],
"title": "One or more validation errors occurred.",
"status": 400,
"instance": "/api/v1/accounts/7/persons/unavailabilities?start=2020-04-19&end=2020-04-18",
"requestUid": "603504966a0861525e83e9f7dfbc2706"
}'
'401':
description: Unauthorized
'403':
description: Forbidden
/rp/api/v1/accounts/{accountId}/persons/{id}/unavailabilities:
get:
tags:
- PersonUnavailabilities
summary: Gets the periods of unavailability for a person in the given account.
description: 'NOTE: If you do not have Private Read permissions, description will return as null for private periods of unavailability.{
"errors": [
{
"errorType": "Overlapped",
"description": "Requested unavailable date range outside of employment dates.",
"errorCode": null,
"values": [
"2015-04-01 - 2015-04-30"
],
"innerException": null,
"hResult": -2146233088
}
],
"title": "One or more validation errors occurred.",
"status": 400,
"instance": "/api/v1/accounts/7/persons/unavailabilities/2",
"requestUid": "603504966a0861525e83e9f7dfbc2706"
}
Example when start and end dates overlap with each other
{
"errors": [
{
"errorType": "Overlapped",
"description": "Unavailable date ranges overlap with each other.",
"errorCode": null,
"values": [
"2015-04-01 - 2015-04-30",
"2015-04-15 - 2015-05-30"
],
"innerException": null,
"hResult": -2146233088
}
],
"title": "One or more validation errors occurred.",
"status": 400,
"instance": "/api/v1/accounts/7/persons/unavailabilities/2",
"requestUid": "603504966a0861525e83e9f7dfbc2706"
}'
'401':
description: Unauthorized
'403':
description: Forbidden
patch:
tags:
- PersonUnavailabilities
summary: Updates periods of unavailability to a person in the given account
description: 'This endpoint will only update the fields that are provided in the objects of the array. Any fields not included will use the existing values.
NOTE: Periods of unavailability cannot overlap with employment dates and cannot overlap with existing periods of unavailability.
NOTE: If you do not have Private Write permissions, you can update the start and end date of private periods of unavailability, but not the description or whether it''s private.{
"errors": [
{
"errorType": "InvalidId",
"description": "Invalid unavailability id provided.",
"errorCode": null,
"values": [
"5",
"7"
],
"innerException": null,
"hResult": -2146233088
}
],
"title": "One or more validation errors occurred.",
"status": 400,
"instance": "/api/v1/accounts/7/persons/unavailabilities/2",
"requestUid": "603504966a0861525e83e9f7dfbc2706"
}
Example when new start date after end date or new end date before start date
{
"errors": [
{
"errorType": "ValidationError",
"description": "End date cannot be before start date",
"errorCode": null,
"values": [
"2020-04-19",
"2020-04-18"
],
"innerException": null,
"hResult": -2146233088
}
],
"title": "One or more validation errors occurred.",
"status": 400,
"instance": "/api/v1/accounts/7/persons/unavailabilities/2",
"requestUid": "603504966a0861525e83e9f7dfbc2706"
}
Example when start and end date are outside employment dates
{
"errors": [
{
"errorType": "Overlapped",
"description": "Requested unavailable date range outside of employment dates.",
"errorCode": null,
"values": [
"2015-04-01 - 2015-04-30"
],
"innerException": null,
"hResult": -2146233088
}
],
"title": "One or more validation errors occurred.",
"status": 400,
"instance": "/api/v1/accounts/7/persons/unavailabilities/2",
"requestUid": "603504966a0861525e83e9f7dfbc2706"
}
Example when start and end dates overlap with each other
{
"errors": [
{
"errorType": "Overlapped",
"description": "Unavailable date ranges overlap with each other.",
"errorCode": null,
"values": [
"2015-04-01 - 2015-04-30",
"2015-04-15 - 2015-05-30"
],
"innerException": null,
"hResult": -2146233088
}
],
"title": "One or more validation errors occurred.",
"status": 400,
"instance": "/api/v1/accounts/7/persons/unavailabilities/2",
"requestUid": "603504966a0861525e83e9f7dfbc2706"
}'
'401':
description: Unauthorized
'403':
description: Forbidden
'409':
description: 'Conflict: Example when updated unavailabilities overlap with existing unavailabilities
{
"errors": [
{
"errorType": "Overlapped",
"description": "Unavailable date ranges overlap with existing unavailable dates.",
"errorCode": null,
"innerException": null,
"hResult": -2146233088
}
],
"title": "One or more validation errors occurred.",
"status": 409,
"instance": "/api/v1/accounts/7/persons/unavailabilities/2",
"requestUid": "603504966a0861525e83e9f7dfbc2706"
}'
delete:
tags:
- PersonUnavailabilities
summary: Removes periods of unavailability from a person in the given account
description: '{
"errors": [
{
"errorType": "InvalidId",
"description": "Invalid unavailability id provided.",
"errorCode": null,
"values": [
"5",
"7"
],
"innerException": null,
"hResult": -2146233088
}
],
"title": "One or more validation errors occurred.",
"status": 400,
"instance": "/api/v1/accounts/7/persons/unavailabilities/2",
"requestUid": "603504966a0861525e83e9f7dfbc2706"
}
'
'401':
description: Unauthorized
'403':
description: Forbidden
components:
schemas:
UnavailabilityUpdateRequest:
type: object
properties:
id:
type: integer
format: int64
description:
maxLength: 50
minLength: 0
type: string
nullable: true
startDate:
type: string
format: date-time
nullable: true
endDate:
type: string
format: date-time
nullable: true
isPrivate:
type: boolean
nullable: true
additionalProperties: false
NewUnavailabilityRequest:
type: object
properties:
description:
maxLength: 50
minLength: 0
type: string
nullable: true
startDate:
type: string
format: date-time
endDate:
type: string
format: date-time
nullable: true
isPrivate:
type: boolean
rangeType:
enum:
- PreEmployment
- PostEmployment
- Unavailability
- TimeOff
type: string
additionalProperties: false
UnavailabilityResponse:
type: object
properties:
id:
type: integer
format: int64
example: 46
rangeType:
enum:
- PreEmployment
- PostEmployment
- Unavailability
- TimeOff
type: string
example: Unavailability
startDate:
type: string
format: date-time
example: '2020-04-21'
endDate:
type: string
format: date-time
example: '2020-05-21'
isPrivate:
type: boolean
example: false
description:
type: string
nullable: true
example: Parental Leave
externalId:
type: string
nullable: true
example: '46'
additionalProperties: false
PersonUnavailabilitiesQueryResponse:
type: object
properties:
state:
enum:
- Active
- Deactivated
- All
type: string
example: Active
personId:
type: integer
format: int64
example: 82
unavailabilities:
type: array
items:
$ref: '#/components/schemas/UnavailabilityResponse'
nullable: true
additionalProperties: false
securitySchemes:
Bearer:
type: http
description: Standard Authorization header using the Bearer scheme
scheme: bearer
bearerFormat: JWT