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")