Об этом проекте

cb365 предоставляет доступ к службам Microsoft 365 через командную строку, выступая альтернативой написанию собственных приложений Graph API или ручному взаимодействию с интерфейсом. Он позволяет автоматизировать такие задачи, как создание задач, отправка почты, управление календарями, публикация в Teams, а также работа с SharePoint, OneDrive, Planner и Loop. Инструмент обеспечивает структурированный вывод в формате JSON, что делает его удобным для использования скриптами и ИИ-агентами. Ключевые функции и целевые аудитории включают: * **DevOps и платформенные инженеры**: для скриптования операций M365, таких как создание задач из CI или публикация результатов сборки в Teams. * **Разработчики ИИ-агентов**: спроектирован с выводом `--json` и флагами безопасности для автономных рабочих процессов. * **ИТ-администраторы**: альтернатива PowerShell в CLI для операций с Graph API. * **Разработчики**: сокращает объем шаблонного кода Graph SDK для общих задач M365. cb365 инкапсулирует Microsoft Graph API, обрабатывая такие сложности, как: * **Аутентификация**: поддерживает потоки device-code, client credentials и сертификатов, безопасно храня токены в системном хранилище ключей (keychain). * **Безопасность**: включает 44 жестко закодированных правила, требующие `--force` для удаления и `--confirm` для массовых рассылок, при этом `--dry-run` доступен для всех операций записи. Токены никогда не отображаются в выводе. * **Вывод**: предоставляет форматы `--json`, `--plain` (TSV) и читаемые таблицы, разработанные для интеграции в конвейеры. * **Профили**: управляет делегированной и прикладной (app-only) аутентификацией параллельно, позволяя легко переключаться между арендаторами. * **Отсутствие зависимостей**: единый бинарный файл Go без требований к среде выполнения. Установка доступна через `go install` или готовые релизные бинарные файлы. Пользователи должны зарегистрировать приложение Entra ID и настроить необходимые разрешения API. Аутентификация поддерживает делегированный режим (device code) для интерактивного использования и режим только для приложений (client secret или сертификат) для автоматизации без участия человека, при этом секреты клиента принимаются только из стандартного ввода в целях безопасности. Доступны команды для различных рабочих нагрузок M365: * **Auth**: вход, статус, выход, управление профилями. * **To Do**: просмотр, создание, обновление, выполнение и удаление списков задач и самих задач. * **Mail**: просмотр, получение, отметка прочитанного, перемещение, окончательное удаление, черновики, отправка и поиск сообщений. * **Calendar**: просмотр, получение, создание, обновление и удаление событий. * **Contacts**: просмотр, получение, поиск, создание и обновление контактов. * **Planner**: просмотр планов, создание планов, управление корзинами (buckets) и задачами. * **Teams**: просмотр каналов, отправка сообщений в каналы и чаты, мягкое удаление сообщений в каналах. * **SharePoint**: просмотр/поиск сайтов, получение деталей сайта, управление списками и элементами списков, управление файлами (просмотр, получение, загрузка). * **OneDrive**: просмотр, получение, загрузка, удаление файлов и создание папок. * **Loop**: просмотр рабочих пространств и страниц, загрузка/экспорт страниц, удаление страниц, загрузка файлов и создание папок. Глобальные флаги включают `--json`, `--plain`, `--profile`, `--dry-run` и `--verbose`. Инструмент делает акцент на том, чтобы держать бизнес-контент вне аргументов процесса, поддерживая косвенные значения из файлов или стандартного ввода. Правила безопасности жестко закодированы и охватывают защиту от записи, специфичные для календаря правила (например, проверка часового пояса, обнаружение дубликатов, ограничения на количество участников), безопасность почты (например, `--confirm` для отправки, ограничения на количество получателей) и безопасность токенов (безопасное хранение, отсутствие раскрытия в выводе). Для интеграции с ИИ-агентами вывод `--json` предоставляет структурированные данные. Агентам рекомендуется рассматривать контент M365 как недоверенные данные и использовать явные списки разрешенных команд, а также флаги подтверждения для операций с побочными эффектами. Обработка ошибок использует стандартные коды выхода Unix, при этом ошибки выводятся в stderr.