openapi: 3.0.4 info: title: Bench AccountActivities PersonCertifications 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: PersonCertifications paths: /rp/api/v1/accounts/{accountId}/persons/{personId}/certifications: get: tags: - PersonCertifications summary: Gets the certifications for the given person description: '
Permissions
Person: Read
HourlyProfile: Read
PersonCerts: Read
HourlyCerts: Read
Private: Read' operationId: PersonCertifications_Query 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: int32 - name: offset in: query description: Offset for pagination schema: maximum: 2147483647 minimum: 0 type: integer format: int32 default: 0 - name: limit in: query description: Maximum number of results in this page schema: maximum: 2147483647 minimum: 1 type: integer format: int32 default: 1000 - name: ids in: query description: (Optional) Filters the result to contain person certifications that match the ids passed in. schema: type: array items: type: integer format: int64 responses: '200': description: 'Success: List of person certifications on the account sorted by name' content: application/json: schema: type: array items: $ref: '#/components/schemas/PersonCertificationResponse' '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden post: tags: - PersonCertifications summary: Adds a certification on the given person. description: '
Permissions
Person: Read
HourlyProfile: Read
PersonCerts: Write
HourlyCerts: Write' operationId: PersonCertifications_Add 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: int32 requestBody: description: Request object that contains the certification details content: application/json: schema: $ref: '#/components/schemas/NewPersonCertificationRequest' required: true responses: '201': description: Success content: application/json: schema: $ref: '#/components/schemas/PersonCertificationResponse' '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden '409': description: Conflict /rp/api/v1/accounts/{accountId}/persons/{personId}/certifications/{id}: get: tags: - PersonCertifications summary: Gets the specified certification for the given person by ID description: '
Permissions
Person: Read
HourlyProfile: Read
PersonCerts: Read
HourlyCerts: Read
Private: Read' operationId: PersonCertifications_Get 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: int32 - name: id in: path description: The Certification's ID required: true schema: type: integer format: int32 responses: '200': description: 'Success: Certification model' content: application/json: schema: $ref: '#/components/schemas/PersonCertificationResponse' '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden put: tags: - PersonCertifications summary: Updates a certification for the given person description: '
Permissions
Person: Read
HourlyProfile: Read
PersonCerts: Write
HourlyCerts: Write' operationId: PersonCertifications_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: int32 - name: id in: path description: Id of the certification to update required: true schema: type: integer format: int32 requestBody: description: Request object in the body with fields to change content: application/json: schema: $ref: '#/components/schemas/PersonCertificationUpdateRequest' required: true responses: '204': description: No Content '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden '409': description: Conflict delete: tags: - PersonCertifications summary: Deletes a certification from the given person and the linked attachments description: 'NOTE: this will delete all linked attachments.
Permissions
Person: Read
HourlyProfile: Read
Private: Read
PersonCerts: Write
HourlyCerts: Write' operationId: PersonCertifications_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: int32 - name: id in: path description: Id of the certification to remove required: true schema: type: integer format: int32 responses: '204': description: No Content '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden components: schemas: NewPersonCertificationRequest: type: object properties: certificationId: type: integer format: int64 example: 1234 expiryDate: type: string format: date-time nullable: true example: '2021-01-01' certificationDate: type: string format: date-time nullable: true example: '2021-12-20' certificationDescription: type: string description: Must be no greater than ResourcePlanning.Contracts.NewPersonCertificationRequest.MaxDescriptionLength characters. nullable: true example: '"Certification for fall arrest"' additionalProperties: false PersonCertificationResponse: type: object properties: id: type: integer format: int64 example: 1234 name: type: string nullable: true example: CPR Training abbreviation: type: string nullable: true example: CPR expiryDate: type: string format: date-time nullable: true example: '2021-01-01' daysWarnBeforeExpire: type: integer format: int32 nullable: true example: 9 certificationDate: type: string format: date-time nullable: true example: '2021-12-20' certificationDescription: type: string description: Must be no greater than 255 characters. nullable: true example: '"Certification for fall arrest"' hasAttachment: type: boolean state: enum: - Info - Warning - Expired - All type: string readOnly: true example: Info additionalProperties: false PersonCertificationUpdateRequest: type: object properties: expiryDate: type: string format: date-time nullable: true example: '2021-01-01' certificationDate: type: string format: date-time nullable: true example: '2021-12-20' certificationDescription: type: string description: Must be no greater than 255 characters. nullable: true example: '"Certification for fall arrest"' additionalProperties: false securitySchemes: Bearer: type: http description: Standard Authorization header using the Bearer scheme scheme: bearer bearerFormat: JWT