/** * Tipos de Client API Keys org-scopeadas (ADR-023). Contrato espejo de * `lambdas/org` `/org/api-keys/*`. El orgID se resuelve del JWT (ActiveOrgID), * no va en el path. */ export interface ClientApiKey { keyId: string; name: string; organizationId: string; status: string; permissions: string[]; rateLimit?: number; expiresAt?: string; allowedIps?: string[]; createdBy: string; createdAt: string; lastUsedAt?: string; } /** Solo en la respuesta de creación: el secreto se muestra UNA vez. */ export interface ClientApiKeyWithSecret extends ClientApiKey { secret: string; } export interface CreateApiKeyRequest { name: string; permissions: string[]; rateLimit?: number; expiresInDays?: number; allowedIps?: string[]; } export interface CreateApiKeyResponse { operationId: string; key: ClientApiKeyWithSecret; } export interface ListApiKeysResponse { operationId: string; keys: ClientApiKey[]; nextToken?: string; } export interface AvailablePermissionsResponse { operationId: string; permissions: string[]; } export interface RevokeApiKeyResponse { operationId: string; message: string; }