restredmineredmine-api

How to update custom fields with file type using REST in redmine?


I'm trying to update a custom field with a file type using rest API. After properly uploading a file using:

curl --data-binary "@test.pdf" -H "Content-Type: application/octet-stream" -X POST -H "X-Redmine-API-Key: e1d815b8963e7b3950d4bea47959f874be755a2c" https://redmine-dev/uploads.xml

I get my token:

<?xml version="1.0" encoding="UTF-8"?>
<upload>
  <id>15</id>
  <token>15.cb4...</token>
</upload>

And then I tried to update the custom filed using those and none worked:

<?xml version="1.0"?>
<issue>
  <custom_fields type="array">
    <custom_field id="4">
      <token>15.cb4...</token>
      <filename>test.pdf</filename>
    </custom_field>
  </custom_fields>
</issue>

<?xml version="1.0"?>
<issue>
  <custom_fields type="array">
    <custom_field id="4">
      <value>
        <token>15.cb4...</token>
        <filename>test.pdf</filename>
      </value>
    </custom_field>
  </custom_fields>
</issue>

<?xml version="1.0"?>
<issue>
  <custom_fields type="array">
    <custom_field id="4">
      <value>15</value>
    </custom_field>
  </custom_fields>
</issue>

After each the field is cleared in the database.

Updating a different custom field (text and number based) alongside of each of those is working. I've also checked the docs and there is nothing detailing how to use REST to update custom attachments.


Solution

  • It was so easy after looking into the code, but the token has to belong to previously unused attachment.

    <?xml version="1.0"?>
     <issue>
       <custom_fields type="array">
         <custom_field id="4">
           <value>
             <token>15.cb4...</token>
           </value>
         </custom_field>
       </custom_fields>
     </issue>