Refactoring swagger constants
This commit is contained in:
parent
631e4bef8b
commit
c294b73664
|
@ -23,6 +23,7 @@ import org.opencdmp.authorization.AuthorizationFlags;
|
||||||
import org.opencdmp.commons.enums.DmpAccessType;
|
import org.opencdmp.commons.enums.DmpAccessType;
|
||||||
import org.opencdmp.commons.enums.DmpStatus;
|
import org.opencdmp.commons.enums.DmpStatus;
|
||||||
import org.opencdmp.commons.enums.IsActive;
|
import org.opencdmp.commons.enums.IsActive;
|
||||||
|
import org.opencdmp.controllers.swagger.SwaggerHelpers;
|
||||||
import org.opencdmp.convention.ConventionService;
|
import org.opencdmp.convention.ConventionService;
|
||||||
import org.opencdmp.data.StorageFileEntity;
|
import org.opencdmp.data.StorageFileEntity;
|
||||||
import org.opencdmp.model.DescriptionValidationResult;
|
import org.opencdmp.model.DescriptionValidationResult;
|
||||||
|
@ -151,16 +152,16 @@ public class DescriptionController {
|
||||||
@PostMapping("query")
|
@PostMapping("query")
|
||||||
@Operation(
|
@Operation(
|
||||||
summary = "Query all descriptions",
|
summary = "Query all descriptions",
|
||||||
description = SwaggerHelpers.endpoint_query,
|
description = SwaggerHelpers.Description.endpoint_query,
|
||||||
requestBody = @io.swagger.v3.oas.annotations.parameters.RequestBody(
|
requestBody = @io.swagger.v3.oas.annotations.parameters.RequestBody(
|
||||||
description = SwaggerHelpers.endpoint_query_request_body,
|
description = SwaggerHelpers.Description.endpoint_query_request_body,
|
||||||
content = {
|
content = {
|
||||||
@Content(
|
@Content(
|
||||||
examples = {
|
examples = {
|
||||||
@ExampleObject(
|
@ExampleObject(
|
||||||
name = "Pagination and projection",
|
name = "Pagination and projection",
|
||||||
description = "Simple paginated request using a property projection list and pagination info",
|
description = "Simple paginated request using a property projection list and pagination info",
|
||||||
value = SwaggerHelpers.endpoint_query_request_body_example
|
value = SwaggerHelpers.Description.endpoint_query_request_body_example
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
@ -184,7 +185,7 @@ public class DescriptionController {
|
||||||
@Operation(summary = "Fetch a specific description by id")
|
@Operation(summary = "Fetch a specific description by id")
|
||||||
public Description get(
|
public Description get(
|
||||||
@Parameter(name = "id", description = "The id of a description to fetch", example = "c0c163dc-2965-45a5-9608-f76030578609", required = true) @PathVariable("id") UUID id,
|
@Parameter(name = "id", description = "The id of a description to fetch", example = "c0c163dc-2965-45a5-9608-f76030578609", required = true) @PathVariable("id") UUID id,
|
||||||
@Parameter(name = "fieldSet", description = SwaggerHelpers.fieldset_description, required = true) FieldSet fieldSet
|
@Parameter(name = "fieldSet", description = SwaggerHelpers.Commons.fieldset_description, required = true) FieldSet fieldSet
|
||||||
) throws MyApplicationException, MyForbiddenException, MyNotFoundException {
|
) throws MyApplicationException, MyForbiddenException, MyNotFoundException {
|
||||||
logger.debug(new MapLogEntry("retrieving" + Description.class.getSimpleName()).And("id", id).And("fields", fieldSet));
|
logger.debug(new MapLogEntry("retrieving" + Description.class.getSimpleName()).And("id", id).And("fields", fieldSet));
|
||||||
fieldSet = this.fieldSetExpanderService.expand(fieldSet);
|
fieldSet = this.fieldSetExpanderService.expand(fieldSet);
|
||||||
|
@ -210,7 +211,7 @@ public class DescriptionController {
|
||||||
@ValidationFilterAnnotation(validator = DescriptionPersist.DescriptionPersistValidator.ValidatorName, argumentName = "model")
|
@ValidationFilterAnnotation(validator = DescriptionPersist.DescriptionPersistValidator.ValidatorName, argumentName = "model")
|
||||||
public Description persist(
|
public Description persist(
|
||||||
@RequestBody DescriptionPersist model,
|
@RequestBody DescriptionPersist model,
|
||||||
@Parameter(name = "fieldSet", description = SwaggerHelpers.fieldset_description, required = true) FieldSet fieldSet
|
@Parameter(name = "fieldSet", description = SwaggerHelpers.Commons.fieldset_description, required = true) FieldSet fieldSet
|
||||||
) throws MyApplicationException, MyForbiddenException, MyNotFoundException, InvalidApplicationException, IOException {
|
) throws MyApplicationException, MyForbiddenException, MyNotFoundException, InvalidApplicationException, IOException {
|
||||||
logger.debug(new MapLogEntry("persisting" + Description.class.getSimpleName()).And("model", model).And("fieldSet", fieldSet));
|
logger.debug(new MapLogEntry("persisting" + Description.class.getSimpleName()).And("model", model).And("fieldSet", fieldSet));
|
||||||
fieldSet = this.fieldSetExpanderService.expand(fieldSet);
|
fieldSet = this.fieldSetExpanderService.expand(fieldSet);
|
||||||
|
@ -231,7 +232,7 @@ public class DescriptionController {
|
||||||
@ValidationFilterAnnotation(validator = DescriptionStatusPersist.DescriptionStatusPersistValidator.ValidatorName, argumentName = "model")
|
@ValidationFilterAnnotation(validator = DescriptionStatusPersist.DescriptionStatusPersistValidator.ValidatorName, argumentName = "model")
|
||||||
public Description persistStatus(
|
public Description persistStatus(
|
||||||
@RequestBody DescriptionStatusPersist model,
|
@RequestBody DescriptionStatusPersist model,
|
||||||
@Parameter(name = "fieldSet", description = SwaggerHelpers.fieldset_description, required = true) FieldSet fieldSet
|
@Parameter(name = "fieldSet", description = SwaggerHelpers.Commons.fieldset_description, required = true) FieldSet fieldSet
|
||||||
) throws MyApplicationException, MyForbiddenException, MyNotFoundException, IOException, InvalidApplicationException {
|
) throws MyApplicationException, MyForbiddenException, MyNotFoundException, IOException, InvalidApplicationException {
|
||||||
logger.debug(new MapLogEntry("persisting" + Description.class.getSimpleName()).And("model", model).And("fieldSet", fieldSet));
|
logger.debug(new MapLogEntry("persisting" + Description.class.getSimpleName()).And("model", model).And("fieldSet", fieldSet));
|
||||||
fieldSet = this.fieldSetExpanderService.expand(fieldSet);
|
fieldSet = this.fieldSetExpanderService.expand(fieldSet);
|
||||||
|
@ -309,7 +310,7 @@ public class DescriptionController {
|
||||||
public StorageFile uploadFieldFiles(
|
public StorageFile uploadFieldFiles(
|
||||||
@RequestParam("file") MultipartFile file,
|
@RequestParam("file") MultipartFile file,
|
||||||
@RequestParam("model") DescriptionFieldFilePersist model,
|
@RequestParam("model") DescriptionFieldFilePersist model,
|
||||||
@Parameter(name = "fieldSet", description = SwaggerHelpers.fieldset_description, required = true) FieldSet fieldSet
|
@Parameter(name = "fieldSet", description = SwaggerHelpers.Commons.fieldset_description, required = true) FieldSet fieldSet
|
||||||
) throws IOException {
|
) throws IOException {
|
||||||
logger.debug(new MapLogEntry("uploadFieldFiles" + Description.class.getSimpleName()).And("model", model).And("fieldSet", fieldSet));
|
logger.debug(new MapLogEntry("uploadFieldFiles" + Description.class.getSimpleName()).And("model", model).And("fieldSet", fieldSet));
|
||||||
fieldSet = this.fieldSetExpanderService.expand(fieldSet);
|
fieldSet = this.fieldSetExpanderService.expand(fieldSet);
|
||||||
|
@ -380,186 +381,4 @@ public class DescriptionController {
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static class SwaggerHelpers {
|
|
||||||
static final String endpoint_query =
|
|
||||||
"""
|
|
||||||
This endpoint is used to fetch all the available descriptions.<br/>
|
|
||||||
It also allows to restrict the results using a query object passed in the request body.<br/>
|
|
||||||
""";
|
|
||||||
|
|
||||||
static final String endpoint_query_request_body =
|
|
||||||
"""
|
|
||||||
Let's explore the options this object gives us.
|
|
||||||
|
|
||||||
### <u>General query parameters:</u>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><b>page:</b>
|
|
||||||
This is an object controlling the pagination of the results. It contains two properties.
|
|
||||||
</li>
|
|
||||||
<ul>
|
|
||||||
<li><b>offset:</b>
|
|
||||||
How many records to omit.
|
|
||||||
</li>
|
|
||||||
<li><b>size:</b>
|
|
||||||
How many records to include in each page.
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
For example, if we want the third page, and our pages to contain 15 elements, we would pass the following object:
|
|
||||||
|
|
||||||
```JSON
|
|
||||||
{
|
|
||||||
"offset": 30,
|
|
||||||
"size": 15
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><b>order:</b>
|
|
||||||
This is an object controlling the ordering of the results.
|
|
||||||
It contains a list of strings called <i>items</i> with the names of the properties to use.
|
|
||||||
<br/>If the name of the property is prefixed with a <b>'-'</b>, the ordering direction is <b>DESC</b>. Otherwise, it is <b>ASC</b>.
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
For example, if we wanted to order based on the field 'createdAt' in descending order, we would pass the following object:
|
|
||||||
|
|
||||||
```JSON
|
|
||||||
{
|
|
||||||
"items": [
|
|
||||||
"-createdAt"
|
|
||||||
],
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><b>metadata:</b>
|
|
||||||
This is an object containing metadata for the request. There is only one available option.
|
|
||||||
<ul>
|
|
||||||
<li><b>countAll:</b>
|
|
||||||
If this is set to true, the count property included in the response will account for all the records regardless the pagination,
|
|
||||||
with all the rest of filtering options applied of course.
|
|
||||||
Otherwise, if it is set to false or not present, only the returned results will be counted.
|
|
||||||
<br/>The first option is useful for the UI clients to calculate how many result pages are available.
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li><b>project:</b>
|
|
||||||
This is an object controlling the data projection of the results.
|
|
||||||
It contains a list of strings called <i>fields</i> with the names of the properties to project.
|
|
||||||
<br/>You can also include properties that are deeper in the object tree by prefixing them with dots.
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
### <u>Description specific query parameters:</u>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><b>like:</b>
|
|
||||||
If there is a like parameter present in the query, only the description entities that include the contents of the parameter either in their labels or the descriptions will be in the response.
|
|
||||||
</li>
|
|
||||||
<li><b>ids:</b>
|
|
||||||
This is a list and contains the ids we want to include in the response. <br/>If empty, every record is included.
|
|
||||||
</li>
|
|
||||||
<li><b>excludedIds:</b>
|
|
||||||
This is a list and contains the ids we want to exclude from the response. <br/>If empty, no record gets excluded.
|
|
||||||
</li>
|
|
||||||
<li><b>isActive:</b>
|
|
||||||
This is a list and determines which records we want to include in the response, based on if they are deleted or not.
|
|
||||||
This filter works like this. If we want to view only the active records we pass [1] and for only the deleted records we pass [0].
|
|
||||||
<br/>If not present or if we pass [0,1], every record is included.
|
|
||||||
</li>
|
|
||||||
<li><b>statuses:</b>
|
|
||||||
This is a list and determines which records we want to include in the response, based on their status.
|
|
||||||
The status can be <i>Draft</i>, <i>Finalized</i> or <i>Canceled</i>. We add 0, 1 or 2 to the list respectively.
|
|
||||||
<br/>If not present, every record is included.
|
|
||||||
</li>
|
|
||||||
<li><b>createdAfter:</b>
|
|
||||||
This is a date and determines which records we want to include in the response, based on their creation date.
|
|
||||||
Specifically, only the records created after the given date are included.
|
|
||||||
<br/>If not present, every record is included.
|
|
||||||
</li>
|
|
||||||
<li><b>createdBefore:</b>
|
|
||||||
This is a date and determines which records we want to include in the response, based on their creation date.
|
|
||||||
Specifically, only the records created before the given date are included.
|
|
||||||
<br/>If not present, every record is included.
|
|
||||||
</li>
|
|
||||||
<li><b>finalizedAfter:</b>
|
|
||||||
This is a date and determines which records we want to include in the response, based on their finalization date.
|
|
||||||
Specifically, only the records finalized after the given date are included.
|
|
||||||
<br/>If not present, every record is included.
|
|
||||||
</li>
|
|
||||||
<li><b>finalizedBefore:</b>
|
|
||||||
This is a date and determines which records we want to include in the response, based on their finalization date.
|
|
||||||
Specifically, only the records finalized before the given date are included.
|
|
||||||
<br/>If not present, every record is included.
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
""";
|
|
||||||
|
|
||||||
static final String endpoint_query_request_body_example =
|
|
||||||
"""
|
|
||||||
{
|
|
||||||
"project":{
|
|
||||||
"fields":[
|
|
||||||
"id",
|
|
||||||
"label",
|
|
||||||
"status",
|
|
||||||
"updatedAt",
|
|
||||||
"belongsToCurrentTenant",
|
|
||||||
"finalizedAt",
|
|
||||||
"descriptionTemplate.id",
|
|
||||||
"descriptionTemplate.label",
|
|
||||||
"descriptionTemplate.groupId",
|
|
||||||
"dmp.id",
|
|
||||||
"dmp.label",
|
|
||||||
"dmp.status",
|
|
||||||
"dmp.accessType",
|
|
||||||
"dmp.blueprint.id",
|
|
||||||
"dmp.blueprint.label",
|
|
||||||
"dmp.blueprint.definition.sections.id",
|
|
||||||
"dmp.blueprint.definition.sections.label",
|
|
||||||
"dmp.blueprint.definition.sections.hasTemplates",
|
|
||||||
"dmp.dmpReferences.id",
|
|
||||||
"dmp.dmpReferences.reference.id",
|
|
||||||
"dmp.dmpReferences.reference.label",
|
|
||||||
"dmp.dmpReferences.reference.type.id",
|
|
||||||
"dmp.dmpReferences.reference.reference",
|
|
||||||
"dmp.dmpReferences.isActive",
|
|
||||||
"dmpDescriptionTemplate.id",
|
|
||||||
"dmpDescriptionTemplate.dmp.id",
|
|
||||||
"dmpDescriptionTemplate.descriptionTemplateGroupId",
|
|
||||||
"dmpDescriptionTemplate.sectionId"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"page":{
|
|
||||||
"size":5,
|
|
||||||
"offset":0
|
|
||||||
},
|
|
||||||
"order":{
|
|
||||||
"items":[
|
|
||||||
"-updatedAt"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"metadata":{
|
|
||||||
"countAll":true
|
|
||||||
},
|
|
||||||
"isActive":[
|
|
||||||
1
|
|
||||||
]
|
|
||||||
}
|
|
||||||
""";
|
|
||||||
|
|
||||||
static final String fieldset_description =
|
|
||||||
"""
|
|
||||||
This is an object containing a list of the properties you wish to include in the response, similar to the 'project' attribute on queries.
|
|
||||||
""";
|
|
||||||
|
|
||||||
static final String endpoint_get =
|
|
||||||
"""
|
|
||||||
|
|
||||||
""";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,9 +11,12 @@ import gr.cite.tools.fieldset.FieldSet;
|
||||||
import gr.cite.tools.logging.LoggerService;
|
import gr.cite.tools.logging.LoggerService;
|
||||||
import gr.cite.tools.logging.MapLogEntry;
|
import gr.cite.tools.logging.MapLogEntry;
|
||||||
import gr.cite.tools.validation.ValidationFilterAnnotation;
|
import gr.cite.tools.validation.ValidationFilterAnnotation;
|
||||||
|
import io.swagger.v3.oas.annotations.Hidden;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
import io.swagger.v3.oas.annotations.media.Content;
|
import io.swagger.v3.oas.annotations.media.Content;
|
||||||
import io.swagger.v3.oas.annotations.media.ExampleObject;
|
import io.swagger.v3.oas.annotations.media.ExampleObject;
|
||||||
|
import io.swagger.v3.oas.annotations.responses.ApiResponse;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import jakarta.xml.bind.JAXBException;
|
import jakarta.xml.bind.JAXBException;
|
||||||
import org.opencdmp.audit.AuditableAction;
|
import org.opencdmp.audit.AuditableAction;
|
||||||
|
@ -21,6 +24,7 @@ import org.opencdmp.authorization.AuthorizationFlags;
|
||||||
import org.opencdmp.commons.enums.DmpAccessType;
|
import org.opencdmp.commons.enums.DmpAccessType;
|
||||||
import org.opencdmp.commons.enums.DmpStatus;
|
import org.opencdmp.commons.enums.DmpStatus;
|
||||||
import org.opencdmp.commons.enums.IsActive;
|
import org.opencdmp.commons.enums.IsActive;
|
||||||
|
import org.opencdmp.controllers.swagger.SwaggerHelpers;
|
||||||
import org.opencdmp.model.DescriptionsToBeFinalized;
|
import org.opencdmp.model.DescriptionsToBeFinalized;
|
||||||
import org.opencdmp.model.DmpUser;
|
import org.opencdmp.model.DmpUser;
|
||||||
import org.opencdmp.model.DmpValidationResult;
|
import org.opencdmp.model.DmpValidationResult;
|
||||||
|
@ -99,6 +103,7 @@ public class DmpController {
|
||||||
|
|
||||||
@PostMapping("public/query")
|
@PostMapping("public/query")
|
||||||
@Operation(summary = "Query public published plans")
|
@Operation(summary = "Query public published plans")
|
||||||
|
@Hidden
|
||||||
public QueryResult<PublicDmp> publicQuery(@RequestBody DmpLookup lookup) throws MyApplicationException, MyForbiddenException {
|
public QueryResult<PublicDmp> publicQuery(@RequestBody DmpLookup lookup) throws MyApplicationException, MyForbiddenException {
|
||||||
logger.debug("querying {}", Dmp.class.getSimpleName());
|
logger.debug("querying {}", Dmp.class.getSimpleName());
|
||||||
|
|
||||||
|
@ -114,6 +119,7 @@ public class DmpController {
|
||||||
|
|
||||||
@GetMapping("public/{id}")
|
@GetMapping("public/{id}")
|
||||||
@Operation(summary = "Fetch a specific public published plan by id")
|
@Operation(summary = "Fetch a specific public published plan by id")
|
||||||
|
@Hidden
|
||||||
public PublicDmp publicGet(@PathVariable("id") UUID id, FieldSet fieldSet, Locale locale) throws MyApplicationException, MyForbiddenException, MyNotFoundException {
|
public PublicDmp publicGet(@PathVariable("id") UUID id, FieldSet fieldSet, Locale locale) throws MyApplicationException, MyForbiddenException, MyNotFoundException {
|
||||||
logger.debug(new MapLogEntry("retrieving" + Dmp.class.getSimpleName()).And("id", id).And("fields", fieldSet));
|
logger.debug(new MapLogEntry("retrieving" + Dmp.class.getSimpleName()).And("id", id).And("fields", fieldSet));
|
||||||
|
|
||||||
|
@ -136,21 +142,38 @@ public class DmpController {
|
||||||
@PostMapping("query")
|
@PostMapping("query")
|
||||||
@Operation(
|
@Operation(
|
||||||
summary = "Query all plans",
|
summary = "Query all plans",
|
||||||
description = SwaggerHelpers.endpoint_query,
|
description = SwaggerHelpers.Dmp.endpoint_query,
|
||||||
requestBody = @io.swagger.v3.oas.annotations.parameters.RequestBody(
|
requestBody = @io.swagger.v3.oas.annotations.parameters.RequestBody(
|
||||||
description = SwaggerHelpers.endpoint_query_request_body,
|
description = SwaggerHelpers.Dmp.endpoint_query_request_body,
|
||||||
content = {
|
content = {
|
||||||
@Content(
|
@Content(
|
||||||
examples = {
|
examples = {
|
||||||
@ExampleObject(
|
@ExampleObject(
|
||||||
name = "Pagination and projection",
|
name = "Pagination and projection",
|
||||||
description = "Simple paginated request using a property projection list and pagination info",
|
description = "Simple paginated request using a property projection list and pagination info",
|
||||||
value = SwaggerHelpers.endpoint_query_request_body_example
|
value = SwaggerHelpers.Dmp.endpoint_query_request_body_example
|
||||||
|
)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
),
|
||||||
|
responses = {
|
||||||
|
@ApiResponse(
|
||||||
|
description = "OK",
|
||||||
|
responseCode = "200",
|
||||||
|
content = {
|
||||||
|
@Content(
|
||||||
|
examples = {
|
||||||
|
@ExampleObject(
|
||||||
|
name = "First page",
|
||||||
|
description = "Example with the first page of paginated results",
|
||||||
|
value = SwaggerHelpers.Dmp.endpoint_query_response_example
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
}
|
||||||
)
|
)
|
||||||
public QueryResult<Dmp> Query(@RequestBody DmpLookup lookup) throws MyApplicationException, MyForbiddenException {
|
public QueryResult<Dmp> Query(@RequestBody DmpLookup lookup) throws MyApplicationException, MyForbiddenException {
|
||||||
logger.debug("querying {}", Dmp.class.getSimpleName());
|
logger.debug("querying {}", Dmp.class.getSimpleName());
|
||||||
|
@ -166,7 +189,11 @@ public class DmpController {
|
||||||
|
|
||||||
@GetMapping("{id}")
|
@GetMapping("{id}")
|
||||||
@Operation(summary = "Fetch a specific plan by id")
|
@Operation(summary = "Fetch a specific plan by id")
|
||||||
public Dmp Get(@PathVariable("id") UUID id, FieldSet fieldSet, Locale locale) throws MyApplicationException, MyForbiddenException, MyNotFoundException {
|
public Dmp Get(
|
||||||
|
@Parameter(name = "id", description = "The id of a plan to fetch", example = "c0c163dc-2965-45a5-9608-f76030578609", required = true) @PathVariable("id") UUID id,
|
||||||
|
@Parameter(name = "fieldSet", description = SwaggerHelpers.Commons.fieldset_description, required = true) FieldSet fieldSet,
|
||||||
|
Locale locale
|
||||||
|
) throws MyApplicationException, MyForbiddenException, MyNotFoundException {
|
||||||
logger.debug(new MapLogEntry("retrieving" + Dmp.class.getSimpleName()).And("id", id).And("fields", fieldSet));
|
logger.debug(new MapLogEntry("retrieving" + Dmp.class.getSimpleName()).And("id", id).And("fields", fieldSet));
|
||||||
|
|
||||||
this.censorFactory.censor(DmpCensor.class).censor(fieldSet, null);
|
this.censorFactory.censor(DmpCensor.class).censor(fieldSet, null);
|
||||||
|
@ -188,7 +215,10 @@ public class DmpController {
|
||||||
@Operation(summary = "Create a new or update an existing plan")
|
@Operation(summary = "Create a new or update an existing plan")
|
||||||
@Transactional
|
@Transactional
|
||||||
@ValidationFilterAnnotation(validator = DmpPersist.DmpPersistValidator.ValidatorName, argumentName = "model")
|
@ValidationFilterAnnotation(validator = DmpPersist.DmpPersistValidator.ValidatorName, argumentName = "model")
|
||||||
public Dmp Persist(@RequestBody DmpPersist model, FieldSet fieldSet) throws MyApplicationException, MyForbiddenException, MyNotFoundException, InvalidApplicationException, IOException, JAXBException {
|
public Dmp Persist(
|
||||||
|
@RequestBody DmpPersist model,
|
||||||
|
@Parameter(name = "fieldSet", description = SwaggerHelpers.Commons.fieldset_description, required = true) FieldSet fieldSet
|
||||||
|
) throws MyApplicationException, MyForbiddenException, MyNotFoundException, InvalidApplicationException, IOException, JAXBException {
|
||||||
logger.debug(new MapLogEntry("persisting" + Dmp.class.getSimpleName()).And("model", model).And("fieldSet", fieldSet));
|
logger.debug(new MapLogEntry("persisting" + Dmp.class.getSimpleName()).And("model", model).And("fieldSet", fieldSet));
|
||||||
|
|
||||||
Dmp persisted = this.dmpService.persist(model, fieldSet);
|
Dmp persisted = this.dmpService.persist(model, fieldSet);
|
||||||
|
@ -204,7 +234,9 @@ public class DmpController {
|
||||||
@DeleteMapping("{id}")
|
@DeleteMapping("{id}")
|
||||||
@Operation(summary = "Delete a plan by id")
|
@Operation(summary = "Delete a plan by id")
|
||||||
@Transactional
|
@Transactional
|
||||||
public void Delete(@PathVariable("id") UUID id) throws MyForbiddenException, InvalidApplicationException, IOException {
|
public void Delete(
|
||||||
|
@Parameter(name = "id", description = "The id of a plan to delete", example = "c0c163dc-2965-45a5-9608-f76030578609", required = true) @PathVariable("id") UUID id
|
||||||
|
) throws MyForbiddenException, InvalidApplicationException, IOException {
|
||||||
logger.debug(new MapLogEntry("retrieving" + Dmp.class.getSimpleName()).And("id", id));
|
logger.debug(new MapLogEntry("retrieving" + Dmp.class.getSimpleName()).And("id", id));
|
||||||
|
|
||||||
this.dmpService.deleteAndSave(id);
|
this.dmpService.deleteAndSave(id);
|
||||||
|
@ -215,7 +247,10 @@ public class DmpController {
|
||||||
@PostMapping("finalize/{id}")
|
@PostMapping("finalize/{id}")
|
||||||
@Operation(summary = "Finalize a plan by id")
|
@Operation(summary = "Finalize a plan by id")
|
||||||
@Transactional
|
@Transactional
|
||||||
public boolean finalize(@PathVariable("id") UUID id, @RequestBody DescriptionsToBeFinalized descriptions) throws MyApplicationException, MyForbiddenException, MyNotFoundException, InvalidApplicationException, IOException {
|
public boolean finalize(
|
||||||
|
@Parameter(name = "id", description = "The id of a plan to finalize", example = "c0c163dc-2965-45a5-9608-f76030578609", required = true) @PathVariable("id") UUID id,
|
||||||
|
@RequestBody DescriptionsToBeFinalized descriptions
|
||||||
|
) throws MyApplicationException, MyForbiddenException, MyNotFoundException, InvalidApplicationException, IOException {
|
||||||
logger.debug(new MapLogEntry("finalizing" + Dmp.class.getSimpleName()).And("id", id).And("descriptionIds", descriptions.getDescriptionIds()));
|
logger.debug(new MapLogEntry("finalizing" + Dmp.class.getSimpleName()).And("id", id).And("descriptionIds", descriptions.getDescriptionIds()));
|
||||||
|
|
||||||
this.dmpService.finalize(id, descriptions.getDescriptionIds());
|
this.dmpService.finalize(id, descriptions.getDescriptionIds());
|
||||||
|
@ -231,7 +266,10 @@ public class DmpController {
|
||||||
@GetMapping("undo-finalize/{id}")
|
@GetMapping("undo-finalize/{id}")
|
||||||
@Operation(summary = "Undo the finalization of a plan by id (only possible if it is not already deposited)")
|
@Operation(summary = "Undo the finalization of a plan by id (only possible if it is not already deposited)")
|
||||||
@Transactional
|
@Transactional
|
||||||
public boolean undoFinalize(@PathVariable("id") UUID id, FieldSet fieldSet) throws MyApplicationException, MyForbiddenException, MyNotFoundException, InvalidApplicationException, IOException, JAXBException {
|
public boolean undoFinalize(
|
||||||
|
@Parameter(name = "id", description = "The id of a plan to revert the finalization", example = "c0c163dc-2965-45a5-9608-f76030578609", required = true) @PathVariable("id") UUID id,
|
||||||
|
@Parameter(name = "fieldSet", description = SwaggerHelpers.Commons.fieldset_description, required = true) FieldSet fieldSet
|
||||||
|
) throws MyApplicationException, MyForbiddenException, MyNotFoundException, InvalidApplicationException, IOException, JAXBException {
|
||||||
logger.debug(new MapLogEntry("undo-finalizing" + Dmp.class.getSimpleName()).And("id", id));
|
logger.debug(new MapLogEntry("undo-finalizing" + Dmp.class.getSimpleName()).And("id", id));
|
||||||
|
|
||||||
this.censorFactory.censor(DmpCensor.class).censor(fieldSet, null);
|
this.censorFactory.censor(DmpCensor.class).censor(fieldSet, null);
|
||||||
|
@ -247,6 +285,7 @@ public class DmpController {
|
||||||
|
|
||||||
@GetMapping("validate/{id}")
|
@GetMapping("validate/{id}")
|
||||||
@Operation(summary = "Validate if a plan is ready for finalization by id")
|
@Operation(summary = "Validate if a plan is ready for finalization by id")
|
||||||
|
@Hidden
|
||||||
public DmpValidationResult validate(@PathVariable("id") UUID id) throws MyApplicationException, MyForbiddenException, MyNotFoundException, InvalidApplicationException {
|
public DmpValidationResult validate(@PathVariable("id") UUID id) throws MyApplicationException, MyForbiddenException, MyNotFoundException, InvalidApplicationException {
|
||||||
logger.debug(new MapLogEntry("validating" + Dmp.class.getSimpleName()).And("id", id));
|
logger.debug(new MapLogEntry("validating" + Dmp.class.getSimpleName()).And("id", id));
|
||||||
|
|
||||||
|
@ -265,7 +304,10 @@ public class DmpController {
|
||||||
@Operation(summary = "Create a clone of an existing plan")
|
@Operation(summary = "Create a clone of an existing plan")
|
||||||
@Transactional
|
@Transactional
|
||||||
@ValidationFilterAnnotation(validator = CloneDmpPersist.CloneDmpPersistValidator.ValidatorName, argumentName = "model")
|
@ValidationFilterAnnotation(validator = CloneDmpPersist.CloneDmpPersistValidator.ValidatorName, argumentName = "model")
|
||||||
public Dmp buildClone(@RequestBody CloneDmpPersist model, FieldSet fieldSet) throws MyApplicationException, MyForbiddenException, MyNotFoundException, IOException, InvalidApplicationException {
|
public Dmp buildClone(
|
||||||
|
@RequestBody CloneDmpPersist model,
|
||||||
|
@Parameter(name = "fieldSet", description = SwaggerHelpers.Commons.fieldset_description, required = true) FieldSet fieldSet
|
||||||
|
) throws MyApplicationException, MyForbiddenException, MyNotFoundException, IOException, InvalidApplicationException {
|
||||||
logger.debug(new MapLogEntry("clone" + Dmp.class.getSimpleName()).And("model", model).And("fields", fieldSet));
|
logger.debug(new MapLogEntry("clone" + Dmp.class.getSimpleName()).And("model", model).And("fields", fieldSet));
|
||||||
|
|
||||||
this.censorFactory.censor(DmpCensor.class).censor(fieldSet, null);
|
this.censorFactory.censor(DmpCensor.class).censor(fieldSet, null);
|
||||||
|
@ -284,7 +326,10 @@ public class DmpController {
|
||||||
@Operation(summary = "Create a new version of an existing plan")
|
@Operation(summary = "Create a new version of an existing plan")
|
||||||
@Transactional
|
@Transactional
|
||||||
@ValidationFilterAnnotation(validator = NewVersionDmpPersist.NewVersionDmpPersistValidator.ValidatorName, argumentName = "model")
|
@ValidationFilterAnnotation(validator = NewVersionDmpPersist.NewVersionDmpPersistValidator.ValidatorName, argumentName = "model")
|
||||||
public Dmp createNewVersion(@RequestBody NewVersionDmpPersist model, FieldSet fieldSet) throws MyApplicationException, MyForbiddenException, MyNotFoundException, JAXBException, IOException, TransformerException, InvalidApplicationException, ParserConfigurationException {
|
public Dmp createNewVersion(
|
||||||
|
@RequestBody NewVersionDmpPersist model,
|
||||||
|
@Parameter(name = "fieldSet", description = SwaggerHelpers.Commons.fieldset_description, required = true) FieldSet fieldSet
|
||||||
|
) throws MyApplicationException, MyForbiddenException, MyNotFoundException, JAXBException, IOException, TransformerException, InvalidApplicationException, ParserConfigurationException {
|
||||||
logger.debug(new MapLogEntry("persisting" + NewVersionDmpPersist.class.getSimpleName()).And("model", model).And("fieldSet", fieldSet));
|
logger.debug(new MapLogEntry("persisting" + NewVersionDmpPersist.class.getSimpleName()).And("model", model).And("fieldSet", fieldSet));
|
||||||
|
|
||||||
Dmp persisted = this.dmpService.createNewVersion(model, fieldSet);
|
Dmp persisted = this.dmpService.createNewVersion(model, fieldSet);
|
||||||
|
@ -301,6 +346,7 @@ public class DmpController {
|
||||||
@Operation(summary = "Assign users to the plan by id")
|
@Operation(summary = "Assign users to the plan by id")
|
||||||
@Transactional
|
@Transactional
|
||||||
@ValidationFilterAnnotation(validator = DmpUserPersist.DmpUserPersistValidator.ValidatorName, argumentName = "model")
|
@ValidationFilterAnnotation(validator = DmpUserPersist.DmpUserPersistValidator.ValidatorName, argumentName = "model")
|
||||||
|
@Hidden
|
||||||
public QueryResult<DmpUser> assignUsers(@PathVariable("id") UUID id, @RequestBody List<DmpUserPersist> model, FieldSet fieldSet) throws InvalidApplicationException, IOException {
|
public QueryResult<DmpUser> assignUsers(@PathVariable("id") UUID id, @RequestBody List<DmpUserPersist> model, FieldSet fieldSet) throws InvalidApplicationException, IOException {
|
||||||
logger.debug(new MapLogEntry("assigning users to dmp").And("model", model).And("fieldSet", fieldSet));
|
logger.debug(new MapLogEntry("assigning users to dmp").And("model", model).And("fieldSet", fieldSet));
|
||||||
|
|
||||||
|
@ -318,6 +364,7 @@ public class DmpController {
|
||||||
@Operation(summary = "Remove a user association with the plan")
|
@Operation(summary = "Remove a user association with the plan")
|
||||||
@Transactional
|
@Transactional
|
||||||
@ValidationFilterAnnotation(validator = DmpUserRemovePersist.DmpUserRemovePersistValidator.ValidatorName, argumentName = "model")
|
@ValidationFilterAnnotation(validator = DmpUserRemovePersist.DmpUserRemovePersistValidator.ValidatorName, argumentName = "model")
|
||||||
|
@Hidden
|
||||||
public QueryResult<Dmp> removeUser(@RequestBody DmpUserRemovePersist model, FieldSet fieldSet) throws InvalidApplicationException, IOException {
|
public QueryResult<Dmp> removeUser(@RequestBody DmpUserRemovePersist model, FieldSet fieldSet) throws InvalidApplicationException, IOException {
|
||||||
logger.debug(new MapLogEntry("remove user from dmp").And("model", model).And("fieldSet", fieldSet));
|
logger.debug(new MapLogEntry("remove user from dmp").And("model", model).And("fieldSet", fieldSet));
|
||||||
|
|
||||||
|
@ -333,7 +380,11 @@ public class DmpController {
|
||||||
|
|
||||||
@GetMapping("{id}/export/{transformerId}/{type}")
|
@GetMapping("{id}/export/{transformerId}/{type}")
|
||||||
@Operation(summary = "Export a plan in various formats by id")
|
@Operation(summary = "Export a plan in various formats by id")
|
||||||
public ResponseEntity<byte[]> export(@PathVariable("id") UUID id, @PathVariable("transformerId") String transformerId, @PathVariable("type") String exportType) throws InvalidApplicationException, IOException, InvalidAlgorithmParameterException, NoSuchPaddingException, IllegalBlockSizeException, NoSuchAlgorithmException, BadPaddingException, InvalidKeyException {
|
public ResponseEntity<byte[]> export(
|
||||||
|
@Parameter(name = "id", description = "The id of a plan to export", example = "c0c163dc-2965-45a5-9608-f76030578609", required = true) @PathVariable("id") UUID id,
|
||||||
|
@PathVariable("transformerId") String transformerId,
|
||||||
|
@PathVariable("type") String exportType
|
||||||
|
) throws InvalidApplicationException, IOException, InvalidAlgorithmParameterException, NoSuchPaddingException, IllegalBlockSizeException, NoSuchAlgorithmException, BadPaddingException, InvalidKeyException {
|
||||||
logger.debug(new MapLogEntry("exporting dmp").And("id", id).And("transformerId", transformerId).And("exportType", exportType));
|
logger.debug(new MapLogEntry("exporting dmp").And("id", id).And("transformerId", transformerId).And("exportType", exportType));
|
||||||
|
|
||||||
ResponseEntity<byte[]> bytes = this.dmpService.export(id, transformerId, exportType);
|
ResponseEntity<byte[]> bytes = this.dmpService.export(id, transformerId, exportType);
|
||||||
|
@ -349,6 +400,7 @@ public class DmpController {
|
||||||
@Operation(summary = "Send user invitations for the plan by id")
|
@Operation(summary = "Send user invitations for the plan by id")
|
||||||
@Transactional
|
@Transactional
|
||||||
@ValidationFilterAnnotation(validator = DmpUserInvitePersist.DmpUserInvitePersistValidator.ValidatorName, argumentName = "model")
|
@ValidationFilterAnnotation(validator = DmpUserInvitePersist.DmpUserInvitePersistValidator.ValidatorName, argumentName = "model")
|
||||||
|
@Hidden
|
||||||
public boolean inviteUsers(@PathVariable("id") UUID id, @RequestBody DmpUserInvitePersist model) throws InvalidApplicationException, JAXBException, IOException {
|
public boolean inviteUsers(@PathVariable("id") UUID id, @RequestBody DmpUserInvitePersist model) throws InvalidApplicationException, JAXBException, IOException {
|
||||||
logger.debug(new MapLogEntry("inviting users to dmp").And("model", model));
|
logger.debug(new MapLogEntry("inviting users to dmp").And("model", model));
|
||||||
|
|
||||||
|
@ -364,6 +416,7 @@ public class DmpController {
|
||||||
@GetMapping("{id}/token/{token}/invite-accept")
|
@GetMapping("{id}/token/{token}/invite-accept")
|
||||||
@Operation(summary = "Accept an invitation token for a plan by id")
|
@Operation(summary = "Accept an invitation token for a plan by id")
|
||||||
@Transactional
|
@Transactional
|
||||||
|
@Hidden
|
||||||
public boolean acceptInvitation(@PathVariable("id") UUID id, @PathVariable("token") String token) throws InvalidApplicationException, JAXBException, IOException {
|
public boolean acceptInvitation(@PathVariable("id") UUID id, @PathVariable("token") String token) throws InvalidApplicationException, JAXBException, IOException {
|
||||||
logger.debug(new MapLogEntry("inviting users to dmp").And("id", id));
|
logger.debug(new MapLogEntry("inviting users to dmp").And("id", id));
|
||||||
|
|
||||||
|
@ -378,7 +431,9 @@ public class DmpController {
|
||||||
|
|
||||||
@RequestMapping(method = RequestMethod.GET, value = "/xml/export/{id}", produces = "application/xml")
|
@RequestMapping(method = RequestMethod.GET, value = "/xml/export/{id}", produces = "application/xml")
|
||||||
@Operation(summary = "Export a plan in xml format by id")
|
@Operation(summary = "Export a plan in xml format by id")
|
||||||
public @ResponseBody ResponseEntity<byte[]> getXml(@PathVariable UUID id) throws JAXBException, ParserConfigurationException, IOException, InstantiationException, IllegalAccessException, SAXException, InvalidApplicationException {
|
public @ResponseBody ResponseEntity<byte[]> getXml(
|
||||||
|
@Parameter(name = "id", description = "The id of a plan to export", example = "c0c163dc-2965-45a5-9608-f76030578609", required = true) @PathVariable UUID id
|
||||||
|
) throws JAXBException, ParserConfigurationException, IOException, InstantiationException, IllegalAccessException, SAXException, InvalidApplicationException {
|
||||||
logger.debug(new MapLogEntry("export" + Dmp.class.getSimpleName()).And("id", id));
|
logger.debug(new MapLogEntry("export" + Dmp.class.getSimpleName()).And("id", id));
|
||||||
|
|
||||||
ResponseEntity<byte[]> response = this.dmpService.exportXml(id);
|
ResponseEntity<byte[]> response = this.dmpService.exportXml(id);
|
||||||
|
@ -392,7 +447,11 @@ public class DmpController {
|
||||||
@RequestMapping(method = RequestMethod.POST, value = "/xml/import")
|
@RequestMapping(method = RequestMethod.POST, value = "/xml/import")
|
||||||
@Operation(summary = "Import a plan from an xml file")
|
@Operation(summary = "Import a plan from an xml file")
|
||||||
@Transactional
|
@Transactional
|
||||||
public Dmp importXml(@RequestParam("file") MultipartFile file, @RequestParam("label") String label, FieldSet fields) throws JAXBException, ParserConfigurationException, IOException, InstantiationException, IllegalAccessException, SAXException, InvalidApplicationException, TransformerException {
|
public Dmp importXml(
|
||||||
|
@RequestParam("file") MultipartFile file,
|
||||||
|
@RequestParam("label") String label,
|
||||||
|
@Parameter(name = "fields", description = SwaggerHelpers.Commons.fieldset_description, required = true) FieldSet fields
|
||||||
|
) throws JAXBException, ParserConfigurationException, IOException, InstantiationException, IllegalAccessException, SAXException, InvalidApplicationException, TransformerException {
|
||||||
logger.debug(new MapLogEntry("import xml" + Dmp.class.getSimpleName()).And("file", file).And("label", label));
|
logger.debug(new MapLogEntry("import xml" + Dmp.class.getSimpleName()).And("file", file).And("label", label));
|
||||||
|
|
||||||
Dmp model = this.dmpService.importXml(file.getBytes(), label, fields);
|
Dmp model = this.dmpService.importXml(file.getBytes(), label, fields);
|
||||||
|
@ -407,7 +466,13 @@ public class DmpController {
|
||||||
@PostMapping("json/import")
|
@PostMapping("json/import")
|
||||||
@Operation(summary = "Import a plan from an json file")
|
@Operation(summary = "Import a plan from an json file")
|
||||||
@Transactional
|
@Transactional
|
||||||
public Dmp importJson(@RequestParam("file") MultipartFile file, @RequestParam("label") String label, @RequestParam("repositoryId") String repositoryId, @RequestParam("format") String format, FieldSet fields) throws InvalidAlgorithmParameterException, JAXBException, NoSuchPaddingException, IllegalBlockSizeException, InvalidApplicationException, IOException, NoSuchAlgorithmException, BadPaddingException, InvalidKeyException {
|
public Dmp importJson(
|
||||||
|
@RequestParam("file") MultipartFile file,
|
||||||
|
@RequestParam("label") String label,
|
||||||
|
@RequestParam("repositoryId") String repositoryId,
|
||||||
|
@RequestParam("format") String format,
|
||||||
|
@Parameter(name = "fields", description = SwaggerHelpers.Commons.fieldset_description, required = true) FieldSet fields
|
||||||
|
) throws InvalidAlgorithmParameterException, JAXBException, NoSuchPaddingException, IllegalBlockSizeException, InvalidApplicationException, IOException, NoSuchAlgorithmException, BadPaddingException, InvalidKeyException {
|
||||||
logger.debug(new MapLogEntry("import json" + Dmp.class.getSimpleName()).And("transformerId", repositoryId).And("file", file).And("label", label));
|
logger.debug(new MapLogEntry("import json" + Dmp.class.getSimpleName()).And("transformerId", repositoryId).And("file", file).And("label", label));
|
||||||
|
|
||||||
Dmp model = this.dmpService.importJson(file, label, repositoryId, format, fields);
|
Dmp model = this.dmpService.importJson(file, label, repositoryId, format, fields);
|
||||||
|
@ -421,171 +486,4 @@ public class DmpController {
|
||||||
return model;
|
return model;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static class SwaggerHelpers {
|
|
||||||
|
|
||||||
static final String endpoint_query =
|
|
||||||
"""
|
|
||||||
This endpoint is used to fetch all the available plans.<br/>
|
|
||||||
It also allows to restrict the results using a query object passed in the request body.<br/>
|
|
||||||
""";
|
|
||||||
|
|
||||||
static final String endpoint_query_request_body =
|
|
||||||
"""
|
|
||||||
Let's explore the options this object gives us.
|
|
||||||
|
|
||||||
### <u>General query parameters:</u>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><b>page:</b>
|
|
||||||
This is an object controlling the pagination of the results. It contains two properties.
|
|
||||||
</li>
|
|
||||||
<ul>
|
|
||||||
<li><b>offset:</b>
|
|
||||||
How many records to omit.
|
|
||||||
</li>
|
|
||||||
<li><b>size:</b>
|
|
||||||
How many records to include in each page.
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
For example, if we want the third page, and our pages to contain 15 elements, we would pass the following object:
|
|
||||||
|
|
||||||
```JSON
|
|
||||||
{
|
|
||||||
"offset": 30,
|
|
||||||
"size": 15
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><b>order:</b>
|
|
||||||
This is an object controlling the ordering of the results.
|
|
||||||
It contains a list of strings called <i>items</i> with the names of the properties to use.
|
|
||||||
<br/>If the name of the property is prefixed with a <b>'-'</b>, the ordering direction is <b>DESC</b>. Otherwise, it is <b>ASC</b>.
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
For example, if we wanted to order based on the field 'createdAt' in descending order, we would pass the following object:
|
|
||||||
|
|
||||||
```JSON
|
|
||||||
{
|
|
||||||
"items": [
|
|
||||||
"-createdAt"
|
|
||||||
],
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><b>metadata:</b>
|
|
||||||
This is an object containing metadata for the request. There is only one available option.
|
|
||||||
<ul>
|
|
||||||
<li><b>countAll:</b>
|
|
||||||
If this is set to true, the count property included in the response will account for all the records regardless the pagination,
|
|
||||||
with all the rest of filtering options applied of course.
|
|
||||||
Otherwise, if it is set to false or not present, only the returned results will be counted.
|
|
||||||
<br/>The first option is useful for the UI clients to calculate how many result pages are available.
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li><b>project:</b>
|
|
||||||
This is an object controlling the data projection of the results.
|
|
||||||
It contains a list of strings called <i>fields</i> with the names of the properties to project.
|
|
||||||
<br/>You can also include properties that are deeper in the object tree by prefixing them with dots.
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
### <u>Plan specific query parameters:</u>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><b>like:</b>
|
|
||||||
If there is a like parameter present in the query, only the description entities that include the contents of the parameter either in their labels or the descriptions will be in the response.
|
|
||||||
</li>
|
|
||||||
<li><b>ids:</b>
|
|
||||||
This is a list and contains the ids we want to include in the response. <br/>If empty, every record is included.
|
|
||||||
</li>
|
|
||||||
<li><b>excludedIds:</b>
|
|
||||||
This is a list and contains the ids we want to exclude from the response. <br/>If empty, no record gets excluded.
|
|
||||||
</li>
|
|
||||||
<li><b>groupIds:</b>
|
|
||||||
This is a list and contains the group ids we want the plans to have. Every plan and all its versions, have the same groupId. <br/>If empty, every record is included.
|
|
||||||
</li>
|
|
||||||
<li><b>isActive:</b>
|
|
||||||
This is a list and determines which records we want to include in the response, based on if they are deleted or not.
|
|
||||||
This filter works like this. If we want to view only the active records we pass [1] and for only the deleted records we pass [0].
|
|
||||||
<br/>If not present or if we pass [0,1], every record is included.
|
|
||||||
</li>
|
|
||||||
<li><b>statuses:</b>
|
|
||||||
This is a list and determines which records we want to include in the response, based on their status.
|
|
||||||
The status can be <i>Draft</i> or <i>Finalized</i>. We add 0 or 1 to the list respectively.
|
|
||||||
<br/>If not present, every record is included.
|
|
||||||
</li>
|
|
||||||
<li><b>versionStatuses:</b>
|
|
||||||
This is a list and determines which records we want to include in the response, based on their version status.
|
|
||||||
The status can be <i>Current</i>, <i>Previous</i> or <i>NotFinalized</i>. We add 0, 1 or 2 to the list respectively.
|
|
||||||
<br/>If not present, every record is included.
|
|
||||||
</li>
|
|
||||||
<li><b>accessTypes:</b>
|
|
||||||
This is a list and determines which records we want to include in the response, based on their access type.
|
|
||||||
The access type can be <i>Public</i> or <i>Restricted</i>. We add 0 or 1 to the list respectively.
|
|
||||||
<br/>If not present, every record is included.
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
""";
|
|
||||||
|
|
||||||
static final String endpoint_query_request_body_example =
|
|
||||||
"""
|
|
||||||
{
|
|
||||||
"project":{
|
|
||||||
"fields":[
|
|
||||||
"id",
|
|
||||||
"label",
|
|
||||||
"description",
|
|
||||||
"status",
|
|
||||||
"accessType",
|
|
||||||
"version",
|
|
||||||
"versionStatus",
|
|
||||||
"groupId",
|
|
||||||
"updatedAt",
|
|
||||||
"belongsToCurrentTenant",
|
|
||||||
"finalizedAt",
|
|
||||||
"hash",
|
|
||||||
"descriptions.id",
|
|
||||||
"descriptions.label",
|
|
||||||
"descriptions.status",
|
|
||||||
"descriptions.descriptionTemplate.groupId",
|
|
||||||
"descriptions.isActive",
|
|
||||||
"blueprint.id",
|
|
||||||
"blueprint.label",
|
|
||||||
"blueprint.definition.sections.id"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"page":{
|
|
||||||
"size":5,
|
|
||||||
"offset":0
|
|
||||||
},
|
|
||||||
"order":{
|
|
||||||
"items":[
|
|
||||||
"-updatedAt"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"metadata":{
|
|
||||||
"countAll":true
|
|
||||||
},
|
|
||||||
"isActive":[
|
|
||||||
1
|
|
||||||
],
|
|
||||||
"versionStatuses":[
|
|
||||||
0,
|
|
||||||
2
|
|
||||||
]
|
|
||||||
}
|
|
||||||
""";
|
|
||||||
|
|
||||||
static final String endpoint_ =
|
|
||||||
"""
|
|
||||||
|
|
||||||
""";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue