Skip to content

Instantly share code, notes, and snippets.

@paoloyx
Created July 20, 2015 09:09
Show Gist options
  • Save paoloyx/a084e10b5792399a1389 to your computer and use it in GitHub Desktop.
Save paoloyx/a084e10b5792399a1389 to your computer and use it in GitHub Desktop.
[
{
"applicationDomain" : "MIS.COACHING",
"serviceCode" : "questionnaires",
"packageName" : "it.menarini.coaching.rest",
"version" : "v1",
"api" : {
"value" : "",
"description" : ""
},
"operations" : [
{
"verb": "GET",
"uri": "/",
"apiOperation": {
"value" : "Get the questionnaire",
"notes" : "Return all questionnaires"
},
"methodName": "searchQuestionnaire",
"parameters":[],
"advancedSearch" : true,
"sqlTemplate": "select * from coach_questionnaire order by VALID_FROM DESC, ID desc",
"returnModel": "it.menarini.coaching.model.CoachQuestionnaire",
"returnModelMultiInstance": true,
"mapping": {
"ID":"id",
"TITLE":"title",
"DESCRIPTION":"description",
"VALID_FROM":"validFrom",
"VALID_TO":"validTo",
"STATUS":"status",
"FF_PRODUCT_LINE":"ffProductLine"
}
},{
"verb": "GET",
"uri": "/{id}",
"apiOperation": {
"value" : "Get the questionnaire by id",
"notes" : "Return questionnaire by id"
},
"methodName": "questionnaire",
"parameters":[ {"name":"id", "paramType":"PathVariable","paramClass":"long","apiParam" : {"name":"id","value":"The questionnaire ID"}} ],
"sqlTemplate": "SELECT * FROM COACH_QUESTIONNAIRE q where q.id = :id",
"returnModel": "it.menarini.coaching.model.CoachQuestionnaire",
"returnModelMultiInstance": false,
"mapping": {
"ID":"id",
"TITLE":"title",
"DESCRIPTION":"description",
"VALID_FROM":"validFrom",
"VALID_TO":"validTo",
"STATUS":"status",
"FF_PRODUCT_LINE":"ffProductLine",
"$questionnaires.productsByQuestionnareId(ID)" :"products",
"$questionnaires.questionGroupByQuestionnaire(ID)" :"questionGroup"
}
},{
"verb": "POST",
"uri": "/",
"apiOperation": { "value":"Create new questionnaire","notes" : "Provide full CoachQuestionnaire object as parameter"},
"methodName": "insertQuestionnaire",
"preAssign" : { "id" : "select seq_coaching_questionnaire.nextval from dual" },
"returnLocation" : "/{id}",
"parameters":
[
{"name":"questionnaire", "paramType":"RequestBody","paramClass":"it.menarini.coaching.model.CoachQuestionnaire","apiParam" : {"name":"questionnaire","value":"Full CoachQuestionnaire object"}}
],
"sqlTemplate": "insert into coach_questionnaire (id,title, description, valid_from, valid_to, status, ff_product_line) values (:id, :questionnaire.title,:questionnaire.description,:questionnaire.validFrom, :questionnaire.validTo, :questionnaire.status, :questionnaire.ffProductLine)"
},{
"verb": "PUT",
"uri": "/",
"apiOperation": { "value":"Update one Questionnaire","notes" : "Provide full CoachQuestionnaire object as parameter"},
"methodName": "updateQuestionnaire",
"parameters":
[
{"name":"questionnaire", "paramType":"RequestBody","paramClass":"it.menarini.coaching.model.CoachQuestionnaire","apiParam" : {"name":"questionnaire","value":"Full CoachQuestionnaire object (id,title, description, validFrom, validTo, status, ffProductLine)"}}
],
"sqlTemplate": "update coach_questionnaire set title=:questionnaire.title, description=:questionnaire.description, valid_from=:questionnaire.validFrom , valid_to=:questionnaire.validTo , status=:questionnaire.status, ff_product_line=:questionnaire.ffProductLine where id = :questionnaire.id"
},{
"verb": "DELETE",
"uri": "/{id}",
"apiOperation": { "value":"Delete one questionnaire","notes" : "Delete an questionnaire giving ID"},
"methodName": "deleteQuestionnaire",
"parameters":
[
{"name":"id", "paramType":"PathVariable","paramClass":"long","apiParam" : {"name":"id","value":"The questionnaire ID to be deleted"}}
],
"sqlTemplate": "delete from coach_questionnaire where id = :id"
},{
"verb": "GET",
"uri": "/{id}/products",
"apiOperation": {
"value" : "Get the list products of a questionnare",
"notes" : "Return the list products of a questionnare"
},
"methodName": "productsByQuestionnareId",
"parameters":
[
{"name":"id", "paramType":"PathVariable","paramClass":"long","apiParam" : {"name":"id","value":"The questionnaire ID"}}
],
"sqlTemplate": "select * from coach_questionnare_product where coach_questionnaire_id = :id order by qualification, description",
"returnModel": "it.menarini.coaching.model.CoachQuestionnaireProduct",
"returnModelMultiInstance": true,
"mapping": {
"ID":"id",
"QUALIFICATION":"qualification",
"WEIGHT":"weight",
"DESCRIPTION":"description",
"COACH_QUESTIONNAIRE_ID":"coachQuestionnaireId"
}
},{
"verb": "POST",
"uri": "/add-products",
"apiOperation": { "value":"Add products","notes" : "Create new products."},
"methodName": "addProductsQuestionnaire",
"parameters": [
{"name":"products", "paramType":"RequestBody","paramClass":"it.menarini.coaching.model.CoachQuestionnaireProduct","isCollection" : true, "required" : true, "apiParam" : {"name":"productQuestionnaire","value":"The new Products object"}}
],
"preSqlTemplateOuter": ["delete from coach_questionnare_product where coach_questionnaire_id = :products.coachQuestionnaireId"],
"preAssign" : { "products.id" : "select seq_coaching_product.nextval from dual" },
"sqlTemplate": "insert into coach_questionnare_product (id, qualification, weight, description, coach_questionnaire_id) values (:products.id, :products.qualification, :products.weight, :products.description, :products.coachQuestionnaireId)",
"returnModelMultiInstance": true,
"returnLocation" : "/"
},{
"verb": "PUT",
"uri": "/{id}/products/{productId}",
"apiOperation": { "value":"Update one Product","notes" : "Provide full CoachQuestionnaireProduct object as parameter"},
"methodName": "updateProduct",
"parameters":
[
{"name":"id", "paramType":"PathVariable","paramClass":"long","apiParam" : {"name":"id","value":"The questionnaire ID "}},
{"name":"productId", "paramType":"PathVariable","paramClass":"long","apiParam" : {"name":"id","value":"The product ID to be updated "}},
{"name":"product", "paramType":"RequestBody","paramClass":"it.menarini.coaching.model.CoachQuestionnaireProduct","apiParam" : {"name":"product","value":"Full CoachQuestionnaireProduct object (id,qualification, weight, description)"}}
],
"sqlTemplate": "update coach_questionnare_product set qualification=:product.qualification, weight = :product.weight, description = :product.description where id = :productId and coach_questionnaire_id = :id"
},{
"verb": "DELETE",
"uri": "/{id}/products/{productId}",
"apiOperation": { "value":"Delete one product","notes" : "Delete an product giving ID"},
"methodName": "deleteProduct",
"parameters":
[
{"name":"id", "paramType":"PathVariable","paramClass":"long","apiParam" : {"name":"id","value":"The questionnaire ID "}},
{"name":"productId", "paramType":"PathVariable","paramClass":"long","apiParam" : {"name":"product","value":"The product ID to be deleted"}}
],
"sqlTemplate": "delete from coach_questionnare_product where id = :productId"
},{
"verb": "DELETE",
"uri": "/{id}/products/",
"apiOperation": { "value":"Delete all prodcut for a questionnaires","notes" : "Delete all product giving questionnaire ID"},
"methodName": "deleteProducts",
"parameters":
[
{"name":"id", "paramType":"PathVariable","paramClass":"long","apiParam" : {"name":"id","value":"The questionnaire ID for to deleted all product"}}
],
"sqlTemplate": "delete from coach_questionnare_product where coach_questionnaire_id = :id"
},{
"verb": "GET",
"uri": "/{id}/questionsGroup",
"apiOperation": {
"value" : "Get the question groups",
"notes" : "Return all questions group for a questionnaire "
},
"methodName": "questionGroupByQuestionnaire",
"parameters":
[
{"name":"id", "paramType":"PathVariable","paramClass":"long","apiParam" : {"name":"id","value":"The questionnaire ID to be deleted"}}
],
"sqlTemplate": "select id, description, coach_questionnaire_id, dd_order, product_link, numeric_aggregation, purpose_flag, am_compile, pm_compile, tr_compile, rangemin, rangemax from coach_question_group where coach_questionnaire_id = :id order by dd_order asc",
"returnModel": "it.menarini.coaching.model.CoachQuestionGroup",
"returnModelMultiInstance": true,
"mapping": {
"ID":"id",
"DESCRIPTION":"description",
"COACH_QUESTIONNAIRE_ID":"coachQuestionnaireId",
"DD_ORDER":"ddOrder",
"PRODUCT_LINK":"productLink",
"NUMERIC_AGGREGATION" :"numericAggregation",
"PURPOSE_FLAG" :"purposeFlag",
"AM_COMPILE" :"amCompile",
"PM_COMPILE" :"pmCompile",
"TR_COMPILE" :"trCompile",
"RANGEMIN":"rangemin",
"RANGEMAX":"rangemax",
"$questionnaires.questionsByGroup(COACH_QUESTIONNAIRE_ID,ID)": "questions"
}
},{
"verb": "POST",
"uri": "/{id}/questionsGroup",
"apiOperation": { "value":"Create new group question for a questionnaire","notes" : "Provide full QuestionGroup object as parameter"},
"methodName": "insertQuestionGroup",
"preAssign" : { "questionGroup.id" : "select seq_coaching_question_group.nextval from dual" },
"returnLocation" : "/{id}/questionsGroups/{questionGroup.id}",
"callService" : {"serviceOperation" : "MIS.COACHING.questions.addQuestions","parameters":"questionGroup.questions", "evaluateExpression":"questions.questionGroup.id=questionGroup.id"},
"parameters":
[
{"name":"questionGroup", "paramType":"RequestBody","paramClass":"it.menarini.coaching.model.CoachQuestionGroup","apiParam" : {"name":"questionGroup","value":"Full QuestionGroup object (id, description, coachQuestionnaireId, ddOrder, productLink, numericAggregation, purposeFlag, amCompile, pmCompile, trCompile)"}}
],
"sqlTemplate": "insert into coach_question_group (id, description, coach_questionnaire_id, dd_order, product_link, numeric_aggregation, purpose_flag, am_compile, pm_compile, tr_compile, rangemin, rangemax) values (:questionGroup.id, :questionGroup.description, :questionGroup.coachQuestionnaireId, :questionGroup.ddOrder, :questionGroup.productLink, :questionGroup.numericAggregation, :questionGroup.purposeFlag, :questionGroup.amCompile, :questionGroup.pmCompile, :questionGroup.trCompile, :questionGroup.rangemin, :questionGroup.rangemax)"
},{
"verb": "PUT",
"uri": "/{id}/questionsGroup/{questionGroupId}",
"apiOperation": { "value":"Update one group question","notes" : "Provide full CoachQuestionGroup object as parameter"},
"methodName": "updateQuestionGroup",
"parameters":
[
{"name":"questionGroupId", "paramType":"PathVariable","paramClass":"long","apiParam" : {"name":"questionGroup","value":"The question group ID to be deleted"}},
{"name":"id", "paramType":"PathVariable","paramClass":"long","apiParam" : {"name":"id","value":"The questionnaire ID "}},
{"name":"questionsGroup", "paramType":"RequestBody","paramClass":"it.menarini.coaching.model.CoachQuestionGroup","apiParam" : {"name":"questionsGroup","value":"Full CoachQuestionnaireProduct object (id, description, coachQuestionnaireId, ddOrder, productLink, numericAggregation, purposeFlag, amCompile, pmCompile, trCompile)"}}
],
"sqlTemplate": "update coach_question_group set description=:questionsGroup.description, dd_order = :questionsGroup.ddOrder, product_link = :questionsGroup.productLink, numeric_aggregation=:questionsGroup.numericAggregation, purpose_flag=:questionsGroup.purposeFlag, am_compile=:questionsGroup.amCompile, pm_compile=:questionsGroup.pmCompile, tr_compile=:questionsGroup.trCompile, rangemin =:questionsGroup.rangemin, rangemax =:questionsGroup.rangemax where id = :questionGroupId and coach_questionnaire_id in (select coach_questionnaire.id from coach_questionnaire where coach_questionnaire.id = :id )"
},{
"verb": "DELETE",
"uri": "/{id}/questionsGroup/{questionGroupId}",
"apiOperation": { "value":"Delete one question group","notes" : "Delete an question group giving ID"},
"methodName": "deleteQuestionGroup",
"parameters":
[
{"name":"id", "paramType":"PathVariable","paramClass":"long","apiParam" : {"name":"id","value":"The questionnaire ID to be deleted"}},
{"name":"questionGroupId", "paramType":"PathVariable","paramClass":"long","apiParam" : {"name":"questionGroup","value":"The question group ID to be deleted"}}
],
"sqlTemplate": "delete from coach_question_group where id = :questionGroupId AND coach_questionnaire_id = :id"
},{
"verb": "DELETE",
"uri": "/{id}/questionsGroup",
"apiOperation": { "value":"Delete all question group for a questionnaires","notes" : "Delete an question group giving questionnaire ID"},
"methodName": "deleteQuestionsGroup",
"parameters":
[
{"name":"id", "paramType":"PathVariable","paramClass":"long","apiParam" : {"name":"id","value":"The questionnaire ID to be deleted"}}
],
"sqlTemplate": "delete from coach_question_group where coach_questionnaire_id = :id"
},{
"verb": "GET",
"uri": "/{id}/questionsGroups/{questionGroup}/questions",
"apiOperation": {
"value" : "Get the question by group",
"notes" : "Return all questions for a group "
},
"methodName": "questionsByGroup",
"parameters":
[
{"name":"id", "paramType":"PathVariable","paramClass":"long","apiParam" : {"name":"id","value":"The questionnaire ID "}},
{"name":"questionGroup", "paramType":"PathVariable","paramClass":"long","apiParam" : {"name":"questionGroup","value":"The Question Group ID "}}
],
"sqlTemplate": "select cq.title, cq.type, cq.id, cq.coach_question_group_id from coach_question cq, coach_question_group cqg, coach_questionnaire q where cq.coach_question_group_id = :questionGroup and q.id = :id and cq.coach_question_group_id = cqg.id and q.id = cqg.coach_questionnaire_id",
"returnModel": "it.menarini.coaching.model.CoachQuestion",
"returnModelMultiInstance": true,
"mapping": {
"ID":"id",
"TITLE":"title",
"TYPE":"type",
"COACH_QUESTION_GROUP_ID":"questionGroup.id"
}
},{
"verb": "POST",
"uri": "/{id}/questionsGroups/{questionGroup}/questions",
"apiOperation": { "value":"Create new question for a group of question","notes" : "Provide full CoachQuestion object as parameter"},
"methodName": "insertQuestion",
"preAssign" : { "question.id" : "select seq_coaching_question.nextval from dual" },
"returnLocation" : "/questionnaires/{id}/questionsGroups/{questionGroup}/questions/{question.id}",
"parameters":
[
{"name":"id", "paramType":"PathVariable","paramClass":"long","apiParam" : {"name":"id","value":"The questionnaire ID to be deleted"}},
{"name":"question", "paramType":"RequestBody","paramClass":"it.menarini.coaching.model.CoachQuestion","apiParam" : {"name":"question","value":"Full CoachQuestion object (id, title, type, coachQuestionGroupId)"}}
],
"sqlTemplate": "insert into coach_question (id, title, type, coach_question_group_id) values (:question.id, :question.title, :question.type, :question.questionGroup.id)"
},{
"verb": "DELETE",
"uri": "/{id}/questionsGroup/{questionGroup}/questions/{question}",
"apiOperation": { "value":"Delete all question group for a questionnaires","notes" : "Delete an question group giving questionnaire ID"},
"methodName": "deleteQuestion",
"parameters":
[
{"name":"id", "paramType":"PathVariable","paramClass":"long","apiParam" : {"name":"id","value":"The questionnaire ID"}},
{"name":"questionGroup", "paramType":"PathVariable","paramClass":"long","apiParam" : {"name":"questionGroup","value":"The question group ID"}},
{"name":"question", "paramType":"PathVariable","paramClass":"long","apiParam" : {"name":"question","value":"The question ID to be deleted"}}
],
"sqlTemplate": "delete from (select q.* from coach_question q INNER JOIN coach_question_group g ON g.id=q.COACH_QUESTION_GROUP_ID where g.id = :questionGroup AND q.id = :question)"
},{
"verb": "DELETE",
"uri": "/{id}/questionsGroup/{questionGroup}/questions",
"apiOperation": { "value":"Delete all question for a question group","notes" : "Delete a list of question giving a question group ID"},
"methodName": "deleteQuestions",
"parameters":
[
{"name":"id", "paramType":"PathVariable","paramClass":"long","apiParam" : {"name":"id","value":"The questionnaire ID"}},
{"name":"questionGroup", "paramType":"PathVariable","paramClass":"long","apiParam" : {"name":"questionGroup","value":"The question group ID"}}
],
"sqlTemplate": "delete from (select q.* from coach_question q INNER JOIN coach_question_group g ON g.id=q.COACH_QUESTION_GROUP_ID where g.id = :questionGroup)"
}
]
},{
"applicationDomain" : "MIS.COACHING",
"serviceCode" : "questions",
"packageName" : "it.menarini.coaching.rest",
"version" : "v1",
"api" : {
"value" : "",
"description" : ""
},
"operations" : [{
"verb": "POST",
"uri": "/add-questions",
"apiOperation": { "value":"Add collection of questions","notes" : "Create new questions."},
"methodName": "addQuestions",
"parameters": [{"name":"questions", "paramType":"RequestBody","paramClass":"it.menarini.coaching.model.CoachQuestion","isCollection" : true, "required" : true, "apiParam" : {"name":"CoachQuestion","value":"The new CoachQuestion object"}}],
"preAssign" : { "question.id" : "select seq_coaching_question.nextval from dual" },
"sqlTemplate": "insert into coach_question (id, title, type, coach_question_group_id) values (:question.id, :questions.title, :questions.type, :questions.questionGroup.id)",
"returnModelMultiInstance": true,
"returnLocation" : "/"
}
]
}
]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment