{"openapi":"3.1.0","info":{"title":"Silvia API","version":"1.0.0","summary":"API pública de Silvia, el manager digital para creadores de contenido.","description":"API de sólo lectura que describe el producto Silvia: estado del servicio, planes y precios,\nfunciones y preguntas frecuentes. No requiere autenticación y está pensada para que un\nagente pueda responder sobre Silvia sin scrapear el HTML de la web.\n\nLos datos de los usuarios no forman parte de esta superficie pública: los endpoints de cuenta\nexigen la sesión de la persona y están documentados aparte, bajo el tag `cuenta`.\n\nToda página pública del sitio devuelve markdown si se pide con `Accept: text/markdown`, o\nagregando `.md` al final de la URL.","contact":{"name":"Soporte de Silvia","email":"soporte@getsilvia.com","url":"https://getsilvia.com/contacto"},"termsOfService":"https://getsilvia.com/terminos","license":{"name":"Términos del servicio de Silvia","url":"https://getsilvia.com/terminos"}},"servers":[{"url":"https://getsilvia.com","description":"Producción"}],"externalDocs":{"description":"Documentación para desarrolladores","url":"https://getsilvia.com/docs"},"tags":[{"name":"servicio","description":"Estado y metadatos del servicio."},{"name":"producto","description":"Planes, funciones y preguntas frecuentes."},{"name":"cuenta","description":"Datos de la persona autenticada. Requiere sesión."}],"paths":{"/api/v1/status":{"get":{"operationId":"getServiceStatus","tags":["servicio"],"summary":"Estado del servicio","description":"Devuelve si la API está operativa, la versión del contrato y las URLs de los recursos legibles por máquina (OpenAPI, llms.txt, sitemap). Útil como primera llamada para descubrir el resto de la superficie.","security":[],"responses":{"200":{"description":"Servicio operativo.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceStatus"}}}},"429":{"description":"Demasiadas solicitudes desde la misma IP.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/plans":{"get":{"operationId":"listPlans","tags":["producto"],"summary":"Planes y precios","description":"Lista los planes comerciales de Silvia con su precio, moneda, período de facturación y qué incluye cada uno. El plan Agencias no tiene precio de lista: se arma a medida y se contrata por email.","security":[],"responses":{"200":{"description":"Lista de planes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlanList"}}}},"429":{"description":"Demasiadas solicitudes desde la misma IP.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/features":{"get":{"operationId":"listFeatures","tags":["producto"],"summary":"Funciones del producto","description":"Lista las funciones de Silvia con su descripción y el detalle de lo que cubre cada una. Es la misma información que la página /funciones, en JSON.","security":[],"responses":{"200":{"description":"Lista de funciones.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeatureList"}}}},"429":{"description":"Demasiadas solicitudes desde la misma IP.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/faq":{"get":{"operationId":"listFaq","tags":["producto"],"summary":"Preguntas frecuentes","description":"Preguntas frecuentes sobre Silvia con su respuesta oficial: qué es, cómo funciona la prueba gratis, qué pasa al terminar, si accede a las redes sociales del creador y si sirve para agencias.","security":[],"responses":{"200":{"description":"Lista de preguntas y respuestas.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FaqList"}}}},"429":{"description":"Demasiadas solicitudes desde la misma IP.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/me/access":{"get":{"operationId":"getAccessState","tags":["cuenta"],"summary":"Estado de acceso de la persona autenticada","description":"Devuelve si la cuenta autenticada tiene acceso completo o queda en modo lectura, con el motivo del veredicto y las fechas de fin de prueba y de suscripción. Requiere la sesión de esa persona: no se puede consultar la cuenta de un tercero.","security":[{"bearerAuth":[]},{"sessionCookie":[]}],"responses":{"200":{"description":"Estado de acceso.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessState"}}}},"401":{"description":"Falta la sesión o el token no es válido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Access token de Supabase de la persona autenticada, en `Authorization: Bearer <jwt>`."},"sessionCookie":{"type":"apiKey","in":"cookie","name":"sb-access-token","description":"Cookie de sesión que emite la propia web al iniciar sesión."}},"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","hint","docs","status"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","forbidden","not_found","method_not_allowed","not_acceptable","rate_limited","internal_error"],"description":"Código estable para ramificar en el cliente."},"message":{"type":"string","description":"Descripción legible del error, en español."},"hint":{"type":"string","description":"Qué cambiar para que la próxima llamada funcione."},"docs":{"type":"string","format":"uri","description":"Documentación del endpoint."},"status":{"type":"integer","description":"Status HTTP, repetido para clientes que sólo leen JSON."}}}}},"ServiceStatus":{"type":"object","required":["status","service","version","documentation"],"properties":{"status":{"type":"string","enum":["operational"],"description":"Estado del servicio."},"service":{"type":"string","description":"Nombre del servicio."},"version":{"type":"string","description":"Versión del contrato de la API."},"description":{"type":"string","description":"Qué es Silvia, en una frase."},"documentation":{"type":"object","required":["openapi","docs","llms"],"description":"Recursos legibles por máquina.","properties":{"openapi":{"type":"string","format":"uri"},"docs":{"type":"string","format":"uri"},"llms":{"type":"string","format":"uri"},"sitemap":{"type":"string","format":"uri"}}},"contact":{"type":"object","required":["email"],"properties":{"email":{"type":"string","format":"email"},"url":{"type":"string","format":"uri"}}}}},"Plan":{"type":"object","required":["id","name","priceLabel","currency","features"],"properties":{"id":{"type":"string","description":"Identificador estable del plan.","examples":["creador"]},"name":{"type":"string","description":"Nombre comercial."},"price":{"type":["number","null"],"description":"Precio por período en `currency`, o null si es a medida.","examples":[9.99]},"priceLabel":{"type":"string","description":"Precio tal como se muestra en la web."},"currency":{"type":"string","description":"Moneda ISO 4217.","examples":["USD"]},"period":{"type":["string","null"],"enum":["month",null],"description":"Período de facturación, o null si no hay precio de lista."},"note":{"type":["string","null"],"description":"Aclaración bajo el precio."},"summary":{"type":"string","description":"Para quién es el plan."},"trialDays":{"type":"integer","description":"Días de prueba sin tarjeta."},"features":{"type":"array","items":{"type":"string"},"description":"Qué incluye el plan."}}},"PlanList":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Plan"}}}},"Feature":{"type":"object","required":["id","title","description","includes"],"properties":{"id":{"type":"string","description":"Identificador estable de la función."},"title":{"type":"string","description":"Nombre de la función."},"description":{"type":"string","description":"Qué resuelve."},"includes":{"type":"array","items":{"type":"string"},"description":"Detalle de lo que cubre."}}},"FeatureList":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Feature"}}}},"FaqEntry":{"type":"object","required":["id","question","answer"],"properties":{"id":{"type":"string","description":"Identificador estable de la pregunta."},"question":{"type":"string","examples":["¿Qué es Silvia?"]},"answer":{"type":"string","examples":["Silvia es una plataforma de gestión digital para creadores de contenido e influencers. Funciona como tu manager personal con IA: organiza tus colaboraciones, te ayuda a negociar con marcas, genera tu media kit y te dice cuándo y cuánto cobrar."]}}},"FaqList":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/FaqEntry"}}}},"AccessState":{"type":"object","required":["allowed","readOnly","status"],"properties":{"allowed":{"type":"boolean","description":"Si la cuenta tiene acceso completo."},"readOnly":{"type":"boolean","description":"Si queda en modo sólo lectura."},"redirect":{"type":["string","null"],"description":"A dónde mandar a la persona cuando no tiene acceso."},"status":{"type":"string","description":"Estado de suscripción."},"isCommunityMember":{"type":"boolean","description":"Si está en la allowlist de comunidad."},"reason":{"type":"string","description":"Motivo del veredicto."},"trialEndsAt":{"type":["string","null"],"format":"date-time"},"subscriptionEndsAt":{"type":["string","null"],"format":"date-time"}}}}},"security":[]}