springdoc-openapi-webflux-ui issue with java.time.Duration (ISO 8601 duration format)

Viewed 478

Swagger documentation display the duration as

  "duration": {
    "seconds": 0,
    "nano": 0,
    "zero": true,
    "negative": true,
    "units": [
      {
        "dateBased": true,
        "timeBased": true,
        "durationEstimated": true
      }
    ]
  },

But the actual format is ISO 8601 duration format (PT0S), Following are the code segment. Is there any Way to format the documentation properly?

The Task Document

@Document(collection = "tasks")
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder(toBuilder = true)
public class Task {

    public enum Status {
        todo, inprogress, done
    }

    @Id
    private String id;

    private String name;

    private String description;

    private Status status = Status.todo;

    private Duration estimatedDuration = Duration.ZERO;

    private Duration duration = Duration.ZERO;
    }

initialization

@SpringBootApplication
@OpenAPIDefinition(info = @Info(title = "APIs v1.0.2", version = "1.0.2", description = "Documentation APIs v1.0.2"))
public class SBApplication {
......

}

The pom dependency

    <dependency>
        <groupId>org.springdoc</groupId>
        <artifactId>springdoc-openapi-webflux-ui</artifactId>
        <version>1.4.3</version>
    </dependency>
1 Answers

try

    import io.swagger.v3.oas.annotations.media.Schema;

    ...

    @Schema(type = "string", format = "duration")
    private Duration estimatedDuration = Duration.ZERO;

    @Schema(type = "string", format = "duration")
    private Duration duration = Duration.ZERO;
  
Related