JuliusBrussee/caveman · error

tenantkey: safe month and request id are required

Error message

tenantkey: safe month and request id are required

What it means

Error "tenantkey: safe month and request id are required" thrown in JuliusBrussee/caveman.

Source

Thrown at shared/platform/tenantkey/tenantkey.go:38

func MonthlySpend(organizationID, projectID, month string) (string, error) {
	prefix, err := projectPrefix("spend", organizationID, projectID)
	if err != nil {
		return "", err
	}
	if !safePart(month) {
		return "", errors.New("tenantkey: safe month is required")
	}
	return prefix + ":" + month, nil
}

// MonthlySpendEvent returns idempotency-marker key for one spend event.
func MonthlySpendEvent(organizationID, projectID, month, requestID string) (string, error) {
	prefix, err := projectPrefix("spend-event", organizationID, projectID)
	if err != nil {
		return "", err
	}
	if !safePart(month) || !safePart(requestID) {
		return "", errors.New("tenantkey: safe month and request id are required")
	}
	return prefix + ":" + month + ":" + requestID, nil
}

func projectPrefix(namespace, organizationID, projectID string) (string, error) {
	if !safePart(organizationID) || !safePart(projectID) {
		return "", errors.New("tenantkey: safe organization and project scope are required")
	}
	return "cave:" + namespace + ":" + organizationID + ":" + projectID, nil
}

func safePart(value string) bool {
	value = strings.TrimSpace(value)
	return value != "" && !strings.ContainsAny(value, ":\r\n\x00")
}

View on GitHub (pinned to 27d5a3981a)

Solutions

  1. Provide a safe month and request id.

When it happens

Trigger: Thrown at shared/platform/tenantkey/tenantkey.go:38 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of JuliusBrussee/caveman@27d5a3981a (2026-08-15). Data as JSON: /api/errors/86e61d0d388ad0d1. Report an issue: GitHub.