concert service has 11 resource kinds, each listed below with its endpoints, fields, and dependencies. Values resolve late, so you reference another resource with ${kind.ref_name}. For defaults, validation rules, and examples, run wxctl explain <kind>.
YAML envelope & reference syntax
YAML envelope & reference syntax
- Envelope: A config is one or more YAML documents separated by
---. Each has top-levelkindandref_name, then the fields below at the top level (not nested underspec). ref_name: Unique handle for this resource within the config. Used to reference it from other resources, then stripped before the API call (not a schema field).- References: Reference another resource by its ref_name:
${<kind>.<ref_name>}resolves to its id,${<kind>.<ref_name>.<field>}to a specific field. Values resolve late, at plan/apply time.
concert_application
A Concert application is the top-level managed entity in IBM Concert’s inventory, the unit Concert tracks for risk posture, vulnerabilities, dependencies, and resilience.
Runs on Software · ID field id
Endpoints
| Operation | Method | Path |
|---|---|---|
| Create | POST | /core/api/v1/applications |
| Read | GET | /core/api/v1/applications/{id} |
| List | GET | /core/api/v1/applications |
| Update | PATCH | /core/api/v1/applications/{id} |
| Delete | DELETE | /core/api/v1/applications/{id} |
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Optional | Application display name. |
version | string | Optional | Application version label. |
description | string | Optional | Free-text application description. |
sample | boolean | Optional | Whether this is a sample application. |
criticality | integer | Optional | Business criticality score. |
data_impact_risk | integer | Optional | Data-impact risk score. |
business_name | string | Optional | Owning business name. |
tags | array<string> | Optional | Application tags. Writable on create but enriched/reshaped by the API on read (EntityTags in, TagsPrototype out), so excluded from state_fields to avoid phantom drift. |
business_units | object | Optional | Business-unit association object. Writable on create; server-augmented on read, so excluded from state_fields. |
properties | object | Optional | Application release properties object. Writable on create; server-augmented on read, so excluded from state_fields. |
associations | object | Optional | Application associations object. Writable on create; server-augmented on read, so excluded from state_fields. |
id, status, created_on, last_updated_on, application_release_id.
Consumers
concert_automation_rule→.component_id(optional)concert_compliance_profile→.application_releases_ids(optional)
concert_automation_rule
A Concert automation rule fires an action (e.g. auto-create an ITSM ticket) when a use-case condition is met, the declarative half of Concert’s auto-ticketing.
Runs on Software · ID field id
Endpoints
| Operation | Method | Path |
|---|---|---|
| Create | POST | /core/api/v1/automation_rules |
| Read | GET | /core/api/v1/automation_rules/{id} |
| List | GET | /core/api/v1/automation_rules |
| Update | PATCH | /core/api/v1/automation_rules/{id} |
| Delete | DELETE | /core/api/v1/automation_rules |
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Required | Automation-rule display name (matched on during discovery). |
use_case | string | Required | Use-case condition that triggers the rule (server-enforced enum). |
action | string | Required | Action taken when the rule fires (e.g. create a ticket). |
description | string | Optional | Free-text automation-rule description. |
status | string | Optional | Rule status. Writable on create but server-managed on read (required in the read model), so excluded from state_fields to avoid phantom Update{} drift. |
component_type | string | Optional | Type of the component the rule scopes to. Required (together with component_id) by the live API, a rule with neither set 400s (“This component type is invalid. Provide a valid component type.”). Both application and environment are accepted by create-time validation, but live-verified on 3.0.0.0: a rule scoped to application returns 201 and a real id, yet the resulting rule is then permanently unlistable/unretrievable (LIST always returns it empty, GET-by-id 400s “The automation rule can’t be retrieved.”), a Concert platform indexing gap, not a wxctl bug (confirmed via direct API calls, independent of wxctl). environment is the only value confirmed to round-trip cleanly (create, LIST, GET, and collection DELETE all see the rule), use it for a rule that must be planned/discovered. |
component_id | string | Optional | Id of the component the rule scopes to. Required (together with component_type) by the live API and RBAC-checked, a syntactically-valid but nonexistent id 403s (live-verified on 3.0.0.0). This top-level reference produces the DAG edge → the referenced concert_application or concert_environment is ordered before the rule and ${<kind>.<ref>.id} resolves to the created id. Prefer a concert_environment reference (component_type: environment), a concert_application reference (component_type: application) creates successfully but leaves the rule permanently unlistable (see component_type’s description). |
credential_id | string | Optional | Id of the concert_credential the rule’s action authenticates with (e.g. ITSM creds). This top-level reference produces the DAG edge → the credential is ordered before the rule and ${concert_credential.<ref>.id} resolves to the created id. |
target_service_details | object | Optional | Target ITSM service connection details (IngestionjobAutomationPrototypeDetail: repository, project_key, organization, assignee, channel_id, …). May carry connection secrets, so the whole object is marked sensitive → redacted at emission (sensitive_paths → target_service_details). Server-augmented on read, so excluded from state_fields to avoid phantom drift. |
option | object | Optional | Rule option detail (AutomationRuleOptionPrototypeDetail: risk_score, cvss_score, priority, expires_in, …). Passed through on create; server-augmented on read, so excluded from state_fields. |
id, created_on, created_by.
Depends on
component_id→concert_application(optional)component_id→concert_environment(optional)credential_id→concert_credential(optional)
concert_compliance_profile
A Concert compliance profile is a named, versioned set of controls (drawn from a pre-imported compliance catalog) that Concert evaluates applications against to score compliance posture, the declarative half of Concert’s compliance / AI-governance surface (sovereign, CSCF/ISCF, etc.).
Runs on Software · ID field uuid
Endpoints
| Operation | Method | Path |
|---|---|---|
| Create | POST | /compliance/api/v1/profiles |
| Read | GET | /compliance/api/v1/profiles/{uuid} |
| List | GET | /compliance/api/v1/profiles |
| Update | PUT | /compliance/api/v1/profiles/{uuid} |
| Delete | DELETE | /compliance/api/v1/profiles/{uuid} |
| Field | Type | Required | Description |
|---|---|---|---|
title | string | Required | Profile title, the only required create field and the human label matched on during id recovery / discovery (ComplianceProfileHandler lists /profiles and matches title to recover the uuid). Assumed unique per instance (spec Q5). |
description | string | Optional | Free-text profile description. |
version | string | Optional | Profile version label. |
allow_manual_assessment | boolean | Optional | Whether the profile permits manual assessment of its controls. Writable, but does NOT round-trip: Concert’s GET always reports false regardless of what create/PUT sent (live-verified on 3.0.0.0), so it is excluded from state_fields to avoid a phantom ~allow_manual_assessment Update on every re-plan. |
controls | array<object> | Optional | Profile controls (ProfileControls: { catalog_id, control_ids[] }). control_ids reference control ids from a catalog imported out-of-band into Concert (/import_catalogs, a spec Non-Goal; the Phase 5 example supplies ids via ${env:…} placeholders). Server-augmented on read (catalog_info added), so excluded from state_fields to avoid phantom Update{} drift. |
application_releases_ids | array<string> | Optional | Ids of the Concert applications (application releases) this profile scopes to. This top-level reference produces the DAG edge → each concert_application is ordered before the profile and ${concert_application.<ref>.application_release_id} resolves to the created application’s server-computed release id (spec AC4 intent). Sending the application’s own id here 500s (live-verified on 3.0.0.0); the release id succeeds. NOT echoed on read (absent from ProfileDetails), so excluded from state_fields to avoid phantom drift. (3.0.0.0 names this field application_releases_ids; the spec table’s application_ids maps onto it.) |
uuid, mapped_profile, last_updated_by, last_updated_on.
Depends on
application_releases_ids→concert_application(optional)
concert_credential
A Concert credential is a named key/value secret bundle used by ingestion jobs to authenticate against source systems.
Runs on Software · ID field id
Endpoints
| Operation | Method | Path |
|---|---|---|
| Create | POST | /core/api/v1/credentials |
| Read | GET | /core/api/v1/credentials/{id} |
| List | GET | /core/api/v1/credentials |
| Update | PATCH | /core/api/v1/credentials/{id} |
| Delete | DELETE | /core/api/v1/credentials |
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Optional | Credential display name. |
description | string | Optional | Free-text credential description. |
type | string | Optional | Credential type (the source-system connector this credential authenticates). Server-enforced enum (Concert 3.0.0.0): one of ec2, s3, jira, github, ecr, eks, service_now, kubernetes, iks, concert_workflows. NOTE: Concert validates the credential against the target system on create, so credentials[] must carry real, working keys for the chosen type (e.g. github expects access_token + base_url), a placeholder value is rejected with HTTP 400. |
credentials | array<object> | Optional | Key/value credential properties. Each entry is { key, value }; value is secret and marked sensitive so it is redacted at emission (sensitive_paths → credentials.value). Excluded from state_fields: the API does not return value on read, so it cannot round-trip. |
created_by | string | Optional | Creator principal (audit; excluded from state_fields). |
expiry | integer | Optional | Credential expiry (epoch millis). |
id, created_on, last_updated_on.
Consumers
concert_automation_rule→.credential_id(optional)concert_ingestion_job→.credentials_id(optional)
concert_environment
A Concert environment is a deployment target (e.g. a cluster, region, or stage) tracked in IBM Concert’s inventory.
Runs on Software · ID field id
Endpoints
| Operation | Method | Path |
|---|---|---|
| Create | POST | /core/api/v1/environments |
| Read | GET | /core/api/v1/environments/{id} |
| List | GET | /core/api/v1/environments |
| Update | PATCH | /core/api/v1/environments/{id} |
| Delete | DELETE | /core/api/v1/environments/{id} |
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Optional | Environment display name. |
description | string | Optional | Free-text environment description. |
type | string | Optional | Environment type. Server-enforced enum (Concert 3.0.0.0): one of ec2, eks, rosa, iks, roks, zOS, kubernetes, ocp, concert_workflows, Other. |
region | string | Optional | Environment region. |
purpose | string | Optional | Environment purpose (e.g. production, staging, dev). |
tags | array<string> | Optional | Environment tags. Writable on create but enriched/reshaped by the API on read (EntityTags in, TagsPrototype out), so excluded from state_fields to avoid phantom drift. |
id, last_updated_on.
Consumers
concert_automation_rule→.component_id(optional)
concert_ingestion_job
A Concert ingestion job pulls data from a source system (authenticating with a concert_credential) into IBM Concert’s inventory on a schedule.
Runs on Software · ID field id
Endpoints
| Operation | Method | Path |
|---|---|---|
| Create | POST | /core/api/v1/ingestion_jobs |
| Read | GET | /core/api/v1/ingestion_jobs/{id} |
| List | GET | /core/api/v1/ingestion_jobs |
| Update | PATCH | /core/api/v1/ingestion_jobs/{id} |
| Delete | DELETE | /core/api/v1/ingestion_jobs/{id} |
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Optional | Ingestion-job display name. |
description | string | Optional | Free-text ingestion-job description. |
type | string | Optional | Ingestion-job type (the source-system connector). |
details | object | Optional | Polymorphic connector detail object (IngestionjobPrototypeDetails); shape varies by type. Passed through as-is on create; server-augmented on read, so excluded from state_fields to avoid phantom drift. |
scheduled | integer | Optional | Schedule cadence for the job (server-constrained to 0-10000; not epoch millis). |
status | string | Optional | Job status. Server-derived operational state; excluded from state_fields (the API updates it independently of declared config). |
enabled | string | Optional | Job enablement state, the string “enabled” or “disabled” (not “true”/“false”). |
credentials_id | string | Optional | Id of the concert_credential this job authenticates with. This top-level reference produces the DAG edge → the credential is ordered before the job and ${concert_credential.<ref>.id} resolves to the created id. |
created_by | string | Optional | Creator principal (audit; excluded from state_fields). |
meta_data | object | Optional | Free-form job metadata (IngestionjobMetadata). Passed through on create; server-augmented on read, so excluded from state_fields. |
id, created_on, last_updated_on.
Depends on
credentials_id→concert_credential(optional)
concert_resilience_input_data_key
A Concert resilience input-data key (InputDataKeyRequest) defines a named metric input, its label, units, and data type, that resilience requirements evaluate against.
Runs on Software · ID field input_data_key_id
Endpoints
| Operation | Method | Path |
|---|---|---|
| Create | POST | /resilience/assessment/api/v1/input_data_keys |
| Read | GET | /resilience/assessment/api/v1/input_data_keys/{input_data_key_id} |
| List | GET | /resilience/assessment/api/v1/input_data_keys |
| Update | PATCH | /resilience/assessment/api/v1/input_data_keys/{input_data_key_id} |
| Delete | DELETE | /resilience/assessment/api/v1/input_data_keys/{input_data_key_id} |
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Required | Input-data-key name (matched on during discovery). |
label | string | Required | Human-readable label. |
description | string | Required | Free-text description (required by the API). |
units | string | Required | Measurement units for the metric input. |
data_type | string | Required | Data type of the metric input (server-enforced enum). |
origin | string | Optional | Optional origin of the metric input. |
assessment_query | string | Optional | Optional query used to source the metric value. |
aggregation | string | Optional | Optional aggregation applied to the metric input. |
metadata | object | Optional | Optional free-form metadata object. Passed through on create; server-augmented on read, so excluded from state_fields to avoid phantom Update{} drift. |
input_data_key_id, domain_id, is_oob, created_by, creation_ts.
Consumers
concert_resilience_profile→.input_data_keys(optional)
concert_resilience_library
A Concert resilience library (LibraryRequest) groups resilience requirements into a reusable set.
Runs on Software · ID field id
Endpoints
| Operation | Method | Path |
|---|---|---|
| Create | POST | /resilience/assessment/api/v1/library |
| Read | GET | /resilience/assessment/api/v1/library/{id} |
| List | GET | /resilience/assessment/api/v1/library |
| Update | PUT | /resilience/assessment/api/v1/library/{id} |
| Delete | DELETE | /resilience/assessment/api/v1/library/{id} |
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Required | Library name (matched on during discovery). |
label | string | Required | Human-readable label. |
description | string | Optional | Free-text library description. |
use_last_received_data | string | Optional | Comma-separated list of input-data-key NAMES evaluated against the last received data (live-verified on 3.0.0.0: a key name is required, a boolean-ish value like "true" 400s). |
requirements | array<object> | Optional | Resilience requirements (Requirement objects) bundled into the library. Passed through on create/PUT; server-augmented and paginated on read, so excluded from state_fields to avoid phantom Update{} drift. |
id, is_oob, nfr_count.
concert_resilience_posture
A Concert resilience assessment posture (GraderPostureRequest) binds a concert_resilience_profile to a target (application/deployment) and schedules its resilience assessment.
Runs on Software · ID field id
Endpoints
| Operation | Method | Path |
|---|---|---|
| Create | POST | /resilience/assessment/api/v1/posture |
| Read | GET | /resilience/assessment/api/v1/posture/{id} |
| List | GET | /resilience/assessment/api/v1/posture |
| Update | PATCH | /resilience/assessment/api/v1/posture/{id} |
| Delete | DELETE | /resilience/assessment/api/v1/posture/{id} |
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Required | Posture name (matched on during discovery; immutable, PATCH cannot change it). |
profile_name | string | Required | Name of the concert_resilience_profile this posture assesses against. Bound BY NAME (not id), the API’s PostureRequest keys the profile by name (spec Q3). This top-level reference produces the DAG edge -> the profile is ordered before the posture and ${concert_resilience_profile.<ref>.name} resolves to the profile’s name. Immutable (create-only); on the discovered path it resolves to the literal profile name and round-trips, on the deferred path the unresolved template is skipped. |
target_type | string | Required | Target kind the posture scopes to (e.g. app_deployment). Server-enforced; not constrained here (concert convention, no allowed_values). Immutable (create-only). |
target_name | string | Required | Target name (e.g. the application) the posture assesses. Immutable (create-only). |
environment | string | Optional | Environment name, required by the API when target_type is ‘app_deployment’. Echoed on read under the server key env_name (different key), so excluded from comparison to avoid phantom drift. |
assessment_period | string | Optional | Assessment period (e.g. “week”, “day”, “latest”). One of only two fields the PATCH update verb (UpdatePostureRequest) can change -> a state_field. |
comments | string | Optional | Free-text comments. One of only two fields the PATCH update verb (UpdatePostureRequest) can change -> a state_field. |
id, is_primary, app_name, env_name.
Depends on
profile_name→concert_resilience_profile(required)
concert_resilience_profile
A Concert resilience assessment profile (GraderProfileRequest) is a named set of resilience requirements, scored against metric input-data keys, that Concert evaluates to rate an application’s resilience posture.
Runs on Software · ID field id
Endpoints
| Operation | Method | Path |
|---|---|---|
| Create | POST | /resilience/assessment/api/v1/profile |
| Read | GET | /resilience/assessment/api/v1/profile/{id} |
| List | GET | /resilience/assessment/api/v1/profile |
| Delete | DELETE | /resilience/assessment/api/v1/profile/{id} |
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Required | Profile name (matched on during discovery; immutable, no update verb). |
label | string | Required | Human-readable label. |
aggregate_criteria_type | string | Required | How per-requirement scores aggregate into the profile score. Server-enforced enum (snippet_ref, average); not constrained here (concert convention, no allowed_values, the server validates). |
requirements | array<object> | Required | Resilience requirements (ProfileRequirement objects: name, library_name, input_data_keys, criteria, …) the profile evaluates. Required by the API on create. Server-augmented and paginated on read, so excluded from comparison to avoid phantom Recreate. |
description | string | Optional | Free-text profile description. |
aggregate_criteria | string | Optional | Optional aggregation snippet reference (used when aggregate_criteria_type is snippet_ref). |
rating_thresholds | string | Optional | Comma-separated rating thresholds (e.g. “50,75,95,100”). |
expected_score | float | Optional | Optional expected score (0-100). Excluded from comparison, a float round-trip is representation-sensitive; Phase 5 may add it once a live re-plan is verified clean. |
use_last_received_data | string | Optional | Comma-separated list of input-data-key NAMES evaluated against the last received data (live-verified on 3.0.0.0: a key name is required, a boolean-ish value like "true" 400s). |
input_data_keys | string | Optional | Comma-separated input-data-key NAMES the profile evaluates against. 3.0.0.0 models this as a STRING (e.g. “key_a,key_b”), NOT an array of ids, so the reference targets the key name. This top-level reference produces the DAG edge -> each concert_resilience_input_data_key is ordered before the profile (spec deliverable). Server-augmented on read (input_data_keys_count derived), so excluded from comparison to avoid phantom drift. A single ${concert_resilience_input_data_key.k.name} resolves for ordering; multi-key comma-joined refs are a Phase-5 example concern. |
metadata | object | Optional | Optional free-form metadata object. Passed through on create; server-augmented on read, so excluded from comparison to avoid phantom drift. |
id, is_oob, nfr_count, input_data_keys_count, creation_ts, created_by.
Depends on
input_data_keys→concert_resilience_input_data_key(optional)
concert_resilience_posture→.profile_name(required)
concert_source_repo
A Concert source repository is a version-controlled code repo tracked in IBM Concert’s inventory for SBOM, CVE, and dependency posture.
Runs on Software · ID field id
Endpoints
| Operation | Method | Path |
|---|---|---|
| Create | POST | /core/api/v1/source_repos |
| Read | GET | /core/api/v1/source_repos/{id} |
| List | GET | /core/api/v1/source_repos |
| Update | PATCH | /core/api/v1/source_repos/{id} |
| Delete | DELETE | /core/api/v1/source_repos/{id} |
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Required | Source-repo display name. |
repo_url | string | Required | Repository URL, the stable identity used to match on discovery. |
branch | string | Optional | Tracked branch. |
commit_sha | string | Optional | Pinned commit SHA. |
tags | array<string> | Optional | Repo tags. Writable on create but enriched/reshaped by the API on read (TagsPrototype), so excluded from state_fields to avoid phantom drift. |
associations | object | Optional | Repo associations object. Writable on create; server-augmented on read, so excluded from state_fields. |
properties | array<object> | Optional | Repo inventory properties. Writable on create; server-augmented on read, so excluded from state_fields. |
id, created_on, last_updated_on.
