Codapult
DocsBlogPricingPluginsDemo
Get Codapult
Logo

Build your SaaS with AI. Keep the architecture under control.

Get Codapult

Product

  • Pricing
  • Architecture
  • Modules
  • AI platform
  • Plugins

Developers

  • MCP
  • CLI
  • Documentation
  • Launch your SaaS
  • Build a B2B SaaS

Resources

  • Blog
  • FAQ

Connect

  • Contact
  • GitHub

Compare

  • SaaS template comparison
  • Codapult vs Supastarter
  • Codapult vs Makerkit
  • Codapult vs ShipFast
  • Codapult vs SaaSBold
  • Codapult vs Gravity
  • Codapult vs Nextbase
  • Codapult vs BuilderKit

Featured on

Codapult on LaunchNestCodapult on LaunchNestbetterlaunch.cobetterlaunch.coFeatured on LaunchBuffFeatured on LaunchBuffCodapult on PeerPushCodapult on PeerPushFeatured on LaunchItFeatured on LaunchIt
© 2026 Codapult·All rights reserved·Privacy Policy·Terms of Service
Full source code · One-time purchase · Self-host anywhere
All articles

Getting Started

  • Introduction
  • Quick Start
  • Your First 30 Minutes
  • Project Structure
  • License and Permitted Use
  • Starter Profiles and Recipes
  • Product Recipes

Configuration

  • Environment Variables
  • App Configuration
  • Which Modules Should I Enable?
  • Provider Matrix
  • Capability Coverage

Database

  • Database and Provider Guide
  • Database
  • Migrations

Authentication

  • Authentication
  • OAuth Providers
  • Two-Factor & Passwordless
  • Enterprise SSO (SAML)

Ai

  • AI Runtime Architecture and Evals
  • AI Features
  • Streaming Chat
  • RAG and Semantic Search
  • Quotas and Memory

Teams

  • Teams & Organizations
  • Permissions & RBAC
  • SCIM Provisioning

Security

  • Data Retention Policy
  • Security

Deployment

  • Enterprise E2E Evidence
  • Enterprise Production Readiness
  • Deployment, Backup, and Restore Runbook
  • Deployment
  • Troubleshooting

Payments

  • Payments & Billing
  • Stripe Setup
  • LemonSqueezy Setup
  • Polar Setup
  • Payment Webhooks

Api

  • API Layer
  • tRPC
  • GraphQL

Email

  • Email
  • Email Templates

Infrastructure

  • Infrastructure
  • Self-Hosting
  • File Storage
  • Docker
  • Background Jobs
  • Terraform & Pulumi
  • Kubernetes

Ui

  • UI & Theming

I18n

  • Internationalization

Content Management

  • Content Management

Admin

  • Admin Panel

Monitoring

  • Analytics & Monitoring

Modules

  • Module Architecture
  • Waitlist
  • Audit Log
  • White-Labeling
  • Workflow Automation
  • A/B Testing
  • Welcome Page
  • Referrals
  • GDPR Export and Deletion
  • Promotions
  • Outgoing Webhooks

Plugins

  • Plugin System
  • CRM Plugin
  • Helpdesk Plugin
  • Email Marketing Plugin

Upgrading

  • Upgrading Codapult

Developer Tools

  • AI Agents & IDEs
  • MCP Server
  • Testing
  • Build Your First Feature with Codapult MCP
  • How Guard Blocks an Architectural Regression
Teams

SCIM Provisioning

Automate enterprise user provisioning and deprovisioning with SCIM 2.0 endpoints.

Codapult includes SCIM 2.0 provisioning for enterprise customers that manage users from an identity provider such as Okta, Azure AD, OneLogin, or Google Workspace.

What it does

SCIM lets an identity provider create, update, deactivate, and list users in a customer's organization. This is separate from SAML login: SAML signs users in, while SCIM keeps membership in sync.

Endpoints

SCIM requests are handled by src/app/api/scim/[...path]/route.ts and routed through src/lib/scim/index.ts.

EndpointMethodsPurpose
/api/scim/UsersGET, POSTList or create users
/api/scim/Users/{id}GET, PUT, PATCH, DELETERead, update, deactivate, or remove a user
/api/scim/GroupsGETList organization groups

Requests must send a bearer token:

Authorization: Bearer scim_xxx
Content-Type: application/scim+json

The public SCIM catch-all is rate-limited to 120 requests per client IP per minute and returns 429 with Retry-After when the limit is exceeded. The default limiter is process-local; use an edge or distributed limiter before putting multiple app instances behind a load balancer.

Token management

SCIM tokens are generated and stored hashed in the scim_token table. Use:

  • generateScimToken(orgId, label) to create a token.
  • listScimTokens(orgId) to show configured tokens.
  • revokeScimToken(tokenId) to disable a token.

The token management API lives at /api/scim/tokens and requires an authenticated admin context.

Data model

SCIM provisioning updates:

  • user
  • organization
  • organization_member
  • scim_token

New SCIM users are added to the target organization with the default member role unless you adapt the mapping for your product.

Setup checklist

  1. Set SSO_PROVIDER to value other than "none".
  2. Create or identify the enterprise customer's organization.
  3. Generate a SCIM token for that organization.
  4. Configure the identity provider with your SCIM base URL: https://app.example.com/api/scim.
  5. Paste the bearer token into the provider's SCIM settings.
  6. Run a test sync and verify organization membership.

Related docs

  • Authentication SSO
  • Teams & Organizations
  • Security
Permissions & RBACData Retention Policy