Skip to main content

Programmatic Access

Recertification cycles can be managed through the CLI, the Python SDK, and the MCP server — enabling automation, CI/CD integration, and AI-assisted governance workflows.

CLI

The qarion recertification command group provides full lifecycle management from the terminal.

Quick Reference

CommandDescription
qarion recertification list SPACEList cycles in a space
qarion recertification get SPACE CYCLE_IDGet cycle detail with audits
qarion recertification create SPACE --name ... --due-date ...Create a new cycle
qarion recertification populate SPACE CYCLE_IDPopulate audit items
qarion recertification complete SPACE CYCLE_IDMark cycle as completed
qarion recertification cancel SPACE CYCLE_IDCancel a cycle
qarion recertification review AUDIT_ID --status ...Approve or reject an audit

Example: Create and Populate a Cycle

# Create a product cycle with a Q1 deadline
qarion recertification create marketing-analytics \
--name "Q1 2026 PII Review" \
--due-date "2026-03-31T23:59:59Z" \
--type product

# Populate with matching resources
qarion recertification populate marketing-analytics <CYCLE_ID>

Example: Approve All Pending Audits

# Get cycle detail as JSON, extract pending audit IDs, approve each
CYCLE=$(qarion --json recertification get marketing-analytics <CYCLE_ID>)

echo "$CYCLE" | jq -r '.audits[] | select(.status == "pending") | .id' | \
while read -r AUDIT_ID; do
qarion recertification review "$AUDIT_ID" --status approved
done
tip

Use --json to get machine-readable output for scripting.


Python SDK

The SDK provides both async and sync clients for all recertification operations.

Async Example

from qarion import QarionClient

async with QarionClient(api_key="your-api-key") as client:
# Create a cycle
cycle = await client.recertification.create_cycle(
"marketing-analytics",
name="Q1 2026 Review",
due_date="2026-03-31T23:59:59Z",
)

# Configure filters
await client.recertification.update_config(
"marketing-analytics",
cycle.id,
filters={"tags": ["pii"], "criticality": ["High"]},
)

# Populate and review
await client.recertification.populate_cycle("marketing-analytics", cycle.id)

detail = await client.recertification.get_cycle("marketing-analytics", cycle.id)
for audit in detail.audits:
await client.recertification.review_audit(
audit.id, status="approved",
)

await client.recertification.complete_cycle("marketing-analytics", cycle.id)

Sync Example

from qarion import QarionSyncClient

client = QarionSyncClient(api_key="your-api-key")

cycles = client.recertification.list_cycles("marketing-analytics")
for c in cycles:
print(f"{c.name}: {c.reviewed_count}/{c.audit_count}")

client.close()

Available Methods

MethodDescription
create_cycleCreate a new cycle
list_cyclesList all cycles
get_cycleGet cycle detail with audits
update_configUpdate filters and templates
delete_cyclePermanently delete a cycle
populate_cycleAuto-populate audit items
recertify_allBulk-create requests for all pending audits
archive_cycle / unarchive_cycleArchive/restore a cycle
complete_cycle / cancel_cycleChange cycle status
get_filter_suggestionsGet autocomplete values for filters
review_auditApprove or reject an audit item
create_audit_requestCreate a request for a single audit
info

For full method signatures and models, see the SDK Reference.


MCP Server

The Qarion MCP server exposes recertification operations as tools, enabling AI assistants (e.g., Claude, Copilot) to manage recertification cycles.

Available Tools

ToolDescription
list_recertification_cyclesList cycles in a space
get_recertification_cycleGet cycle detail
create_recertification_cycleCreate a new cycle
populate_recertification_cyclePopulate audit items
complete_recertification_cycleMark cycle as completed
cancel_recertification_cycleCancel a cycle
review_recertification_auditApprove or reject an audit

Example Prompt

"List the recertification cycles in the marketing-analytics space and show me which ones have pending audits."

The MCP tools accept the same parameters as the SDK methods and return JSON responses.


Use Cases

Scheduled Reviews via CI/CD

Create a cron job or CI/CD pipeline that automatically creates and populates a cycle at the start of each quarter:

# Runs on the first day of each quarter
qarion recertification create marketing-analytics \
--name "$(date +%Y)-Q$((($(date +%-m)-1)/3+1)) Review" \
--due-date "$(date -v+90d +%Y-%m-%dT23:59:59Z)" \
--type product

# Populate immediately
qarion recertification populate marketing-analytics <CYCLE_ID>

Automated Compliance Reporting

Use the SDK to pull cycle data and feed it into compliance dashboards:

cycles = await client.recertification.list_cycles("marketing-analytics")
completed = [c for c in cycles if c.status == "completed"]
for c in completed:
detail = await client.recertification.get_cycle("marketing-analytics", c.id)
approved = sum(1 for a in detail.audits if a.status == "approved")
print(f"{c.name}: {approved}/{c.audit_count} approved")