diff --git a/src/main/java/app/quickcase/sdk/spring/definition/model/Action.java b/src/main/java/app/quickcase/sdk/spring/definition/model/Action.java new file mode 100644 index 0000000..4eeacba --- /dev/null +++ b/src/main/java/app/quickcase/sdk/spring/definition/model/Action.java @@ -0,0 +1,40 @@ +package app.quickcase.sdk.spring.definition.model; + +import java.util.List; +import java.util.Map; +import java.util.Set; + +import lombok.Builder; +import lombok.NonNull; +import lombok.Singular; + +@Builder +public record Action( + @NonNull String id, + @NonNull String name, + String label, + String description, + Integer order, + @Singular Set fromStates, + String precondition, + String toState, + @Singular List postconditions, + @NonNull @Singular("acl") Map acl, + @NonNull String classification, + Webhooks webhooks +) { + @Builder + public record Postcondition( + @NonNull String path, + @NonNull String value + ) { + } + + @Builder + public record Webhooks( + @NonNull Webhook onStart, + @NonNull Webhook onSubmit, + @NonNull Webhook onSubmitted + ) { + } +} diff --git a/src/main/java/app/quickcase/sdk/spring/definition/model/CreateAction.java b/src/main/java/app/quickcase/sdk/spring/definition/model/CreateAction.java new file mode 100644 index 0000000..a276f9d --- /dev/null +++ b/src/main/java/app/quickcase/sdk/spring/definition/model/CreateAction.java @@ -0,0 +1,23 @@ +package app.quickcase.sdk.spring.definition.model; + +import java.util.List; +import java.util.Map; + +import lombok.Builder; +import lombok.NonNull; +import lombok.Singular; + +@Builder +public record CreateAction( + @NonNull String id, + @NonNull String name, + String label, + String description, + Integer order, + @NonNull String toState, + @Singular List postconditions, + @NonNull @Singular("acl") Map acl, + @NonNull String classification, + Action.Webhooks webhooks +) { +} diff --git a/src/main/java/app/quickcase/sdk/spring/definition/model/RecordType.java b/src/main/java/app/quickcase/sdk/spring/definition/model/RecordType.java index 46187aa..4f4b2a3 100644 --- a/src/main/java/app/quickcase/sdk/spring/definition/model/RecordType.java +++ b/src/main/java/app/quickcase/sdk/spring/definition/model/RecordType.java @@ -5,6 +5,7 @@ @Builder public record RecordType( - @NonNull Schema schema + @NonNull Schema schema, + @NonNull Workflow workflow ) { } diff --git a/src/main/java/app/quickcase/sdk/spring/definition/model/State.java b/src/main/java/app/quickcase/sdk/spring/definition/model/State.java new file mode 100644 index 0000000..87443f6 --- /dev/null +++ b/src/main/java/app/quickcase/sdk/spring/definition/model/State.java @@ -0,0 +1,19 @@ +package app.quickcase.sdk.spring.definition.model; + +import java.util.Map; + +import lombok.Builder; +import lombok.NonNull; +import lombok.Singular; + +@Builder +public record State( + @NonNull String id, + @NonNull String name, + String label, + String description, + String titleTemplate, + Integer order, + @NonNull @Singular("acl") Map acl +) { +} diff --git a/src/main/java/app/quickcase/sdk/spring/definition/model/Webhook.java b/src/main/java/app/quickcase/sdk/spring/definition/model/Webhook.java new file mode 100644 index 0000000..d677491 --- /dev/null +++ b/src/main/java/app/quickcase/sdk/spring/definition/model/Webhook.java @@ -0,0 +1,15 @@ +package app.quickcase.sdk.spring.definition.model; + +import java.net.URL; +import java.util.List; + +import lombok.Builder; +import lombok.NonNull; +import lombok.Singular; + +@Builder +public record Webhook( + @NonNull URL url, + @Singular @NonNull List retries +) { +} diff --git a/src/main/java/app/quickcase/sdk/spring/definition/model/Workflow.java b/src/main/java/app/quickcase/sdk/spring/definition/model/Workflow.java new file mode 100644 index 0000000..728fea8 --- /dev/null +++ b/src/main/java/app/quickcase/sdk/spring/definition/model/Workflow.java @@ -0,0 +1,15 @@ +package app.quickcase.sdk.spring.definition.model; + +import java.util.Map; + +import lombok.Builder; +import lombok.NonNull; +import lombok.Singular; + +@Builder +public record Workflow( + @NonNull @Singular Map states, + @NonNull @Singular Map createActions, + @NonNull @Singular Map actions +) { +}