Budibase/budibase · error · HTTPError
Supplied file is not a Project package.
Error message
Supplied file is not a Project package.
What it means
After confirming the manifest is an object, the importer checks manifest.artifactType equals "project". This error is thrown when the uploaded package is a valid record but a different artifact type — e.g. an application backup or plugin package rather than a project package. It is a kind mismatch, not a corruption error.
Source
Thrown at packages/server/src/sdk/workspace/projects/backups/imports.ts:650
}
case ResourceType.WORKSPACE_APP:
return docIds.generateWorkspaceAppID()
case ResourceType.SCREEN:
return generateScreenID()
default:
throw new HTTPError(
`Project import does not support resource type '${resourceType}'.`,
400
)
}
}
const validateManifest = (manifest: ProjectPackageManifest) => {
if (!isRecord(manifest)) {
throw new HTTPError("Project package manifest is invalid.", 400)
}
if (manifest.artifactType !== "project") {
throw new HTTPError("Supplied file is not a Project package.", 400)
}
if (manifest.formatVersion !== PROJECT_EXPORT_FORMAT_VERSION) {
throw new HTTPError(
`Unsupported Project package format version '${manifest.formatVersion}'.`,
400
)
}
if (
!isRecord(manifest.sourceWorkspace) ||
typeof manifest.sourceWorkspace.id !== "string" ||
!isRecord(manifest.resourcesByType) ||
!Array.isArray(manifest.unsupportedContent)
) {
throw new HTTPError("Project package manifest is invalid.", 400)
}
for (const count of Object.values(manifest.resourcesByType)) {
if (!Number.isInteger(count) || Number(count) < 0) {
throw new HTTPError("Project package manifest is invalid.", 400)View on GitHub (pinned to a81a902e9a)
Solutions
- Export a project package (artifactType "project") from the workspace backup UI/API instead of using the app export.
- Confirm the file's manifest artifactType before importing.
- Use the correct import endpoint for the artifact type you actually have.
- Re-export from the intended source workspace.
Example fix
// before: wrong artifact
{ "artifactType": "app" }
// after
{ "artifactType": "project", "formatVersion": 1 } Defensive patterns
Strategy: validation
Validate before calling
if (manifest.artifactType !== "project") throw new Error(`Wrong artifact type: ${manifest.artifactType}; expected "project"`) Type guard
const isProjectPackage = (m: { artifactType?: string }): boolean => m.artifactType === "project" Try / catch
try {
await importProjectPackage(file)
} catch (err) {
if (err instanceof HTTPError && err.status === 400 && err.message.includes("not a Project package")) {
// route user to the correct import flow for their artifact type
}
throw err
} Prevention
- Use the project export (not app export) for project imports
- Label exported artifacts clearly by type
- Check artifactType in the manifest before calling the import API
When it happens
Trigger: Uploading an app-level export (artifactType other than "project") through the project import endpoint; mixing up backup artifacts from different product areas.
Common situations: Users selecting an old app export from the import dialog; automation tooling posting the wrong artifact; artifacts exported before the project-package format was introduced.
Related errors
- Project package manifest is invalid.
- Project import could not remap datasource for query '${doc._
- Project import does not support resource type '${resourceTyp
- Unsupported Project package format version '${manifest.forma
- Project package project.json is invalid.
AI-assisted analysis of Budibase/budibase@a81a902e9a (2026-08-29).
Data as JSON: /api/errors/07ecb8fb622df6d1.
Report an issue: GitHub.