canvas-lms-api 0.4.0

Rust client for the Instructure Canvas LMS REST API
Documentation
# Release Process

## Steps

### 1. Update the version

In `Cargo.toml`, bump `version` following [Semantic Versioning](https://semver.org):
- Patch (`0.1.x`): bug fixes, doc corrections, no API changes
- Minor (`0.x.0`): new backwards-compatible features
- Major (`x.0.0`): breaking changes

### 2. Update CHANGELOG.md

Move items from `## [Unreleased]` into a new dated section:

```markdown
## [0.1.1] - YYYY-MM-DD

### Fixed
- ...
```

Add a link reference at the bottom of the file:

```markdown
[0.1.1]: https://github.com/RobertConde/canvas-lms-api/compare/v0.1.0...v0.1.1
```

### 3. Update README.md

- Bump the version in the `[dependencies]` example to match the new release.
- Update the **Resources covered** section to reflect any new resource types added in this release.

### 4. Verify CI locally

Run each step defined in `.github/workflows/ci.yml` locally. Fix any failures before proceeding.

### 5. Commit and push

Run `cargo update --workspace` first to update `Cargo.lock` to reflect the new version:

```bash
cargo update --workspace
git add Cargo.toml Cargo.lock CHANGELOG.md README.md <any other changed files>
git commit -m "Release v0.1.1"
git push
```

### 6. Tag and push the tag

```bash
git tag v0.1.1
git push origin v0.1.1
```

This triggers the `Publish` GitHub Actions workflow.

### 7. Approve the deployment

The publish job waits for manual approval due to the `crates-io` environment protection rule.

Go to **Actions → Publish → Review deployments → Approve**.

Or via CLI:
```bash
gh run list --repo RobertConde/canvas-lms-api --limit 5
# Find the waiting Publish run ID, then:
gh run review <run-id> --approve
```

### 8. Verify the publish run succeeded

```bash
gh run view <run-id> --repo RobertConde/canvas-lms-api
```

Confirm the job shows `✓ Publish to crates.io` with no errors or warnings.

Check the crate is live:
```bash
cargo search canvas-lms-api
```