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

  1. Export a project package (artifactType "project") from the workspace backup UI/API instead of using the app export.
  2. Confirm the file's manifest artifactType before importing.
  3. Use the correct import endpoint for the artifact type you actually have.
  4. 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

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


AI-assisted analysis of Budibase/budibase@a81a902e9a (2026-08-29). Data as JSON: /api/errors/07ecb8fb622df6d1. Report an issue: GitHub.