-
Notifications
You must be signed in to change notification settings - Fork 6k
Mustache Template Variables
- Mustache template variables in the model
- Mustache template variables in the operation
- Usage
- Tips
- Explanations
To obtain a list of variables (tags) available in the mustache template. Please use debugOperations
and debugModels
. Heres is an example for variables in the model templates:
java -DdebugModels -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate \
-i http://petstore.swagger.io/v2/swagger.json \
-l csharp \
and here is part of the output:
############ Model info ############
[ {
"model" : {
"name" : "Order",
"classname" : "Order",
"classVarName" : "Order",
"modelJson" : "{\n \"type\" : \"object\",\n \"properties\" : {\n \"id\" : {\n \"type\" : \"integer\",\n \"format\" : \"int64\"\n },\n \"petId\" : {\n \"type\" : \"integer\",\n \"format\" : \"int64\"\n },\n \"quantity\" : {\n \"type\" : \"integer\",\n \"format\" : \"int32\"\n },\n \"shipDate\" : {\n \"type\" : \"string\",\n \"format\" : \"date-time\"\n },\n \"status\" : {\n \"type\" : \"string\",\n \"description\" : \"Order Status\",\n \"enum\" : [ \"placed\", \"approved\", \"delivered\" ]\n },\n \"complete\" : {\n \"type\" : \"boolean\",\n \"default\" : false\n }\n },\n \"xml\" : {\n \"name\" : \"Order\"\n }\n}",
"vars" : [ {
"baseName" : "id",
"getter" : "getId",
"setter" : "setId",
"datatype" : "long?",
"datatypeWithEnum" : "long?",
"name" : "Id",
"defaultValue" : "null",
"baseType" : "long?",
"jsonSchema" : "{\n \"type\" : \"integer\",\n \"format\" : \"int64\"\n}",
"hasMore" : true,
"isPrimitiveType" : true,
"isNotContainer" : true,
"isEnum" : false
}, {
For operation (resource) templates, please use debugOperations
instead:
java -DdebugOperations -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate \
-i http://petstore.swagger.io/v2/swagger.json \
-l csharp \
Here is part of the result
############ Operation info ############
[ {
"packageName" : "IO.Swagger",
"hasImport" : true,
"modelPackage" : "IO.Swagger.Model",
"package" : "IO.Swagger.Api",
"clientPackage" : "IO.Swagger.Client",
"version" : "1.0.0",
"classVarName" : "user",
"basePath" : "http://petstore.swagger.io/v2",
"packageVersion" : "1.0.0",
"infoEmail" : "[email protected]",
"importPath" : "IO.Swagger.Api.User",
"licenseInfo" : "Apache 2.0",
"hasMore" : "true",
"generatedDate" : "2015-10-06T12:20:11.434+08:00",
"classname" : "UserApi",
"imports" : [ {
"import" : "IO.Swagger.Model.User"
} ],
"appName" : "Swagger Petstore",
"appVersion" : "1.0.0",
"generatorClass" : "class io.swagger.codegen.languages.CSharpClientCodegen",
"baseName" : "User",
"contextPath" : "/v2",
"operations" : {
"operation" : [ {
"responseHeaders" : [ ],
"hasProduces" : true,
"hasParams" : true,
"hasMore" : true,
"isResponseBinary" : false,
"path" : "/user",
"operationId" : "CreateUser",
"httpMethod" : "POST",
"summary" : "Create user",
"notes" : "This can only be done by the logged in user.",
"baseName" : "User",
"produces" : [ {
"hasMore" : "true",
"mediaType" : "application/xml"
}, {
"hasMore" : null,
"mediaType" : "application/json"
} ],
"bodyParam" : {
"isBodyParam" : true,
"baseName" : "body",
"paramName" : "body",
"dataType" : "User",
"description" : "Created user object",
"jsonSchema" : "{\n \"in\" : \"body\",\n \"name\" : \"body\",\n \"description\" : \"Created user object\",\n \"required\" : true,\n \"schema\" : {\n \"$ref\" : \"#/definitions/User\"\n }\n}",
"isEnum" : false,
"vendorExtensions" : { },
"required" : true
},
"allParams" : [ {
"isBodyParam" : true,
"baseName" : "body",
"paramName" : "body",
"dataType" : "User",
"description" : "Created user object",
"jsonSchema" : "{\n \"in\" : \"body\",\n \"name\" : \"body\",\n \"description\" : \"Created user object\",\n \"required\" : true,\n \"schema\" : {\n \"$ref\" : \"#/definitions/User\"\n }\n}",
"isEnum" : false,
"vendorExtensions" : { },
"required" : true
} ],
"bodyParams" : [ {
"isBodyParam" : true,
"baseName" : "body",
"paramName" : "body",
"dataType" : "User",
"description" : "Created user object",
"jsonSchema" : "{\n \"in\" : \"body\",\n \"name\" : \"body\",\n \"description\" : \"Created user object\",\n \"required\" : true,\n \"schema\" : {\n \"$ref\" : \"#/definitions/User\"\n }\n}",
"isEnum" : false,
"vendorExtensions" : { },
"required" : true
} ],
"pathParams" : [ ],
"queryParams" : [ ],
"headerParams" : [ ],
"formParams" : [ ],
"requiredParams": [ ],
"tags" : [ "User" ],
"responses" : [ {
"headers" : [ ],
"code" : "0",
"message" : "successful operation",
"hasMore" : false,
"isDefault" : true,
"simpleType" : true,
"primitiveType" : true,
"isMapContainer" : false,
"isListContainer" : false,
"isBinary" : false,
"jsonSchema" : "{\n \"description\" : \"successful operation\"\n}",
"wildcard" : true
} ],
"imports" : [ "User" ],
"vendorExtensions" : { },
"nickname" : "CreateUser",
"hasBodyParam" : true,
"hasQueryParams" : false,
"hasHeaderParams" : false,
"hasPathParams" : false,
"hasFormParams" : false
}, {
For usage of the template variable, enter the variable name (e.g. basePath) in the search box and submit. Then filter by HTML & Django
under Languages, e.g. https://github.com/swagger-api/swagger-codegen/search?l=html%2Bdjango&q=basepath&utf8=%E2%9C%93
To access the first or last element in a list
{{#vars}}{{#-first}} this is the first element {{.}} {{/-first}}{{/vars}}
{{#vars}}{{#-last}} this is the last element {{.}} {{/-last}}{{/vars}}
Here are the explanations for some of the mustache tags:
- complexType: stores the name of the model (e.g. Pet)
- isContainer: true if the parameter or property is an array or a map.
- isPrimitiveType: true if the parameter or property type is a primitive type (e.g. string, integer, etc) as defined in the spec.
Please feel free to update the list above with more tags. For any question, please open an issue.
would suggest when compiling to use flag to ignore tests. The tests requires extra dependencies and the compilation might fail due to that.