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\n

URL 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\n

Authentication

\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\n

Pagination

\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\n

Request 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\n

Errors

\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