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@1464: api.min_length (field.min_length == 0 ? nil : field.min_length) Chris@1464: api.max_length (field.max_length == 0 ? nil : 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@1464: if field.field_format == 'list' Chris@1464: api.array :possible_values do Chris@1464: field.possible_values.each do |v| Chris@1464: api.possible_value do Chris@1464: api.value v Chris@1464: end Chris@1464: end Chris@1464: end Chris@1464: end Chris@1464: Chris@1464: if field.is_a?(IssueCustomField) Chris@1464: api.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@1464: api.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