{
    "openapi": "3.1.0",
    "info": {
        "title": "API каталога ии-инструменты.рф",
        "version": "20261014",
        "description": "Только чтение, без ключа. Нейросети и их статус для пользователей из России: доступ без VPN, оплата российской картой, русский интерфейс, цена. Данные справочные, на дату проверки. Правила для агентов: https://xn----jtbhabygcyjlej0j.xn--p1ai/AGENTS.md",
        "contact": {
            "name": "ООО «САРМАТЕХ»",
            "email": "info@a2aprotocol.ru",
            "url": "https://xn----jtbhabygcyjlej0j.xn--p1ai/o-proekte/"
        }
    },
    "servers": [
        {
            "url": "https://xn----jtbhabygcyjlej0j.xn--p1ai"
        }
    ],
    "paths": {
        "/api/tools/": {
            "get": {
                "operationId": "listTools",
                "summary": "Список сервисов с фильтрами",
                "parameters": [
                    {
                        "name": "task",
                        "in": "query",
                        "required": false,
                        "description": "Задача",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "prezentacii",
                                "teksty",
                                "izobrazheniya",
                                "video",
                                "audio",
                                "raspoznavanie-teksta",
                                "kod"
                            ]
                        }
                    },
                    {
                        "name": "prof",
                        "in": "query",
                        "required": false,
                        "description": "Профессия",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "uchitelyam",
                                "yuristam",
                                "rabota"
                            ]
                        }
                    },
                    {
                        "name": "ru",
                        "in": "query",
                        "required": false,
                        "description": "1 — только открывающиеся из России без VPN",
                        "schema": {
                            "type": "integer",
                            "enum": [
                                0,
                                1
                            ]
                        }
                    },
                    {
                        "name": "free",
                        "in": "query",
                        "required": false,
                        "description": "1 — только с бесплатным режимом",
                        "schema": {
                            "type": "integer",
                            "enum": [
                                0,
                                1
                            ]
                        }
                    },
                    {
                        "name": "intermediary",
                        "in": "query",
                        "required": false,
                        "description": "1 — только агрегаторы",
                        "schema": {
                            "type": "integer",
                            "enum": [
                                0,
                                1
                            ]
                        }
                    },
                    {
                        "name": "zone",
                        "in": "query",
                        "required": false,
                        "description": "Итоговая зона",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "ok",
                                "card",
                                "chk",
                                "off"
                            ]
                        }
                    },
                    {
                        "name": "q",
                        "in": "query",
                        "required": false,
                        "description": "Поиск по названию, разработчику и описанию",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Сколько вернуть (1–200)",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 200
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Сервисы, сначала подходящие для России и популярные",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data_date": {
                                            "type": "string"
                                        },
                                        "count": {
                                            "type": "integer"
                                        },
                                        "legend": {
                                            "type": "object"
                                        },
                                        "tools": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Tool"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/tools/{slug}/": {
            "get": {
                "operationId": "getTool",
                "summary": "Один сервис",
                "parameters": [
                    {
                        "name": "slug",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "example": "gamma"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Сервис",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "legend": {
                                            "type": "object"
                                        },
                                        "tool": {
                                            "$ref": "#/components/schemas/Tool"
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Не найден"
                    }
                }
            }
        },
        "/api/tasks/": {
            "get": {
                "operationId": "listTasks",
                "summary": "Задачи и профессии с числом сервисов",
                "responses": {
                    "200": {
                        "description": "Справочник",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/data/tools.json": {
            "get": {
                "operationId": "dumpTools",
                "summary": "Весь каталог одним файлом (исходные данные сайта)",
                "responses": {
                    "200": {
                        "description": "Каталог",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "Tool": {
                "type": "object",
                "properties": {
                    "slug": {
                        "type": "string"
                    },
                    "name": {
                        "type": "string"
                    },
                    "vendor": {
                        "type": "string"
                    },
                    "summary": {
                        "type": "string"
                    },
                    "service_url": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "uri"
                    },
                    "price_note": {
                        "type": "string",
                        "description": "Цена словами, как у сервиса (валюта и период указаны в тексте)"
                    },
                    "price_model": {
                        "type": "string",
                        "enum": [
                            "free",
                            "freemium",
                            "paid",
                            "unknown"
                        ]
                    },
                    "free_tier": {
                        "type": [
                            "boolean",
                            "null"
                        ]
                    },
                    "offers": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "properties": {
                                "name": {
                                    "type": "string"
                                },
                                "price": {
                                    "type": "number"
                                },
                                "currency": {
                                    "type": "string",
                                    "enum": [
                                        "RUB",
                                        "USD",
                                        "EUR"
                                    ]
                                }
                            }
                        }
                    },
                    "access_without_vpn": {
                        "type": "string",
                        "enum": [
                            "y",
                            "s",
                            "n",
                            "u",
                            "x"
                        ],
                        "description": "y — да, проверено нами; s — да, по данным сервиса; n — нет; u — не подтверждено; x — не требуется"
                    },
                    "russian_card": {
                        "type": "string",
                        "enum": [
                            "y",
                            "s",
                            "n",
                            "u",
                            "x"
                        ],
                        "description": "y — да, проверено нами; s — да, по данным сервиса; n — нет; u — не подтверждено; x — не требуется"
                    },
                    "russian_ui": {
                        "type": "string",
                        "enum": [
                            "y",
                            "s",
                            "n",
                            "u",
                            "x"
                        ],
                        "description": "y — да, проверено нами; s — да, по данным сервиса; n — нет; u — не подтверждено; x — не требуется"
                    },
                    "zone": {
                        "type": "string",
                        "enum": [
                            "ok",
                            "card",
                            "chk",
                            "off"
                        ]
                    },
                    "score": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 3
                    },
                    "status": {
                        "type": "string",
                        "enum": [
                            "active",
                            "blocked",
                            "changed"
                        ]
                    },
                    "is_intermediary": {
                        "type": "boolean"
                    },
                    "tasks": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "professions": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "note": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "checked_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date"
                    },
                    "updated_at": {
                        "type": "string",
                        "format": "date"
                    },
                    "popularity": {
                        "type": "integer"
                    },
                    "page_url": {
                        "type": "string",
                        "format": "uri"
                    },
                    "markdown_url": {
                        "type": "string",
                        "format": "uri"
                    }
                }
            }
        }
    }
}
