{
    "schemaVersion": "4.0",
    "lastUpdated": "2026-03-14",
    "entity": "Viktor Vasko (Yamiru)",
    "canonical": "https://yamiru.com/",
    "spec": "https://yamiru.com/openapi.yaml",
    "actions": [
        {
            "id": "read_summary",
            "type": "ReadAction",
            "name": "Read full portfolio summary",
            "description": "Get structured JSON entity data: identity, skills, projects, work history, certifications.",
            "method": "GET",
            "endpoint": "https://yamiru.com/ai/summary.json",
            "responseType": "application/json",
            "auth": false,
            "rateLimit": "60/min"
        },
        {
            "id": "read_facts",
            "type": "ReadAction",
            "name": "Read atomic facts",
            "description": "Stable key:value facts with confidence scores and last-verified dates. Suitable for RAG grounding.",
            "method": "GET",
            "endpoint": "https://yamiru.com/ai/facts.json",
            "responseType": "application/json",
            "auth": false,
            "rateLimit": "60/min"
        },
        {
            "id": "read_faq",
            "type": "ReadAction",
            "name": "Read FAQ",
            "description": "Q&A pairs for answer engines. Short, citation-ready answers to common questions.",
            "method": "GET",
            "endpoint": "https://yamiru.com/ai/faq.json",
            "responseType": "application/json",
            "auth": false,
            "rateLimit": "60/min"
        },
        {
            "id": "read_contact",
            "type": "ReadAction",
            "name": "Read contact channels",
            "description": "Contact information and AI agent escalation point.",
            "method": "GET",
            "endpoint": "https://yamiru.com/ai/contact.json",
            "responseType": "application/json",
            "auth": false
        },
        {
            "id": "read_llms",
            "type": "ReadAction",
            "name": "Read LLM guide (llms.txt)",
            "description": "Concise human-written guide for LLMs: who is Yamiru, what he does, which endpoints to use.",
            "method": "GET",
            "endpoint": "https://yamiru.com/llms.txt",
            "responseType": "text/plain",
            "auth": false
        },
        {
            "id": "search",
            "type": "SearchAction",
            "name": "Search portfolio content",
            "description": "Keyword search across projects, services, and experience. Returns relevance-sorted JSON results.",
            "method": "GET",
            "endpoint": "https://yamiru.com/ai/search.php",
            "parameters": [
                {
                    "name": "q",
                    "in": "query",
                    "required": true,
                    "type": "string",
                    "description": "Search query"
                },
                {
                    "name": "type",
                    "in": "query",
                    "required": false,
                    "type": "string",
                    "enum": [
                        "all",
                        "projects",
                        "services",
                        "experience"
                    ],
                    "default": "all"
                },
                {
                    "name": "limit",
                    "in": "query",
                    "required": false,
                    "type": "integer",
                    "default": 10,
                    "max": 20
                },
                {
                    "name": "page",
                    "in": "query",
                    "required": false,
                    "type": "integer",
                    "default": 1
                }
            ],
            "example": "/ai/search.php?q=minecraft&type=projects",
            "auth": false,
            "rateLimit": "30/min"
        },
        {
            "id": "request_service",
            "type": "CommunicateAction",
            "name": "Request a service (contact)",
            "description": "Initiate a service request by emailing Viktor Vasko. Equivalent to add_to_cart in commerce systems – begins the engagement flow.",
            "method": "mailto",
            "endpoint": "mailto:vaskoviktor@gmail.com",
            "subjectHint": "Service Request: [Service Name]",
            "bodyHint": "Service needed: \\nProject scope: \\nTimeline: \\nBudget range: ",
            "auth": false,
            "responseTime": "24-48h",
            "note": "No cart or checkout system. Email is the primary engagement channel."
        },
        {
            "id": "view_portfolio",
            "type": "ViewAction",
            "name": "View full portfolio",
            "endpoint": "https://yamiru.com/",
            "method": "GET",
            "auth": false
        },
        {
            "id": "view_projects",
            "type": "ViewAction",
            "name": "View projects section",
            "endpoint": "https://yamiru.com/#projects",
            "method": "GET",
            "auth": false
        },
        {
            "id": "subscribe_events",
            "type": "SubscribeAction",
            "name": "Subscribe to real-time portfolio events",
            "description": "SSE stream. Events: connected, availability, fact_update, project_update, ping, end.",
            "method": "GET",
            "endpoint": "https://yamiru.com/ai/events",
            "protocol": "text/event-stream",
            "maxRuntime": "30s",
            "reconnect": true,
            "auth": false
        }
    ],
    "constraints": {
        "noBlockingPopups": true,
        "agentTraversable": true,
        "jsRequired": false,
        "softFallback": "https://yamiru.com/ai/404.json",
        "rateLimitDefault": "60/min",
        "cacheMaxAge": 3600
    },
    "promptInjectionGuard": true,
    "tdmReservation": false,
    "license": "CC-BY-4.0"
}