How do I create or update the options of a custom field using the API?

api

#1

I have an external list I need to keep synchronized with a custom field dropdown [enum] in a project. I can’t find anywhere in the docs where this is possible. Seems it is READ-ONLY and will allow you to add an already created, via the web-UI, a custom field to a project. Is this true or something I’m missing?


#2

@James_Ferreira1, sadly it’s true, you can’t edit the definition of the custom field itself with the API. The reason behind this is that it can be dangerous to allow both user and app-created custom fields to co-exist in the same workspace. One reason is that apps would have to program extremely defensively against the custom field definition, to the point of never assuming, for instance, that a particular enum value exists on a custom field, since a user could have changed it in the meantime. This would be rare enough, but not impossible, to make it extra hard for app developers to adequately program defensively for this case.

The other main reason this hasn’t been tackled is the inverse: if there is a user-created custom field named “Priority”, for instance, and an app creates a custom field named “Priority”, the app can disambiguate the custom fields by storing the ID of the field. Users of the Asana web app, on the other hand, have no way to distinguish between the two. It’s therefore extremely easy for users to associate the app-created field with the wrong projects, or to change the definition of the wrong priority field.

In our backlog is the ability for apps to “own” custom fields created through our API; that is, the custom field would only be createable or editable by the app itself, with feedback to the users that a particular app owns that field. We haven’t gotten to the point of implementing this, however, but we hear the request occasionally, so thanks for asking about it.