There is no bug at all, it’s your request. You shouldn’t accuse others.
It works like a charm.
$ curl -n -X POST https://domain/ocs/v1.php/apps/files_sharing/api/v1/shares --data 'name=welcome.txt' --data 'path=/Test/welcome.txt' --data 'shareType=3' --data 'permissions=31'
<?xml version="1.0"?>
<ocs>
<meta>
<status>ok</status>
<statuscode>100</statuscode>
<message/>
<totalitems></totalitems>
<itemsperpage></itemsperpage>
</meta>
<data>
<id>58</id>
<share_type>3</share_type>
<uid_owner>abu</uid_owner>
<displayname_owner>Alfred Bühler</displayname_owner>
<permissions>1</permissions>
<stime>1653895297</stime>
<parent/>
<expiration/>
<token>YKJVpjOiIYuJjCz</token>
<uid_file_owner>abu</uid_file_owner>
<displayname_file_owner>Alfred Bühler</displayname_file_owner>
<additional_info_owner>abu</additional_info_owner>
<additional_info_file_owner>abu</additional_info_file_owner>
<path>/Test/welcome.txt</path>
<mimetype>text/plain</mimetype>
<storage_id>home::abu</storage_id>
<storage>1</storage>
<item_type>file</item_type>
<item_source>904</item_source>
<file_source>904</file_source>
<file_parent>903</file_parent>
<file_target>/welcome.txt</file_target>
<name>welcome.txt</name>
<url>https://domain/index.php/s/YKJVpjOiIYuJjCz</url>
<mail_send>0</mail_send>
<attributes/>
</data>
</ocs>
BTW, setting permission 31 for public links is superfluous, as it will be ignored and permission 1 will be applied.