Currently to create a link share with expiration date, one needs to first create public share without it, and then update it with the expiration date.
See that the API https://doc.owncloud.org/server/7.0/developer_manual/core/ocs-share-api.html#create-a-new-share doesn't contain a "expireDate" field (also missing in the source code).
Only update has it: https://doc.owncloud.org/server/7.0/developer_manual/core/ocs-share-api.html#update-share
On a side note: I also wonder if "publicUpload" should be incorporated into the permissions instead...