[
https://issues.apache.org/jira/browse/FINERACT-1105?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Michael Vorburger reopened FINERACT-1105:
-----------------------------------------
> Swagger generates invalid Open API Specification file
> -----------------------------------------------------
>
> Key: FINERACT-1105
> URL: https://issues.apache.org/jira/browse/FINERACT-1105
> Project: Apache Fineract
> Issue Type: Improvement
> Reporter: Chinmay Kulkarni
> Assignee: Chinmay Kulkarni
> Priority: Minor
> Fix For: 1.4.0
>
>
> The Open API Specification file produced by Swagger Gradle Plugin is invalid.
> # Run *./gradlew build*
> # Use the contents of the generated Open API Spec file
> *build/classes/java/main/static/swagger-ui/fineract.yaml* to debug/validate
> spec file from here: [https://validator.swagger.io/] - Use Debug POST
> request to validate
> The validator returns the following:
> {code:yaml}
> ---
> messages: - "attribute paths.'/glclosures'(get).responses.200.description is
> missing"
> - "attribute paths.'/glclosures'(post).responses.200.description is missing"
> - "attribute paths.'/glclosures/{glClosureId}'(get).responses.200.description
> is missing"
> - "attribute paths.'/glclosures/{glClosureId}'(put).responses.200.description
> is missing"
> - "attribute
> paths.'/glclosures/{glClosureId}'(delete).responses.200.description is\
> \ missing"
> - "attribute
> paths.'/financialactivityaccounts'(get).responses.200.description is\
> \ missing"
> - "attribute
> paths.'/financialactivityaccounts'(post).responses.200.description is\
> \ missing"
> - "attribute
> paths.'/financialactivityaccounts/{mappingId}'(get).responses.200.description\
> \ is missing"
> - "attribute
> paths.'/financialactivityaccounts/{mappingId}'(put).responses.200.description\
> \ is missing"
> - "attribute paths.'/glaccounts/template'(get).responses.200.description is
> missing"
> - "attribute paths.'/glaccounts'(get).responses.200.description is missing"
> - "attribute paths.'/glaccounts'(post).responses.200.description is missing"
> - "attribute paths.'/glaccounts/{glAccountId}'(get).responses.200.description
> is missing"
> - "attribute paths.'/glaccounts/{glAccountId}'(put).responses.200.description
> is missing"
> - "attribute
> paths.'/glaccounts/{glAccountId}'(delete).responses.200.description is\
> \ missing"
> - "attribute
> paths.'/journalentries/{transactionId}'(post).responses.200.description\
> \ is missing"
> - "attribute
> paths.'/journalentries/{journalEntryId}'(get).responses.200.description\
> \ is missing"
> - "attribute paths.'/journalentries'(get).responses.200.description is
> missing"
> - "attribute paths.'/journalentries'(post).responses.200.description is
> missing"
> - "attribute paths.'/provisioningentries'(get).responses.200.description is
> missing"
> - "attribute paths.'/provisioningentries'(post).responses.200.description is
> missing"
> - "attribute
> paths.'/provisioningentries/entries'(get).responses.200.description is\
> \ missing"
> - "attribute
> paths.'/provisioningentries/{entryId}'(get).responses.200.description\
> \ is missing"
> - "attribute
> paths.'/provisioningentries/{entryId}'(post).responses.200.description\
> \ is missing"
> - "attribute paths.'/accountingrules'(get).responses.200.description is
> missing"
> - "attribute paths.'/accountingrules'(post).responses.200.description is
> missing"
> - "attribute
> paths.'/accountingrules/{accountingRuleId}'(get).responses.200.description\
> \ is missing"
> - "attribute
> paths.'/accountingrules/{accountingRuleId}'(put).responses.200.description\
> \ is missing"
> - "attribute
> paths.'/accountingrules/{accountingRuleId}'(delete).responses.200.description\
> \ is missing"
> - "attribute paths.'/accountingrules/template'(get).responses.200.description
> is missing"
> - "attribute paths.'/audits/searchtemplate'(get).responses.200.description is
> missing"
> - "attribute paths.'/audits'(get).responses.200.description is missing"
> - "attribute paths.'/audits/{auditId}'(get).responses.200.description is
> missing"
> - "attribute
> paths.'/makercheckers/searchtemplate'(get).responses.200.description\
> \ is missing"
> - "attribute paths.'/makercheckers/{auditId}'(post).responses.200.description
> is missing"
> - "attribute
> paths.'/makercheckers/{auditId}'(delete).responses.200.description is\
> \ missing"
> - "attribute paths.'/makercheckers'(get).responses.200.description is missing"
> - "attribute paths.'/accountnumberformats'(get).responses.200.description is
> missing"
> - "attribute paths.'/accountnumberformats'(post).responses.200.description is
> missing"
> - "attribute
> paths.'/accountnumberformats/template'(get).responses.200.description\
> \ is missing"
> - "attribute
> paths.'/accountnumberformats/{accountNumberFormatId}'(get).responses.200.description\
> \ is missing"
> - "attribute
> paths.'/accountnumberformats/{accountNumberFormatId}'(put).responses.200.description\
> \ is missing"
> - "attribute
> paths.'/accountnumberformats/{accountNumberFormatId}'(delete).responses.200.description\
> \ is missing"
> - "attribute paths.'/caches'(get).responses.200.description is missing"
> - "attribute paths.'/caches'(put).responses.200.description is missing"
> - "attribute paths.'/smscampaigns/template'(get).responses.200.description is
> missing"
> - "attribute
> paths.'/smscampaigns/{campaignId}'(put).responses.200.description is\
> \ missing"
> - "attribute
> paths.'/smscampaigns/{campaignId}'(post).responses.200.description is\
> \ missing"
> - "attribute
> paths.'/smscampaigns/{campaignId}'(delete).responses.200.description\
> \ is missing"
> - "attribute
> paths.'/smscampaigns/{resourceId}'(get).responses.200.description is\
> \ missing"
> - "attribute paths.'/smscampaigns'(get).responses.200.description is missing"
> - "attribute paths.'/smscampaigns'(post).responses.200.description is missing"
> - "attribute
> paths.'/codes/{codeId}/codevalues'(post).responses.200.description is\
> \ missing"
> - "attribute
> paths.'/codes/{codeId}/codevalues/{codeValueId}'(get).responses.200.description\
> \ is missing"
> - "attribute
> paths.'/codes/{codeId}/codevalues/{codeValueId}'(put).responses.200.description\
> \ is missing"
> - "attribute
> paths.'/codes/{codeId}/codevalues/{codeValueId}'(delete).responses.200.description\
> \ is missing"
> - "attribute paths.'/codes/{codeId}'(get).responses.200.description is
> missing"
> - "attribute paths.'/codes/{codeId}'(put).responses.200.description is
> missing"
> - "attribute paths.'/codes/{codeId}'(delete).responses.200.description is
> missing"
> - "attribute paths.'/codes'(get).responses.200.description is missing"
> - "attribute paths.'/codes'(post).responses.200.description is missing"
> - "attribute
> paths.'/externalservice/{servicename}'(get).responses.200.description\
> \ is missing"
> - "attribute
> paths.'/configurations/{configId}'(get).responses.200.description is\
> \ missing"
> - "attribute
> paths.'/configurations/{configId}'(put).responses.200.description is\
> \ missing"
> - "attribute
> paths.'/datatables/{datatable}/{apptableId}'(get).responses.200.description\
> \ is missing"
> - "attribute
> paths.'/datatables/{datatable}/{apptableId}'(put).responses.200.description\
> \ is missing"
> - "attribute
> paths.'/datatables/{datatable}/{apptableId}'(post).responses.200.description\
> \ is missing"
> - "attribute
> paths.'/datatables/{datatable}/{apptableId}'(delete).responses.200.description\
> \ is missing"
> - "attribute
> paths.'/datatables/{datatable}/{apptableId}/{datatableId}'(put).responses.200.description\
> \ is missing"
> - "attribute
> paths.'/datatables/{datatable}/{apptableId}/{datatableId}'(delete).responses.200.description\
> \ is missing"
> - "attribute
> paths.'/datatables/deregister/{datatable}'(post).responses.200.description\
> \ is missing"
> - "attribute paths.'/datatables'(get).responses.200.description is missing"
> - "attribute paths.'/datatables'(post).responses.200.description is missing"
> - "attribute
> paths.'/datatables/{datatableName}'(put).responses.200.description is\
> \ missing"
> - "attribute
> paths.'/datatables/{datatableName}'(delete).responses.200.description\
> \ is missing"
> - "attribute
> paths.'/datatables/register/{datatable}/{apptable}'(post).responses.200.description\
> \ is missing"
> - "attribute paths.'/datatables/{datatable}'(get).responses.200.description
> is missing"
> - "attribute paths.'/entityDatatableChecks'(get).responses.200.description is
> missing"
> - "attribute paths.'/entityDatatableChecks'(post).responses.200.description
> is missing"
> - "attribute
> paths.'/entityDatatableChecks/template'(get).responses.200.description\
> \ is missing"
> - "attribute
> paths.'/entityDatatableChecks/{entityDatatableCheckId}'(delete).responses.200.description\
> \ is missing"
> - "attribute paths.'/reports/template'(get).responses.200.description is
> missing"
> - "attribute paths.'/reports'(get).responses.200.description is missing"
> - "attribute paths.'/reports'(post).responses.200.description is missing"
> - "attribute paths.'/reports/{id}'(get).responses.200.description is missing"
> - "attribute paths.'/reports/{id}'(put).responses.200.description is missing"
> - "attribute paths.'/reports/{id}'(delete).responses.200.description is
> missing"
> - "attribute paths.'/runreports/{reportName}'(get).responses.200.description
> is missing"
> - "attribute
> paths.'/{entityType}/{entityId}/documents'(get).responses.200.description\
> \ is missing"
> - "attribute
> paths.'/{entityType}/{entityId}/documents/{documentId}'(get).responses.200.description\
> \ is missing"
> - "attribute
> paths.'/{entityType}/{entityId}/documents/{documentId}'(delete).responses.200.description\
> \ is missing"
> - "attribute paths.'/hooks/template'(get).responses.200.description is
> missing"
> - "attribute paths.'/hooks/{hookId}'(get).responses.200.description is
> missing"
> - "attribute paths.'/hooks/{hookId}'(put).responses.200.description is
> missing"
> - "attribute paths.'/hooks/{hookId}'(delete).responses.200.description is
> missing"
> - "attribute paths.'/hooks'(get).responses.200.description is missing"
> - "attribute paths.'/hooks'(post).responses.200.description is missing"
> - "attribute paths.'/scheduler'(get).responses.200.description is missing"
> - "attribute paths.'/jobs'(get).responses.200.description is missing"
> - "attribute paths.'/jobs/{jobId}'(get).responses.200.description is missing"
> - "attribute paths.'/jobs/{jobId}/runhistory'(get).responses.200.description
> is missing"
> - "attribute paths.'/reportmailingjobs'(get).responses.200.description is
> missing"
> - "attribute paths.'/reportmailingjobs'(post).responses.200.description is
> missing"
> - "attribute
> paths.'/reportmailingjobs/{entityId}'(get).responses.200.description\
> \ is missing"
> - "attribute
> paths.'/reportmailingjobs/{entityId}'(put).responses.200.description\
> \ is missing"
> - "attribute
> paths.'/reportmailingjobs/{entityId}'(delete).responses.200.description\
> \ is missing"
> - "attribute
> paths.'/reportmailingjobs/template'(get).responses.200.description is\
> \ missing"
> - "attribute
> paths.'/reportmailingjobrunhistory'(get).responses.200.description is\
> \ missing"
> - "attribute paths.'/authentication'(post).responses.200.description is
> missing"
> - "attribute paths.'/userdetails'(get).responses.200.description is missing"
> - "attribute
> paths.'/survey/{surveyName}/{apptableId}'(post).responses.200.description\
> \ is missing"
> - "attribute paths.'/survey/{surveyName}'(get).responses.200.description is
> missing"
> - "attribute paths.'/survey'(get).responses.200.description is missing"
> - "attribute paths.'/holidays'(get).responses.200.description is missing"
> - "attribute paths.'/holidays'(post).responses.200.description is missing"
> - "attribute paths.'/holidays/{holidayId}'(get).responses.200.description is
> missing"
> - "attribute paths.'/holidays/{holidayId}'(put).responses.200.description is
> missing"
> - "attribute paths.'/holidays/{holidayId}'(post).responses.200.description is
> missing"
> - "attribute paths.'/holidays/{holidayId}'(delete).responses.200.description
> is missing"
> - "attribute paths.'/currencies'(get).responses.200.description is missing"
> - "attribute paths.'/currencies'(put).responses.200.description is missing"
> - "attribute paths.'/offices/template'(get).responses.200.description is
> missing"
> - "attribute paths.'/offices/{officeId}'(get).responses.200.description is
> missing"
> - "attribute paths.'/offices/{officeId}'(put).responses.200.description is
> missing"
> - "attribute paths.'/offices'(get).responses.200.description is missing"
> - "attribute paths.'/offices'(post).responses.200.description is missing"
> - "attribute
> paths.'/provisioningcriteria/{criteriaId}'(get).responses.200.description\
> \ is missing"
> - "attribute
> paths.'/provisioningcriteria/{criteriaId}'(put).responses.200.description\
> \ is missing"
> - "attribute
> paths.'/provisioningcriteria/{criteriaId}'(delete).responses.200.description\
> \ is missing"
> - "attribute paths.'/provisioningcriteria'(get).responses.200.description is
> missing"
> - "attribute paths.'/provisioningcriteria'(post).responses.200.description is
> missing"
> - "attribute paths.'/staff'(post).responses.200.description is missing"
> - "attribute paths.'/staff/{staffId}'(get).responses.200.description is
> missing"
> - "attribute paths.'/staff/{staffId}'(put).responses.200.description is
> missing"
> - "attribute
> paths.'/tellers/{tellerId}/cashiers/{cashierId}/summaryandtransactions'(get).responses.200.description\
> \ is missing"
> - "attribute
> paths.'/tellers/{tellerId}/cashiers/{cashierId}/transactions'(get).responses.200.description\
> \ is missing"
> - "attribute
> paths.'/tellers/{tellerId}/cashiers/{cashierId}/transactions/template'(get).responses.200.description\
> \ is missing"
> - "attribute
> paths.'/tellers/{tellerId}/cashiers/{cashierId}/settle'(post).responses.200.description\
> \ is missing"
> - "attribute
> paths.'/tellers/{tellerId}/cashiers/{cashierId}/allocate'(post).responses.200.description\
> \ is missing"
> - "attribute paths.'/tellers/{tellerId}'(get).responses.200.description is
> missing"
> - "attribute paths.'/tellers/{tellerId}'(put).responses.200.description is
> missing"
> - "attribute
> paths.'/tellers/{tellerId}/cashiers/{cashierId}'(get).responses.200.description\
> \ is missing"
> - "attribute
> paths.'/tellers/{tellerId}/cashiers/{cashierId}'(put).responses.200.description\
> \ is missing"
> - "attribute
> paths.'/tellers/{tellerId}/cashiers/{cashierId}'(delete).responses.200.description\
> \ is missing"
> - "attribute paths.'/tellers'(get).responses.200.description is missing"
> - "attribute paths.'/tellers'(post).responses.200.description is missing"
> - "attribute
> paths.'/tellers/{tellerId}/cashiers/template'(get).responses.200.description\
> \ is missing"
> - "attribute
> paths.'/tellers/{tellerId}/cashiers'(get).responses.200.description is\
> \ missing"
> - "attribute
> paths.'/tellers/{tellerId}/cashiers'(post).responses.200.description\
> \ is missing"
> - "attribute paths.'/workingdays/template'(get).responses.200.description is
> missing"
> - "attribute paths.'/workingdays'(get).responses.200.description is missing"
> - "attribute paths.'/workingdays'(put).responses.200.description is missing"
> - "attribute
> paths.'/clients/{clientId}/charges'(post).responses.200.description is\
> \ missing"
> - "attribute
> paths.'/clients/{clientId}/charges/{chargeId}'(get).responses.200.description\
> \ is missing"
> - "attribute paths.'/search'(get).responses.200.description is missing"
> - "attribute paths.'/search/advance'(post).responses.200.description is
> missing"
> - "attribute paths.'/search/template'(get).responses.200.description is
> missing"
> - "attribute
> paths.'/surveys/{surveyId}/lookuptables'(get).responses.200.description\
> \ is missing"
> - "attribute
> paths.'/surveys/{surveyId}/lookuptables/{key}'(get).responses.200.description\
> \ is missing"
> - "attribute
> paths.'/surveys/scorecards/{surveyId}'(get).responses.200.description\
> \ is missing"
> - "attribute paths.'/surveys'(get).responses.200.description is missing"
> - "attribute paths.'/surveys/{id}'(get).responses.200.description is missing"
> - "attribute paths.'/templates/template'(get).responses.200.description is
> missing"
> - "attribute paths.'/templates'(get).responses.200.description is missing"
> - "attribute paths.'/templates'(post).responses.200.description is missing"
> - "attribute paths.'/templates/{templateId}'(get).responses.200.description
> is missing"
> - "attribute paths.'/templates/{templateId}'(put).responses.200.description
> is missing"
> - "attribute
> paths.'/templates/{templateId}'(delete).responses.200.description is\
> \ missing"
> - "attribute paths.'/passwordpreferences'(get).responses.200.description is
> missing"
> - "attribute
> paths.'/passwordpreferences/template'(get).responses.200.description\
> \ is missing"
> - "attribute paths.'/permissions'(get).responses.200.description is missing"
> - "attribute paths.'/permissions'(put).responses.200.description is missing"
> - "attribute paths.'/roles/{roleId}'(get).responses.200.description is
> missing"
> - "attribute paths.'/roles/{roleId}'(put).responses.200.description is
> missing"
> - "attribute paths.'/roles/{roleId}'(post).responses.200.description is
> missing"
> - "attribute paths.'/roles/{roleId}'(delete).responses.200.description is
> missing"
> - "attribute paths.'/roles'(get).responses.200.description is missing"
> - "attribute paths.'/roles'(post).responses.200.description is missing"
> - "attribute
> paths.'/roles/{roleId}/permissions'(get).responses.200.description is\
> \ missing"
> - "attribute
> paths.'/roles/{roleId}/permissions'(put).responses.200.description is\
> \ missing"
> - "attribute paths.'/users/template'(get).responses.200.description is
> missing"
> - "attribute paths.'/users'(get).responses.200.description is missing"
> - "attribute paths.'/users'(post).responses.200.description is missing"
> - "attribute paths.'/users/{userId}'(get).responses.200.description is
> missing"
> - "attribute paths.'/users/{userId}'(put).responses.200.description is
> missing"
> - "attribute paths.'/users/{userId}'(delete).responses.200.description is
> missing"
> - "attribute paths.'/codes/{codeId}/codevalues/{codeValueId}'. Declared path
> parameter\
> \ codeId needs to be defined as a path parameter in path or operation level"
> - "attribute paths.'/likelihood/{ppiName}/{likelihoodId}'. Declared path
> parameter\
> \ ppiName needs to be defined as a path parameter in path or operation
> level"
> - "attribute paths.'/likelihood/{ppiName}/{likelihoodId}'. Declared path
> parameter\
> \ ppiName needs to be defined as a path parameter in path or operation
> level"
> - "attribute paths.'/accounts/{type}/uploadtemplate'. Declared path parameter
> type\
> \ needs to be defined as a path parameter in path or operation level"
> - "attribute paths.'/accounts/{type}/downloadtemplate'. Declared path
> parameter type\
> \ needs to be defined as a path parameter in path or operation level"
> - "attribute paths.'/{entityType}/{entityId}/calendars/template'. Declared
> path parameter\
> \ entityType needs to be defined as a path parameter in path or operation
> level"
> - "attribute paths.'/{entityType}/{entityId}/calendars/template'. Declared
> path parameter\
> \ entityId needs to be defined as a path parameter in path or operation
> level"
> - "attribute paths.'/clients/{clientId}/charges/template'. Declared path
> parameter\
> \ clientId needs to be defined as a path parameter in path or operation
> level"
> - "attribute paths.'/clients/{clientId}/familymembers/{familyMemberId}'.
> Declared\
> \ path parameter clientId needs to be defined as a path parameter in path
> or operation\
> \ level"
> - "attribute paths.'/clients/{clientId}/familymembers/{familyMemberId}'.
> Declared\
> \ path parameter clientId needs to be defined as a path parameter in path
> or operation\
> \ level"
> - "attribute paths.'/clients/{clientId}/familymembers/{familyMemberId}'.
> Declared\
> \ path parameter clientId needs to be defined as a path parameter in path
> or operation\
> \ level"
> - "attribute paths.'/clients/{clientId}/identifiers/template'. Declared path
> parameter\
> \ clientId needs to be defined as a path parameter in path or operation
> level"
> - "attribute paths.'/loans/{loanId}/collaterals/template'. Declared path
> parameter\
> \ loanId needs to be defined as a path parameter in path or operation level"
> - "attribute paths.'/interestratecharts/{chartId}/chartslabs/template'.
> Declared path\
> \ parameter chartId needs to be defined as a path parameter in path or
> operation\
> \ level"
> - "attribute paths.'/loans/{loanId}/guarantors/uploadtemplate'. Declared path
> parameter\
> \ loanId needs to be defined as a path parameter in path or operation level"
> - "attribute paths.'/loans/{loanId}/guarantors/template'. Declared path
> parameter\
> \ loanId needs to be defined as a path parameter in path or operation level"
> - "attribute paths.'/loans/{loanId}/guarantors/downloadtemplate'. Declared
> path parameter\
> \ loanId needs to be defined as a path parameter in path or operation level"
> - "attribute paths.'/shareproduct/{productId}/dividend/{dividendId}'.
> Declared path\
> \ parameter productId needs to be defined as a path parameter in path or
> operation\
> \ level"
> schemaValidationMessages: - level: "warning"
> domain: "validation"
> keyword: "format"
> message: "format attribute \"uri-reference\" not supported"
> schema: loadingURI: "#"
> pointer: "/definitions/License/properties/url"
> instance: null
> required: null
> missing: null
> - level: "error"
> domain: "validation"
> keyword: "oneOf"
> message: "instance failed to match exactly one schema (matched 0 out of 2)"
> schema: loadingURI: "#"
> pointer: "/definitions/Responses/patternProperties/^[1-5](?:\\d{2}|XX)$"
> instance: pointer: "/paths/~1accountingrules/get/responses/200"
> required: null
> missing: null
> {code}
> In the above response, there are basically 2 types of errors:
> # *"attribute paths.'\{path_name}'(request_type).responses.200.description
> is missing"* - This is because the "description" field is empty in all the
> APIs that are producing this error. Eg.
> [GLClosureApi|https://github.com/apache/fineract/blob/a31d29f1f0aac86c6c7ceb6e1c5e513838312336/fineract-provider/src/main/java/org/apache/fineract/accounting/closure/api/GLClosuresApiResource.java#L102]
> # *"attribute paths.'\{path_name}' Declared path parameter\
> \{**path_param**} needs to be defined as a path parameter in path or
> operation level"*
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)