Andamio Logo
Developer Guides/Andamio CLI

Managing Courses

Query courses, modules, SLTs, lesson content, and manage student and teacher workflows

Managing Courses

List Courses

andamio course list

To see only courses where you're a teacher:

andamio teacher courses

Course Details

andamio course get <course-id>

List Modules

andamio course modules <course-id>

Or use --course to specify by name instead of ID:

andamio course modules --course "Intro to Cardano"

The --course flag matches by substring. If multiple courses match, all candidates are listed with their IDs.

View SLTs

andamio course slts <course-id> <module-code>

With --course:

andamio course slts <module-code> --course "Intro to Cardano"

This returns the Student Learning Targets for a specific module. The module must be on-chain (APPROVED or ON_CHAIN status) for this public endpoint to work.

View Lesson Content

Get a single lesson by SLT index:

andamio course lesson <course-id> <module-code> <slt-index>

Get the module introduction:

andamio course intro <course-id> <module-code>

Get the module assignment:

andamio course assignment <course-id> <module-code>

JSON Output

All commands support -o json for structured output:

andamio course modules <course-id> -o json | jq '.data[].content.course_module_code'

Create a Module

Create a new module on an existing course, either from a compiled directory or explicit flags:

# From a compiled directory (reads title and code from outline.md)
andamio course create-module ./compiled/my-course/101 --course-id <id>

# From explicit flags
andamio course create-module --course-id <id> --code 101 --title "My Module"

Requires user authentication (wallet login) and teacher access on the course.

Course Owner Commands

If you own courses (created via on-chain transaction), manage them with the course owner subgroup. All require user authentication.

List Your Courses

andamio course owner list

Create a Course

andamio course owner create --title "My Course" --description "Learn things" --public

Optional flags: --description, --image-url, --video-url, --category, --public.

Update Course Metadata

Only specified flags are updated — omitted fields remain unchanged:

andamio course owner update --course-id <id> --title "New Title"
andamio course owner update --course-id <id> --description "Updated" --public=false

Register an On-Chain Course

After creating a course on-chain with tx run, register it with off-chain metadata. The on-chain transaction creates the course in the smart contract; registration links it to the API's metadata store.

andamio course owner register --course-id <id> --title "My Course"

Manage Teachers

Set the teacher list for a course (repeatable --teacher flag):

andamio course owner teachers --course-id <id> --teacher addr1... --teacher addr2...

Course Teacher Commands

Teachers manage module lifecycle and review student submissions. All course teacher commands require user authentication and teacher access on the course.

Module Lifecycle

Register, publish, delete, and update the status of course modules:

# Register a module from on-chain data
andamio course teacher register-module --course-id <id> --module-code 101

# Publish a module
andamio course teacher publish-module --course-id <id> --module-code 101

# Delete a module
andamio course teacher delete-module --course-id <id> --module-code 101

# Update module status
andamio course teacher update-module-status --course-id <id> --module-code 101 --status DRAFT

All four commands require --course-id and --module-code. The update-module-status command also requires --status.

Review Student Submissions

List pending reviews, then approve or reject with optional feedback:

# List commitments awaiting review
andamio course teacher commitments --course-id <id>

# Approve a submission
andamio course teacher review --course-id <id> --commitment-id <cid> --decision approve

# Reject with feedback
andamio course teacher review --course-id <id> --commitment-id <cid> --decision reject --feedback "Needs more detail"

The --decision flag accepts approve or reject. The --feedback flag is optional.

Scripting Example

List pending commitments and review each individually:

COURSE_ID="your-course-id"

# List all pending commitment IDs
andamio course teacher commitments --course-id "$COURSE_ID" -o json | \
  jq -r '.data[].commitment_id'

# Review a specific commitment
andamio course teacher review --course-id "$COURSE_ID" --commitment-id <cid> --decision approve

To batch-approve (use with caution — review each submission first in production):

andamio course teacher commitments --course-id "$COURSE_ID" -o json | \
  jq -r '.data[].commitment_id' | \
  while read CID; do
    andamio course teacher review --course-id "$COURSE_ID" --commitment-id "$CID" --decision approve
  done

Course Student Commands

Students enroll in modules, submit evidence, and claim credentials. All course student commands require user authentication.

List Enrolled Courses and Credentials

# Courses you're enrolled in
andamio course student courses

# Credentials you've earned
andamio course student credentials

# All your assignment commitments
andamio course student commitments

Get a Specific Commitment

andamio course student commitment --course-id <id> --module-code 101

Enroll in a Module

andamio course student create --course-id <id> --module-code 101

Submit and Update Evidence

# Submit evidence for the first time
andamio course student submit --course-id <id> --module-code 101 --evidence "https://github.com/my/pr"

# For chain-only modules (no module code), use --slt-hash instead
andamio course student submit --course-id <id> --slt-hash 77547a... --evidence "https://github.com/my/pr"

# Update evidence after feedback
andamio course student update --course-id <id> --module-code 101 --evidence "https://github.com/my/pr/v2"

Claim a Credential

After your submission is approved:

andamio course student claim --course-id <id> --module-code 101

On-Chain Transactions

For on-chain operations (assignment commitment, evidence update, credential claim), use tx run with the appropriate transaction endpoint. See Transaction Signing for the full workflow.

Leave a Commitment

Withdraw from a module before completion:

andamio course student leave --course-id <id> --module-code 101

Student Workflow Example

The full student workflow from enrollment to credential:

COURSE_ID="your-course-id"
MODULE="101"

# 1. Enroll
andamio course student create --course-id "$COURSE_ID" --module-code "$MODULE"

# 2. Submit evidence
andamio course student submit --course-id "$COURSE_ID" --module-code "$MODULE" \
  --evidence "https://github.com/myrepo/pull/1"

# 3. Check status
andamio course student commitment --course-id "$COURSE_ID" --module-code "$MODULE" -o json

# 4. After approval, claim credential
andamio course student claim --course-id "$COURSE_ID" --module-code "$MODULE"

# 5. Verify
andamio course student credentials

Your Dashboard

See a summary of everything you're enrolled in, teaching, and managing:

andamio user me

Role-Specific Views

List courses where you're a teacher:

andamio teacher courses

List projects where you're a manager:

andamio manager projects

Other Resources

Projects

andamio project list
andamio project get <project-id>

Transactions

Build, sign, and submit transactions:

andamio tx build /v2/tx/global/user/access-token/mint --body '{"alias":"dev1",...}'
andamio tx sign --tx <unsigned-cbor> --skey ./payment.skey
andamio tx submit --tx <signed-cbor>
andamio tx status <tx-hash>

See Transaction Signing for the full workflow.

API Exploration

Fetch the OpenAPI spec and browse available endpoints:

andamio spec fetch
andamio spec paths
andamio spec paths --filter course-module