{"_id":"loopback-connector-swagger","_rev":"62-89fb830d8ae872d065c558dcf9f713c1","name":"loopback-connector-swagger","dist-tags":{"latest":"3.2.1"},"versions":{"1.0.0":{"name":"loopback-connector-swagger","version":"1.0.0","license":"SEE LICENSE IN LICENSE.md","_id":"loopback-connector-swagger@1.0.0","maintainers":[{"name":"bajtos","email":"mbajtoss@gmail.com"}],"homepage":"https://github.com/strongloop/loopback-connector-swagger#readme","bugs":{"url":"https://github.com/strongloop/loopback-connector-swagger/issues"},"dist":{"shasum":"a875e2151e2351b4f34684336d19dcecfffd510f","tarball":"https://registry.npmjs.org/loopback-connector-swagger/-/loopback-connector-swagger-1.0.0.tgz","integrity":"sha512-zrEmh2fDExcLwPHtLKIHlESLDuBT5UWQUKRTVbPnkMOPdqcvIFhm7GD+DyFFfoJ3VuTqqtF0eP78VYIsDuq/ow==","signatures":[{"sig":"MEUCIGEkoXeE7RFTxAUVYJkdLUGWRcACngdZCzXXviA5/EP4AiEAotM9EBzGKBD08NDBP6e6BHY5xT36mXCYFWZu6h8Q+wA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"a875e2151e2351b4f34684336d19dcecfffd510f","gitHead":"66769483223cd4fc36c6ad144160699788dbc0d3","scripts":{"lint":"eslint .","test":"mocha","posttest":"npm run lint"},"_npmUser":{"name":"bajtos","email":"mbajtoss@gmail.com"},"repository":{"url":"git+https://github.com/strongloop/loopback-connector-swagger.git","type":"git"},"_npmVersion":"3.9.3","description":"Connect Loopback to a Swagger-compliant API","directories":{},"_nodeVersion":"6.2.1","dependencies":{"debug":"^2.2.0","js-yaml":"^3.6.0","swagger-client":"^2.1.13","swagger-parser":"^3.4.1"},"devDependencies":{"mocha":"^2.4.5","eslint":"^2.7.0","should":"^8.3.0","loopback":"2.x.x","eslint-config-loopback":"^1.0.0","loopback-datasource-juggler":"2.x.x"},"_npmOperationalInternal":{"tmp":"tmp/loopback-connector-swagger-1.0.0.tgz_1466690792640_0.24767075688578188","host":"packages-16-east.internal.npmjs.com"}},"3.0.0":{"name":"loopback-connector-swagger","version":"3.0.0","license":"SEE LICENSE IN LICENSE.md","_id":"loopback-connector-swagger@3.0.0","maintainers":[{"name":"0candy","email":"ngcandy@ca.ibm.com"},{"name":"amir-61","email":"amirali.jfr61@gmail.com"},{"name":"bajtos","email":"mbajtoss@gmail.com"},{"name":"davidcheung","email":"davidcheung@live.ca"},{"name":"hacksparrow","email":"captain@hacksparrow.com"},{"name":"ibmcloud-admin","email":"rmg@ca.ibm.com"},{"name":"jannyhou2016","email":"juehou@ca.ibm.com"},{"name":"kjdelisle","email":"kjdelisle@gmail.com"},{"name":"loay","email":"gewily@ca.ibm.com"},{"name":"qpresley","email":"qpresley@ca.ibm.com"},{"name":"rfeng","email":"enjoyjava@gmail.com"},{"name":"ritch","email":"skawful@gmail.com"},{"name":"rmg","email":"r.m.graham@gmail.com"},{"name":"strongloop","email":"strngops@us.ibm.com"},{"name":"superkhau","email":"superkhau@gmail.com"},{"name":"thegman","email":"gpandya@live.com"},{"name":"tonyf-ibm","email":"tffrench@us.ibm.com"}],"homepage":"https://github.com/strongloop/loopback-connector-swagger#readme","bugs":{"url":"https://github.com/strongloop/loopback-connector-swagger/issues"},"dist":{"shasum":"433bb6cf89492ad099fa3c1bb38d723ef4a7602b","tarball":"https://registry.npmjs.org/loopback-connector-swagger/-/loopback-connector-swagger-3.0.0.tgz","integrity":"sha512-B1sbgoOJLkrS63Eo6J6uxm6hpIJlsAIooWo/oED2xzoJHyn5R2Seu/N/L66XZK/sGFNnQNhle2FVLvrB8jJE9w==","signatures":[{"sig":"MEUCIQCrerBVDycr/mdBjhHtS8BB/6j+gwpE5A2Xegf4Fsc1RAIgMB4h7Fk7378QlkjZTUufSmtONObfvmc4pbq25fmDhrM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"433bb6cf89492ad099fa3c1bb38d723ef4a7602b","engines":{"node":">=4"},"gitHead":"cd1cfbdf8e964650a728372ac2f2795c59b8dd93","scripts":{"lint":"eslint .","test":"mocha","posttest":"npm run lint"},"_npmUser":{"name":"bajtos","email":"mbajtoss@gmail.com"},"repository":{"url":"git+https://github.com/strongloop/loopback-connector-swagger.git","type":"git"},"_npmVersion":"3.10.10","description":"Connect Loopback to a Swagger-compliant API","directories":{},"_nodeVersion":"6.10.0","dependencies":{"debug":"^2.2.0","js-yaml":"^3.6.0","bluebird":"^3.4.7","swagger-client":"^2.1.13","swagger-parser":"^3.4.1"},"devDependencies":{"mocha":"^2.4.5","eslint":"^3.14.1","should":"^8.3.0","loopback":"^3.0.0","eslint-config-loopback":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/loopback-connector-swagger-3.0.0.tgz_1489513182209_0.4997324987780303","host":"packages-12-west.internal.npmjs.com"}},"3.1.0":{"name":"loopback-connector-swagger","version":"3.1.0","license":"SEE LICENSE IN LICENSE.md","_id":"loopback-connector-swagger@3.1.0","maintainers":[{"name":"0candy","email":"ngcandy@ca.ibm.com"},{"name":"amir-61","email":"amirali.jfr61@gmail.com"},{"name":"bajtos","email":"mbajtoss@gmail.com"},{"name":"davidcheung","email":"davidcheung@live.ca"},{"name":"hacksparrow","email":"captain@hacksparrow.com"},{"name":"ibmcloud-admin","email":"rmg@ca.ibm.com"},{"name":"jannyhou2016","email":"juehou@ca.ibm.com"},{"name":"kjdelisle","email":"kjdelisle@gmail.com"},{"name":"loay","email":"gewily@ca.ibm.com"},{"name":"qpresley","email":"qpresley@ca.ibm.com"},{"name":"rfeng","email":"enjoyjava@gmail.com"},{"name":"ritch","email":"skawful@gmail.com"},{"name":"rmg","email":"r.m.graham@gmail.com"},{"name":"strongloop","email":"strngops@us.ibm.com"},{"name":"superkhau","email":"superkhau@gmail.com"},{"name":"thegman","email":"gpandya@live.com"},{"name":"tonyf-ibm","email":"tffrench@us.ibm.com"}],"homepage":"https://github.com/strongloop/loopback-connector-swagger#readme","bugs":{"url":"https://github.com/strongloop/loopback-connector-swagger/issues"},"dist":{"shasum":"27e62e37a25eb2d342af830183fe69be100eb384","tarball":"https://registry.npmjs.org/loopback-connector-swagger/-/loopback-connector-swagger-3.1.0.tgz","integrity":"sha512-aNDbcs9vuwJb/iN4FtPjnKmycZC3Hzf9nwIZq8Z7rKlMR/MXr3VgzpHvxwE1su+05le4hhbiTMk96Rs+WG6FJw==","signatures":[{"sig":"MEUCIQDIYF233gGlPaOjT9abtlpkNGO92E7B2ePzAngGeFHhCwIgb1vqLC0ysb9QKDfXi18IWpNg8tPtfS6XeoDizf0sClQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"27e62e37a25eb2d342af830183fe69be100eb384","engines":{"node":">=4"},"gitHead":"6aae164bddaa9c14f4ed2b9b8105c3a9980e1219","scripts":{"lint":"eslint .","test":"mocha","posttest":"npm run lint"},"_npmUser":{"name":"bajtos","email":"mbajtoss@gmail.com"},"repository":{"url":"git+https://github.com/strongloop/loopback-connector-swagger.git","type":"git"},"_npmVersion":"3.10.10","description":"Connect Loopback to a Swagger-compliant API","directories":{},"_nodeVersion":"6.10.0","dependencies":{"debug":"^2.2.0","js-yaml":"^3.6.0","bluebird":"^3.4.7","swagger-client":"^2.1.13","swagger-parser":"^3.4.1"},"devDependencies":{"mocha":"^3.2.0","eslint":"^3.14.1","should":"^11.1.2","loopback":"^3.0.0","eslint-config-loopback":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/loopback-connector-swagger-3.1.0.tgz_1489666345275_0.3873405256308615","host":"packages-12-west.internal.npmjs.com"}},"3.2.0":{"name":"loopback-connector-swagger","version":"3.2.0","license":"SEE LICENSE IN LICENSE.md","_id":"loopback-connector-swagger@3.2.0","maintainers":[{"name":"0candy","email":"ngcandy@ca.ibm.com"},{"name":"amir-61","email":"amirali.jfr61@gmail.com"},{"name":"bajtos","email":"mbajtoss@gmail.com"},{"name":"davidcheung","email":"davidcheung@live.ca"},{"name":"hacksparrow","email":"captain@hacksparrow.com"},{"name":"ibmcloud-admin","email":"rmg@ca.ibm.com"},{"name":"jannyhou2016","email":"juehou@ca.ibm.com"},{"name":"kjdelisle","email":"kjdelisle@gmail.com"},{"name":"kraman","email":"kraman@gmail.com"},{"name":"loay","email":"gewily@ca.ibm.com"},{"name":"loopback-admin","email":"enjoyjava@gmail.com"},{"name":"qpresley","email":"qpresley@ca.ibm.com"},{"name":"rashmihunt","email":"rashmihunt@gmail.com"},{"name":"rfeng","email":"enjoyjava@gmail.com"},{"name":"ritch","email":"skawful@gmail.com"},{"name":"rmg","email":"r.m.graham@gmail.com"},{"name":"strongloop","email":"strngops@us.ibm.com"},{"name":"superkhau","email":"superkhau@gmail.com"},{"name":"thegman","email":"gpandya@live.com"},{"name":"tonyf-ibm","email":"tffrench@us.ibm.com"}],"homepage":"https://github.com/strongloop/loopback-connector-swagger#readme","bugs":{"url":"https://github.com/strongloop/loopback-connector-swagger/issues"},"dist":{"shasum":"57508ea3317a9001891af3f78ac491dbbcb0b204","tarball":"https://registry.npmjs.org/loopback-connector-swagger/-/loopback-connector-swagger-3.2.0.tgz","integrity":"sha512-QtHNmKWabDudOmKdmGddfaGOd5EH0Xj449fF5vxivJTMFWCnRB3l/26cuuftMoZyiayfEIdKHaJdlqo+jtUmng==","signatures":[{"sig":"MEUCIFM2DJbK5SezCZVAfXLg0smBCOvvcAmTVZuKFfKKMI3RAiEAvnCsgxbSqRr3mwgMxKGDyMxToiUiggXtuAXenedXk+U=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"57508ea3317a9001891af3f78ac491dbbcb0b204","engines":{"node":">=4"},"gitHead":"a656eedd5490869152ed3e62a708bc4de13bf00d","scripts":{"lint":"eslint .","test":"mocha","posttest":"npm run lint"},"_npmUser":{"name":"bajtos","email":"mbajtoss@gmail.com"},"repository":{"url":"git+https://github.com/strongloop/loopback-connector-swagger.git","type":"git"},"_npmVersion":"3.10.10","description":"Connect Loopback to a Swagger-compliant API","directories":{},"_nodeVersion":"4.4.7","dependencies":{"debug":"^2.2.0","js-yaml":"^3.6.0","bluebird":"^3.4.7","swagger-client":"^2.1.13","swagger-parser":"^3.4.1"},"devDependencies":{"mocha":"^3.2.0","eslint":"^3.14.1","should":"^11.1.2","loopback":"^3.0.0","eslint-config-loopback":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/loopback-connector-swagger-3.2.0.tgz_1491203095308_0.8913595364429057","host":"packages-12-west.internal.npmjs.com"}},"3.2.1":{"name":"loopback-connector-swagger","version":"3.2.1","license":"MIT","_id":"loopback-connector-swagger@3.2.1","maintainers":[{"name":"0candy","email":"ngcandy@ca.ibm.com"},{"name":"amir-61","email":"amirali.jfr61@gmail.com"},{"name":"b-admike","email":"binadmt@hotmail.com"},{"name":"bajtos","email":"mbajtoss@gmail.com"},{"name":"davidcheung","email":"davidcheung@live.ca"},{"name":"dhmlau","email":"dianahmlau@gmail.com"},{"name":"hacksparrow","email":"captain@hacksparrow.com"},{"name":"jannyhou2016","email":"juehou@ca.ibm.com"},{"name":"kraman","email":"kraman@gmail.com"},{"name":"mahesh.patsute","email":"mahesh.patsute@ibm.com"},{"name":"qpresley","email":"qpresley@ca.ibm.com"},{"name":"rashmihunt","email":"rashmihunt@gmail.com"},{"name":"rfeng","email":"enjoyjava@gmail.com"},{"name":"ritch","email":"skawful@gmail.com"},{"name":"rmg","email":"r.m.graham@gmail.com"},{"name":"superkhau","email":"superkhau@gmail.com"},{"name":"thegman","email":"gpandya@live.com"}],"homepage":"https://github.com/strongloop/loopback-connector-swagger#readme","bugs":{"url":"https://github.com/strongloop/loopback-connector-swagger/issues"},"dist":{"shasum":"52f3370936506cde15d1256a84270bbf14e41353","tarball":"https://registry.npmjs.org/loopback-connector-swagger/-/loopback-connector-swagger-3.2.1.tgz","fileCount":13,"integrity":"sha512-7vLgwk5mxFd0KBQP0ML3bA3XtkvmDfOBoGEYj1t4VXRfXidBeUIwigb8uhx52BJyCxkg3dx1zsQNr3XV+UDHDg==","signatures":[{"sig":"MEYCIQDAzM0u7E2ojfxExzbXrMFMAtc+ctNOkDMywsCOJMROEQIhAOO47MbwMlxACJBy8SJI+xkmB9abI6hQNpzxMk7ePWqS","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":28123,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcPgMHCRA9TVsSAnZWagAAHBEQAIqYST/fCN8kMUzV1ued\nnNAP6SAcBSW2aL7nZ2dI8DsqGIMYapP0lA+luV5GMdA5kvm+oDY1qFpLW79G\noKRhPf4U0P9NyALIroQaVVe+TVzr4N2VMZURU/iJXKJkOvD/1vH1eQNRtBZe\nD956tW4ZRXifzh0sMg2p2q9QlS+bp041rLX1HB37FlzOIUXwmV+ydzdbnQmB\njyQ35UZ+PfvKK/JJzB22a+4f9pqZHn75+vd+S9YqX9epYh7iTFwOzlT4MIQM\n9vV4yFwnHzX26qFeMUVs6Xf4+/kfGq7xh9QH8Taptl3t26MjmLSFbGpcERuF\n8gcEZPvXrf6ujFyc29XWEnDKkEmVioozUVP2i+zUY5oB3ClASKN90APqfAat\nKWLYtZANeOsyLPhbZrmX/bxHyqkLT3i4nAVrzAm41DecmpL9vU3/Tir7E+KE\noOiDexCWPYXfaA/R7hO0Hk67RDAN79NfNm6ZI9iLUeJFB5Fc8AaNb2xTEuYw\nyjXfCd9RMgnKe7UVFoiZc0NjNwibGvfD/Sow35MJwG6EaIabX3iXmfhKgMXX\nbhorAyHZd+hLZt+1mdoy2/V9bw/emZyuIUHb1aXB9yOpD05eRywxbYe4D9Zt\ni0LJrfw+rKAftMHkJUs4d5XTE/ll1oBEXWcLJqWO/c50xI2Z2nJ7WeQeSU1/\n4BE/\r\n=Oo+t\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","engines":{"node":">=6"},"gitHead":"f0b5d288420c5bd87f5cdb3820176b2b7015e463","scripts":{"lint":"eslint .","test":"mocha","posttest":"npm run lint"},"_npmUser":{"name":"dhmlau","email":"dianahmlau@gmail.com"},"repository":{"url":"git+https://github.com/strongloop/loopback-connector-swagger.git","type":"git"},"_npmVersion":"6.5.0","description":"Connect Loopback to a Swagger-compliant API","directories":{},"_nodeVersion":"8.12.0","dependencies":{"debug":"^2.2.0","js-yaml":"^3.6.0","bluebird":"^3.4.7","swagger-client":"^2.1.13","swagger-parser":"^3.4.1"},"_hasShrinkwrap":false,"copyright.owner":"IBM Corp.","devDependencies":{"mocha":"^3.2.0","eslint":"^3.14.1","should":"^11.1.2","loopback":"^3.0.0","eslint-config-loopback":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/loopback-connector-swagger_3.2.1_1547567878491_0.8447470427590709","host":"s3://npm-registry-packages"}}},"time":{"created":"2016-06-23T14:06:34.995Z","modified":"2024-07-09T12:43:17.782Z","1.0.0":"2016-06-23T14:06:34.995Z","3.0.0":"2017-03-14T17:39:44.339Z","3.1.0":"2017-03-16T12:12:27.255Z","3.2.0":"2017-04-03T07:04:57.500Z","3.2.1":"2019-01-15T15:57:58.628Z"},"bugs":{"url":"https://github.com/strongloop/loopback-connector-swagger/issues"},"license":"MIT","homepage":"https://github.com/strongloop/loopback-connector-swagger#readme","repository":{"url":"git+https://github.com/strongloop/loopback-connector-swagger.git","type":"git"},"description":"Connect Loopback to a Swagger-compliant API","maintainers":[{"email":"enjoyjava@gmail.com","name":"rfeng"},{"email":"r.m.graham@gmail.com","name":"rmg"},{"email":"dianahmlau@gmail.com","name":"dhmlau"},{"email":"jgorzinski@gmail.com","name":"theprez"},{"email":"oss@bajtos.net","name":"bajtos"},{"email":"gpandya@live.com","name":"thegman"}],"readme":"# loopback-connector-swagger\nThe Swagger connector enables LoopBack applications to interact with other REST APIs described by the [OpenAPI (Swagger) Specification v.2.0](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md).\n\n## Installation\n\nIn your application root directory, enter:\n```\n$ npm install loopback-connector-swagger --save\n```\n\nThis will install the module from npm and add it as a dependency to the application's `package.json` file.\n\n## Configuration\n\nTo interact with a Swagger API, configure a data source backed by the Swagger connector:\n\nWith code:\n\n```javascript\n  var ds = loopback.createDataSource('swagger', {\n    connector: 'loopback-connector-swagger',\n    spec: 'http://petstore.swagger.io/v2/swagger.json',\n  });\n```\n\nWith JSON in `datasources.json` (for example, with basic authentication):\n\n```\n\"SwaggerDS\": {\n    \"name\": \"SwaggerDS\",\n    \"connector\": \"swagger\",\n    \"spec\": \"http://petstore.swagger.io/v2/swagger.json\",\n    \"security\": {\n      \"type\" : \"basic\",\n      \"username\": \"the user name\",\n      \"password\": \"thepassword\"\n}\n```\n\n### Caching\n\nAs an experimental feature, loopback-connector-swagger is able to cache the result of `GET` requests.\n\n**Important: we support only one cache invalidation mechanism - expiration based on a static TTL value.**\n\nTo enable caching, you need to specify:\n\n - `cache.model` (required) - name of the model providing access to the cache.\n   The model should be extending loopback's built-in `KeyValueModel`\n   and be attached to one of key-value datasources (e.g. Redis or\n   eXtremeScale).\n\n - `cache.ttl` (required) - time to live for cache entries, the value\n   is in milliseconds. Note that certain cache implementations (notably\n   eXtremeScale) do not support sub-second precision for TTL.\n\n#### Example configuration\n\n`server/datasources.json`\n\n```json\n{\n  \"SwaggerDS\": {\n    \"connector\": \"swagger\",\n    \"cache\": {\n      \"model\": \"SwaggerCache\",\n      \"ttl\": 100\n    }\n  },\n  \"cache\": {\n    \"connector\": \"kv-redis\",\n  }\n}\n```\n\n`common/models/swagger-cache.json`\n\n```\n{\n  \"name\": \"SwaggerCache\",\n  \"base\": \"KeyValueModel\",\n  // etc.\n}\n```\n\n`server/model-config.json`\n```\n{\n  \"SwaggerCache\": {\n    \"dataSource\": \"cache\",\n    \"public\": false\n  }\n}\n```\n\n## Data source properties\n\nSpecify the options for the data source with the following properties.\n\n| Property | Description | Default   |\n|----------|-------------|-----------|\n| connector | Must be `'loopback-connector-swagger'` to specify Swagger connector| None |\n|spec      | HTTP URL or path to the Swagger specification file (with file name extension `.yaml/.yml` or `.json`).  File path must be relative to current working directory (`process.cwd()`).| None |\n|validate | When `true`, validates provided `spec` against Swagger specification 2.0 before initializing a data source. | `false`|\n| security | Security configuration for making authenticated requests to the API.  The `security.type` property specifies authentication type, one of: Basic authentication (`basic`), API Key (`apiKey`), or OAuth2 (`oauth2`). | `basic` |\n\n### Authentication\n\nBasic authentication:\n\n```javascript\nsecurity: {\n  type: 'basic', // default type, not to be changed\n  username: 'the user name',\n  password: 'password'\n}\n```\n\nAPI Key:\n\n```javascript\nsecurity: {\n  type: 'apiKey', // default type, not to be changed\n  name: 'api_key',\n  key: 'yourAPIKey',\n  in: 'query' // or 'header'\n}\n```\n\nOAuth2:\n\n```javascript\nsecurity:{\n  type: 'oauth2', // default type, not to be changed\n  name: 'oauth_scheme',\n  accessToken: 'sampleAccessToken', // access token\n  in: 'query' // defaults to `header` if not set\n}\n```\n\n**Note**: The value of the `name` property must correspond to a security scheme declared in the [Security Definitions object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#security-definitions-object) within the `spec` document.\n\n### Creating a model from the Swagger data source\n\nThe Swagger connector loads the API specification document asynchronously. As a result, the data source won't be ready to create models until it is connected.  For best results, use an event handler for the `connected` event of data source:\n\n```javascript\nds.once('connected', function(){\n  var PetService = ds.createModel('PetService', {});\n  ...\n});\n```\nOnce the model is created, all available Swagger API operations can be accessed as model methods, for example:\n\n```javascript\n...\nPetService.getPetById({petId: 1}, function (err, res){\n  ...\n});\n```\n\n#### How model methods are named for given Swagger API Operations:\nThis connector uses [swagger-client](https://github.com/swagger-api/swagger-js) which dominates the naming of generated methods for calling client API operations.\n\nFollowing is how it works:\n\n- When `operationId` is present, for example:\n\n```javascript\npaths: {\n  /weather/forecast:\n  get:\n    ...\n    operationId: weather.forecast\n    ...\n```\n  Here, as `operationId` is present in Swagger specification, the generated method is named equivalent to `operationId`.\n\n  Note:\n      if `operationId` is of format equivalent to calling a nested function such as: `weather.forecast`, the resulting method name will replace `.` with `_` i.e. `weather.forecast` will result into `weather_forecast`.This means you can call `MyModel.weather_forecast()` to access this endpoint programmatically.\n\n- When `operationId` is not provided in Swagger specification, the method name is formatted as following:\n`<operationType (i.e. get, post, etc)> + _ + <path parts separated by underscores>`\n\nFor example:\n```\n/weather/forecast:\n  get:\n    ...\n```\nfor above operation, the resulting method name will be: `get_weather_forecast`.\n\nThis means you can call `MyModel.get_weather_forecast()` to access this endpoint programmatically.\n\n### Extend a model to wrap/mediate API Operations\nOnce you define the model, you can wrap or mediate it to define new methods. The following example simplifies the `getPetById` operation to a method that takes `petID` and returns a Pet instance.\n\n```javascript\n  PetService.searchPet = function(petID, cb){\n    PetService.getPetById({petId: petID}, function(err, res){\n      if(err) cb(err, null);\n      var result = res.data;\n      cb(null, result);\n    });\n  };\n```\n\nThis custom method on the `PetService` model can be exposed as REST API end-point. It uses `loopback.remoteMethod` to define the mappings:\n\n```javascript\nloopback.remoteMethod(\n  PetService.searchPet, {\n    accepts: [\n      { arg: 'petID', type: 'string', required: true,\n        http: { source: 'query' }\n      }\n    ],\n    returns: {arg: 'result', type: 'object', root: true },\n    http: {verb: 'get', path: '/searchPet'}\n  }\n);\n```\n\n### Example\n\nComing soon...\n","readmeFilename":"README.md"}