Provides consistent card creation, validation, and management APIs. Handles standard card creation, subscription cards with expiration, card renewal, and card information queries.
View on GitHub →-- In your extension:
function MyExtension.init(tac)
-- Create a simple card
local card, err = tac.cardManager.createCard({
name = "John Doe",
tags = {"tenant.1", "vip"}
})
-- Create a subscription card
local subCard, err = tac.cardManager.createSubscriptionCard({
username = "player1",
duration = 30,
slot = "tenant.premium"
})
-- Renew a card
tac.cardManager.renewCard("tenant_1_player1", 30)
-- Get card info
local info, err = tac.cardManager.getCardInfo("tenant_1_player1")
if info then
print("Card expires in " .. (info.timeUntilExpiration / 86400000) .. " days")
end
end
cardManager.createCard(options)Create a new card with standard validation and logging Creates a card with the provided options, validates the data, saves it, and logs the creation event. Auto-generates a card ID if not provided. - id (string, optional): Card ID (auto-generated if not provided) - name (string, required): Display name for the card - tags (table, required): Array of access tags - expiration (number, optional): UTC epoch timestamp when card expires - username (string, optional): Username associated with card (used in ID generation) - prefix (string, optional): Prefix for auto-generated ID - createdBy (string, optional): Who/what created the card (default: "system") - metadata (table, optional): Additional custom data - logMessage (string, optional): Custom log message
options (table): Card creation options:cardManager.createSubscriptionCard(options)Create a subscription card (with expiration) Specialized function for creating time-limited subscription cards. Commonly used by ShopK integration for selling temporary access. - username (string, required): Username of the subscriber - duration (number, required): Subscription duration in days - slot (string, required): Access level/slot (becomes the card tag) - createdBy (string, optional): Creator identifier (default: "shopk") - purchaseValue (number, optional): Purchase price for metadata - transactionId (string, optional): Transaction ID for metadata - logMessage (string, optional): Custom log message
options (table): Subscription card options:cardManager.renewCard(cardId, additionalDuration, options)Renew an existing card Extends the expiration date of an existing card by the specified duration. Updates renewal metadata and logs the renewal event. - renewedBy (string, optional): Who renewed the card (default: "system") - transactionId (string, optional): Transaction ID for metadata - logMessage (string, optional): Custom log message
cardId (string): ID of the card to renewadditionalDuration (number): Days to add to current expirationoptions (table): Optional renewal options:cardManager.getCardInfo(cardId)Get card status and info Retrieves comprehensive information about a card including expiration status. Returns structured data with calculated fields like isExpired and timeUntilExpiration. - id (string): Card ID - name (string): Card display name - tags (table): Access tags array - created (number): Creation timestamp - createdBy (string): Creator identifier - isExpired (boolean): Whether card is currently expired - timeUntilExpiration (number|nil): Milliseconds until expiration (nil if no expiration) - expiration (number|nil): Expiration timestamp if set - metadata (table): Custom metadata
cardId (string): ID of the card to querycardManager.isValidCardId(cardId)Validate card ID format Checks if a card ID meets basic format requirements (non-empty string).
cardId (any): Value to validate as a card ID