@model QRRapidoApp.Models.User @{ ViewData["Title"] = "Portal do Desenvolvedor"; Layout = "~/Views/Shared/_Layout.cshtml"; var newKey = TempData["NewKey"] as string; var newKeyName = TempData["NewKeyName"] as string; var errorMsg = TempData["Error"] as string; var successMsg = TempData["Success"] as string; var activeKeys = Model.ApiKeys.Where(k => k.IsActive).OrderByDescending(k => k.CreatedAt).ToList(); var revokedKeys = Model.ApiKeys.Where(k => !k.IsActive).OrderByDescending(k => k.CreatedAt).ToList(); var baseUrl = Context.Request.Scheme + "://" + Context.Request.Host; var culture = ViewBag.Culture as string ?? "pt-BR"; var isEs = culture == "es-PY"; var docsBase = isEs ? "/es-PY/Developer" : "/Developer"; string T(string pt, string es) => isEs ? es : pt; }

@T("Portal do Desenvolvedor", "Portal del Desarrollador")

@T("Gerencie suas chaves de API e integre o QR Rapido nas suas aplicações.", "Gestioná tus claves de API ha integrá QR Rapido en tus aplicaciones.") @{ var tier = Model.ApiSubscription?.EffectiveTier ?? QRRapidoApp.Models.ApiPlanTier.Free; var tierLabel = tier == QRRapidoApp.Models.ApiPlanTier.Free ? "Free" : $"{tier}"; } @T("Plano atual:", "Plan actual:") @Html.Raw(tierLabel)

@if (!string.IsNullOrEmpty(errorMsg)) { } @if (!string.IsNullOrEmpty(successMsg)) { } @if (!string.IsNullOrEmpty(newKey)) { }
@T("Chaves Ativas", "Claves Activas") @activeKeys.Count / 5
@if (activeKeys.Any()) {
@foreach (var key in activeKeys) { }
@T("Nome", "Nombre") @T("Prefixo", "Prefijo") @T("Criada", "Creada") @T("Último uso", "Último uso")
@key.Name @key.Prefix... @key.CreatedAt.ToString("dd/MM/yyyy") @(key.LastUsedAt.HasValue ? key.LastUsedAt.Value.ToString("dd/MM/yyyy HH:mm") : T("Nunca", "Nunca"))
} else {

@T("Nenhuma chave ativa. Crie a primeira abaixo.", "Ninguna clave activa. Creá la primera abajo.")

}
@if (activeKeys.Count < 5) {
@T("Criar Nova Chave", "Crear Nueva Clave")
@T("Identifique para qual projeto ou ambiente esta chave será usada.", "Identificá para qué proyecto o ambiente se va a usar esta clave.")
} else {
@T("Você atingiu o limite de 5 chaves ativas. Revogue uma para criar outra.", "Llegaste al límite de 5 claves activas. Revocá una para crear otra.")
} @if (revokedKeys.Any()) {
@T("Chaves Revogadas", "Claves Revocadas")
@foreach (var key in revokedKeys) { }
@key.Name @key.Prefix... @T("Revogada", "Revocada")
}
Quickstart

@T("Envie suas requisições para o endpoint abaixo com o header", "Enviá tus solicitudes al endpoint de abajo con el header") X-API-Key:

POST @baseUrl/api/v1/QRManager/generate
@T("Exemplo (cURL)", "Ejemplo (cURL)")
curl -X POST \
  @baseUrl/api/v1/QRManager/generate \
  -H "X-API-Key: @T("SUA_CHAVE_AQUI", "TU_CLAVE_AQUI")" \
  -H "Content-Type: application/json" \
  -d '{
  "content": "https://seusite.com",
  "type": "url",
  "size": 400,
  "primaryColor": "#000000",
  "backgroundColor": "#FFFFFF"
}'
@T("Resposta de sucesso", "Respuesta exitosa")
{
  "success": true,
  "qrCodeBase64": "iVBORw0KGgo...",
  "qrId": "abc123",
  "generationTimeMs": 280,
  "remainingCredits": 42,
  "fromCache": false
}
@T("Testar Ping", "Probar Ping")
@T("Limites da API", "Límites de la API")
@T("Recurso", "Recurso") @T("Gratuito", "Gratuito") @T("Créditos", "Créditos")
@T("QRs por chave", "QRs por clave") @T("5 vitalícios", "5 de por vida") 1 @T("crédito/QR", "crédito/QR")
Rate limit 600 req/min @T("por IP", "por IP")
@T("Chaves ativas", "Claves activas") @T("Até 5", "Hasta 5")
@T("Formatos", "Formatos") PNG (base64)
@T("Tipos de QR (campo", "Tipos de QR (campo") type)
  • urlLink / URL
  • pix@T("Pagamento Pix", "Pago Pix")
  • wifi@T("Rede Wi-Fi", "Red Wi-Fi")
  • vcard@T("Cartão de Visita", "Tarjeta de Visita")
  • whatsappLink WhatsApp
  • emailE-mail
  • smsSMS
  • texto@T("Texto livre", "Texto libre")
@section Scripts { }