API Reference
Reference documentation for SaaSStinger Lite internal server actions and service interfaces.
API Reference
SaaSStinger Lite does not currently expose a public external API.
This documentation describes the internal application interfaces used by the Next.js application.
The main server-side communication layers are:
- Server Actions
- Server Services
- Repository Layer
These layers provide controlled access to application functionality.
Application Flow
Requests generally follow this pattern:
Client Component
↓
Server Action
↓
Service Layer
↓
Repository Layer
↓
Firestore
Each layer has a specific responsibility.
Authentication Requirements
Most server operations require an authenticated user.
Authentication is handled through:
- Firebase Authentication
- Next.js server-side checks
- Workspace membership validation
A typical request must verify:
- User is authenticated
- User belongs to the workspace
- User has the required role
Example:
Request
↓
Authenticated User?
↓
Workspace Membership?
↓
Permission Check
↓
Execute Action
Server Actions
Server actions are located in:
src/actions/
Examples:
actions/
workspace.ts
invites.ts
member.ts
project.ts
profile.ts
audit-logs.ts
Server actions are responsible for:
- Receiving client requests
- Validating input
- Calling services
- Returning results
Action Response Pattern
Server actions generally return structured results.
Example:
{
success: true,
data: result
}
Failure example:
{
success: false,
error: "Permission denied"
}
Workspace Actions
Location:
src/actions/workspace.ts
Handles workspace operations.
Common operations:
- Create workspace
- Update workspace
- Manage workspace settings
Create Workspace
Example request:
{
name: "Acme Workspace"
}
Process:
User
↓
Create Workspace Action
↓
Workspace Service
↓
Create Workspace Document
↓
Create Owner Membership
Response:
{
success: true,
workspaceId: "workspace-id"
}
Invitation Actions
Location:
src/actions/invites.ts
Handles workspace invitations.
Operations include:
- Create invitation
- Accept invitation
- Revoke invitation
Create Invitation
Request:
{
workspaceId: "workspace-id",
email: "user@example.com",
role: "MEMBER"
}
Validation:
- User permission
- Workspace access
- Valid role
Response:
{
success: true,
inviteId: "invite-id"
}
Member Actions
Location:
src/actions/member.ts
Handles membership operations.
Examples:
- Update role
- Remove member
- View members
Project Actions
Location:
src/actions/project.ts
Handles project functionality.
Examples:
- Create project
- Update project
- Delete project
Project operations must verify:
User
↓
Workspace Membership
↓
Project Ownership
Profile Actions
Location:
src/actions/profile.ts
Handles user profile operations.
Examples:
- Update display name
- Update profile information
Audit Actions
Location:
src/actions/audit-logs.ts
Handles audit-related operations.
Audit logs support:
- Administrative visibility
- Activity tracking
- Compliance history
Audit access is limited to:
- OWNER
- ADMIN
Service Layer
Services are located in:
src/services/
Services contain business logic.
Examples:
services/
workspace/
invite/
team/
profile/
auth/
Example Service Responsibility
A workspace service may handle:
Create Workspace
1. Validate request
2. Create workspace
3. Create membership
4. Create usage record
5. Create audit event
Repository Layer
Repositories are located in:
src/server/repositories/
Repositories handle Firestore communication.
Examples:
workspace.repository.ts
membership.repository.ts
project.repository.ts
Repositories should not contain business rules.
Authentication Context
Server-side operations may require:
- User ID
- Workspace ID
- Membership role
Example:
{
userId: "uid",
workspaceId: "workspace-id",
role: "OWNER"
}
Permission Checks
Permissions are controlled through:
- Membership records
- RBAC utilities
- Firestore rules
Example:
OWNER
Allowed:
- Manage workspace
- Manage members
- View audit logs
MEMBER
Allowed:
- Access workspace features
Error Handling
Common errors:
Authentication Error
Example:
User not authenticated
Authorization Error
Example:
Insufficient permissions
Validation Error
Example:
Invalid input
Adding a New Server Operation
Recommended process:
- Create server action
- Validate input
- Add service logic
- Add repository methods
- Update types
- Add permissions
- Test with emulator
Security Guidelines
Never:
- Trust client permissions
- Directly expose Firestore writes
- Return sensitive server data
- Expose Firebase Admin credentials
Always:
- Verify authentication
- Verify workspace membership
- Check permissions server-side
Related Articles
- Creating Server Actions
- Working With Services
- Repository Pattern
- RBAC Permissions
- Firestore Schema
Next Steps
Continue with Changelog Reference to document SaaSStinger Lite versions and changes.
Related Articles
Firestore Schema
Reference documentation for the SaaSStinger Lite Firestore database structure and collections.
Folder Structure
Understand the SaaSStinger Lite application structure and how the major code layers work together.
Configuration Reference
Reference documentation for the main configuration files used by SaaSStinger Lite.
Changelog
Release history and notable changes for SaaSStinger Lite.