RocketChat/Rocket.Chat · error · Error

error-invalid-provider

error-invalid-provider

Error message

error-invalid-provider

What it means

getProviderMetadata(providerId) resolves the registration via OutboundMessageProvider.findOneByProviderId; when nothing is registered under that id it throws 'error-invalid-provider'. Providers are registered by apps, so uninstalling or disabling the owning app removes the registration and orphans stored ids.

Solutions

  1. Reinstall or re-enable the app that owns the provider so it re-registers
  2. List current providers with listOutboundProviders() and use a live providerId
  3. Drop stored references whenever app uninstall/disable events fire
Defensive patterns

Strategy: validation

Validate before calling

const provider = await outboundMessageProvider.outboundMessageProvider.findOneByProviderId(providerId);
if (!provider) {
  throw new Error(`no outbound provider '${providerId}' - reinstall the owning app or pick a live id`);
}
await outboundMessageProvider.getProviderMetadata(providerId);

Try / catch

try {
  return await outboundMessageProvider.getProviderMetadata(providerId);
} catch (error) {
  if (error instanceof Error && error.message === 'error-invalid-provider') {
    const live = outboundMessageProvider.listOutboundProviders();
    throw new NotFoundError(`provider '${providerId}' not registered; available: ${live.map((p) => p._id).join(', ')}`);
  }
  throw error;
}

Prevention

When it happens

Trigger: Metadata request for a providerId that is stale (owning app uninstalled/disabled), typo'd, or requested before the app finished registering its outbound provider.

Common situations: Persisted provider ids in integration config surviving an app uninstall; reinstalling an app without re-registering; ids copied between environments.

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 RocketChat/Rocket.Chat@b2c16d5842 (2026-08-18). Data as JSON: /api/errors/e597d49391734bde. Report an issue: GitHub.

Appendix: source

Thrown at apps/meteor/ee/server/api/v1/omnichannel/lib/outbound.ts:40

		return this.provider;
	}

	private isProviderValid(type: any): type is ValidOutboundProvider {
		return ValidOutboundProviderList.includes(type);
	}

	public listOutboundProviders(type?: string): IOutboundProvider[] {
		if (type !== undefined && !this.isProviderValid(type)) {
			throw new Error('Invalid type');
		}

		return this.provider.getOutboundMessageProviders(type);
	}

	public getProviderMetadata(providerId: string): Promise<IOutboundProviderMetadata> {
		const provider = this.provider.findOneByProviderId(providerId);
		if (!provider) {
			throw new Error('error-invalid-provider');
		}

		return this.getProviderManager().getProviderMetadata(provider.appId, provider.type);
	}

	private getProviderManager() {
		if (!Apps.self?.isLoaded()) {
			throw new Error('apps-engine-not-loaded');
		}

		const manager = Apps.self?.getManager()?.getOutboundCommunicationProviderManager();
		if (!manager) {
			throw new Error('apps-engine-not-configured-correctly');
		}

		return manager;
	}

View on GitHub (pinned to b2c16d5842)