Credentially DBS API
DBS check lookup and refresh endpoints
DBS check lookup and refresh endpoints
openapi: 3.1.0
info:
title: Credentially Public Compliance-packages DBS API
description: Public API Proxy with Rate Limiting and Audit
version: 2.0.0
servers:
- url: https://app.credentially.io/gateway
description: Generated server url
tags:
- name: DBS
description: DBS check lookup and refresh endpoints
paths:
/api/dbs/{profileId}:
get:
tags:
- DBS
summary: Get Profile DBS Checks
description: 'Returns all DBS checks for the requested profile in the authenticated organisation context. The public `profileId` path parameter maps to the upstream `employeePublicId`.
**Rate Limit:** `profile-dbs-load` (100 req / 1s)'
operationId: getProfileDbsChecks
parameters:
- name: profileId
in: path
description: Credentially profile ID. This maps to the upstream employeePublicId.
required: true
schema:
type: string
example: a7b80d86-92ad-452b-8b30-580146e5e1fb
- name: X-API-Version
in: header
schema:
type: string
default: 2.0.0
enum:
- 2.0.0
responses:
'200':
description: DBS checks retrieved successfully
content:
'*/*':
schema:
type: array
items:
$ref: '#/components/schemas/DbsCheckDto'
examples:
dbsChecks:
description: dbsChecks
value:
- id: 501
certificateNumber: '001122334455'
status: NEW_INFO
surname: Doe
forename: Jane
printDate: '2026-04-01'
organisationId: 100
requestAttempts: 1
lastCheckDateTime: '2026-04-01T12:08:10.178Z'
createDateTime: '2026-04-01T12:08:10.178Z'
level: Enhanced
'404':
description: Returned when the profile has no DBS checks or when the upstream profile cannot be found
'500':
description: Internal server error
'429':
description: Too many requests - the rate limit for this endpoint has been exceeded. Use the Retry-After header to determine when to retry.
headers:
Retry-After:
description: Number of seconds to wait before retrying the request.
schema:
type: integer
format: int32
example: 1
security:
- bearer-key: []
post:
tags:
- DBS
summary: Create Or Refresh Profile DBS Check
description: 'Creates or refreshes a DBS check for the requested profile in the authenticated organisation context. The public `profileId` path parameter maps to the upstream `employeePublicId`. Provide the certificate details exactly as shown on the DBS certificate.
**Rate Limit:** `profile-dbs-load` (100 req / 1s)'
operationId: updateProfileDbsCheck
parameters:
- name: profileId
in: path
description: Credentially profile ID. This maps to the upstream employeePublicId.
required: true
schema:
type: string
example: a7b80d86-92ad-452b-8b30-580146e5e1fb
- name: X-API-Version
in: header
schema:
type: string
default: 2.0.0
enum:
- 2.0.0
requestBody:
description: Certificate details used to create or refresh the DBS check
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateDbsCheckRequest'
examples:
updateDbsCheckRequest:
description: updateDbsCheckRequest
value:
certificateNumber: '001122334455'
birthDate: '1990-01-15'
employeeSurname: Doe
issueDate: '2026-04-01'
required: true
responses:
'200':
description: DBS check updated successfully
content:
'*/*':
schema:
$ref: '#/components/schemas/DbsCheckDto'
examples:
updatedDbsCheck:
description: updatedDbsCheck
value:
id: 501
certificateNumber: '001122334455'
status: NON_BLANK_NO_NEW_INFO
surname: Doe
forename: Jane
printDate: '2026-04-01'
organisationId: 100
requestAttempts: 3
lastCheckDateTime: '2026-04-01T12:08:10.178Z'
createDateTime: '2026-04-01T12:08:10.178Z'
'400':
description: Invalid request data
'404':
description: Profile not found in the authenticated organisation context
'429':
description: Too many DBS refresh attempts for the submitted certificate
headers:
Retry-After:
description: Number of seconds to wait before retrying the request.
schema:
type: integer
format: int32
example: 1
'500':
description: Internal server error
security:
- bearer-key: []
/api/dbs/{profileId}/{dbsCheckId}:
get:
tags:
- DBS
summary: Get Profile DBS Check
description: 'Returns a single DBS check for the requested profile in the authenticated organisation context. The public `profileId` path parameter maps to the upstream `employeePublicId`.
**Rate Limit:** `profile-dbs-by-id` (100 req / 1s)'
operationId: getProfileDbsCheck
parameters:
- name: profileId
in: path
description: Credentially profile ID. This maps to the upstream employeePublicId.
required: true
schema:
type: string
example: a7b80d86-92ad-452b-8b30-580146e5e1fb
- name: dbsCheckId
in: path
description: Credentially DBS check ID for a single DBS result.
required: true
schema:
type: integer
format: int64
example: 501
- name: X-API-Version
in: header
schema:
type: string
default: 2.0.0
enum:
- 2.0.0
responses:
'200':
description: DBS check retrieved successfully
content:
'*/*':
schema:
$ref: '#/components/schemas/DbsCheckDto'
examples:
dbsCheck:
description: dbsCheck
value:
id: 501
certificateNumber: '001122334455'
status: NEW_INFO
surname: Doe
forename: Jane
printDate: '2026-04-01'
organisationId: 100
requestAttempts: 1
lastCheckDateTime: '2026-04-01T12:08:10.178Z'
createDateTime: '2026-04-01T12:08:10.178Z'
level: Enhanced
'404':
description: Returned when the DBS check cannot be found or when the upstream profile cannot be found
'500':
description: Internal server error
'429':
description: Too many requests - the rate limit for this endpoint has been exceeded. Use the Retry-After header to determine when to retry.
headers:
Retry-After:
description: Number of seconds to wait before retrying the request.
schema:
type: integer
format: int32
example: 1
security:
- bearer-key: []
components:
schemas:
DbsCheckDto:
type: object
description: DBS check payload returned by the Credentially public API.
properties:
id:
type: integer
format: int64
description: Credentially DBS check identifier.
example: 501
certificateNumber:
type: string
description: DBS certificate number used for the check.
example: '001122334455'
status:
type: string
description: Current DBS status for this certificate lookup.
enum:
- BLANK_NO_NEW_INFO
- NON_BLANK_NO_NEW_INFO
- NEW_INFO
- UNKNOWN
- NO_MATCH_FOUND
example: NEW_INFO
surname:
type: string
description: Surname returned for the DBS check.
example: Doe
forename:
type: string
description: Forename returned for the DBS check.
example: Jane
printDate:
type: string
format: date
description: Date printed on the DBS certificate.
example: '2026-04-01'
organisationId:
type: integer
format: int64
description: Credentially organisation identifier that owns the DBS check.
example: 100
requestAttempts:
type: integer
format: int32
description: Number of DBS refresh attempts made for this certificate.
example: 3
lastCheckDateTime:
type: string
format: date-time
description: Timestamp of the latest DBS check lookup in UTC.
example: '2026-04-01T12:08:10.178Z'
createDateTime:
type: string
format: date-time
description: Timestamp when the DBS check record was created in UTC.
example: '2026-04-01T12:08:10.178Z'
level:
type: string
description: Level of this specific DBS check (for example Enhanced, Standard or Basic), sourced from the DBS application whose certificate matches this check's certificate number. Absent when the level is unknown - i.e. this check's certificate was not issued via a DBS application in Credentially.
example: Enhanced
UpdateDbsCheckRequest:
type: object
properties:
certificateNumber:
type: string
description: DBS certificate number
example: '001122334455'
minLength: 1
pattern: \d{12}
birthDate:
type: string
format: date
description: Profile birth date
example: '1990-01-15'
employeeSurname:
type: string
description: Profile surname used for the DBS request
example: Doe
maxLength: 60
minLength: 0
pattern: ^[A-Za-z0-9\- ']*$
issueDate:
type: string
format: date
description: Issue date to send when no downstream print date is returned
example: '2026-04-01'
required:
- birthDate
- certificateNumber
- employeeSurname
securitySchemes:
bearer-key:
type: http
scheme: bearer
bearerFormat: JWT