badges/shields · error · NotFound
changesetRevision not found
Error message
changesetRevision not found
What it means
Thrown by the GalaxyToolshed badge service when the Tool Shed API returns no installable revisions for a repository. The service first fetches the ordered list of installable revisions via fetchOrderedInstallableRevisionsSchema; if the result is not a non-empty array, there is nothing to query revision install info for, so a NotFound is raised with message 'changesetRevision not found'.
Source
Thrown at services/galaxytoolshed/galaxytoolshed-base.js:47
async fetchRepositoryRevisionInstallInfoSchema({
repository,
owner,
changesetRevision,
}) {
return this._requestJson({
schema: repositoryRevisionInstallInfoSchema,
url: `${this.constructor.baseUrl}/api/repositories/get_repository_revision_install_info?name=${repository}&owner=${owner}&changeset_revision=${changesetRevision}`,
})
}
async fetchLastOrderedInstallableRevisionsSchema({ repository, owner }) {
const changesetRevisions =
await this.fetchOrderedInstallableRevisionsSchema({
repository,
owner,
})
if (!Array.isArray(changesetRevisions) || !changesetRevisions.length) {
throw new NotFound({ prettyMessage: 'changesetRevision not found' })
}
return this.fetchRepositoryRevisionInstallInfoSchema({
repository,
owner,
changesetRevision: changesetRevisions[0],
})
}
}
View on GitHub (pinned to 766fd8bc89)
Solutions
- Verify the repository and owner names exactly match those in the Galaxy Tool Shed UI
- Check the repository in the Tool Shed web UI to confirm it has at least one installable revision
- Query the Tool Shed API directly (e.g. /api/repos/{owner}/{repo}/ordered_revisions?installable=true) to confirm the payload is non-empty
- Retry later if the Tool Shed is having API issues
Example fix
// before /api/galaxytoolshed/dependencies/wrong-owner/my-tool // after /api/galaxytoolshed/dependencies/bgruening/my-tool
Defensive patterns
Strategy: validation
Validate before calling
const revs = await fetch(`https://toolshed.g2.bx.psu.edu/api/repos/${owner}/${repo}/ordered_revisions?installable=true`).then(r => r.json());if (!Array.isArray(revs) || revs.length === 0) { console.warn('no installable revisions; skip badge'); } Type guard
const hasRevisions = (v) => Array.isArray(v) && v.length > 0 && typeof v[0] === 'string';
Try / catch
try { const badge = await getGalaxyToolshedRevisionBadge(repo, owner); } catch (e) { if (e prettyMessage === 'changesetRevision not found') { renderBadge('no installable revisions'); } else { throw e; } } Prevention
- Validate owner/repo names against the Tool Shed UI before generating badge URLs
- Check the repo has at least one installable revision before embedding badges
- Handle 404-style badge responses gracefully in README rendering
When it happens
Trigger: Calling the galaxytoolshed revision badge for a repository whose Tool Shed API response contains an empty or missing changeset_revisions list, or when the API returns a non-array (e.g. an error object) for that repository/owner combination.
Common situations: Repository name or owner typos in the badge URL; a repository that exists in the Tool Shed but has never had a shippable/revision metadata update so no installable revisions exist; Tool Shed API outages or schema changes returning empty payloads.
Understand the failure class
Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.
Related errors
AI-assisted analysis of badges/shields@766fd8bc89 (2026-08-30).
Data as JSON: /api/errors/f11ee429e5d4ddba.
Report an issue: GitHub.