Configuration Schemas Overview
Complete reference for Weik.io YAML configuration schemas
Weik.io uses YAML configuration files to manage platform resources. Each configuration type defines a specific resource or capability through a declarative schema.
Configuration Structure
All Weik.io configurations follow this structure:
apiVersion: weik.io/v1
kind: <ConfigurationType>
metadata:
name: resource-name
spec:
# Configuration-specific properties
Configuration Types
API Management
Configurations for managing APIs and their lifecycle:
- Api - Define API base configuration and URL prefix
- ApiVersion - Configure API versions with authentication and connection settings
- ApiSubscription - Manage API access subscriptions
- OpenApiEndpoint - Expose OpenAPI operations as REST endpoints
- OpenApiConnector - Register OpenAPI connectors from packages
Integration
Configurations for building integration flows:
- IntegrationFlow - Define integration flow orchestration
- IntegrationService - Create reusable integration services
- MFT - Configure managed file transfers between storage systems
- Schedule - Define scheduled tasks with cron expressions
Eventing
Configurations for event-driven architecture:
- EventSource - Define event sources from various systems
- EventChannel - Configure event routing channels
- EventSubscription - Subscribe to events from channels
- DatabaseChangeTracking - Monitor database changes as events
Configuration and Variables
Foundational configurations:
- Variable - Define variables and secrets for use across configurations
- CoreSystem - Configure core system components (deprecated)
Common Patterns
Using Variables
Reference variables in configurations:
apiVersion: weik.io/v1
kind: Variable
metadata:
name: database-password
spec:
Value: super-secret-password
IsSecret: true
---
apiVersion: weik.io/v1
kind: DatabaseChangeTracking
metadata:
name: orders-tracking
spec:
Type: postgresql
Parameters:
Password: ${database-password}
Multi-Document YAML
Define multiple resources in one file:
apiVersion: weik.io/v1
kind: EventChannel
metadata:
name: orders-channel
spec:
Type: memory
---
apiVersion: weik.io/v1
kind: EventSource
metadata:
name: order-webhook
spec:
Type: webhook
EventType: com.example.orders.created
EventSource: order-api
---
apiVersion: weik.io/v1
kind: EventSubscription
metadata:
name: order-subscription
spec:
Source: order-webhook
Channel: orders-channel
Configuration Dependencies
Some configurations depend on others existing first:
# 1. Create API first
apiVersion: weik.io/v1
kind: Api
metadata:
name: northwind-api
spec:
Prefix: /northwind
---
# 2. Then create API version
apiVersion: weik.io/v1
kind: ApiVersion
metadata:
name: northwind-v1
spec:
ApiName: northwind-api
IsActive: true
---
# 3. Finally create subscriptions
apiVersion: weik.io/v1
kind: ApiSubscription
metadata:
name: customer-subscription
spec:
ApiName: northwind-api
ApiVersion: v1
Applying Configurations
Using the CLI
Apply configurations using the CLI:
# Apply a single file
weikio config apply configuration.yaml
# Apply with variable substitution
weikio config apply configuration.yaml --variables env.yaml
File Organization
Organize configurations by type or purpose:
configs/
├── apis/
│ ├── api.yaml
│ ├── api-versions.yaml
│ └── endpoints.yaml
├── integrations/
│ ├── flows.yaml
│ ├── services.yaml
│ └── schedules.yaml
├── eventing/
│ ├── channels.yaml
│ ├── sources.yaml
│ └── subscriptions.yaml
└── variables/
├── common.yaml
└── secrets.yaml
Configuration Best Practices
Naming Conventions
- Use lowercase with hyphens:
customer-sync-flow - Be descriptive:
stripe-payment-webhooknotwebhook1 - Include purpose:
nightly-backup-schedule - Use consistent prefixes for related resources
Security
- Store secrets in Variable configurations with
IsSecret: true - Never commit secrets to version control
- Use environment-specific variable files
- Restrict access to configuration files
- Implement proper access controls
Version Control
- Store configurations in Git
- Use branches for environments (dev, staging, production)
- Review configuration changes through pull requests
- Tag releases for traceability
- Document breaking changes
Documentation
- Add comments to complex configurations
- Document variable requirements
- Include example values
- Note dependencies between resources
- Maintain a configuration catalog
Testing
- Test configurations in development first
- Validate YAML syntax before applying
- Verify resource dependencies
- Test with realistic data
- Monitor resource health after deployment
Getting Help
View configuration help:
# General help
weikio config --help
# Apply command help
weikio config apply --help
For detailed information on each configuration type, see the individual reference pages linked above.