IOutput: {
    uploadExpenseFile: {
        checksum_sha256: string;
        coopname: string;
        id: number;
        item_hash?: null | string;
        kind: ExpenseFileKind;
        mime_type: string;
        original_filename?: null | string;
        proposal_hash: string;
        read_url?: null | string;
        size_bytes: number;
        storage_key: string;
        uploaded_at: unknown;
        uploaded_by_username: string;
    };
}

Type declaration

  • uploadExpenseFile: {
        checksum_sha256: string;
        coopname: string;
        id: number;
        item_hash?: null | string;
        kind: ExpenseFileKind;
        mime_type: string;
        original_filename?: null | string;
        proposal_hash: string;
        read_url?: null | string;
        size_bytes: number;
        storage_key: string;
        uploaded_at: unknown;
        uploaded_by_username: string;
    }

    Загрузить первичный файл расхода (платёжка/чек/возврат) в бакет expenses:files.

    Требуемые роли: chairman, member, user.

    • checksum_sha256: string

      SHA-256 содержимого, hex-lowercase.

    • coopname: string

      Имя кооператива (scope).

    • id: number

      Внутренний ID записи.

    • Optional item_hash?: null | string

      Хеш строки расхода (если файл уровня item).

    • kind: ExpenseFileKind

      Назначение файла.

    • mime_type: string

      MIME-тип содержимого.

    • Optional original_filename?: null | string

      Оригинальное имя загруженного файла.

    • proposal_hash: string

      Хеш сметы расхода.

    • Optional read_url?: null | string

      Короткоживущий URL на скачивание (HMAC-signed).

    • size_bytes: number

      Размер файла в байтах.

    • storage_key: string

      MinIO-ключ внутри бакета.

    • uploaded_at: unknown

      Когда загружено.

    • uploaded_by_username: string

      Кто загрузил (username).