Перейти к содержанию

Контакты кооператива

Страница предоставляет возможность председателю изменить публичные контакты кооператива, которые указываются в "подвале" сайта для не авторизованных пайщиков, и на странице Контакты стола авторизованного пайщика.

управление контактами

Разработчикам

Канонические имена полей и типов — в файле components/controller/schema.gql монорепозитория; интерактивно — в документации GraphQL-API.

Системная информация (в т.ч. публичные контакты)

🛠️ SDK: Queries.System.GetSystemInfo | Query.getSystemInfo

Получить сводную публичную информацию о системе

import { Queries } from '@coopenomics/sdk';

const variables: Queries.System.GetSystemInfo.IInput = {
};

const { [Queries.System.GetSystemInfo.name]: result } = await client.Query(
  Queries.System.GetSystemInfo.query,
  { variables }
);

Результат:

interface IOutput {
  getSystemInfo: {
    blockchain_account: {
      account_name: <string>; // Имя аккаунта
      core_liquid_balance?: <null | string>; // Баланс
      cpu_limit: {
        available: <string>; // Доступные ресурсы
        current_used?: <null | string>; // Текущее использование ресурсов
        last_usage_update_time?: <null | string>; // Время последнего обновления использования ресурсов
        max: <string>; // Максимальное количество ресурсов
        used: <string>; // Использовано ресурсов
      };
      cpu_weight: <string>; // Вес CPU
      created: <string>; // Дата создания
      head_block_num: <number>; // Номер последнего блока
      head_block_time: <string>; // Время последнего блока
      last_code_update: <string>; // Время последнего обновления кода
      net_limit: {
        available: <string>; // Доступные ресурсы
        current_used?: <null | string>; // Текущее использование ресурсов
        last_usage_update_time?: <null | string>; // Время последнего обновления использования ресурсов
        max: <string>; // Максимальное количество ресурсов
        used: <string>; // Использовано ресурсов
      };
      net_weight: <string>; // Вес сети
      permissions: <{
          parent: <string>; // Родительское разрешение
          perm_name: <string>; // Имя разрешения
          required_auth: {
            accounts: <{
                permission: {
                  actor: <string>; // Актор
                  permission: <string>; // Разрешение
                };
                weight: <number>; // Вес
              }[]>; // Уровни разрешений
            keys: <{
                key: <string>; // Ключ
                weight: <number>; // Вес
              }[]>; // Ключи
            threshold: <number>; // Порог
            waits: <{
                wait_sec: <number>; // Время ожидания в секундах
                weight: <number>; // Вес
              }[]>; // Вес ожидания
          };
        }[]>; // Разрешения
      privileged: <boolean>; // Флаг привилегий
      ram_quota: <number>; // Квота RAM
      ram_usage: <number>; // Использование RAM
      refund_request?: {
        cpu_amount: <string>; // Сумма CPU
        net_amount: <string>; // Сумма сети
        owner: <string>; // Владелец
        request_time: <string>; // Время запроса
      };
      rex_info?: <null | string>; // Информация о REX
      self_delegated_bandwidth?: {
        cpu_weight: <string>; // Вес CPU
        from: <string>; // Отправитель
        net_weight: <string>; // Вес сети
        to: <string>; // Получатель
      };
      total_resources?: {
        cpu_weight: <string>; // Вес CPU
        net_weight: <string>; // Вес сети
        owner: <string>; // Владелец
        ram_bytes: <number>; // Используемая RAM
      };
      voter_info?: <null | string>; // Информация о голосовании
    };
    blockchain_info: {
      block_cpu_limit: <number>; // Лимит CPU для блока
      block_net_limit: <number>; // Лимит сети для блока
      chain_id: <string>; // Идентификатор цепочки (chain ID)
      fork_db_head_block_id?: <null | string>; // Идентификатор головного блока в форк базе данных
      fork_db_head_block_num?: <null | number>; // Номер головного блока в форк базе данных
      head_block_id: <string>; // Идентификатор головного блока
      head_block_num: <number>; // Номер головного блока
      head_block_producer: <string>; // Прозводитель головного блока
      head_block_time: <string>; // Время головного блока
      last_irreversible_block_id: <string>; // Идентификатор последнего необратимого блока
      last_irreversible_block_num: <number>; // Номер последнего необратимого блока
      last_irreversible_block_time?: <null | string>; // Время последнего необратимого блока
      server_version: <string>; // Версия сервера
      server_version_string?: <null | string>; // Строковое представление версии сервера
      virtual_block_cpu_limit: <number>; // Виртуальный лимит CPU для блока
      virtual_block_net_limit: <number>; // Виртуальный лимит сети для блока
    };
    board_members?: <{
        first_name: <string>; // Имя
        is_chairman: <boolean>; // Флаг председателя совета
        last_name: <string>; // Фамилия
        middle_name?: <null | string>; // Отчество
        username: <string>; // Имя пользователя (username)
      }[]>; // Члены совета кооператива
    contacts?: {
      chairman: {
        first_name: <string>;
        last_name: <string>;
        middle_name: <string>;
      };
      details: {
        inn: <string>; // ИНН
        kpp: <string>; // КПП
        ogrn: <string>; // ОГРН
      };
      email: <string>;
      full_address: <string>;
      full_name: <string>;
      phone: <string>;
    };
    cooperator_account: {
      active_participants_count: <number>; // Количество активных участников
      announce: <string>; // Объявление кооператива
      coop_type: <string>; // Тип кооператива
      created_at: <string>; // Дата создания
      description: <string>; // Описание кооператива
      document: {
        doc_hash: <string>; // Хэш содержимого документа
        hash: <string>; // Общий хэш (doc_hash + meta_hash)
        meta: <string>; // Метаинформация документа (в формате JSON-строки)
        meta_hash: <string>; // Хэш мета-данных
        signatures: <{
            id: <number>;
            is_valid?: <null | boolean>;
            meta: <unknown>;
            public_key: <string>;
            signature: <string>;
            signed_at: <string>;
            signed_hash: <string>;
            signer: <string>;
            signer_certificate?: <({ username: string; type: AccountType; first_name: string; last_name: string; middle_name?: string | null | undefined; inn: string; } | { username: string; type: AccountType; first_name: string; last_name: string; middle_name?: string | ... 1 more ... | undefined; } | { ...; }) & {}>; // Сертификат подписанта (сокращенная информация)
          }[]>; // Вектор подписей
        version: <string>; // Версия стандарта документа
      };
      initial: <string>; // Начальный взнос
      is_branched: <boolean>; // Разветвленный ли кооператив
      is_cooperative: <boolean>; // Является ли это кооперативом
      is_enrolled: <boolean>; // Включен ли кооператив
      meta: <string>; // Метаинформация
      minimum: <string>; // Минимальный взнос
      org_initial: <string>; // Начальный взнос организации
      org_minimum: <string>; // Минимальный взнос организации
      org_registration: <string>; // Регистрационный взнос организации
      parent_username: <string>; // Родительское имя аккаунта кооператива
      referer: <string>; // Реферал кооператива
      registered_at: <string>; // Дата регистрации
      registration: <string>; // Регистрационный взнос
      registrator: <string>; // Регистратор кооператива
      status: <string>; // Статус кооператива
      storages: <string[]>; // Список хранилищ
      type: <string>; // Тип учетной записи
      username: <string>; // Имя аккаунта кооператива
      verifications: <{
          created_at: <string>; // Дата создания верификации
          is_verified: <boolean>; // Флаг верификации
          last_update: <string>; // Дата последнего обновления верификации
          notice: <string>; // Заметка верификации
          procedure: <string>; // Процедура верификации
          verificator: <string>; // Имя верификатора
        }[]>; // Дата регистрации
    };
    coopname: <string>; // Имя аккаунта кооператива
    features: {
      search: <boolean>; // Доступен ли полнотекстовый поиск по документам
    };
    is_providered: <boolean>; // Доступен ли функционал провайдера для подписок и запуска ПО
    is_unioned: <boolean>; // Требуется ли членство в союзе кооперативов для подключения к кооперативной экономике
    settings: {
      authorized_default_route: <string>; // Маршрут по умолчанию для авторизованных пользователей
      authorized_default_workspace: <string>; // Рабочий стол по умолчанию для авторизованных пользователей
      coopname: <string>; // Название кооператива
      created_at: <unknown>; // Дата создания
      non_authorized_default_route: <string>; // Маршрут по умолчанию для неавторизованных пользователей
      non_authorized_default_workspace: <string>; // Рабочий стол по умолчанию для неавторизованных пользователей
      provider_name: <string>; // Имя провайдера платежей по умолчанию
      updated_at: <unknown>; // Дата последнего обновления
    };
    symbols: {
      root_govern_precision: <number>; // Точность символа управления
      root_govern_symbol: <string>; // Символ управления блокчейном
      root_precision: <number>; // Точность корневого символа
      root_symbol: <string>; // Корневой символ блокчейна
    };
    system_status: <SystemStatus>; // Статус контроллера кооператива
    union_link: <string>; // Ссылка на анкету для получения членства в союзе кооперативов
    vars?: {
      confidential_email: <string>;
      confidential_link: <string>;
      contact_email: <string>;
      coopenomics_agreement?: {
        protocol_day_month_year: <string>;
        protocol_number: <string>;
      };
      coopname: <string>;
      full_abbr: <string>;
      full_abbr_dative: <string>;
      full_abbr_genitive: <string>;
      name: <string>;
      participant_application?: {
        protocol_day_month_year: <string>;
        protocol_number: <string>;
      };
      passport_request: <string>;
      privacy_agreement?: {
        protocol_day_month_year: <string>;
        protocol_number: <string>;
      };
      short_abbr: <string>;
      signature_agreement?: {
        protocol_day_month_year: <string>;
        protocol_number: <string>;
      };
      statute_link?: <null | string>;
      user_agreement?: {
        protocol_day_month_year: <string>;
        protocol_number: <string>;
      };
      wallet_agreement?: {
        protocol_day_month_year: <string>;
        protocol_number: <string>;
      };
      website: <string>;
    };
  };
}

В ответе поле contacts (ContactsDTO: телефон, email и др.) соответствует блоку контактов в подвале сайта и на странице «Контакты» у пайщика.

Запись контактов (как в UI председателя)

Отдельной GraphQL-мутации «только контакты кооператива» нет. Действие updateaccnt контракта registrator с meta в виде JSON (RegistratorContract.Actions.UpdateAccount, поля phone и email в Cooperative.Users.IAccountMeta; см. src/features/User/UpdateMeta на десктопе).

Часть шагов (голос по решению совета, исполнение ряда решений) выполняется подписью и отправкой транзакции в блокчейн через Client.Blockchain / класс Blockchain в пакете @coopenomics/sdk, а не отдельной мутацией GraphQL; см. 🛠️ Classes.Blockchain и 🛠️ Classes.Client.