Skip to content
Mike Ralphson edited this page Nov 16, 2017 · 1 revision

Mustache template variables in the model

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:

node --debug debug defs/petstore3.json

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
    }, {

Mustache template variables in the operation

For operation (resource) templates, please use debugOperations instead:

node --debug debug defs/petstore3.json

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" : [ ],
      "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
    }, {

Usage

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/mermade/openapi-codegen/search?l=html%2Bdjango&q=basepath&utf8=%E2%9C%93

Tips

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}}

Explanations

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.

Clone this wiki locally