Chris@1464: api.array :custom_fields do Chris@1464: @custom_fields.each do |field| Chris@1464: api.custom_field do Chris@1464: api.id field.id Chris@1464: api.name field.name Chris@1464: api.customized_type field.class.customized_class.name.underscore if field.class.customized_class Chris@1464: api.field_format field.field_format Chris@1464: api.regexp field.regexp Chris@1517: api.min_length field.min_length Chris@1517: api.max_length field.max_length Chris@1464: api.is_required field.is_required? Chris@1464: api.is_filter field.is_filter? Chris@1464: api.searchable field.searchable Chris@1464: api.multiple field.multiple? Chris@1464: api.default_value field.default_value Chris@1464: api.visible field.visible? Chris@1464: Chris@1517: values = field.possible_values_options Chris@1517: if values.present? Chris@1464: api.array :possible_values do Chris@1517: values.each do |label, value| Chris@1464: api.possible_value do Chris@1517: api.value value || label Chris@1464: end Chris@1464: end Chris@1464: end Chris@1464: end Chris@1464: Chris@1464: if field.is_a?(IssueCustomField) Chris@1517: api.array :trackers do Chris@1464: field.trackers.each do |tracker| Chris@1464: api.tracker :id => tracker.id, :name => tracker.name Chris@1464: end Chris@1464: end Chris@1517: api.array :roles do Chris@1464: field.roles.each do |role| Chris@1464: api.role :id => role.id, :name => role.name Chris@1464: end Chris@1464: end Chris@1464: end Chris@1464: end Chris@1464: end Chris@1464: end