Skip to content

Check the saved connection again

POST
/v1/projects/{id}/integrations/ci/test
curl --request POST \
--url https://beta-api.plune.ai/v1/projects/example/integrations/ci/test \
--cookie plune_session=<plune_session>

Owner only. Asks GitHub five things about the saved connection, with the saved token, and keeps what it found as the last check: token (GitHub accepts it), repository (it reaches the repository), actions (it may start workflows — Actions: Read and write), workflow (the file is on the branch, and switched on) and inputs (the workflow runs on workflow_dispatch and takes plune_run, grep and ref). A check that leans on one that failed is skipped. A fine-grained token cut to Actions cannot read a file of the repository, so the last three are asked of a workflow_dispatch that carries, besides the three inputs, one that no workflow declares: GitHub refuses it with a 422 that says what it found, and starts nothing — should it ever start a run all the same, Plune cancels it at once and the check says unexpected. Requests go to api.github.com only and take 10 seconds at most each; what GitHub answers is read for its status and its message, never kept. At most 10 checks a minute for a project, this and PUT together. Session cookie only.

id
required
string

An id from GET /v1/projects

What the check found. A failed check carries one of these codes: unreachable — the CI did not answer in time; rate_limited — the CI is limiting the token’s requests: try again in a minute; token_rejected — the CI does not accept the token: it is mistyped, expired or revoked; repository_not_found — the token does not reach the repository, project or project slug: a private one it was not given, or a name that is not there; actions_denied — the token may not start workflows or pipelines: on GitHub, Repository permissions → Actions → Read and write; on GitLab, role Developer and scope api; on CircleCI, a user who may start the project’s pipelines; workflow_not_found — the workflow file, .gitlab-ci.yml or .circleci/config.yml is not there; workflow_disabled — the workflow is switched off on GitHub; ref_not_found — the branch or tag is not there; no_workflow_dispatch — the GitHub workflow does not run on workflow_dispatch; inputs_missing — the workflow, job or config does not take everything Plune sends (GitHub: the inputs plune_run, grep, ref; GitLab: a job for $PLUNE_RUN that greps by $PLUNE_GREP; CircleCI: the parameters plune_run and grep): missing names them; variables_denied — the GitLab project keeps pipeline variables from the token’s role: Settings → CI/CD → Variables → Minimum role to use pipeline variables → Developer; address_refused — the GitLab address is not https, is an IP address, or is on a private network: Plune sends no request there; unexpected — the CI answered with a status the check did not expect: the step carries it.

Media type application/json
object
ok
required
boolean
steps
required
Array<object>
object
step
required
string
Allowed values: token repository actions workflow inputs
result
required
string
Allowed values: ok failed skipped
code

Present exactly when result is failed.

string
Allowed values: unreachable rate_limited token_rejected repository_not_found actions_denied workflow_not_found workflow_disabled ref_not_found no_workflow_dispatch inputs_missing variables_denied address_refused unexpected
status

The HTTP status the CI answered with, for unexpected. Never its body.

integer
missing

inputs_missing only: the inputs the workflow does not take.

Array<string>
Allowed values: plune_run grep ref
testedAt
required
string format: date-time
Example
{
"ok": true,
"steps": [
{
"step": "token",
"result": "ok"
},
{
"step": "repository",
"result": "ok"
},
{
"step": "actions",
"result": "ok"
},
{
"step": "workflow",
"result": "ok"
},
{
"step": "inputs",
"result": "ok"
}
],
"testedAt": "2026-09-16T09:12:04.151Z"
}

No / invalid session — a CLI token is refused here

You are in the project, but not as its owner

Media type application/json
object
error
required
string
Example
{
"error": "project owner only"
}

No such project among yours, or no CI is connected

Media type application/json
object
error
required
string
Examples

No such project among yours

{
"error": "project 'u-shop::default' not found"
}

The saved token does not open under this server’s key (the key was replaced): connect again with the token

Media type application/json
object
error
required
string
Example
{
"error": "the saved token cannot be read on this server — replace it"
}

More than 10 checks in a minute for this project. Retry-After carries the seconds until the window rolls over

Media type application/json
object
error
required
string
Example generated
{
"error": "example"
}
Retry-After
integer

Seconds until the window rolls over

The server has no key to keep tokens under; nothing was sent

Media type application/json
object
error
required
string
Example
{
"error": "integrations are not configured on this server — contact your operator"
}