Passbolt Healthcheck API
Gather data about the passbolt instance's health.
Gather data about the passbolt instance's health.
openapi: 3.1.0
info:
contact:
email: contact@passbolt.com
description: This is a low-level overview of the API and its endpoints, if you need higher-level guides for interacting with the endpoints, use the Developer guide.
license:
name: AGPL-3.0
url: https://www.gnu.org/licenses/agpl-3.0.html
termsOfService: https://www.passbolt.com/terms
title: Passbolt Authentication (GPGAuth) Authentication (GPGAuth) Healthcheck API
version: 5.0.0
servers:
- url: https://passbolt.local
description: API Passbolt
tags:
- name: Healthcheck
description: Gather data about the passbolt instance's health.
paths:
/healthcheck.json:
get:
summary: Get healthcheck information.
description: Only administrators can query this endpoint.
security:
- bearerHttpAuthentication: []
operationId: viewHealthcheck
x-codeSamples:
- lang: cURL
source: "curl --request GET \\\n --url {{API_BASE_URL}}/healthcheck.json \\\n --header 'Authorization: Bearer {{JWT_TOKEN}}'\n"
- lang: JavaScript
source: "const url = '{{API_BASE_URL}}/healthcheck.json';\nconst options = {method: 'GET', headers: {Authorization: 'Bearer {{JWT_TOKEN}}'}};\n\ntry {\n const response = await fetch(url, options);\n const data = await response.json();\n console.log(data);\n} catch (error) {\n console.error(error);\n}\n"
- lang: PHP
source: "<?php\n$curl = curl_init();\n\ncurl_setopt_array($curl, [\n CURLOPT_URL => \"{{API_BASE_URL}}/healthcheck.json\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_ENCODING => \"\",\n CURLOPT_MAXREDIRS => 10,\n CURLOPT_TIMEOUT => 30,\n CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,\n CURLOPT_CUSTOMREQUEST => \"GET\",\n CURLOPT_HTTPHEADER => [\n \"Authorization: Bearer {{JWT_TOKEN}}\"\n ],\n]);\n\n$response = curl_exec($curl);\n$err = curl_error($curl);\n\ncurl_close($curl);\n\nif ($err) {\n echo \"cURL Error #:\" . $err;\n} else {\n echo $response;\n}\n"
tags:
- Healthcheck
responses:
'200':
$ref: '#/components/responses/healthcheck'
'403':
$ref: '#/components/responses/authenticationRequired'
/healthcheck/status.json:
get:
summary: Check if passbolt is up.
operationId: viewHealthcheckStatus
security: []
x-codeSamples:
- lang: cURL
source: "curl --request GET \\\n --url {{API_BASE_URL}}/healthcheck/status.json\n"
- lang: JavaScript
source: "const url = '{{API_BASE_URL}}/healthcheck/status.json';\nconst options = {method: 'GET'};\n\ntry {\n const response = await fetch(url, options);\n const data = await response.json();\n console.log(data);\n} catch (error) {\n console.error(error);\n}\n"
- lang: PHP
source: "<?php\n$curl = curl_init();\n\ncurl_setopt_array($curl, [\n CURLOPT_URL => \"{{API_BASE_URL}}/healthcheck/status.json\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_ENCODING => \"\",\n CURLOPT_MAXREDIRS => 10,\n CURLOPT_TIMEOUT => 30,\n CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,\n CURLOPT_CUSTOMREQUEST => \"GET\",\n]);\n\n$response = curl_exec($curl);\n$err = curl_error($curl);\n\ncurl_close($curl);\n\nif ($err) {\n echo \"cURL Error #:\" . $err;\n} else {\n echo $response;\n}\n"
tags:
- Healthcheck
responses:
'200':
$ref: '#/components/responses/status'
components:
schemas:
healthcheck:
type: object
required:
- environment
- configFile
- core
- ssl
- smtpSettings
- gpg
- application
- database
properties:
environment:
type: object
required:
- gnupg
- info
- phpVersion
- nextMinPhpVersion
- pcre
- mbstring
- intl
- image
- tmpWritable
- logWritable
properties:
gnupg:
type: boolean
info:
type: object
required:
- phpVersion
properties:
phpVersion:
type: string
phpVersion:
type: boolean
nextMinPhpVersion:
type: boolean
pcre:
type: boolean
mbstring:
type: boolean
intl:
type: boolean
image:
type: boolean
tmpWritable:
type: boolean
logWritable:
type: boolean
configFile:
type: object
required:
- app
- passbolt
properties:
app:
type: boolean
passbolt:
type: boolean
core:
type: object
required:
- cache
- debugDisabled
- salt
- info
- fullBaseUrl
- validFullBaseUrl
- fullBaseUrlReachable
properties:
cache:
type: boolean
debugDisabled:
type: boolean
salt:
type: boolean
info:
type: object
required:
- fullBaseUrl
properties:
fullBaseUrl:
type: string
fullBaseUrl:
type: boolean
validFullBaseUrl:
type: boolean
fullBaseUrlReachable:
type: boolean
ssl:
type: object
required:
- info
- peerValid
- hostValid
- notSelfSigned
properties:
info:
type: string
peerValid:
type: boolean
hostValid:
type: boolean
notSelfSigned:
type: boolean
smtpSettings:
type: object
required:
- isEnabled
- errorMessage
- source
- isInDb
- areEndpointsDisabled
- customSslOptions
properties:
isEnabled:
type: boolean
errorMessage:
type: boolean
source:
type: string
isInDb:
type: boolean
areEndpointsDisabled:
type: boolean
customSslOptions:
type: boolean
gpg:
type: object
required:
- lib
- gpgHome
- gpgHomeWritable
- gpgKeyNotDefault
- gpgKeyPublicBlock
- gpgKeyPrivateBlock
- gpgKeyPublicReadable
- gpgKeyPrivateReadable
- gpgKeyPrivateFingerprint
- gpgKeyPublic
- gpgKeyPrivate
- gpgKey
- info
- gpgKeyPublicFingerprint
- gpgKeyPublicInKeyring
- gpgKeyPublicEmail
- canEncrypt
- canSign
- canEncryptSign
- canDecrypt
- canDecryptVerify
- canVerify
- isPublicServerKeyGopengpgCompatible
- isPrivateServerKeyGopengpgCompatible
properties:
lib:
type: boolean
gpgHome:
type: boolean
gpgHomeWritable:
type: boolean
gpgKeyPublicBlock:
type: boolean
gpgKeyPrivateBlock:
type: boolean
gpgKeyPublicReadable:
type: boolean
gpgKeyPrivateReadable:
type: boolean
gpgKeyPrivateFingerprint:
type: boolean
gpgKeyPublic:
type: boolean
gpgKeyPrivate:
type: boolean
gpgKey:
type: boolean
info:
type: object
required:
- gpgKeyPrivate
- gpgHome
properties:
gpgKeyPrivate:
type: string
gpgHome:
type: string
gpgKeyPublicFingerprint:
type: boolean
gpgKeyPublicInKeyring:
type: boolean
gpgKeyPublicEmail:
type: boolean
canEncrypt:
type: boolean
canSign:
type: boolean
canEncryptSign:
type: boolean
canDecrypt:
type: boolean
canDecryptVerify:
type: boolean
canVerify:
type: boolean
isPublicServerKeyGopengpgCompatible:
type: boolean
isPrivateServerKeyGopengpgCompatible:
type: boolean
application:
type: object
required:
- configPath
- info
- latestVersion
- sslForce
- sslFullBaseUrl
- seleniumDisabled
- robotsIndexDisabled
- registrationClosed
- hostAvailabilityCheckEnabled
- jsProd
- emailNotificationEnabled
- schema
properties:
configPath:
type: string
info:
type: object
required:
- remoteVersion
- currentVersion
properties:
remoteVersion:
type: string
currentVersion:
type: string
latestVersion:
type: boolean
sslForce:
type: boolean
sslFullBaseUrl:
type: boolean
seleniumDisabled:
type: boolean
robotsIndexDisabled:
type: boolean
registrationClosed:
type: object
required:
- isSelfRegistrationPluginEnabled
- selfRegistrationProvider
- isRegistrationPublicRemovedFromPassbolt
properties:
isSelfRegistrationPluginEnabled:
type: boolean
selfRegistrationProvider:
type: string
x-nullable: true
isRegistrationPublicRemovedFromPassbolt:
type: boolean
hostAvailabilityCheckEnabled:
type: boolean
jsProd:
type: boolean
emailNotificationEnabled:
type: boolean
schema:
type: boolean
database:
type: object
required:
- supportedBackend
- connect
- info
- tablesCount
- defaultContent
properties:
supportedBackend:
type: boolean
connect:
type: boolean
info:
type: object
required:
- tablesCount
properties:
tablesCount:
type: integer
tablesCount:
type: boolean
defaultContent:
type: boolean
header:
type: object
required:
- id
- status
- servertime
- action
- message
- url
- code
properties:
id:
type: string
format: uuid
status:
type: string
enum:
- success
- error
servertime:
type: integer
example: 1720702619
action:
type: string
format: uuid
message:
type: string
example: The operation was successful.
url:
type: string
format: uri
example: /auth/verify.json
code:
type: integer
example: 200
responses:
authenticationRequired:
description: Authentication required.
content:
application/json:
schema:
type: object
required:
- header
- body
properties:
header:
$ref: '#/components/schemas/header'
body:
type: string
examples:
base:
value:
header:
id: f7be85c0-afb1-4d8e-a9e1-e05abb0bb71a
status: error
servertime: 1721727753
action: e2aa01a9-84ec-55f8-aaed-24ee23259339
message: Authentication is required to continue.
url: <API ENDPOINT URL>
code: 401
body: ''
status:
description: Operation is successful.
content:
application/json:
schema:
type: object
required:
- header
- body
properties:
header:
$ref: '#/components/schemas/header'
body:
type: string
examples:
base:
value:
header:
id: 7ff2828c-1092-4897-8e0a-1dc64ada889f
status: success
servertime: 1721207029
action: 4d0c0996-ce30-4bce-9918-9062ab35c542
message: OK
url: /healthcheck/status.json
code: 200
body: OK
healthcheck:
description: Operation is successful.
content:
application/json:
schema:
type: object
required:
- header
- body
properties:
header:
$ref: '#/components/schemas/header'
body:
$ref: '#/components/schemas/healthcheck'
examples:
base:
value:
header:
id: 7ff2828c-1092-4897-8e0a-1dc64ada889f
status: success
servertime: 1721207029
action: 4d0c0996-ce30-4bce-9918-9062ab35c542
message: The operation was successful.
url: /healthcheck.json
code: 200
body:
environment:
gnupg: true
info:
phpVersion: 8.2.20
phpVersion: true
nextMinPhpVersion: true
pcre: true
mbstring: true
intl: true
image: true
tmpWritable: true
logWritable: true
configFile:
app: true
passbolt: false
core:
cache: true
debugDisabled: false
salt: true
info:
fullBaseUrl: https://passbolt.localhost
fullBaseUrl: true
validFullBaseUrl: true
fullBaseUrlReachable: true
ssl:
info: 'cURL Error (60) SSL certificate problem: self-signed certificate'
peerValid: false
hostValid: false
notSelfSigned: false
smtpSettings:
isEnabled: true
errorMessage: false
source: env variables
isInDb: false
areEndpointsDisabled: false
customSslOptions: true
gpg:
lib: true
gpgHome: true
gpgHomeWritable: true
gpgKeyNotDefault: true
gpgKeyPublicBlock: true
gpgKeyPrivateBlock: true
gpgKeyPublicReadable: true
gpgKeyPrivateReadable: true
gpgKeyPrivateFingerprint: true
gpgKeyPublic: true
gpgKeyPrivate: true
gpgKey: true
info:
gpgKeyPrivate: /etc/passbolt/gpg/serverkey_private.asc
gpgHome: /var/lib/passbolt/.gnupg
gpgKeyPublicFingerprint: true
gpgKeyPublicInKeyring: true
gpgKeyPublicEmail: true
canEncrypt: true
canSign: true
canEncryptSign: true
canDecrypt: true
canDecryptVerify: true
canVerify: true
isPublicServerKeyGopengpgCompatible: true
isPrivateServerKeyGopengpgCompatible: true
applications:
configPath: /etc/passbolt/passbolt.php
info:
remoteVersion: 4.9.1
currentVersion: 4.9.0
latestVersion: false
sslForce: false
sslFullBaseUrl: true
seleniumDisabled: true
robotsIndexDisabled: true
registrationClosed:
isSelfRegistrationPluginEnabled: true
selfRegistrationProvider: null
isRegistrationPublicRemovedFromPassbolt: true
hostAvailabilityCheckEnabled: false
jsProd: true
emailNotificationEnabled: false
schema: true
database:
supportedBackend: true
connect: true
info:
tablesCount: 31
tablesCount: true
defaultContent: true
securitySchemes:
bearerHttpAuthentication:
description: Bearer token using a JWT
type: http
scheme: Bearer
bearerFormat: JWT
gpgCookieAuthentication:
description: Session-based authentication. Note that a CSRF token needs to be provided through a header named `X-CSRF-Token`.
type: apiKey
in: cookie
name: passbolt_session