Create or update Baserow integration types and service types in `contrib/integrations`. Use when adding a new ServiceType/IntegrationType subclass, registering one in `apps.py` or `plugin.js`, or updating an existing dispatch/auth flow.
Use this skill when a task involves creating or updating a Baserow integration type or service type in the contrib/integrations stack.
This repo already has the core patterns. Prefer copying an existing implementation close to the target behavior instead of inventing a new structure.
Integrations and services are shared by the Application builder and the Automation tool. Each of them should be compatible with both tools.
Before editing, identify which of these applies:
Then inspect the closest existing example with rg before changing files.
Useful starting points:
backend/src/baserow/contrib/integrations/apps.pyweb-frontend/modules/integrations/plugin.jsbackend/src/baserow/contrib/integrations/core/service_types.pyweb-frontend/modules/integrations/core/serviceTypes.jsbackend/src/baserow/contrib/integrations/core/integration_types.pyweb-frontend/modules/integrations/core/integrationTypes.jsFor a new or updated service type, check these areas:
ServiceType subclass exposes the right type, model_class, dispatch_types, allowed_fields, and serializer configuration.after_create, update helpers, or custom methods when needed.backend/src/baserow/contrib/integrations/apps.py.For a new or updated integration type, check these areas:
IntegrationType subclass defines type, model_class, serializer field names, allowed fields, and sensitive fields when relevant.backend/src/baserow/contrib/integrations/apps.py.Common backend files to inspect:
backend/src/baserow/contrib/integrations/*/models.pybackend/src/baserow/contrib/integrations/*/service_types.pybackend/src/baserow/contrib/integrations/*/integration_types.pybackend/src/baserow/contrib/integrations/api/**backend/src/baserow/contrib/integrations/migrations/**If the feature is user-configurable, update the frontend in parallel with the backend:
web-frontend/modules/integrations/plugin.js.web-frontend/modules/integrations/locales/en.json.Common frontend files to inspect:
web-frontend/modules/integrations/*/serviceTypes.jsweb-frontend/modules/integrations/*/integrationTypes.jsweb-frontend/modules/integrations/*/components/services/**web-frontend/modules/integrations/*/components/integrations/**web-frontend/modules/integrations/locales/en.jsonACTION, DATA, or trigger behavior.ServiceType subclass.backend/src/baserow/contrib/integrations/apps.py.web-frontend/modules/integrations/plugin.js.IntegrationType subclass.backend/src/baserow/contrib/integrations/apps.py.web-frontend/modules/integrations/plugin.js.type identifiers stable unless the user explicitly wants a breaking change.Run the narrowest relevant tests first or create one if none exists.
Backend examples:
backend/tests/baserow/api/integrations/**Frontend examples:
web-frontend/test/unit/integrations/**Minimum validation before finishing:
Use these searches to move quickly:
rg -n "class .*ServiceType" backend/src/baserow/contrib/integrationsrg -n "class .*IntegrationType" backend/src/baserow/contrib/integrationsrg -n "register\\(" backend/src/baserow/contrib/integrations/apps.py web-frontend/modules/integrations/plugin.jsrg -n "getType\\(\\)" web-frontend/modules/integrationsrg -n "\"serviceType\\.|integrationType\\.\"" web-frontend/modules/integrations/locales/en.jsontype string casually.