api.array :custom_fields do @custom_fields.each do |field| api.custom_field do api.id field.id api.name field.name api.customized_type field.class.customized_class.name.underscore if field.class.customized_class api.field_format field.field_format api.regexp field.regexp api.min_length (field.min_length == 0 ? nil : field.min_length) api.max_length (field.max_length == 0 ? nil : field.max_length) api.is_required field.is_required? api.is_filter field.is_filter? api.searchable field.searchable api.multiple field.multiple? api.default_value field.default_value api.visible field.visible? if field.field_format == 'list' api.array :possible_values do field.possible_values.each do |v| api.possible_value do api.value v end end end end if field.is_a?(IssueCustomField) api.trackers do field.trackers.each do |tracker| api.tracker :id => tracker.id, :name => tracker.name end end api.roles do field.roles.each do |role| api.role :id => role.id, :name => role.name end end end end end end