Passbolt Healthcheck API
Gather data about the passbolt instance's health.
Gather data about the passbolt instance's health.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/passbolt-healthcheck-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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