openapi: 3.0.4
info:
title: Bench AccountActivities PersonHistoricalExperiences API
description: "
Versioning
\n\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\nURL Paths
\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\nAuthentication
\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\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\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\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\nPagination
\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\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\nRequest Encoding
\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\nErrors
\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
\n"
version: '1.0'
servers:
- url: https://bench.gobridgit.com
description: Bridgit Bench production
security:
- {}
tags:
- name: PersonHistoricalExperiences
paths:
/rp/api/v1/accounts/{accountId}/persons/{personId}/historical-experiences:
get:
tags:
- PersonHistoricalExperiences
summary: List historical experience entries for a person.
description: '
Permissions
Person: Read'
operationId: PersonHistoricalExperiences_GetAll
parameters:
- name: accountId
in: path
description: The account ID.
required: true
schema:
type: integer
format: int32
- name: personId
in: path
description: The person ID.
required: true
schema:
type: integer
format: int64
- name: limit
in: query
description: How many to retrieve (1-100, default 50).
schema:
maximum: 100
minimum: 1
type: integer
format: int32
default: 50
- name: offset
in: query
description: How many to skip (default 0).
schema:
type: integer
format: int32
default: 0
responses:
'200':
description: The paginated list of historical experience entries. The `query-has-more` header indicates whether more entries are available.
content:
text/plain:
schema:
type: array
items:
$ref: '#/components/schemas/HistoricalExperienceEntryWithExperienceFields'
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/HistoricalExperienceEntryWithExperienceFields'
text/json:
schema:
type: array
items:
$ref: '#/components/schemas/HistoricalExperienceEntryWithExperienceFields'
'403':
description: The user is not authorized to view the historical experience entries.
post:
tags:
- PersonHistoricalExperiences
summary: Create a new historical experience entry.
description: '
Permissions
Account: Write'
operationId: PersonHistoricalExperiences_Post
parameters:
- name: accountId
in: path
description: The account ID.
required: true
schema:
type: integer
format: int32
- name: personId
in: path
description: The person ID.
required: true
schema:
type: integer
format: int64
requestBody:
description: The historical experience request.
content:
application/json-patch+json:
schema:
$ref: '#/components/schemas/HistoricalExperienceRequest'
application/json:
schema:
$ref: '#/components/schemas/HistoricalExperienceRequest'
text/json:
schema:
$ref: '#/components/schemas/HistoricalExperienceRequest'
application/*+json:
schema:
$ref: '#/components/schemas/HistoricalExperienceRequest'
required: true
responses:
'201':
description: The created historical experience entry.
content:
text/plain:
schema:
$ref: '#/components/schemas/HistoricalExperienceFullEntry'
application/json:
schema:
$ref: '#/components/schemas/HistoricalExperienceFullEntry'
text/json:
schema:
$ref: '#/components/schemas/HistoricalExperienceFullEntry'
'403':
description: The user is not authorized to create the historical experience entry.
'422':
description: The request is invalid.
/rp/api/v1/accounts/{accountId}/persons/{personId}/historical-experiences/{historicalExperienceId}:
get:
tags:
- PersonHistoricalExperiences
summary: Get a single historical experience entry.
description: '
Permissions
Person: Read'
operationId: PersonHistoricalExperiences_GetOne
parameters:
- name: accountId
in: path
description: The account ID.
required: true
schema:
type: integer
format: int32
- name: personId
in: path
description: The person ID.
required: true
schema:
type: integer
format: int64
- name: historicalExperienceId
in: path
description: The historical experience ID.
required: true
schema:
type: string
format: uuid
responses:
'201':
description: Created
content:
text/plain:
schema:
$ref: '#/components/schemas/HistoricalExperienceEntryWithExperienceFields'
application/json:
schema:
$ref: '#/components/schemas/HistoricalExperienceEntryWithExperienceFields'
text/json:
schema:
$ref: '#/components/schemas/HistoricalExperienceEntryWithExperienceFields'
'200':
description: The historical experience entry.
'403':
description: The user is not authorized to view the historical experience entry.
delete:
tags:
- PersonHistoricalExperiences
summary: Delete a historical experience entry.
description: '
Permissions
Account: Write'
operationId: PersonHistoricalExperiences_Delete
parameters:
- name: accountId
in: path
description: The account ID.
required: true
schema:
type: integer
format: int32
- name: personId
in: path
description: The person ID.
required: true
schema:
type: integer
format: int64
- name: historicalExperienceId
in: path
description: The historical experience ID.
required: true
schema:
type: string
format: uuid
responses:
'204':
description: The historical experience entry was deleted.
'403':
description: The user is not authorized to delete the historical experience entry.
put:
tags:
- PersonHistoricalExperiences
summary: Update historical experience entry for a person
description: '
Permissions
Account: Write'
operationId: PersonHistoricalExperiences_Update
parameters:
- name: accountId
in: path
description: The Account ID
required: true
schema:
type: integer
format: int32
- name: personId
in: path
description: The Person ID
required: true
schema:
type: integer
format: int64
- name: historicalExperienceId
in: path
description: The Historical Experience ID
required: true
schema:
type: string
format: uuid
requestBody:
description: The Historical Experience Update Request
content:
application/json-patch+json:
schema:
$ref: '#/components/schemas/HistoricalExperienceUpdateRequest'
application/json:
schema:
$ref: '#/components/schemas/HistoricalExperienceUpdateRequest'
text/json:
schema:
$ref: '#/components/schemas/HistoricalExperienceUpdateRequest'
application/*+json:
schema:
$ref: '#/components/schemas/HistoricalExperienceUpdateRequest'
required: true
responses:
'200':
description: Success
content:
text/plain:
schema:
$ref: '#/components/schemas/HistoricalExperienceEntryWithExperienceFields'
application/json:
schema:
$ref: '#/components/schemas/HistoricalExperienceEntryWithExperienceFields'
text/json:
schema:
$ref: '#/components/schemas/HistoricalExperienceEntryWithExperienceFields'
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
patch:
tags:
- PersonHistoricalExperiences
summary: Patch historical experience entry for a person
description: '
Permissions
Account: Write'
operationId: PersonHistoricalExperiences_Patch
parameters:
- name: accountId
in: path
description: The Account ID
required: true
schema:
type: integer
format: int32
- name: personId
in: path
description: The Person ID
required: true
schema:
type: integer
format: int64
- name: historicalExperienceId
in: path
description: The Historical Experience ID
required: true
schema:
type: string
format: uuid
requestBody:
description: The Historical Experience Patch Request
content:
application/json-patch+json:
schema:
$ref: '#/components/schemas/HistoricalExperiencePatchRequest'
application/json:
schema:
$ref: '#/components/schemas/HistoricalExperiencePatchRequest'
text/json:
schema:
$ref: '#/components/schemas/HistoricalExperiencePatchRequest'
application/*+json:
schema:
$ref: '#/components/schemas/HistoricalExperiencePatchRequest'
required: true
responses:
'200':
description: Success
content:
text/plain:
schema:
$ref: '#/components/schemas/HistoricalExperienceEntryWithExperienceFields'
application/json:
schema:
$ref: '#/components/schemas/HistoricalExperienceEntryWithExperienceFields'
text/json:
schema:
$ref: '#/components/schemas/HistoricalExperienceEntryWithExperienceFields'
'400':
description: Bad Request
'403':
description: Forbidden
components:
schemas:
HistoricalExperienceUpdateRequest:
required:
- experienceFields
- roleName
type: object
properties:
roleName:
type: string
nullable: true
experienceFields:
type: array
items:
$ref: '#/components/schemas/HistoricalExperienceFieldValueRequest'
nullable: true
assignmentStartDate:
type: string
format: date-time
nullable: true
assignmentEndDate:
type: string
format: date-time
nullable: true
assignmentDuration:
type: integer
format: int32
nullable: true
assignmentHours:
type: number
format: double
nullable: true
additionalProperties: false
HistoricalExperienceFullEntry:
required:
- projectName
- roleName
type: object
properties:
historicalProjectId:
type: string
format: uuid
projectName:
type: string
nullable: true
projectDescription:
type: string
nullable: true
projectStartDate:
type: string
format: date-time
nullable: true
projectEndDate:
type: string
format: date-time
nullable: true
companyName:
type: string
nullable: true
experienceFields:
type: array
items:
$ref: '#/components/schemas/HistoricalExperienceFieldValue'
description: "List of experience fields for this historical experience entry.\n \nNote that you should avoid touching this property directly and use the `ExperienceFieldsDict` property instead.\nThis property is only here to provide a JSON representation of the experience fields.\nThe dictionary version is more useful in most cases."
nullable: true
historicalExperienceId:
type: string
format: uuid
roleName:
type: string
nullable: true
currentCompany:
type: boolean
assignmentStartDate:
type: string
format: date-time
nullable: true
assignmentEndDate:
type: string
format: date-time
nullable: true
assignmentDuration:
type: integer
format: int32
assignmentHours:
type: number
format: double
nullable: true
additionalProperties: false
HistoricalExperienceFieldValue:
required:
- fieldName
- value
type: object
properties:
experienceFieldId:
type: string
format: uuid
experienceFieldValueId:
type: string
format: uuid
fieldName:
type: string
nullable: true
value:
type: string
nullable: true
additionalProperties: false
HistoricalExperienceEntryWithExperienceFields:
required:
- roleName
type: object
properties:
experienceFields:
type: array
items:
$ref: '#/components/schemas/HistoricalExperienceFieldValue'
nullable: true
historicalExperienceId:
type: string
format: uuid
roleName:
type: string
nullable: true
currentCompany:
type: boolean
assignmentStartDate:
type: string
format: date-time
nullable: true
assignmentEndDate:
type: string
format: date-time
nullable: true
assignmentDuration:
type: integer
format: int32
assignmentHours:
type: number
format: double
nullable: true
additionalProperties: false
HistoricalExperiencePatchRequest:
type: object
properties:
roleName:
type: string
nullable: true
assignmentStartDate:
type: string
format: date-time
nullable: true
assignmentEndDate:
type: string
format: date-time
nullable: true
assignmentDuration:
type: integer
format: int32
nullable: true
assignmentHours:
type: number
format: double
nullable: true
additionalProperties: false
HistoricalExperienceFieldValueRequest:
type: object
properties:
experienceFieldId:
type: string
format: uuid
experienceFieldValueId:
type: string
format: uuid
nullable: true
value:
type: string
nullable: true
additionalProperties: false
HistoricalExperienceRequest:
required:
- projectName
- roleName
type: object
properties:
projectName:
type: string
nullable: true
projectStartDate:
type: string
format: date-time
nullable: true
projectEndDate:
type: string
format: date-time
nullable: true
roleName:
type: string
nullable: true
currentCompany:
type: boolean
experienceFields:
type: array
items:
$ref: '#/components/schemas/HistoricalExperienceFieldValueRequest'
nullable: true
projectDescription:
type: string
nullable: true
companyName:
type: string
nullable: true
assignmentStartDate:
type: string
format: date-time
nullable: true
assignmentEndDate:
type: string
format: date-time
nullable: true
assignmentDuration:
type: integer
format: int32
nullable: true
assignmentHours:
type: number
format: double
nullable: true
additionalProperties: false
securitySchemes:
Bearer:
type: http
description: Standard Authorization header using the Bearer scheme
scheme: bearer
bearerFormat: JWT