{"openapi":"3.1.0","info":{"title":"VSTG API","description":"Общий корпоративный API. Идентификация сотрудников Вікна Стиль по BitrixID и периоду. 1С и VisitBot подключены через изолированный WST-SQL. Для защищённых методов нужен ключ приложения с правом на соответствующий модуль.","version":"0.2.0"},"paths":{"/healthz":{"get":{"tags":["Public"],"summary":"Готовность сервиса","operationId":"health_healthz_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthInfo"}}}},"503":{"description":"Сервис авторизации недоступен","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/platform":{"get":{"tags":["Platform"],"summary":"Сведения о платформе","operationId":"info_api_v1_platform_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformInfo"}}}},"401":{"description":"Нет действующего ключа","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Недостаточно прав","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Сервис авторизации недоступен","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/tools":{"get":{"tags":["Platform"],"summary":"Каталог инструментов","operationId":"tools_api_v1_tools_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolCatalog"}}}},"401":{"description":"Нет действующего ключа","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Недостаточно прав","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Сервис авторизации недоступен","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/client":{"get":{"tags":["Platform"],"summary":"Текущий клиент и права","operationId":"client_api_v1_client_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientInfo"}}}},"401":{"description":"Нет действующего ключа","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Недостаточно прав","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Сервис авторизации недоступен","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/identity/employee":{"get":{"tags":["Employee identity"],"summary":"Сотрудник по BitrixID и периоду — Вікна Стиль","description":"Право directory:read:vikna-style. Даты включительно, до 366 дней. Подбор по точному ID; карточки других организаций исключены. Даты карточек не доказывают полную историю повторных приёмов. Связи VisitBot показывают текущую привязку; показатели не рассчитываются.","operationId":"employee_identity_api_v1_identity_employee_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"bitrix_user_id","in":"query","required":true,"schema":{"type":"integer","maximum":9223372036854775807,"minimum":1,"title":"Bitrix User Id"}},{"name":"date_from","in":"query","required":true,"schema":{"type":"string","format":"date","title":"Date From"}},{"name":"date_to","in":"query","required":true,"schema":{"type":"string","format":"date","title":"Date To"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmployeeIdentity"}}}},"401":{"description":"Нет действующего ключа","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Недостаточно прав","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Сервис авторизации недоступен","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Связь или карточки не найдены","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Неоднозначность или конфликт данных","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"ClientInfo":{"properties":{"client_id":{"type":"string","title":"Client Id"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes"},"expires_at":{"type":"integer","title":"Expires At"}},"type":"object","required":["client_id","scopes","expires_at"],"title":"ClientInfo"},"EmployeeCard":{"properties":{"employee_ref":{"type":"string","title":"Employee Ref"},"employee_code":{"type":"string","title":"Employee Code"},"hired_on":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Hired On"},"dismissed_on":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Dismissed On"},"currently_active":{"type":"boolean","title":"Currently Active"},"overlaps_period":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Overlaps Period"}},"type":"object","required":["employee_ref","employee_code","hired_on","dismissed_on","currently_active","overlaps_period"],"title":"EmployeeCard"},"EmployeeIdentity":{"properties":{"bitrix_user_id":{"type":"integer","title":"Bitrix User Id"},"date_from":{"type":"string","format":"date","title":"Date From"},"date_to":{"type":"string","format":"date","title":"Date To"},"timezone":{"type":"string","title":"Timezone","default":"Europe/Kyiv"},"organization_ref":{"type":"string","title":"Organization Ref","default":"0xA88A001B214EEE7A11E15373F04D8182"},"organization_name":{"type":"string","title":"Organization Name","default":"Вікна Стиль"},"physical_person_ref":{"type":"string","title":"Physical Person Ref"},"physical_person_code":{"type":"string","title":"Physical Person Code"},"full_name":{"type":"string","title":"Full Name"},"employee_cards":{"items":{"$ref":"#/components/schemas/EmployeeCard"},"type":"array","title":"Employee Cards"},"visitbot":{"$ref":"#/components/schemas/VisitBotIdentity"},"observed_at":{"type":"string","format":"date-time","title":"Observed At"},"employment_basis":{"type":"string","const":"employee_card_dates","title":"Employment Basis","default":"employee_card_dates"},"identity_basis":{"type":"string","const":"current_bitrix_contact","title":"Identity Basis","default":"current_bitrix_contact"},"warnings":{"items":{"type":"string"},"type":"array","title":"Warnings"}},"type":"object","required":["bitrix_user_id","date_from","date_to","physical_person_ref","physical_person_code","full_name","employee_cards","visitbot","observed_at","warnings"],"title":"EmployeeIdentity"},"ErrorResponse":{"properties":{"detail":{"type":"string","title":"Detail"}},"type":"object","required":["detail"],"title":"ErrorResponse"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HealthInfo":{"properties":{"status":{"type":"string","const":"ready","title":"Status","default":"ready"},"version":{"type":"string","title":"Version","default":"0.2.0"}},"type":"object","title":"HealthInfo"},"PlatformInfo":{"properties":{"service":{"type":"string","title":"Service"},"version":{"type":"string","title":"Version"},"authentication":{"type":"string","title":"Authentication"},"mcp_url":{"type":"string","title":"Mcp Url"},"docs_url":{"type":"string","title":"Docs Url"},"business_data_available":{"type":"boolean","title":"Business Data Available"},"planned_sources":{"items":{"$ref":"#/components/schemas/SourceInfo"},"type":"array","title":"Planned Sources"}},"type":"object","required":["service","version","authentication","mcp_url","docs_url","business_data_available","planned_sources"],"title":"PlatformInfo"},"SourceInfo":{"properties":{"name":{"type":"string","title":"Name"},"status":{"type":"string","title":"Status"}},"type":"object","required":["name","status"],"title":"SourceInfo"},"ToolCatalog":{"properties":{"tools":{"items":{"$ref":"#/components/schemas/ToolInfo"},"type":"array","title":"Tools"}},"type":"object","required":["tools"],"title":"ToolCatalog"},"ToolInfo":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"rest_method":{"type":"string","title":"Rest Method"},"rest_path":{"type":"string","title":"Rest Path"},"required_scope":{"type":"string","title":"Required Scope"}},"type":"object","required":["name","description","rest_method","rest_path","required_scope"],"title":"ToolInfo"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VisitBotBinding":{"properties":{"user_identity_id":{"type":"string","title":"User Identity Id"},"employee_ref":{"type":"string","title":"Employee Ref"}},"type":"object","required":["user_identity_id","employee_ref"],"title":"VisitBotBinding"},"VisitBotIdentity":{"properties":{"status":{"type":"string","enum":["mapped","not_found","not_connected","unavailable"],"title":"Status"},"binding_basis":{"type":"string","const":"current_employee_links","title":"Binding Basis","default":"current_employee_links"},"bindings":{"items":{"$ref":"#/components/schemas/VisitBotBinding"},"type":"array","title":"Bindings"}},"type":"object","required":["status"],"title":"VisitBotIdentity"}},"securitySchemes":{"HTTPBearer":{"type":"http","description":"Отдельный ключ приложения; без префикса Bearer.","scheme":"bearer"}}}}