flags
POST
https://lucida.15-204-158-166.sslip.io /v1/flag-health/{token} Receive health reports. Unknown or revoked tokens are 404; a missing or bad signature on a signed hook is 401. Reports naming an unknown flag are skipped and listed in `unmatched`.
Parameters
tokenstringpathrequiredCode samples
cURL
curl -X POST "https://lucida.15-204-158-166.sslip.io/v1/flag-health/{token}"TypeScript
Python
Go
PHP
Ruby
Java
Responses
200
{received, applied, unmatched, triggered}400
401
404
POST
https://lucida.15-204-158-166.sslip.io /v1/flag-triggers/{token} Fire a trigger. Unknown or revoked tokens are 404; a missing, stale or wrong signature is 401.
Parameters
tokenstringpathrequiredLucida-Signaturestringheaderrequiredt=<unix>,v1=<hex hmac-sha256(secret, "<t>.<body>")>
Code samples
cURL
curl -X POST "https://lucida.15-204-158-166.sslip.io/v1/flag-triggers/{token}" \
-H "Lucida-Signature: <value>"TypeScript
Python
Go
PHP
Ruby
Java
Responses
200
{flag, action, version}401
404
GET
https://lucida.15-204-158-166.sslip.io /v1/projects/{project_id}/change-requests Parameters
project_idstringpathrequiredstatusstringquerylimitintegerquerycursorstringqueryCode samples
cURL
curl -X GET "https://lucida.15-204-158-166.sslip.io/v1/projects/{project_id}/change-requests"TypeScript
Python
Go
PHP
Ruby
Java
Responses
200
Example
{
"data": [
{
"applied_version": 0,
"approvals": [
{}
],
"base_version": 0,
"created_at": "2024-01-01T00:00:00Z",
"environment": "string",
"experiment_id": "string",
"expires_at": "2024-01-01T00:00:00Z",
"failure_reason": "string",
"flag_id": "string",
"id": "string",
"policy_key": "string",
"project_id": "string",
"proposal": {},
"quorum": 0,
"requested_by": "string",
"review_note": "string",
"reviewed_at": "2024-01-01T00:00:00Z",
"reviewed_by": "string",
"status": "string",
"subject": "string"
}
],
"next_cursor": "string"
}Schema
dataobject[]requiredShow child parameters
applied_versionintegerapprovalsobject[]required[{user_id, note, at}], one entry per approver so far.base_versionintegerFlag version the request was made against; apply fails when the flag moved on.
created_atstringrequiredenvironmentstringexperiment_idstringexpires_atstringPending or approved requests past this instant expire unused.
failure_reasonstringWhy a
failed request could not be applied.flag_idstringidstringrequiredpolicy_keystringThe approval-policy key whose rule governs this request (
flag.rollout, ...).project_idstringrequiredproposalobjectrequiredquorumintegerrequiredApprovals needed before the request counts as approved.
requested_bystringreview_notestringreviewed_atstringreviewed_bystringstatusstringrequiredsubjectstringrequirednext_cursorstring404
POST
https://lucida.15-204-158-166.sslip.io /v1/projects/{project_id}/change-requests/{cr}/apply Parameters
project_idstringpathrequiredcrstringpathrequiredCode samples
cURL
curl -X POST "https://lucida.15-204-158-166.sslip.io/v1/projects/{project_id}/change-requests/{cr}/apply"TypeScript
Python
Go
PHP
Ruby
Java
Responses
200
Example
{
"applied_version": 0,
"approvals": [
{}
],
"base_version": 0,
"created_at": "2024-01-01T00:00:00Z",
"environment": "string",
"experiment_id": "string",
"expires_at": "2024-01-01T00:00:00Z",
"failure_reason": "string",
"flag_id": "string",
"id": "string",
"policy_key": "string",
"project_id": "string",
"proposal": {},
"quorum": 0,
"requested_by": "string",
"review_note": "string",
"reviewed_at": "2024-01-01T00:00:00Z",
"reviewed_by": "string",
"status": "string",
"subject": "string"
}Schema
applied_versionintegerapprovalsobject[]required[{user_id, note, at}], one entry per approver so far.base_versionintegerFlag version the request was made against; apply fails when the flag moved on.
created_atstringrequiredenvironmentstringexperiment_idstringexpires_atstringPending or approved requests past this instant expire unused.
failure_reasonstringWhy a
failed request could not be applied.flag_idstringidstringrequiredpolicy_keystringThe approval-policy key whose rule governs this request (
flag.rollout, ...).project_idstringrequiredproposalobjectrequiredquorumintegerrequiredApprovals needed before the request counts as approved.
requested_bystringreview_notestringreviewed_atstringreviewed_bystringstatusstringrequiredsubjectstringrequired403
404
409
POST
https://lucida.15-204-158-166.sslip.io /v1/projects/{project_id}/change-requests/{cr}/approve Parameters
project_idstringpathrequiredcrstringpathrequiredRequest body
application/json
applybooleanApprove and apply in one call (flag changes; experiment start).
notestring{
"apply": true,
"note": "string"
}Code samples
cURL
curl -X POST "https://lucida.15-204-158-166.sslip.io/v1/projects/{project_id}/change-requests/{cr}/approve" \
-H "Content-Type: application/json" \
-d '{"apply":true,"note":"string"}'TypeScript
Python
Go
PHP
Ruby
Java
POST
https://lucida.15-204-158-166.sslip.io /v1/projects/{project_id}/change-requests/{cr}/cancel Parameters
project_idstringpathrequiredcrstringpathrequiredCode samples
cURL
curl -X POST "https://lucida.15-204-158-166.sslip.io/v1/projects/{project_id}/change-requests/{cr}/cancel"TypeScript
Python
Go
PHP
Ruby
Java
POST
https://lucida.15-204-158-166.sslip.io /v1/projects/{project_id}/change-requests/{cr}/reject Parameters
project_idstringpathrequiredcrstringpathrequiredRequest body
application/json
applybooleanApprove and apply in one call (flag changes; experiment start).
notestring{
"apply": true,
"note": "string"
}Code samples
cURL
curl -X POST "https://lucida.15-204-158-166.sslip.io/v1/projects/{project_id}/change-requests/{cr}/reject" \
-H "Content-Type: application/json" \
-d '{"apply":true,"note":"string"}'TypeScript
Python
Go
PHP
Ruby
Java
GET
https://lucida.15-204-158-166.sslip.io /v1/projects/{project_id}/flag-audit Parameters
project_idstringpathrequireddaysintegerqueryCode samples
cURL
curl -X GET "https://lucida.15-204-158-166.sslip.io/v1/projects/{project_id}/flag-audit"TypeScript
Python
Go
PHP
Ruby
Java
Responses
200
Example
{
"cliffs": [
{
"after": 0,
"before": 0,
"day": "string",
"flag": "string"
}
],
"days": 0,
"debt": [
{
"flag": "string",
"points": 0,
"reasons": [
"string"
]
}
],
"debt_score": 0,
"ghosts": [
{
"calls": 0,
"flag": "string"
}
],
"shifts": [
{
"before": 0,
"flag": "string",
"recent": 0,
"value": "string"
}
]
}Schema
cliffsCliff[]requiredShow child parameters
afterintegerrequiredCalls on the last full day.
beforeintegerrequiredMedian daily calls before the drop.
daystringrequiredflagstringrequireddaysintegerrequireddebtDebtItem[]requiredShow child parameters
flagstringrequiredpointsintegerrequiredreasonsstring[]requireddebt_scoreintegerrequiredSum of the points of every flag with debt; lower is better.
ghostsGhost[]requiredShow child parameters
callsintegerrequiredflagstringrequiredCalled by an SDK but no live flag has this key.
shiftsShift[]requiredShow child parameters
beforenumberrequiredShare of calls before and in the last three days, 0 to 1.
flagstringrequiredrecentnumberrequiredvaluestringrequiredServed value whose share moved the most.
400
404
503
GET
https://lucida.15-204-158-166.sslip.io /v1/projects/{project_id}/flag-blocklist Parameters
project_idstringpathrequiredCode samples
cURL
curl -X GET "https://lucida.15-204-158-166.sslip.io/v1/projects/{project_id}/flag-blocklist"TypeScript
Python
Go
PHP
Ruby
Java
Responses
200
Example
{
"data": [
{
"created_at": "2024-01-01T00:00:00Z",
"id": "string",
"kind": "string",
"note": "string",
"value": "string"
}
],
"next_cursor": "string"
}Schema
dataobject[]requiredShow child parameters
created_atstringrequiredidstringrequiredkindstringrequiredhost (exact, or *.example.com) or cidr.notestringrequiredvaluestringrequirednext_cursorstring404
Updated