Configuration and Environment Reference
Note:
Settings-backed variables support a local.envfile. Variables markedprocess envare read directly withos.getenv()and must already be in the real environment when the server or CLI process starts.docker-compose.yamlin this repository injects.envinto the container, so both kinds work there.
Server Environment Variables
Analysis Runtime
Default AI selection and timeout settings for analysis requests.
| Name | Type | Default | Loaded by | Description |
|---|---|---|---|---|
AI_PROVIDER |
string | unset |
process env |
Primary analysis provider. Valid values: claude, gemini, cursor. Required unless the request body provides ai_provider. |
AI_MODEL |
string | unset |
process env |
Primary analysis model. Required unless the request body provides ai_model. |
AI_CLI_TIMEOUT |
integer (minutes) | 10 |
Settings |
Timeout for AI CLI calls. |
AI_PROVIDER=claude
AI_MODEL=claude-opus-4-1
AI_CLI_TIMEOUT=15
Effect: POST /analyze and POST /analyze-failures use these values when the request body omits them. Missing or invalid AI_PROVIDER/AI_MODEL returns 400.
Jenkins Connection and Artifact Collection
Default Jenkins access, wait behavior, and artifact download limits for Jenkins-backed analysis.
| Name | Type | Default | Loaded by | Description |
|---|---|---|---|---|
JENKINS_URL |
string | "" |
Settings |
Default Jenkins base URL for POST /analyze. |
JENKINS_USER |
string | "" |
Settings |
Default Jenkins username. |
JENKINS_PASSWORD |
string | "" |
Settings |
Default Jenkins password or API token. |
JENKINS_SSL_VERIFY |
boolean | true |
Settings |
TLS verification for Jenkins requests. |
WAIT_FOR_COMPLETION |
boolean | true |
Settings |
Default wait behavior before starting analysis. |
POLL_INTERVAL_MINUTES |
integer (minutes) | 2 |
Settings |
Default poll interval while waiting for Jenkins completion. |
MAX_WAIT_MINUTES |
integer (minutes) | 0 |
Settings |
Default maximum wait time. 0 means no limit. |
GET_JOB_ARTIFACTS |
boolean | true |
Settings |
Default artifact download toggle. |
JENKINS_ARTIFACTS_MAX_SIZE_MB |
integer (MB) | 500 |
Settings |
Maximum total artifact size processed for AI context. |
JENKINS_URL=https://jenkins.example.com
JENKINS_USER=svc-jji
JENKINS_PASSWORD=your-api-token
JENKINS_SSL_VERIFY=true
WAIT_FOR_COMPLETION=true
POLL_INTERVAL_MINUTES=2
MAX_WAIT_MINUTES=30
GET_JOB_ARTIFACTS=true
JENKINS_ARTIFACTS_MAX_SIZE_MB=500
Effect: These defaults apply only to POST /analyze. If WAIT_FOR_COMPLETION=true but no Jenkins URL is available after request merge, the server skips the waiting phase. Artifact processing runs only when GET_JOB_ARTIFACTS=true and the Jenkins build exposes artifacts.
Repository Context and Peer Analysis
Default repository cloning and multi-model review settings.
| Name | Type | Default | Loaded by | Description |
|---|---|---|---|---|
TESTS_REPO_URL |
string | unset |
Settings |
Default tests repository URL. url:ref syntax is accepted. |
ADDITIONAL_REPOS |
string | "" |
Settings |
Default additional repo list in name:url,name:url format. Each URL may also use url:ref. |
PEER_AI_CONFIGS |
string | "" |
Settings |
Default peer analysis list in provider:model,provider:model format. |
PEER_ANALYSIS_MAX_ROUNDS |
integer | 3 |
Settings |
Maximum peer debate rounds. Allowed range: 1-10. |
TESTS_REPO_URL=https://github.com/acme/tests:release-1.2
ADDITIONAL_REPOS=infra:https://github.com/acme/infra:main,product:https://github.com/acme/product
PEER_AI_CONFIGS=cursor:gpt-5.4-xhigh,gemini:gemini-2.5-pro
PEER_ANALYSIS_MAX_ROUNDS=3
Effect: TESTS_REPO_URL is cloned into the analysis workspace. ADDITIONAL_REPOS entries are cloned into named subdirectories. Malformed repo or peer strings fail when the request resolves them.
Jira Analysis and Issue Toggles
Default Jira connection settings for analysis-time enrichment and Jira issue operations.
| Name | Type | Default | Loaded by | Description |
|---|---|---|---|---|
JIRA_URL |
string | unset |
Settings |
Jira base URL. |
JIRA_EMAIL |
string | unset |
Settings |
Jira Cloud email. When present, Jira auth resolves in Cloud mode. |
JIRA_API_TOKEN |
string | unset |
Settings |
Jira Cloud API token. |
JIRA_PAT |
string | unset |
Settings |
Jira Server/DC personal access token. |
JIRA_PROJECT_KEY |
string | unset |
Settings |
Default Jira project key for search and issue targeting. |
JIRA_SSL_VERIFY |
boolean | true |
Settings |
TLS verification for Jira requests. |
JIRA_MAX_RESULTS |
integer | 5 |
Settings |
Maximum Jira results returned per search. |
ENABLE_JIRA |
boolean | unset |
Settings |
Analysis-time Jira enrichment toggle. |
ENABLE_JIRA_ISSUES |
boolean | unset |
Settings |
Jira preview/create toggle. false disables Jira issue endpoints. |
JIRA_URL=https://acme.atlassian.net
JIRA_EMAIL=triage@example.com
JIRA_API_TOKEN=your-jira-token
JIRA_PROJECT_KEY=PROJ
JIRA_SSL_VERIFY=true
JIRA_MAX_RESULTS=5
ENABLE_JIRA=true
ENABLE_JIRA_ISSUES=true
Effect: Analysis-time Jira enrichment runs only when ENABLE_JIRA is not false and Jira URL, credentials, and project key are all present. Jira issue preview/create is controlled independently by ENABLE_JIRA_ISSUES. Auth resolution is:
- with
JIRA_EMAIL: Cloud mode, token preferenceJIRA_API_TOKENthenJIRA_PAT - without
JIRA_EMAIL: Server/DC mode, token preferenceJIRA_PATthenJIRA_API_TOKEN
GitHub Issue Creation
Default GitHub credential and feature toggle settings.
| Name | Type | Default | Loaded by | Description |
|---|---|---|---|---|
GITHUB_TOKEN |
string | unset |
Settings |
Default server GitHub token. |
ENABLE_GITHUB_ISSUES |
boolean | unset |
Settings |
GitHub preview/create toggle. false disables GitHub issue endpoints. |
GITHUB_TOKEN=ghp_your_token
ENABLE_GITHUB_ISSUES=true
Effect: ENABLE_GITHUB_ISSUES=false blocks GitHub issue preview/create. When the toggle is not false, /api/capabilities reports server token presence separately through server_github_token.
Report Portal and Public URLs
Default Report Portal connection settings and absolute-link base URL.
| Name | Type | Default | Loaded by | Description |
|---|---|---|---|---|
REPORTPORTAL_URL |
string | unset |
Settings |
Report Portal base URL. |
REPORTPORTAL_API_TOKEN |
string | unset |
Settings |
Report Portal API token. |
REPORTPORTAL_PROJECT |
string | unset |
Settings |
Report Portal project name. |
REPORTPORTAL_VERIFY_SSL |
boolean | true |
Settings |
TLS verification for Report Portal requests. |
ENABLE_REPORTPORTAL |
boolean | unset |
Settings |
Explicit Report Portal toggle. false disables the integration. |
PUBLIC_BASE_URL |
string | unset |
Settings |
Trusted external base URL used when building absolute links. Trailing / is stripped. |
REPORTPORTAL_URL=https://rp.example.com
REPORTPORTAL_API_TOKEN=rp-token
REPORTPORTAL_PROJECT=e2e
REPORTPORTAL_VERIFY_SSL=true
ENABLE_REPORTPORTAL=true
PUBLIC_BASE_URL=https://jji.example.com
Effect: Report Portal is enabled only when ENABLE_REPORTPORTAL is not false and URL, token, and project are all set. PUBLIC_BASE_URL controls absolute result_url values and is required for POST /results/{job_id}/push-reportportal. When PUBLIC_BASE_URL is unset, the server returns relative URLs.
Note: Request headers do not change
PUBLIC_BASE_URL. When unset,base_urlis""andresult_urlis relative.
Authentication and Secret Handling
Bootstrap admin authentication, cookie security, and at-rest encryption.
| Name | Type | Default | Loaded by | Description |
|---|---|---|---|---|
ADMIN_KEY |
string | "" |
Settings |
Bootstrap admin secret. POST /api/auth/login accepts it only with username admin. Bearer Authorization: Bearer <ADMIN_KEY> also authenticates as admin. |
SECURE_COOKIES |
boolean | true |
Settings |
Secure attribute for jji_session and jji_username cookies. |
JJI_ENCRYPTION_KEY |
string | unset |
process env |
Secret used to encrypt stored sensitive values and HMAC-hash stored admin API keys. |
XDG_DATA_HOME |
path | ~/.local/share |
process env |
Base directory for the fallback encryption key file when JJI_ENCRYPTION_KEY is unset. |
ADMIN_KEY=change-this-admin-secret
SECURE_COOKIES=true
JJI_ENCRYPTION_KEY=change-this-encryption-secret
XDG_DATA_HOME=/var/lib/jji
Effect: Request auth order is jji_session cookie, then Bearer token, then jji_username cookie. Admin login sets:
jji_session:HttpOnly,SameSite=Strict,max-age=8hjji_username:SameSite=Lax,max-age=1 year
If JJI_ENCRYPTION_KEY is unset, the server creates and reuses $XDG_DATA_HOME/jji/.encryption_key or ~/.local/share/jji/.encryption_key with mode 0600.
Warning: Changing
JJI_ENCRYPTION_KEYinvalidates stored API key hashes and can leave previously stored encrypted request values undecryptable.
Storage and Process Runtime
Database location, bind port, reload mode, and log level.
| Name | Type | Default | Loaded by | Description |
|---|---|---|---|---|
DB_PATH |
path | /data/results.db |
process env |
SQLite database path. |
PORT |
integer | 8000 |
process env |
Application port. Valid range: 1-65535. |
DEBUG |
boolean | false |
process env |
Enables uvicorn reload when the app is started through jenkins_job_insight.main:run. |
LOG_LEVEL |
string | INFO |
process env |
Process-wide log level. |
DB_PATH=/var/lib/jji/results.db
PORT=8000
DEBUG=false
LOG_LEVEL=INFO
Effect: PORT is used both for server binding and for the app's internal self-references. Invalid PORT values stop startup.
Provider CLI Passthrough and Container Dev Mode
Provider-specific auth variables and container-only dev-mode switches.
| Name | Type | Default | Loaded by | Description |
|---|---|---|---|---|
ANTHROPIC_API_KEY |
string | unset |
process env |
Claude CLI API key. |
CLAUDE_CODE_USE_VERTEX |
boolean/string | unset |
process env |
Enables Claude CLI Vertex mode when set. |
CLOUD_ML_REGION |
string | unset |
process env |
Claude Vertex region. |
ANTHROPIC_VERTEX_PROJECT_ID |
string | unset |
process env |
Claude Vertex project ID. |
GEMINI_API_KEY |
string | unset |
process env |
Gemini CLI API key. |
CURSOR_API_KEY |
string | unset |
process env |
Cursor CLI API key. |
DEV_MODE |
boolean | unset |
process env |
Container entrypoint dev mode. Starts the Vite dev server and adds uvicorn --reload behavior. |
ANTHROPIC_API_KEY=your-anthropic-key
# or Claude via Vertex:
CLAUDE_CODE_USE_VERTEX=1
CLOUD_ML_REGION=us-east5
ANTHROPIC_VERTEX_PROJECT_ID=my-gcp-project
GEMINI_API_KEY=your-gemini-key
CURSOR_API_KEY=your-cursor-key
DEV_MODE=true
Effect: These variables are not parsed by Settings; they are consumed by installed provider CLIs or by entrypoint.sh. In the container, DEV_MODE=true starts the frontend dev server on port 5173 and appends --reload --reload-dir /app/src to uvicorn.
Docker Compose
docker-compose.yaml Service: jenkins-job-insight
Repository-provided container settings for the combined API and web UI service.
| Name | Type | Default | Description |
|---|---|---|---|
services.jenkins-job-insight.build.context |
path | . |
Build context. |
services.jenkins-job-insight.build.dockerfile |
path | Dockerfile |
Dockerfile path. |
services.jenkins-job-insight.container_name |
string | jenkins-job-insight |
Container name. |
services.jenkins-job-insight.ports |
list | ["8000:8000"] |
Publishes the combined web UI and API port. |
services.jenkins-job-insight.volumes |
list | ["./data:/data"] |
Persists SQLite data on the host. |
services.jenkins-job-insight.env_file |
list | [".env"] |
Injects environment variables from .env. |
services.jenkins-job-insight.restart |
string | unless-stopped |
Restart policy. |
services.jenkins-job-insight.healthcheck.test |
array | ["CMD","curl","-f","http://localhost:8000/health"] |
Health check command. |
services.jenkins-job-insight.healthcheck.interval |
duration | 30s |
Health check interval. |
services.jenkins-job-insight.healthcheck.timeout |
duration | 10s |
Health check timeout. |
services.jenkins-job-insight.healthcheck.retries |
integer | 3 |
Health check retry count. |
services.jenkins-job-insight.healthcheck.start_period |
duration | 10s |
Health check start period. |
services:
jenkins-job-insight:
build:
context: .
dockerfile: Dockerfile
container_name: jenkins-job-insight
ports:
- "8000:8000"
volumes:
- ./data:/data
env_file:
- .env
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
Effect: The service stores its database under the host ./data directory and exposes both the React UI and API on port 8000.
Note:
docker-compose.yamlincludes commented optional settings for: -5173:5173frontend HMR port publishing -./src:/app/srcand./frontend:/app/frontendsource mounts -~/.config/gcloud:/home/appuser/.config/gcloud:rofor Claude Vertex credentials
CLI Configuration File
File Location and Sections
Named server profiles for the jji CLI.
| Name | Type | Default | Description |
|---|---|---|---|
$XDG_CONFIG_HOME/jji/config.toml |
path | ~/.config/jji/config.toml |
Main CLI config file location. |
[default].server |
string | "" |
Default server profile name. |
[defaults] |
mapping | {} |
Shared values merged into every server profile. |
[servers.<name>] |
mapping | required per profile | Named server profiles. Each profile requires url. |
[default]
server = "prod"
[defaults]
ai_provider = "claude"
ai_model = "claude-opus-4-1"
[servers.prod]
url = "https://jji.example.com"
username = "alice"
no_verify_ssl = false
Effect: [defaults] values are merged first, then [servers.<name>] overrides them. [defaults].server is not supported. servers.<name>.url and [default].server must be non-empty trimmed strings.
Connection Profile Fields
Fields used to connect the CLI to a JJI server.
| Name | Type | Default | Description |
|---|---|---|---|
url |
string | none | Base URL of the JJI server. Required for each profile. |
username |
string | "" |
Username cookie sent by the CLI for user-scoped actions such as comments and reviews. |
no_verify_ssl |
boolean | false |
Disable TLS verification for CLI HTTP requests. |
api_key |
string | "" |
Admin API key sent as a Bearer token by the CLI. |
[servers.prod]
url = "https://jji.example.com"
username = "alice"
no_verify_ssl = false
api_key = "admin-api-key"
Effect: If --server or JJI_SERVER is a full URL, the CLI does not inherit any other values from config.toml.
Analysis Default Fields
Client-side defaults that jji analyze can send when you omit CLI flags.
| Name | Type | Default | Description |
|---|---|---|---|
jenkins_url |
string | "" |
Default Jenkins URL. |
jenkins_user |
string | "" |
Default Jenkins username. |
jenkins_password |
string | "" |
Default Jenkins password or API token. |
jenkins_ssl_verify |
boolean | unset |
Default Jenkins TLS verification. |
tests_repo_url |
string | "" |
Default tests repo URL. |
ai_provider |
string | "" |
Default AI provider. |
ai_model |
string | "" |
Default AI model. |
ai_cli_timeout |
integer | 0 |
CLI sentinel for "use server default". |
jira_url |
string | "" |
Default Jira URL. |
jira_email |
string | "" |
Default Jira email. |
jira_api_token |
string | "" |
Default Jira API token. |
jira_pat |
string | "" |
Default Jira PAT. |
jira_project_key |
string | "" |
Default Jira project key. |
jira_ssl_verify |
boolean | unset |
Default Jira TLS verification. |
jira_max_results |
integer | 0 |
CLI sentinel for "use server default". |
enable_jira |
boolean | unset |
Default Jira enrichment toggle. |
github_token |
string | "" |
Default GitHub token. |
peers |
string | "" |
Default peer configs in provider:model,provider:model format. |
peer_analysis_max_rounds |
integer | 0 |
CLI sentinel for "use server default". |
additional_repos |
string | "" |
Default additional repo list in name:url,name:url format. |
wait_for_completion |
boolean | unset |
Default wait toggle. |
poll_interval_minutes |
integer | 0 |
CLI sentinel for "use server default". |
max_wait_minutes |
integer | 0 |
CLI sentinel for "use server default". |
[defaults]
jenkins_url = "https://jenkins.example.com"
tests_repo_url = "https://github.com/acme/tests"
ai_provider = "claude"
ai_model = "claude-opus-4-1"
wait_for_completion = true
poll_interval_minutes = 2
max_wait_minutes = 30
peers = "cursor:gpt-5.4-xhigh,gemini:gemini-2.5-pro"
peer_analysis_max_rounds = 3
additional_repos = "infra:https://github.com/acme/infra:main"
Effect: The CLI sends populated values to the server only when they are set in the profile and not overridden by CLI flags.
Note: In
config.toml, empty strings and0values are treated as unset.0is the sentinel forai_cli_timeout,jira_max_results,peer_analysis_max_rounds,poll_interval_minutes, andmax_wait_minutes.
Issue Helper Fields
Client-side defaults for issue-related CLI commands.
| Name | Type | Default | Description |
|---|---|---|---|
jira_token |
string | "" |
Default Jira token for issue-related CLI commands that accept --jira-token. |
jira_security_level |
string | "" |
Default Jira security level name for restricted Jira issues. |
github_repo_url |
string | "" |
Default GitHub repository URL for CLI commands that accept --github-repo-url. |
[servers.prod]
url = "https://jji.example.com"
jira_token = "jira-user-token"
jira_security_level = "Internal"
github_repo_url = "https://github.com/acme/tests"
Effect: These fields are CLI-side defaults only. They do not change the server's own environment configuration.
CLI Environment Variables
Global CLI environment variables.
| Name | Type | Default | Description |
|---|---|---|---|
JJI_SERVER |
string | unset |
Server profile name or full URL. |
JJI_USERNAME |
string | "" |
Username sent as the CLI's jji_username cookie. |
JJI_API_KEY |
string | "" |
Admin API key sent as a Bearer token. |
JJI_NO_VERIFY_SSL |
boolean | unset |
Disable CLI TLS verification. |
export JJI_SERVER=prod
export JJI_USERNAME=alice
export JJI_API_KEY=admin-api-key
export JJI_NO_VERIFY_SSL=false
jji health
Effect: JJI_SERVER can be either a profile name or a full URL. Full URLs bypass profile inheritance.
Note:
jji analyzealso accepts these client-side environment defaults:JENKINS_URL,JENKINS_USER,JENKINS_PASSWORD,TESTS_REPO_URL,JIRA_URL,JIRA_EMAIL,JIRA_API_TOKEN,JIRA_PAT,JIRA_PROJECT_KEY, andGITHUB_TOKEN.
Per-Request Override Behavior
Note: For
POST /analyzeandPOST /analyze-failures, omitted JSON fields do not override server defaults. Some request models have JSON defaults, but the server applies those defaults as overrides only when the field is actually present in the request body.Note:
POST /results/{job_id}/preview-github-issue,POST /results/{job_id}/preview-jira-bug,POST /results/{job_id}/create-github-issue, andPOST /results/{job_id}/create-jira-bugdo not use the analysis override merge described below.
Common Analysis Override Fields
Fields accepted by both POST /analyze and POST /analyze-failures.
| Name | Applies to | Type | Default When Omitted | Description |
|---|---|---|---|---|
tests_repo_url |
both | string or null |
server default | Override tests repo URL. url:ref syntax is accepted. |
ai_provider |
both | string or null |
AI_PROVIDER |
Override the primary AI provider. |
ai_model |
both | string or null |
AI_MODEL |
Override the primary AI model. |
enable_jira |
both | boolean or null |
server default | Override Jira enrichment for this request. |
ai_cli_timeout |
both | integer or null |
AI_CLI_TIMEOUT |
Override AI CLI timeout in minutes. |
jira_url |
both | string or null |
JIRA_URL |
Override Jira URL. |
jira_email |
both | string or null |
JIRA_EMAIL |
Override Jira email. |
jira_api_token |
both | string or null |
JIRA_API_TOKEN |
Override Jira API token. |
jira_pat |
both | string or null |
JIRA_PAT |
Override Jira PAT. |
jira_project_key |
both | string or null |
JIRA_PROJECT_KEY |
Override Jira project key. |
jira_ssl_verify |
both | boolean or null |
JIRA_SSL_VERIFY |
Override Jira TLS verification. |
jira_max_results |
both | integer or null |
JIRA_MAX_RESULTS |
Override Jira search result limit. |
raw_prompt |
both | string or null |
unset |
Append request-specific AI instructions. |
github_token |
both | string or null |
GITHUB_TOKEN |
Override the GitHub token used during analysis-time GitHub operations. |
peer_ai_configs |
both | array or null |
server default | Override peer analysis configs. Omit or send null to inherit; send [] to disable. |
peer_analysis_max_rounds |
both | integer | server default | Override max peer rounds. Allowed range: 1-10. Applied only when the field is present. |
additional_repos |
both | array or null |
server default | Override additional repos. Omit or send null to inherit; send [] to disable. |
{
"tests_repo_url": "https://github.com/acme/tests:release-1.2",
"ai_provider": "gemini",
"ai_model": "gemini-2.5-pro",
"enable_jira": false,
"raw_prompt": "Focus on networking regressions first.",
"peer_ai_configs": [],
"additional_repos": [
{
"name": "infra",
"url": "https://github.com/acme/infra",
"ref": "main"
}
]
}
Effect: Omitted fields inherit the server defaults. peer_ai_configs=[] disables peer analysis for that request. additional_repos=[] disables additional repo cloning for that request.
Jenkins-Only Override Fields
Fields accepted only by POST /analyze.
| Name | Applies to | Type | Default When Omitted | Description |
|---|---|---|---|---|
jenkins_url |
POST /analyze |
string or null |
JENKINS_URL |
Override Jenkins URL. |
jenkins_user |
POST /analyze |
string or null |
JENKINS_USER |
Override Jenkins username. |
jenkins_password |
POST /analyze |
string or null |
JENKINS_PASSWORD |
Override Jenkins password or API token. |
jenkins_ssl_verify |
POST /analyze |
boolean or null |
JENKINS_SSL_VERIFY |
Override Jenkins TLS verification. |
jenkins_artifacts_max_size_mb |
POST /analyze |
integer or null |
JENKINS_ARTIFACTS_MAX_SIZE_MB |
Override artifact size cap. |
get_job_artifacts |
POST /analyze |
boolean or null |
GET_JOB_ARTIFACTS |
Override artifact download behavior. |
wait_for_completion |
POST /analyze |
boolean | server default | Override wait behavior. Applied only when the field is present. |
poll_interval_minutes |
POST /analyze |
integer | server default | Override poll interval. Applied only when the field is present. |
max_wait_minutes |
POST /analyze |
integer | server default | Override wait timeout. Applied only when the field is present. 0 means no limit. |
{
"jenkins_url": "https://jenkins.internal.example.com",
"jenkins_user": "svc-jji",
"jenkins_password": "your-api-token",
"jenkins_ssl_verify": false,
"get_job_artifacts": true,
"jenkins_artifacts_max_size_mb": 250,
"wait_for_completion": true,
"poll_interval_minutes": 5,
"max_wait_minutes": 0
}
Effect: wait_for_completion, poll_interval_minutes, and max_wait_minutes override only when the JSON field is present. Sending max_wait_minutes: 0 explicitly sets unlimited waiting for that request.
Direct Failure Input Source
Input-source fields accepted by POST /analyze-failures.
| Name | Applies to | Type | Default When Omitted | Description |
|---|---|---|---|---|
failures |
POST /analyze-failures |
array or null |
unset |
Raw failures to analyze directly. |
raw_xml |
POST /analyze-failures |
string or null |
unset |
JUnit XML input. Maximum length: 50,000,000 characters. |
{
"raw_xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><testsuite>...</testsuite>",
"ai_provider": "claude",
"ai_model": "claude-opus-4-1"
}
Effect: Exactly one of failures or raw_xml is required. When raw_xml is supplied, the response includes enriched_xml.
Feature Toggle and Capability Reporting
GET /api/capabilities
Returns server-level feature toggles and credential presence.
| Name | Type | Default | Description |
|---|---|---|---|
None |
n/a | n/a | This endpoint takes no query parameters or request body. |
| Response Field | Type | Description |
|---|---|---|
github_issues_enabled |
boolean | GitHub issue toggle state. |
jira_issues_enabled |
boolean | Jira issue toggle state. |
server_github_token |
boolean | Whether a server GitHub token is configured. |
server_jira_token |
boolean | Whether a server Jira token (JIRA_API_TOKEN or JIRA_PAT) is configured. |
server_jira_email |
boolean | Whether a server Jira email is configured. |
server_jira_project_key |
string | Configured Jira project key, or "". |
reportportal |
boolean | Actual Report Portal enabled state. |
reportportal_project |
string | Configured Report Portal project, or "". |
{
"github_issues_enabled": true,
"jira_issues_enabled": true,
"server_github_token": true,
"server_jira_token": false,
"server_jira_email": false,
"server_jira_project_key": "PROJ",
"reportportal": true,
"reportportal_project": "e2e"
}
Effect: This endpoint reports server configuration only. It does not apply per-request analysis overrides. reportportal reflects actual enablement after validating Report Portal URL, token, and project.