{"__v":0,"_id":"588f722bbcace50f0052b9f2","category":{"version":"588f722bbcace50f0052b9e1","project":"565f5fa26bafd40d0030a064","_id":"588f722bbcace50f0052b9e3","__v":0,"sync":{"url":"","isSync":false},"reference":false,"createdAt":"2015-12-09T21:22:52.427Z","from_sync":false,"order":1,"slug":"user-guide","title":"Reference"},"parentDoc":null,"project":"565f5fa26bafd40d0030a064","user":"565f3941ea46251700972783","version":{"__v":1,"_id":"588f722bbcace50f0052b9e1","project":"565f5fa26bafd40d0030a064","createdAt":"2017-01-30T17:04:43.410Z","releaseDate":"2017-01-30T17:04:43.410Z","categories":["588f722bbcace50f0052b9e2","588f722bbcace50f0052b9e3","588f722bbcace50f0052b9e4","588f722bbcace50f0052b9e5","588f722bbcace50f0052b9e6","588f722bbcace50f0052b9e7"],"is_deprecated":false,"is_hidden":false,"is_beta":false,"is_stable":true,"codename":"","version_clean":"5.3.0","version":"5.3.0"},"updates":["57e5518200c8680e00fae7dd","57ea89631ac5b01900de38ae","57eaec3212ad680e00777ba2"],"next":{"pages":[],"description":""},"createdAt":"2016-02-05T21:22:12.278Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":5,"body":"A Remote Endpoint is an external service or database that you plan to call or connect to from your Proxy Endpoints. For example, assume you are creating a new Proxy Endpoint that combines customer information from Salesforce with trouble ticket data from Zendesk. In this example you can define two Remote Endpoints; one for Salesforce and one Zendesk. You can then create a Proxy Endpoint that invokes these two Remote Endpoints and returns a combined response back to the client.\n \nThe Remote Endpoints view shows a list of Remote Endpoints and enables you to create a new one and edit or delete an existing one. \n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/1ceaef8-remote-endpoints.png\",\n        \"remote-endpoints.png\",\n        1395,\n        551,\n        \"#f4f4f4\"\n      ]\n    }\n  ]\n}\n[/block]\nWe currently offer the following Remote Endpoint types:\n\n- HTTP\n- SOAP\n- Script (only on-premises)\n- SQL Server\n- PostgreSQL\n- MySQL\n- MongoDB\n- LDAP\n- SAP HANA\n- Store\n- Push\n- Redis\n- SMTP\n- Docker\n- Jobs\n- Cryptographic Keys\n\nThe following remote endpoint properties and methods pertain to their respective remote endpoint types:\n\n## HTTP\n\nExamples of how to use remote endpoints of type `HTTP` can be found [here](http://devhub.nanoscale.io/docs/javascript-object-reference#remote-endpoint-request-object-http).\n\nTo create a remote endpoint of type `HTTP` select `HTTP` from the `Type` select box.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/CPxOniWuTQe8XnKlX9ir_http.png\",\n        \"http.png\",\n        \"1136\",\n        \"510\",\n        \"#729859\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]\nRemote endpoints of type `HTTP` have the following properties:\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"property\",\n    \"h-1\": \"type\",\n    \"h-2\": \"description\",\n    \"0-0\": \"Type (required)\",\n    \"0-1\": \"`string`\",\n    \"0-2\": \"Type of Remote Endpoint you want to call. This will be `HTTP` in this case.\",\n    \"1-0\": \"Name (required)\",\n    \"2-0\": \"Codename (required)\",\n    \"3-0\": \"Description\",\n    \"4-0\": \"URL\",\n    \"5-0\": \"Method\",\n    \"1-1\": \"`string`\",\n    \"2-1\": \"`string`\",\n    \"3-1\": \"`string`\",\n    \"4-1\": \"`string`\",\n    \"5-1\": \"`string`\",\n    \"1-2\": \"Name of the Remote Endpoint.\",\n    \"2-2\": \"Code Name determines how the Remote Endpoint Request and Response Objects are referred to within JavaScript logic blocks.\",\n    \"3-2\": \"A brief description of the Remote Endpoint.\",\n    \"4-2\": \"The URL of the external API endpoint that you are calling.\\n\\nHTTP or HTTPS is required when defining the remote endpoint URL.\\n\\nIf the URL field is left blank then under the \\\"Edit environment data\\\", a developer must set it in JavaScript logic for this Remote Endpoint to work.\",\n    \"5-2\": \"The method of the external API endpoint, It can be one of the following: `GET`, `POST`, `PUT`,  `DELETE`\"\n  },\n  \"cols\": 3,\n  \"rows\": 6\n}\n[/block]\n### HTTP Header and Query Parameters\n\nHeaders allow you to specify the HTTP header, which are unique name-value pairs. You can specify standard HTTP header fields, such as “Content-Type” and “Authorization”, or custom headers depending on the requirements of the remote call.\n \nQuery parameters allow you to specify URL parameters for the remote call. These are unique name-value pairs that are passed to the remote call as URL parameters.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/9GqMUJkKRhaSDkXZxh3u_http.png\",\n        \"http.png\",\n        \"1137\",\n        \"850\",\n        \"#5f738c\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]\nWhen you specify Headers and query parameters at the top level of a Remote Endpoint, they are used across all Environments, unless overridden at Environment level data.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/fa330d5-edit-env-variables.png\",\n        \"edit-env-variables.png\",\n        1254,\n        571,\n        \"#eff6ef\"\n      ]\n    }\n  ]\n}\n[/block]\n## SOAP\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"SOAP versions 1.1 and 1.2 are supported.\"\n}\n[/block]\nExamples of how to use remote endpoints of type `SOAP` can be found [here](http://devhub.nanoscale.io/docs/javascript-object-reference#remote-endpoint-request-object-soap).\n\nTo create a remote endpoint of type `SOAP` select `SOAP` from the `Type` select box.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/C634dLViRMC81dTZBw8f_soap.png\",\n        \"soap.png\",\n        \"1137\",\n        \"749\",\n        \"#5b822c\",\n        \"\"\n      ],\n      \"sizing\": \"smart\"\n    }\n  ]\n}\n[/block]\nRemote endpoints of type `SOAP` have the following properties:\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"property\",\n    \"h-1\": \"type\",\n    \"h-2\": \"description\",\n    \"0-0\": \"Type (required)\",\n    \"1-0\": \"Name (required)\",\n    \"2-0\": \"Codename (required)\",\n    \"3-0\": \"Description\",\n    \"4-0\": \"WSDL (required)\",\n    \"5-0\": \"Service name (required)\",\n    \"6-0\": \"URL\",\n    \"7-0\": \"Authentication scheme\",\n    \"8-0\": \"Username\",\n    \"9-0\": \"Password\",\n    \"0-1\": \"`string`\",\n    \"1-1\": \"`string`\",\n    \"2-1\": \"`string`\",\n    \"3-1\": \"`string`\",\n    \"0-2\": \"Type of Remote Endpoint you want to call. This will be `SOAP` in this case.\",\n    \"1-2\": \"Name of the Remote Endpoint.\",\n    \"2-2\": \"Code Name determines how the Remote Endpoint Request and Response Objects are referred to within JavaScript logic blocks.\",\n    \"3-2\": \"A brief description of the Remote Endpoint.\",\n    \"4-1\": \"`file`\",\n    \"4-2\": \"The file that describes the SOAP web service (WSDL stands for web services description language).  Describes the structure and contents of the messages that are passed back and forth between the client and the service, as well as the various operations that may be performed by the service.\",\n    \"5-1\": \"`string`\",\n    \"6-1\": \"`string`\",\n    \"7-1\": \"`string`\",\n    \"8-1\": \"`string`\",\n    \"9-1\": \"`string`\",\n    \"5-2\": \"The name of the SOAP service.\",\n    \"6-2\": \"The url of the remote endpoint.\",\n    \"7-2\": \"The authentication scheme the SOAP service uses.\",\n    \"8-2\": \"The username of the user for the SOAP service.\",\n    \"9-2\": \"The password of the user for the SOAP service.\"\n  },\n  \"cols\": 3,\n  \"rows\": 10\n}\n[/block]\n## Script\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"title\": \"Script Remote Endpoints are only available when running your own instance of nanoscale.io.\",\n  \"body\": \"Since this allows you to execute arbitrary commands on the host OS, you can only use this endpoint type when you run your own instance of nanoscale.io.\"\n}\n[/block]\nExamples of how to use remote endpoints of type `Script` can be found [here](http://devhub.nanoscale.io/docs/javascript-object-reference#remote-endpoint-request-object-script).\n\nTo create a remote endpoint of type `Script` select `Script` from the `Type` select box.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/7e4da32-script-edit.png\",\n        \"script-edit.png\",\n        1147,\n        836,\n        \"#dee2e4\"\n      ]\n    }\n  ]\n}\n[/block]\nRemote endpoints of type `Script` have the following properties:\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"property\",\n    \"h-1\": \"type\",\n    \"h-2\": \"description\",\n    \"0-0\": \"Type (required)\",\n    \"1-0\": \"Name (required)\",\n    \"2-0\": \"Codename (required)\",\n    \"3-0\": \"Description\",\n    \"4-0\": \"Interpreter (required)\",\n    \"5-0\": \"Execution timeout\",\n    \"6-0\": \"File path (required if `script` not specified)\",\n    \"7-0\": \"Script (required if `file path` not specified)\",\n    \"3-1\": \"`string`\",\n    \"2-1\": \"`string`\",\n    \"1-1\": \"`string`\",\n    \"0-1\": \"`string`\",\n    \"4-1\": \"`string`\",\n    \"7-1\": \"`string`\",\n    \"6-1\": \"`string`\",\n    \"5-1\": \"`number`\",\n    \"0-2\": \"Type of Remote Endpoint you want to call. This will be`Script` in this case.\",\n    \"1-2\": \"Name of the Remote Endpoint.\",\n    \"2-2\": \"Code Name determines how the Remote Endpoint Request and Response Objects are referred to within JavaScript logic blocks.\",\n    \"3-2\": \"A brief description of the Remote Endpoint.\",\n    \"4-2\": \"The interpreter used to execute the script. This is determined by the host OS running the binary: `sh`, `bash`, and `cmd.exe` are the available types.\",\n    \"6-2\": \"A file path to a script to execute.\\n\\nIf both `file path` and `script`  are specified `file path` will be used.\",\n    \"7-2\": \"A script to execute.\\n\\nIf both `file path` and `script`  are specified `file path` will be used.\",\n    \"5-2\": \"The timeout in seconds after which a script will timeout if it doesn't finish execution.\"\n  },\n  \"cols\": 3,\n  \"rows\": 8\n}\n[/block]\n## SQL Server\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"MS SQL Server version 2005 and newer are supported.\"\n}\n[/block]\nExamples of how to use remote endpoints of type `SQL Server` can be found [here](http://devhub.nanoscale.io/docs/javascript-object-reference#remote-endpoint-request-object-sqlserver).\n\nTo create a remote endpoint of type `SQL Server` select `SQL Server` from the `Type` select box.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/bd3JQ1CRuFGztbbaaXEQ_sqlserver.png\",\n        \"sqlserver.png\",\n        \"1138\",\n        \"984\",\n        \"#759b90\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]\nRemote endpoints of type `SQL Server` have the following properties:\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"property\",\n    \"h-1\": \"type\",\n    \"h-2\": \"description\",\n    \"0-0\": \"Type (required)\",\n    \"1-0\": \"Name (required)\",\n    \"2-0\": \"Codename (required)\",\n    \"3-0\": \"Description\",\n    \"4-0\": \"Server (required)\",\n    \"5-0\": \"Port (required)\",\n    \"6-0\": \"Username (required)\",\n    \"7-0\": \"Password (required)\",\n    \"8-0\": \"Database (required)\",\n    \"9-0\": \"Schema\",\n    \"11-0\": \"Transactions\",\n    \"12-0\": \"Connection timeout\",\n    \"13-0\": \"Max. idle connections\",\n    \"14-0\": \"Max. open connections\",\n    \"3-1\": \"`string`\",\n    \"2-1\": \"`string`\",\n    \"1-1\": \"`string`\",\n    \"0-1\": \"`string`\",\n    \"4-1\": \"`string`\",\n    \"5-1\": \"`number`\",\n    \"6-1\": \"`string`\",\n    \"7-1\": \"`string`\",\n    \"8-1\": \"`string`\",\n    \"9-1\": \"`string`\",\n    \"11-1\": \"`boolean`\",\n    \"12-1\": \"`number`\",\n    \"13-1\": \"`number`\",\n    \"14-1\": \"`number`\",\n    \"0-2\": \"Type of remote endpoint you want to call. This will be `SQLServer` in this case.\",\n    \"1-2\": \"Name of the remote endpoint.\",\n    \"2-2\": \"Codename determines how the Remote Endpoint Request and Response Objects are referred to within JavaScript logic blocks.\",\n    \"3-2\": \"A brief description of the Remote Endpoint.\",\n    \"4-2\": \"The host name or ip address of the server running the SQL Server instance.\",\n    \"5-2\": \"The port on the server that the SQL Server instance is running on.\",\n    \"6-2\": \"The username of the user for the database.\",\n    \"7-2\": \"The password of the user for the database.\",\n    \"8-2\": \"The name of the database in the SQL Server instance.\",\n    \"9-2\": \"The name of the schema within the database.\",\n    \"11-2\": \"Indicates whether the database supports transactions. If set to `true` then db queries are done in a transaction.\",\n    \"12-2\": \"The number of seconds before the connection to the database times out.\",\n    \"13-2\": \"The maximum number of simultaneous idle connections the database supports.\",\n    \"14-2\": \"The maximum number of simultaneous open connections the database supports.\",\n    \"10-0\": \"Encrypt\",\n    \"10-1\": \"`string`\",\n    \"10-2\": \"Whether or not the connection to the SQL Server instance should be encrypted. Available options are: `Disable`, `True`, `False`.\"\n  },\n  \"cols\": 3,\n  \"rows\": 15\n}\n[/block]\n## PostgreSQL\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"PostgreSQL version 7.4 and newer are supported.\"\n}\n[/block]\nExamples of how to use remote endpoints of type `PostgreSQL` can be found [here](http://devhub.nanoscale.io/docs/javascript-object-reference#remote-endpoint-request-object-postgres).\n\nTo create a remote endpoint of type `PostgreSQL` select `PostgreSQL` from the `Type` select box.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/7kPlndvWSumd493iRjxr_postgres.png\",\n        \"postgres.png\",\n        \"1134\",\n        \"848\",\n        \"#759c92\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]\nRemote endpoints of type `PostgreSQL` have the following properties:\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"property\",\n    \"h-1\": \"type\",\n    \"h-2\": \"description\",\n    \"0-0\": \"Type (required)\",\n    \"1-0\": \"Name (required)\",\n    \"2-0\": \"Codename (required)\",\n    \"3-0\": \"Description\",\n    \"4-0\": \"Host (required)\",\n    \"5-0\": \"Port (required)\",\n    \"6-0\": \"Database (required)\",\n    \"7-0\": \"Username (required)\",\n    \"8-0\": \"Password (required)\",\n    \"9-0\": \"SSL mode\",\n    \"10-0\": \"Transactions\",\n    \"11-0\": \"Max. idle connections\",\n    \"12-0\": \"Max. open connections\",\n    \"0-1\": \"`string`\",\n    \"1-1\": \"`string`\",\n    \"2-1\": \"`string`\",\n    \"3-1\": \"`string`\",\n    \"4-1\": \"`string`\",\n    \"5-1\": \"`number`\",\n    \"6-1\": \"`string`\",\n    \"7-1\": \"`string`\",\n    \"8-1\": \"`string`\",\n    \"9-1\": \"`string`\",\n    \"10-1\": \"`boolean`\",\n    \"11-1\": \"`number`\",\n    \"12-1\": \"`number`\",\n    \"0-2\": \"Type of remote endpoint you want to call. This will be `PostgreSQL` in this case.\",\n    \"1-2\": \"Name of the remote endpoint.\",\n    \"2-2\": \"Codename determines how the Remote Endpoint Request and Response Objects are referred to within JavaScript logic blocks.\",\n    \"3-2\": \"A brief description of the Remote Endpoint.\",\n    \"4-2\": \"The host name or ip address of the server running the PostgreSQL instance.\",\n    \"5-2\": \"The port on the server that the PostgreSQL instance is running on.\",\n    \"6-2\": \"The name of the database in the PostgreSQL instance.\",\n    \"7-2\": \"The username of the user for the database.\",\n    \"8-2\": \"The password of the user for the database.\",\n    \"9-2\": \"Indicates to the PostgreSQL instance how to establish SSL connectivity. It can be one of the following types: `disable`, `allow`, `prefer`, `require`, `verify-ca`, `verify-full`.\\n\\nMore information can be found <a target=\\\"_blank\\\" href=\\\"http://www.postgresql.org/docs/9.1/static/libpq-ssl.html\\\">here</a>.\",\n    \"10-2\": \"Indicates whether the database supports transactions. If set to `true` then db queries are done in a transaction.\",\n    \"11-2\": \"The maximum number of simultaneous idle connections the database supports.\",\n    \"12-2\": \"The maximum number of simultaneous open connections the database supports.\"\n  },\n  \"cols\": 3,\n  \"rows\": 13\n}\n[/block]\n## MySQL\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"MySQL version 4.1 and newer are supported.\"\n}\n[/block]\nExamples of how to use remote endpoints of type `MySQL` can be found [here](http://devhub.nanoscale.io/docs/javascript-object-reference#remote-endpoint-request-object-mysql).\n\nTo create a remote endpoint of type `MySQL` select `MySQL` from the `Type` select box.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/XgTEjnDVSMqMASVjaEzn_mysql.png\",\n        \"mysql.png\",\n        \"1137\",\n        \"883\",\n        \"#759d92\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]\nRemote endpoints of type `MySQL` have the following properties:\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"property\",\n    \"h-1\": \"type\",\n    \"h-2\": \"description\",\n    \"0-0\": \"Type (required)\",\n    \"1-0\": \"Name (required)\",\n    \"2-0\": \"Codename (required)\",\n    \"3-0\": \"Description\",\n    \"4-0\": \"Host (required)\",\n    \"5-0\": \"Port (required)\",\n    \"6-0\": \"Database (required)\",\n    \"7-0\": \"Username (required)\",\n    \"8-0\": \"Password (required)\",\n    \"9-0\": \"Connection timeout\",\n    \"10-0\": \"Transactions\",\n    \"11-0\": \"Max. idle connections\",\n    \"12-0\": \"Max. open connections\",\n    \"0-1\": \"`string`\",\n    \"1-1\": \"`string`\",\n    \"2-1\": \"`string`\",\n    \"3-1\": \"`string`\",\n    \"4-1\": \"`string`\",\n    \"5-1\": \"`number`\",\n    \"6-1\": \"`string`\",\n    \"7-1\": \"`string`\",\n    \"8-1\": \"`string`\",\n    \"9-1\": \"`number`\",\n    \"10-1\": \"`boolean`\",\n    \"11-1\": \"`number`\",\n    \"12-1\": \"`number`\",\n    \"0-2\": \"Type of remote endpoint you want to call. This will be `MySQL` in this case.\",\n    \"1-2\": \"Name of the remote endpoint.\",\n    \"2-2\": \"Codename determines how the Remote Endpoint Request and Response Objects are referred to within JavaScript logic blocks.\",\n    \"3-2\": \"A brief description of the Remote Endpoint.\",\n    \"4-2\": \"The host name or ip address of the server running the MySQL instance.\",\n    \"5-2\": \"The port on the server that the MySQL instance is running on.\",\n    \"6-2\": \"The name of the database in the MySQL instance.\",\n    \"7-2\": \"The username of the user for the database.\",\n    \"8-2\": \"The password of the user for the database.\",\n    \"9-2\": \"The number of seconds before the connection to the database times out.\",\n    \"10-2\": \"Indicates whether the database supports transactions. If set to `true` then db queries are done in a transaction.\",\n    \"11-2\": \"The maximum number of simultaneous idle connections the database supports.\",\n    \"12-2\": \"The maximum number of simultaneous open connections the database supports.\"\n  },\n  \"cols\": 3,\n  \"rows\": 13\n}\n[/block]\n## MongoDB\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"MongoDB version 2.0 and newer are supported.\"\n}\n[/block]\nExamples of how to use remote endpoints of type `MongoDB` can be found [here](http://devhub.nanoscale.io/docs/javascript-object-reference#remote-endpoint-request-object-mongo).\n\nTo create a remote endpoint of type `MongoDB` select `MongoDB` from the `Type` select box.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/pipL3qEVR7WCww0BD4bh_mongo.png\",\n        \"mongo.png\",\n        \"1137\",\n        \"826\",\n        \"#6e9ec8\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]\nRemote endpoints of type `MongoDB` have the following properties:\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"property\",\n    \"h-1\": \"type\",\n    \"h-2\": \"description\",\n    \"0-0\": \"Type (required)\",\n    \"1-0\": \"Name (required)\",\n    \"2-0\": \"Codename (required)\",\n    \"3-0\": \"Description\",\n    \"4-0\": \"Database (required)\",\n    \"5-0\": \"Username (required)\",\n    \"6-0\": \"Password (required)\",\n    \"6-1\": \"`string`\",\n    \"7-0\": \"Connection pool limit (required)\",\n    \"8-0\": \"Hosts\",\n    \"9-0\": \"Hosts/Host/Host\",\n    \"8-1\": \"`array`\",\n    \"10-0\": \"Hosts/Host/Port\",\n    \"8-2\": \"The array of servers running the mongoDB instance(s). Only one entry is required. Multiple hosts are supported for replica sets and failover.\",\n    \"9-1\": \"`string`\",\n    \"10-1\": \"`number`\",\n    \"9-2\": \"The host name or ip address of the server running the mongoDB instance.\",\n    \"10-2\": \"The port on the server that the mongoDB instance is running on.\",\n    \"0-2\": \"Type of Remote Endpoint you want to call. This will be `MongoDB` in this case.\",\n    \"1-2\": \"Name of the Remote Endpoint.\",\n    \"2-2\": \"Code Name determines how the Remote Endpoint Request and Response Objects are referred to within JavaScript logic blocks.\",\n    \"3-2\": \"A brief description of the Remote Endpoint.\",\n    \"4-2\": \"The name of the database in the mongoDB instance.\",\n    \"5-2\": \"The username of the user for the database.\",\n    \"6-2\": \"The password of the user for the database.\",\n    \"7-2\": \"The size of the database pool. This refers to the maximum number of simultaneous clients that can be supported.\",\n    \"7-1\": \"`number`\",\n    \"0-1\": \"`string`\",\n    \"1-1\": \"`string`\",\n    \"2-1\": \"`string`\",\n    \"3-1\": \"`string`\",\n    \"4-1\": \"`string`\",\n    \"5-1\": \"`string`\"\n  },\n  \"cols\": 3,\n  \"rows\": 11\n}\n[/block]\n## LDAP\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"LDAP v3 is supported\",\n  \"body\": \"http://www.ietf.org/rfc/rfc2251.txt\"\n}\n[/block]\nExamples of how to use remote endpoints of type `LDAP` can be found [here](http://devhub.nanoscale.io/docs/javascript-object-reference#remote-endpoint-request-object-ldap).\n\nTo create a remote endpoint of type `LDAP` select `LDAP` from the `Type` select box.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/3ab408a-Screen_Shot_2017-01-30_at_5.50.30_PM.png\",\n        \"Screen Shot 2017-01-30 at 5.50.30 PM.png\",\n        1140,\n        514,\n        \"#eaebec\"\n      ]\n    }\n  ]\n}\n[/block]\nRemote endpoints of type `LDAP` have the following properties:\n[block:parameters]\n{\n  \"data\": {\n    \"0-0\": \"Type (required)\",\n    \"h-0\": \"property\",\n    \"h-1\": \"type\",\n    \"h-2\": \"description\",\n    \"0-1\": \"`string`\",\n    \"0-2\": \"Type of Remote Endpoint you want to call. This will be `LDAP` in this case.\",\n    \"1-0\": \"Name (required)\",\n    \"1-1\": \"`string`\",\n    \"1-2\": \"Name of the Remote Endpoint.\",\n    \"2-0\": \"Codename (required)\",\n    \"2-1\": \"`string`\",\n    \"2-2\": \"Code Name determines how the Remote Endpoint Request and Response Objects are referred to within JavaScript logic blocks.\",\n    \"3-0\": \"Description\",\n    \"3-1\": \"`string`\",\n    \"3-2\": \"A brief description of the Remote Endpoint.\",\n    \"4-0\": \"Username (required)\",\n    \"4-1\": \"`string`\",\n    \"4-2\": \"The username to use when connecting to this LDAP instance.\",\n    \"5-0\": \"Password (required)\",\n    \"5-1\": \"`string`\",\n    \"5-2\": \"The password to use when connecting to this LDAP instance.\",\n    \"6-0\": \"Server (required)\",\n    \"6-1\": \"`string`\",\n    \"6-2\": \"The host for the LDAP instance.\",\n    \"7-0\": \"Port (required)\",\n    \"7-1\": \"`string`\",\n    \"7-2\": \"The port on which the LDAP server is listening.\",\n    \"8-0\": \"Use TLS\",\n    \"8-1\": \"`boolean`\",\n    \"8-2\": \"Whether or not to establish a connection with the LDAP instance using TLS.\",\n    \"9-0\": \"Certificate\",\n    \"9-1\": \"`file`\",\n    \"9-2\": \"The TLS certificate to use when connecting to the LDAP instance.\",\n    \"10-0\": \"Private key\",\n    \"10-1\": \"`file`\",\n    \"10-2\": \"The TLS private key to use when connecting to the LDAP instance.\",\n    \"11-0\": \"Server name\",\n    \"11-1\": \"`string`\",\n    \"11-2\": \"The server name to use when establishing a TLS connection. This must match the certificate.\",\n    \"12-0\": \"Private key password\",\n    \"12-1\": \"`string`\",\n    \"12-2\": \"The password for the private key.\"\n  },\n  \"cols\": 3,\n  \"rows\": 13\n}\n[/block]\n##SAP Hana\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"SAP HANA all SPs are supported with backward compatibility.\",\n  \"body\": \"Only execute commands that are supported in each version.\"\n}\n[/block]\nExamples of how to use remote endpoints of type `SAP Hana` can be found [here](http://devhub.nanoscale.io/docs/javascript-object-reference#remote-endpoint-request-object-sap-hana).\n\nTo create a remote endpoint of type `SAP Hana` select `SAP Hana` from the `Type` select box. \n## Store\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/9a98f92-SAP-hana-remote-endpoint.png\",\n        \"SAP-hana-remote-endpoint.png\",\n        1271,\n        790,\n        \"#62b658\"\n      ]\n    }\n  ]\n}\n[/block]\nRemote endpoints of type `SAP Hana` have the following properties:\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"property\",\n    \"h-1\": \"type\",\n    \"h-2\": \"description\",\n    \"0-0\": \"Type (required)\",\n    \"1-0\": \"Name (required)\",\n    \"2-0\": \"Codename (required)\",\n    \"3-0\": \"Description\",\n    \"0-1\": \"`string`\",\n    \"1-1\": \"`string`\",\n    \"2-1\": \"`string`\",\n    \"3-1\": \"`string`\",\n    \"4-1\": \"`string`\",\n    \"5-1\": \"`string`\",\n    \"7-1\": \"`string`\",\n    \"6-1\": \"`number`\",\n    \"4-0\": \"Host\",\n    \"5-0\": \"Port (required)\",\n    \"6-0\": \"Username (required)\",\n    \"7-0\": \"Password (required)\",\n    \"9-1\": \"`number`\",\n    \"10-1\": \"`number`\",\n    \"8-1\": \"`boolean`\",\n    \"8-0\": \"Transaction\",\n    \"9-0\": \"Max. idle connections\",\n    \"10-0\": \"Max. open connections\",\n    \"4-2\": \"The host name or ip address of the server running the SAP Hana instance.\",\n    \"0-2\": \"Type of remote endpoint you want to call. This will be SAP Hana in this case.\",\n    \"1-2\": \"Name of the remote endpoint.\",\n    \"2-2\": \"Codename determines how the Remote Endpoint Request and Response Objects are referred to within JavaScript logic blocks.\",\n    \"3-2\": \"A brief description of the Remote Endpoint.\",\n    \"5-2\": \"The port on the server that the SAP Hana instance is running on.\",\n    \"6-2\": \"The username of the user for the SAP Hana instance.\",\n    \"7-2\": \"The password of the user for the SAP Hana instance.\",\n    \"9-2\": \"The maximum number of simultaneous open connections supported by SAP Hana.\",\n    \"10-2\": \"The maximum number of simultaneous idle connections supported by SAP Hana.\",\n    \"8-2\": \"Specify the auto commit property for DDL statements specific to the session.  If checked, auto commit is enabled.\"\n  },\n  \"cols\": 3,\n  \"rows\": 11\n}\n[/block]\n##Store\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Store is an internal nanoscale.io concept\",\n  \"body\": \"It is a default storage option that is available 'out of the box' without any configuration required. It provides you with a way to store objects in collections that can be accessed across all your APIs and Proxy Endpoints.\"\n}\n[/block]\nExamples of how to use remote endpoints of type `Store` can be found [here](http://devhub.nanoscale.io/docs/javascript-object-reference#remote-endpoint-request-object-store).\n\nTo create a remote endpoint of type `Store` select `Store` from the `Type` select box. There is nothing to configure. You just need to create at least one remote endpoint of this type to tie into your collections. You can have as many `Store` remote endpoints as you would like. They all point to the same set of collections.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/qzzpyflZSpSJGAshBjgR_store.png\",\n        \"store.png\",\n        \"1138\",\n        \"406\",\n        \"\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]\nRemote endpoints of type `Store` have the following properties:\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"property\",\n    \"h-1\": \"type\",\n    \"h-2\": \"description\",\n    \"0-0\": \"Type (required)\",\n    \"0-1\": \"`string`\",\n    \"0-2\": \"Type of Remote Endpoint you want to call. This will be `Store` in this case.\",\n    \"1-0\": \"Name (required)\",\n    \"1-1\": \"`string`\",\n    \"1-2\": \"Name of the Remote Endpoint.\",\n    \"2-0\": \"Codename (required)\",\n    \"2-1\": \"`string`\",\n    \"2-2\": \"Code Name determines how the Remote Endpoint Request and Response Objects are referred to within JavaScript logic blocks.\",\n    \"3-0\": \"Description\",\n    \"3-1\": \"`string`\",\n    \"3-2\": \"A brief description of the Remote Endpoint.\"\n  },\n  \"cols\": 3,\n  \"rows\": 4\n}\n[/block]\n## Push\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Use Nanoscale.io to send push messages to your native and web applications or IoT devices for real time messaging.\",\n  \"body\": \"Nanoscale supports the following push notifications platforms: Apple's Push Notification service, Google's Cloud Message (GCM) and Firebase Cloud Message (FCM), or MQTT.\"\n}\n[/block]\nExamples of how to use remote endpoints of type `Push` can be found [here](http://devhub.nanoscale.io/docs/javascript-object-reference#remote-endpoint-request-object-push).\n\nTo create a remote endpoint of type `Push`, select `Push` from the `Type` select box. \n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/eeb20a3-push-remote-endpoint.png\",\n        \"push-remote-endpoint.png\",\n        900,\n        427,\n        \"#f2f6f4\"\n      ]\n    }\n  ]\n}\n[/block]\nRemote endpoints of type `Push` have the following properties:\n[block:parameters]\n{\n  \"data\": {\n    \"0-0\": \"Type (required)\",\n    \"1-0\": \"Name (required)\",\n    \"2-0\": \"Codename (required)\",\n    \"3-0\": \"Description\",\n    \"4-0\": \"Publish endpoint\",\n    \"5-0\": \"Subscribe endpoint\",\n    \"0-1\": \"`string`\",\n    \"1-1\": \"`string`\",\n    \"2-1\": \"`string`\",\n    \"3-1\": \"`string`\",\n    \"4-1\": \"`boolean`\",\n    \"5-1\": \"`boolean`\",\n    \"0-2\": \"Type of remote endpoint you want to call. This will be Push in this case.\",\n    \"1-2\": \"Name of the remote endpoint.\",\n    \"2-2\": \"Codename determines how the Remote Endpoint Request and Response Objects are referred to within JavaScript logic blocks.\",\n    \"3-2\": \"A brief description of the Remote Endpoint.\",\n    \"4-2\": \"When checked, an API is exposed to allow external systems to invoke the Push notification message sent to applications which are subscribed to the push notification.\",\n    \"5-2\": \"When checked, an API is exposed to allow external systems and/or applications to dynamically subscribe to a push endpoint.  When an application subscribes to a push endpoint, it will receive the push notifications.\",\n    \"6-0\": \"Unsubscribe endpoint\",\n    \"6-1\": \"`boolean`\",\n    \"6-2\": \"When checked, an API is exposed to allow external systems and/or applications to dynamically unsubscribe to a push endpoint.  When an application unsubscribes to a push endpoint, it will stop receiving push notifications.\",\n    \"h-0\": \"property\",\n    \"h-1\": \"type\",\n    \"h-2\": \"description\"\n  },\n  \"cols\": 3,\n  \"rows\": 7\n}\n[/block]\nAfter creating the Remote Endpoint, you must add the push platform(s) that your remote endpoint will support.  This can be either: Apple’s APN for iOS and OS X, Google’s Firebase Cloud Messaging (FCM) and Google Cloud Messaging (GCM), or MQTT. \n\nSelect `New push platform` under Edit push platform to add one or more push platforms that you wish to support.  \n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/f93ca82-push-remote-endpoint-endpoint.png\",\n        \"push-remote-endpoint-endpoint.png\",\n        1033,\n        677,\n        \"#f8f9f8\"\n      ]\n    }\n  ]\n}\n[/block]\nDepending on the push platform type selected, different properties are exposed.\n\n*For iOS/OS X*:\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/6834d68-ios-push-platform.png\",\n        \"ios-push-platform.png\",\n        1017,\n        612,\n        \"#f6f6f6\"\n      ]\n    }\n  ]\n}\n[/block]\nPush platform of type `iOS or OS X` have the following properties:\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"property\",\n    \"h-1\": \"type\",\n    \"h-2\": \"description\",\n    \"0-0\": \"Name (required)\",\n    \"1-0\": \"Codename (required)\",\n    \"2-0\": \"Type (required)\",\n    \"6-0\": \"Development\",\n    \"5-0\": \"Topic (required)\",\n    \"4-0\": \"Password\",\n    \"3-0\": \"Certificate (required)\",\n    \"0-1\": \"`string`\",\n    \"1-1\": \"`string`\",\n    \"2-1\": \"`string`\",\n    \"3-1\": \"`file`\",\n    \"4-1\": \"`string`\",\n    \"5-1\": \"`string`\",\n    \"6-1\": \"`boolean`\",\n    \"0-2\": \"Name of the push platform.\",\n    \"1-2\": \"Codename determines how the Remote Endpoint Request and Response Objects are referred to within JavaScript logic blocks.\",\n    \"2-2\": \"Choose the push platform type.  In this case, `iOS or OS X` is selected.\",\n    \"3-2\": \"Upload the Apple push certificate obtained from Apple’s portal.  (File should be in P12 format).\",\n    \"4-2\": \"If the certificate was created with a password, enter password here.\",\n    \"5-2\": \"The topic is typically the bundle ID of your app.\",\n    \"6-2\": \"When checked, push notifications will use Apple’s Development environment for sending push notifications.  When not checked, push notifications are sent to Apple's Production environment.  Make sure the generated Apple certificate corresponds to the Apple environment selected.\"\n  },\n  \"cols\": 3,\n  \"rows\": 7\n}\n[/block]\n*For Google GCM/FCM*:\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/2a1e5dc-google-fcm-push-platform.png\",\n        \"google-fcm-push-platform.png\",\n        1078,\n        434,\n        \"#f6f7f8\"\n      ]\n    }\n  ]\n}\n[/block]\nPush platform of type `GCM or FCM` have the following properties:\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"property\",\n    \"h-1\": \"type\",\n    \"h-2\": \"description\",\n    \"0-0\": \"Name (required)\",\n    \"1-0\": \"Codename (required)\",\n    \"2-0\": \"Type (required)\",\n    \"3-0\": \"API Key (required)\",\n    \"0-1\": \"`string`\",\n    \"1-1\": \"`string`\",\n    \"2-1\": \"`string`\",\n    \"3-1\": \"`string`\",\n    \"0-2\": \"Name of the push platform.\",\n    \"1-2\": \"Codename determines how the Remote Endpoint Request and Response Objects are referred to within JavaScript logic blocks.\",\n    \"2-2\": \"Choose the push platform type.  In this case, `GCM or FCM` is selected.\",\n    \"3-2\": \"The API key obtained from Google Developer/Firebase Console.\"\n  },\n  \"cols\": 3,\n  \"rows\": 4\n}\n[/block]\n*For MQTT*:\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/e116437-mqtt-push-platform.png\",\n        \"mqtt-push-platform.png\",\n        1093,\n        628,\n        \"#eff0f1\"\n      ]\n    }\n  ]\n}\n[/block]\nPush platform of type `MQTT` have the following properties:\n[block:parameters]\n{\n  \"data\": {\n    \"0-0\": \"Name (required)\",\n    \"1-0\": \"Codename (required)\",\n    \"2-0\": \"Type (required)\",\n    \"3-0\": \"Password\",\n    \"4-0\": \"Connect Timeout (required)\",\n    \"5-0\": \"Ack timeout (required)\",\n    \"6-0\": \"Timeout retries (required)\",\n    \"0-1\": \"`string`\",\n    \"1-1\": \"`string`\",\n    \"2-1\": \"`string`\",\n    \"3-1\": \"`string`\",\n    \"4-1\": \"`number`\",\n    \"7-0\": \"username\",\n    \"7-1\": \"`string`\",\n    \"5-1\": \"`number`\",\n    \"6-1\": \"`number`\",\n    \"7-2\": \"Username required by broker which is automatically created by Nanoscale.io to generate a unique value. (non-editable)\",\n    \"0-2\": \"Name of the push platform.\",\n    \"1-2\": \"Codename determines how the Remote Endpoint Request and Response Objects are referred to within JavaScript logic blocks.\",\n    \"2-2\": \"Choose the push platform type.  In this case, `MQTT` is selected.\",\n    \"3-2\": \"Password required by the broker, if any.\",\n    \"4-2\": \"Time to wait (in seconds) before a CONNACK is received.\",\n    \"5-2\": \"This is the Keep Alive interval in seconds that the connection between client and server remain alive.  Setting to 0 will tell the server not to disconnect to the client.\",\n    \"6-2\": \"The number of tries to retry delivering the message if unsuccessful.\"\n  },\n  \"cols\": 3,\n  \"rows\": 8\n}\n[/block]\n##Redis\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Redis 3.x and above supported.\"\n}\n[/block]\nExamples of how to use remote endpoints of type `Redis` can be found [here](http://devhub.nanoscale.io/docs/javascript-object-reference#remote-endpoint-request-object-redis).\n\nTo create a remote endpoint of type `Redis` select `Redis` from the `Type` select box.   \n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/88af02d-redis-remote-endpoint.png\",\n        \"redis-remote-endpoint.png\",\n        900,\n        505,\n        \"#ecf2ec\"\n      ]\n    }\n  ]\n}\n[/block]\nRemote endpoints of type `Redis` have the following properties:\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"property\",\n    \"h-1\": \"type\",\n    \"h-2\": \"description\",\n    \"0-0\": \"Type (required)\",\n    \"1-0\": \"Name (required)\",\n    \"2-0\": \"Codename (required)\",\n    \"3-0\": \"Description\",\n    \"4-0\": \"Host (required)\",\n    \"5-0\": \"Port (required)\",\n    \"6-0\": \"Username\",\n    \"7-0\": \"Password\",\n    \"8-0\": \"Database\",\n    \"9-0\": \"Max. open connections\",\n    \"10-0\": \"Max. idle connections\",\n    \"0-2\": \"Type of remote endpoint you want to call. This will be Redis in this case.\",\n    \"1-2\": \"Name of the remote endpoint.\",\n    \"2-2\": \"Codename determines how the Remote Endpoint Request and Response Objects are referred to within JavaScript logic blocks.\",\n    \"3-2\": \"A brief description of the Remote Endpoint.\",\n    \"4-2\": \"The host name or ip address of the server running the Redis instance.\",\n    \"5-2\": \"The port on the server that the Redis instance is running on.\",\n    \"6-2\": \"The username of the user for the database.\",\n    \"7-2\": \"The password of the user for the database.\",\n    \"8-2\": \"The name of the database of the Redis instance.\",\n    \"9-2\": \"The maximum number of simultaneous open connections the database supports.\",\n    \"10-2\": \"The maximum number of simultaneous idle connections the database supports.\",\n    \"9-1\": \"`number`\",\n    \"10-1\": \"`number`\",\n    \"5-1\": \"`number`\",\n    \"0-1\": \"`string`\",\n    \"1-1\": \"`string`\",\n    \"3-1\": \"`string`\",\n    \"2-1\": \"`string`\",\n    \"4-1\": \"`string`\",\n    \"6-1\": \"`string`\",\n    \"7-1\": \"`string`\",\n    \"8-1\": \"`string`\"\n  },\n  \"cols\": 3,\n  \"rows\": 11\n}\n[/block]\n##SMTP\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"SMTP version RFC 5321 supported.\"\n}\n[/block]\nExamples of how to use remote endpoints of type `SMTP` can be found [here](http://devhub.nanoscale.io/docs/javascript-object-reference#remote-endpoint-request-object-smtp).\n\nTo create a remote endpoint of type `SMTP` select `SMTP` from the `Type` select box.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/02087bf-smtp-remote-endpoint.png\",\n        \"smtp-remote-endpoint.png\",\n        901,\n        518,\n        \"#e9ece8\"\n      ]\n    }\n  ]\n}\n[/block]\nRemote endpoints of type `SMTP` have the following properties:\n[block:parameters]\n{\n  \"data\": {\n    \"0-0\": \"Type (required)\",\n    \"h-0\": \"property\",\n    \"h-1\": \"type\",\n    \"h-2\": \"description\",\n    \"1-0\": \"Name (required)\",\n    \"2-0\": \"Codename (required)\",\n    \"3-0\": \"Description\",\n    \"4-0\": \"Host (required)\",\n    \"5-0\": \"Port (required)\",\n    \"6-0\": \"Username (required)\",\n    \"7-0\": \"Password (required)\",\n    \"8-0\": \"Sender (required)\",\n    \"0-2\": \"Type of remote endpoint you want to call. This will be SMTP in this case.\",\n    \"1-2\": \"Name of the remote endpoint.\",\n    \"2-2\": \"Codename determines how the Remote Endpoint Request and Response Objects are referred to within JavaScript logic blocks.\",\n    \"3-2\": \"A brief description of the Remote Endpoint.\",\n    \"4-2\": \"The host name or ip address of the server running the SMTP instance.\",\n    \"5-2\": \"The port on the server that the SMTP instance is running on.\",\n    \"6-2\": \"The username of the user for the server.\",\n    \"7-2\": \"The password of the user for the server.\",\n    \"8-2\": \"The name of the sender on the outgoing mail.\",\n    \"0-1\": \"`string`\",\n    \"1-1\": \"`string`\",\n    \"2-1\": \"`string`\",\n    \"3-1\": \"`string`\",\n    \"6-1\": \"`string`\",\n    \"7-1\": \"`string`\",\n    \"8-1\": \"`string`\",\n    \"4-1\": \"`string`\",\n    \"5-1\": \"`number`\"\n  },\n  \"cols\": 3,\n  \"rows\": 9\n}\n[/block]\n##Docker\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Let Nanoscale.io run your Docker images\",\n  \"body\": \"Nanoscale enables you to deploy your code as a Docker image and execute it via a proxy endpoint.  A Docker is a piece of software in a complete filesystem that contains everything needed to run: code, runtime, system tools, system libraries.  This allows you to write the code in the language of your choice, but let Nanoscale.io manage the runtime deployment.  The Nanoscale.io cloud has its own Docker swarm to manage the runtime deployment of your code and will scale resources accordingly.\"\n}\n[/block]\nExamples of how to use remote endpoints of type `Docker` can be found [here](http://devhub.nanoscale.io/docs/javascript-object-reference#remote-endpoint-request-object-docker).  For additional help on getting started with using Docker remote endpoints, [watch this video](http://devhub.nanoscale.io/docs/using-docker-remote-endpoints). \n\nTo create a remote endpoint of type `Docker` select `Docker` from the `Type` select box.  \n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/43f7156-docker-remote-endpoint.png\",\n        \"docker-remote-endpoint.png\",\n        900,\n        809,\n        \"#f0f5ef\"\n      ]\n    }\n  ]\n}\n[/block]\nRemote endpoints of type `Docker` have the following properties:\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"property\",\n    \"h-1\": \"type\",\n    \"h-2\": \"description\",\n    \"0-0\": \"Type (required)\",\n    \"1-0\": \"Name (required)\",\n    \"2-0\": \"Codename (required)\",\n    \"3-0\": \"Description\",\n    \"4-0\": \"Repository (required)\",\n    \"5-0\": \"Tag (required)\",\n    \"6-0\": \"Command\",\n    \"7-0\": \"Username\",\n    \"8-0\": \"Password\",\n    \"9-0\": \"Registry\",\n    \"0-1\": \"`string`\",\n    \"1-1\": \"`string`\",\n    \"2-1\": \"`string`\",\n    \"3-1\": \"`string`\",\n    \"4-1\": \"`string`\",\n    \"5-1\": \"`string`\",\n    \"6-1\": \"`string`\",\n    \"7-1\": \"`string`\",\n    \"8-1\": \"`string`\",\n    \"9-1\": \"`string`\",\n    \"0-2\": \"Type of remote endpoint you want to call. This will be Docker in this case.\",\n    \"1-2\": \"Name of the remote endpoint.\",\n    \"2-2\": \"Codename determines how the Remote Endpoint Request and Response Objects are referred to within JavaScript logic blocks.\",\n    \"3-2\": \"A brief description of the Remote Endpoint.\",\n    \"4-2\": \"Location of the repository for the Docker image.  If not fully qualified, we assume the image is pushed to Docker Hub (https://hub.docker.com), in which case, only the path is required (e.g. ‘nanoscale/java’).\",\n    \"5-2\": \"If your image uses Tags to refer to a specific source image, enter the Tag.  The default is ‘latest’ if your image doesn’t use Tags.\",\n    \"6-2\": \"The command that executes your Docker image.\",\n    \"7-2\": \"If your Docker image requires authentication, the username of the registry.\",\n    \"8-2\": \"If your Docker image requires authentication, the password of the registry.\",\n    \"9-2\": \"If using a private registry, enter the registry host.\"\n  },\n  \"cols\": 3,\n  \"rows\": 10\n}\n[/block]\n<div id=\"job\"></div>\n##Job\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Execute business logic at pre-defined scheduled intervals or via a proxy-endpoint.\"\n}\n[/block]\nExamples of how to use remote endpoints of type `Job` can be found [here](http://devhub.nanoscale.io/docs/javascript-object-reference#remote-endpoint-request-object-job).\n\nTo create a remote endpoint of type `Job` select `Job` from the `Type` select box. \n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/8078ae2-job-remote-endpoint.png\",\n        \"job-remote-endpoint.png\",\n        1056,\n        472,\n        \"#f6f8f8\"\n      ]\n    }\n  ]\n}\n[/block]\nRemote endpoints of type `Job` have the following properties:\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"property\",\n    \"h-1\": \"type\",\n    \"h-2\": \"description\",\n    \"0-0\": \"Type (required)\",\n    \"1-0\": \"Name (required)\",\n    \"2-0\": \"Codename (required)\",\n    \"3-0\": \"Description\",\n    \"0-2\": \"Type of remote endpoint you want to call. This will be Job in this case.\",\n    \"1-2\": \"Name of the remote endpoint.\",\n    \"2-2\": \"Codename determines how the Remote Endpoint Request and Response Objects are referred to within JavaScript logic blocks.\",\n    \"3-2\": \"A brief description of the Remote Endpoint.\"\n  },\n  \"cols\": 3,\n  \"rows\": 4\n}\n[/block]\n<div id=\"cryptographic-keys\"></div>\n##Cryptographic keys\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"title\": \"Generate public and private keys and store in Nanoscale.io's keystore\",\n  \"body\": \"The functions to encrypt and/or decrypt data using the keys in Nanoscale.io's keystore do not require a remote endpoint.\"\n}\n[/block]\nExamples of how to use remote endpoints of type `Cryptographic keys` can be found [here](http://devhub.nanoscale.io/docs/javascript-object-reference#remote-endpoint-request-object-cryptographic-keys).\n\nTo create a remote endpoint of type `Cryptographic keys`, select `Cryptographic keys` from the `Type` select box. \n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/361517a-crypto-remote-endpoint.png\",\n        \"crypto-remote-endpoint.png\",\n        901,\n        324,\n        \"#eff1ee\"\n      ]\n    }\n  ]\n}\n[/block]\nRemote endpoints of type `Cryptographic keys` have the following properties:\n[block:parameters]\n{\n  \"data\": {\n    \"0-0\": \"Type (required)\",\n    \"1-0\": \"Name (required)\",\n    \"2-0\": \"Codename (required)\",\n    \"3-0\": \"Description\",\n    \"0-1\": \"`string`\",\n    \"1-1\": \"`string`\",\n    \"2-1\": \"`string`\",\n    \"3-1\": \"`string`\",\n    \"0-2\": \"Type of remote endpoint you want to call. This will be Cryptographic keys in this case.\",\n    \"1-2\": \"Name of the remote endpoint.\",\n    \"2-2\": \"Codename determines how the Remote Endpoint Request and Response Objects are referred to within JavaScript logic blocks.\",\n    \"3-2\": \"A brief description of the Remote Endpoint.\",\n    \"h-0\": \"property\",\n    \"h-1\": \"type\",\n    \"h-2\": \"description\"\n  },\n  \"cols\": 3,\n  \"rows\": 4\n}\n[/block]\n\nAfter saving your Remote Endpoint you can edit it to provide additional details at both an overall and Environment-specific level.\n\n## Environment-specific configuration for Remote Endpoints\n\nIn most cases, you can override configuration parameters for a Remote Endpoint per environment. This allows you to have different configurations for a 'Production' versus 'Testing' environment.\n\nWhen you are editing a Remote Endpoint and you drill into an Environment, you will see a list of environment-specific datum allowed for the current Remote Endpoint type.","excerpt":"","slug":"remote-endpoints","type":"basic","title":"Remote Endpoints"}
A Remote Endpoint is an external service or database that you plan to call or connect to from your Proxy Endpoints. For example, assume you are creating a new Proxy Endpoint that combines customer information from Salesforce with trouble ticket data from Zendesk. In this example you can define two Remote Endpoints; one for Salesforce and one Zendesk. You can then create a Proxy Endpoint that invokes these two Remote Endpoints and returns a combined response back to the client. The Remote Endpoints view shows a list of Remote Endpoints and enables you to create a new one and edit or delete an existing one. [block:image] { "images": [ { "image": [ "https://files.readme.io/1ceaef8-remote-endpoints.png", "remote-endpoints.png", 1395, 551, "#f4f4f4" ] } ] } [/block] We currently offer the following Remote Endpoint types: - HTTP - SOAP - Script (only on-premises) - SQL Server - PostgreSQL - MySQL - MongoDB - LDAP - SAP HANA - Store - Push - Redis - SMTP - Docker - Jobs - Cryptographic Keys The following remote endpoint properties and methods pertain to their respective remote endpoint types: ## HTTP Examples of how to use remote endpoints of type `HTTP` can be found [here](http://devhub.nanoscale.io/docs/javascript-object-reference#remote-endpoint-request-object-http). To create a remote endpoint of type `HTTP` select `HTTP` from the `Type` select box. [block:image] { "images": [ { "image": [ "https://files.readme.io/CPxOniWuTQe8XnKlX9ir_http.png", "http.png", "1136", "510", "#729859", "" ] } ] } [/block] Remote endpoints of type `HTTP` have the following properties: [block:parameters] { "data": { "h-0": "property", "h-1": "type", "h-2": "description", "0-0": "Type (required)", "0-1": "`string`", "0-2": "Type of Remote Endpoint you want to call. This will be `HTTP` in this case.", "1-0": "Name (required)", "2-0": "Codename (required)", "3-0": "Description", "4-0": "URL", "5-0": "Method", "1-1": "`string`", "2-1": "`string`", "3-1": "`string`", "4-1": "`string`", "5-1": "`string`", "1-2": "Name of the Remote Endpoint.", "2-2": "Code Name determines how the Remote Endpoint Request and Response Objects are referred to within JavaScript logic blocks.", "3-2": "A brief description of the Remote Endpoint.", "4-2": "The URL of the external API endpoint that you are calling.\n\nHTTP or HTTPS is required when defining the remote endpoint URL.\n\nIf the URL field is left blank then under the \"Edit environment data\", a developer must set it in JavaScript logic for this Remote Endpoint to work.", "5-2": "The method of the external API endpoint, It can be one of the following: `GET`, `POST`, `PUT`, `DELETE`" }, "cols": 3, "rows": 6 } [/block] ### HTTP Header and Query Parameters Headers allow you to specify the HTTP header, which are unique name-value pairs. You can specify standard HTTP header fields, such as “Content-Type” and “Authorization”, or custom headers depending on the requirements of the remote call. Query parameters allow you to specify URL parameters for the remote call. These are unique name-value pairs that are passed to the remote call as URL parameters. [block:image] { "images": [ { "image": [ "https://files.readme.io/9GqMUJkKRhaSDkXZxh3u_http.png", "http.png", "1137", "850", "#5f738c", "" ] } ] } [/block] When you specify Headers and query parameters at the top level of a Remote Endpoint, they are used across all Environments, unless overridden at Environment level data. [block:image] { "images": [ { "image": [ "https://files.readme.io/fa330d5-edit-env-variables.png", "edit-env-variables.png", 1254, 571, "#eff6ef" ] } ] } [/block] ## SOAP [block:callout] { "type": "info", "title": "SOAP versions 1.1 and 1.2 are supported." } [/block] Examples of how to use remote endpoints of type `SOAP` can be found [here](http://devhub.nanoscale.io/docs/javascript-object-reference#remote-endpoint-request-object-soap). To create a remote endpoint of type `SOAP` select `SOAP` from the `Type` select box. [block:image] { "images": [ { "image": [ "https://files.readme.io/C634dLViRMC81dTZBw8f_soap.png", "soap.png", "1137", "749", "#5b822c", "" ], "sizing": "smart" } ] } [/block] Remote endpoints of type `SOAP` have the following properties: [block:parameters] { "data": { "h-0": "property", "h-1": "type", "h-2": "description", "0-0": "Type (required)", "1-0": "Name (required)", "2-0": "Codename (required)", "3-0": "Description", "4-0": "WSDL (required)", "5-0": "Service name (required)", "6-0": "URL", "7-0": "Authentication scheme", "8-0": "Username", "9-0": "Password", "0-1": "`string`", "1-1": "`string`", "2-1": "`string`", "3-1": "`string`", "0-2": "Type of Remote Endpoint you want to call. This will be `SOAP` in this case.", "1-2": "Name of the Remote Endpoint.", "2-2": "Code Name determines how the Remote Endpoint Request and Response Objects are referred to within JavaScript logic blocks.", "3-2": "A brief description of the Remote Endpoint.", "4-1": "`file`", "4-2": "The file that describes the SOAP web service (WSDL stands for web services description language).  Describes the structure and contents of the messages that are passed back and forth between the client and the service, as well as the various operations that may be performed by the service.", "5-1": "`string`", "6-1": "`string`", "7-1": "`string`", "8-1": "`string`", "9-1": "`string`", "5-2": "The name of the SOAP service.", "6-2": "The url of the remote endpoint.", "7-2": "The authentication scheme the SOAP service uses.", "8-2": "The username of the user for the SOAP service.", "9-2": "The password of the user for the SOAP service." }, "cols": 3, "rows": 10 } [/block] ## Script [block:callout] { "type": "warning", "title": "Script Remote Endpoints are only available when running your own instance of nanoscale.io.", "body": "Since this allows you to execute arbitrary commands on the host OS, you can only use this endpoint type when you run your own instance of nanoscale.io." } [/block] Examples of how to use remote endpoints of type `Script` can be found [here](http://devhub.nanoscale.io/docs/javascript-object-reference#remote-endpoint-request-object-script). To create a remote endpoint of type `Script` select `Script` from the `Type` select box. [block:image] { "images": [ { "image": [ "https://files.readme.io/7e4da32-script-edit.png", "script-edit.png", 1147, 836, "#dee2e4" ] } ] } [/block] Remote endpoints of type `Script` have the following properties: [block:parameters] { "data": { "h-0": "property", "h-1": "type", "h-2": "description", "0-0": "Type (required)", "1-0": "Name (required)", "2-0": "Codename (required)", "3-0": "Description", "4-0": "Interpreter (required)", "5-0": "Execution timeout", "6-0": "File path (required if `script` not specified)", "7-0": "Script (required if `file path` not specified)", "3-1": "`string`", "2-1": "`string`", "1-1": "`string`", "0-1": "`string`", "4-1": "`string`", "7-1": "`string`", "6-1": "`string`", "5-1": "`number`", "0-2": "Type of Remote Endpoint you want to call. This will be`Script` in this case.", "1-2": "Name of the Remote Endpoint.", "2-2": "Code Name determines how the Remote Endpoint Request and Response Objects are referred to within JavaScript logic blocks.", "3-2": "A brief description of the Remote Endpoint.", "4-2": "The interpreter used to execute the script. This is determined by the host OS running the binary: `sh`, `bash`, and `cmd.exe` are the available types.", "6-2": "A file path to a script to execute.\n\nIf both `file path` and `script` are specified `file path` will be used.", "7-2": "A script to execute.\n\nIf both `file path` and `script` are specified `file path` will be used.", "5-2": "The timeout in seconds after which a script will timeout if it doesn't finish execution." }, "cols": 3, "rows": 8 } [/block] ## SQL Server [block:callout] { "type": "info", "title": "MS SQL Server version 2005 and newer are supported." } [/block] Examples of how to use remote endpoints of type `SQL Server` can be found [here](http://devhub.nanoscale.io/docs/javascript-object-reference#remote-endpoint-request-object-sqlserver). To create a remote endpoint of type `SQL Server` select `SQL Server` from the `Type` select box. [block:image] { "images": [ { "image": [ "https://files.readme.io/bd3JQ1CRuFGztbbaaXEQ_sqlserver.png", "sqlserver.png", "1138", "984", "#759b90", "" ] } ] } [/block] Remote endpoints of type `SQL Server` have the following properties: [block:parameters] { "data": { "h-0": "property", "h-1": "type", "h-2": "description", "0-0": "Type (required)", "1-0": "Name (required)", "2-0": "Codename (required)", "3-0": "Description", "4-0": "Server (required)", "5-0": "Port (required)", "6-0": "Username (required)", "7-0": "Password (required)", "8-0": "Database (required)", "9-0": "Schema", "11-0": "Transactions", "12-0": "Connection timeout", "13-0": "Max. idle connections", "14-0": "Max. open connections", "3-1": "`string`", "2-1": "`string`", "1-1": "`string`", "0-1": "`string`", "4-1": "`string`", "5-1": "`number`", "6-1": "`string`", "7-1": "`string`", "8-1": "`string`", "9-1": "`string`", "11-1": "`boolean`", "12-1": "`number`", "13-1": "`number`", "14-1": "`number`", "0-2": "Type of remote endpoint you want to call. This will be `SQLServer` in this case.", "1-2": "Name of the remote endpoint.", "2-2": "Codename determines how the Remote Endpoint Request and Response Objects are referred to within JavaScript logic blocks.", "3-2": "A brief description of the Remote Endpoint.", "4-2": "The host name or ip address of the server running the SQL Server instance.", "5-2": "The port on the server that the SQL Server instance is running on.", "6-2": "The username of the user for the database.", "7-2": "The password of the user for the database.", "8-2": "The name of the database in the SQL Server instance.", "9-2": "The name of the schema within the database.", "11-2": "Indicates whether the database supports transactions. If set to `true` then db queries are done in a transaction.", "12-2": "The number of seconds before the connection to the database times out.", "13-2": "The maximum number of simultaneous idle connections the database supports.", "14-2": "The maximum number of simultaneous open connections the database supports.", "10-0": "Encrypt", "10-1": "`string`", "10-2": "Whether or not the connection to the SQL Server instance should be encrypted. Available options are: `Disable`, `True`, `False`." }, "cols": 3, "rows": 15 } [/block] ## PostgreSQL [block:callout] { "type": "info", "title": "PostgreSQL version 7.4 and newer are supported." } [/block] Examples of how to use remote endpoints of type `PostgreSQL` can be found [here](http://devhub.nanoscale.io/docs/javascript-object-reference#remote-endpoint-request-object-postgres). To create a remote endpoint of type `PostgreSQL` select `PostgreSQL` from the `Type` select box. [block:image] { "images": [ { "image": [ "https://files.readme.io/7kPlndvWSumd493iRjxr_postgres.png", "postgres.png", "1134", "848", "#759c92", "" ] } ] } [/block] Remote endpoints of type `PostgreSQL` have the following properties: [block:parameters] { "data": { "h-0": "property", "h-1": "type", "h-2": "description", "0-0": "Type (required)", "1-0": "Name (required)", "2-0": "Codename (required)", "3-0": "Description", "4-0": "Host (required)", "5-0": "Port (required)", "6-0": "Database (required)", "7-0": "Username (required)", "8-0": "Password (required)", "9-0": "SSL mode", "10-0": "Transactions", "11-0": "Max. idle connections", "12-0": "Max. open connections", "0-1": "`string`", "1-1": "`string`", "2-1": "`string`", "3-1": "`string`", "4-1": "`string`", "5-1": "`number`", "6-1": "`string`", "7-1": "`string`", "8-1": "`string`", "9-1": "`string`", "10-1": "`boolean`", "11-1": "`number`", "12-1": "`number`", "0-2": "Type of remote endpoint you want to call. This will be `PostgreSQL` in this case.", "1-2": "Name of the remote endpoint.", "2-2": "Codename determines how the Remote Endpoint Request and Response Objects are referred to within JavaScript logic blocks.", "3-2": "A brief description of the Remote Endpoint.", "4-2": "The host name or ip address of the server running the PostgreSQL instance.", "5-2": "The port on the server that the PostgreSQL instance is running on.", "6-2": "The name of the database in the PostgreSQL instance.", "7-2": "The username of the user for the database.", "8-2": "The password of the user for the database.", "9-2": "Indicates to the PostgreSQL instance how to establish SSL connectivity. It can be one of the following types: `disable`, `allow`, `prefer`, `require`, `verify-ca`, `verify-full`.\n\nMore information can be found <a target=\"_blank\" href=\"http://www.postgresql.org/docs/9.1/static/libpq-ssl.html\">here</a>.", "10-2": "Indicates whether the database supports transactions. If set to `true` then db queries are done in a transaction.", "11-2": "The maximum number of simultaneous idle connections the database supports.", "12-2": "The maximum number of simultaneous open connections the database supports." }, "cols": 3, "rows": 13 } [/block] ## MySQL [block:callout] { "type": "info", "title": "MySQL version 4.1 and newer are supported." } [/block] Examples of how to use remote endpoints of type `MySQL` can be found [here](http://devhub.nanoscale.io/docs/javascript-object-reference#remote-endpoint-request-object-mysql). To create a remote endpoint of type `MySQL` select `MySQL` from the `Type` select box. [block:image] { "images": [ { "image": [ "https://files.readme.io/XgTEjnDVSMqMASVjaEzn_mysql.png", "mysql.png", "1137", "883", "#759d92", "" ] } ] } [/block] Remote endpoints of type `MySQL` have the following properties: [block:parameters] { "data": { "h-0": "property", "h-1": "type", "h-2": "description", "0-0": "Type (required)", "1-0": "Name (required)", "2-0": "Codename (required)", "3-0": "Description", "4-0": "Host (required)", "5-0": "Port (required)", "6-0": "Database (required)", "7-0": "Username (required)", "8-0": "Password (required)", "9-0": "Connection timeout", "10-0": "Transactions", "11-0": "Max. idle connections", "12-0": "Max. open connections", "0-1": "`string`", "1-1": "`string`", "2-1": "`string`", "3-1": "`string`", "4-1": "`string`", "5-1": "`number`", "6-1": "`string`", "7-1": "`string`", "8-1": "`string`", "9-1": "`number`", "10-1": "`boolean`", "11-1": "`number`", "12-1": "`number`", "0-2": "Type of remote endpoint you want to call. This will be `MySQL` in this case.", "1-2": "Name of the remote endpoint.", "2-2": "Codename determines how the Remote Endpoint Request and Response Objects are referred to within JavaScript logic blocks.", "3-2": "A brief description of the Remote Endpoint.", "4-2": "The host name or ip address of the server running the MySQL instance.", "5-2": "The port on the server that the MySQL instance is running on.", "6-2": "The name of the database in the MySQL instance.", "7-2": "The username of the user for the database.", "8-2": "The password of the user for the database.", "9-2": "The number of seconds before the connection to the database times out.", "10-2": "Indicates whether the database supports transactions. If set to `true` then db queries are done in a transaction.", "11-2": "The maximum number of simultaneous idle connections the database supports.", "12-2": "The maximum number of simultaneous open connections the database supports." }, "cols": 3, "rows": 13 } [/block] ## MongoDB [block:callout] { "type": "info", "title": "MongoDB version 2.0 and newer are supported." } [/block] Examples of how to use remote endpoints of type `MongoDB` can be found [here](http://devhub.nanoscale.io/docs/javascript-object-reference#remote-endpoint-request-object-mongo). To create a remote endpoint of type `MongoDB` select `MongoDB` from the `Type` select box. [block:image] { "images": [ { "image": [ "https://files.readme.io/pipL3qEVR7WCww0BD4bh_mongo.png", "mongo.png", "1137", "826", "#6e9ec8", "" ] } ] } [/block] Remote endpoints of type `MongoDB` have the following properties: [block:parameters] { "data": { "h-0": "property", "h-1": "type", "h-2": "description", "0-0": "Type (required)", "1-0": "Name (required)", "2-0": "Codename (required)", "3-0": "Description", "4-0": "Database (required)", "5-0": "Username (required)", "6-0": "Password (required)", "6-1": "`string`", "7-0": "Connection pool limit (required)", "8-0": "Hosts", "9-0": "Hosts/Host/Host", "8-1": "`array`", "10-0": "Hosts/Host/Port", "8-2": "The array of servers running the mongoDB instance(s). Only one entry is required. Multiple hosts are supported for replica sets and failover.", "9-1": "`string`", "10-1": "`number`", "9-2": "The host name or ip address of the server running the mongoDB instance.", "10-2": "The port on the server that the mongoDB instance is running on.", "0-2": "Type of Remote Endpoint you want to call. This will be `MongoDB` in this case.", "1-2": "Name of the Remote Endpoint.", "2-2": "Code Name determines how the Remote Endpoint Request and Response Objects are referred to within JavaScript logic blocks.", "3-2": "A brief description of the Remote Endpoint.", "4-2": "The name of the database in the mongoDB instance.", "5-2": "The username of the user for the database.", "6-2": "The password of the user for the database.", "7-2": "The size of the database pool. This refers to the maximum number of simultaneous clients that can be supported.", "7-1": "`number`", "0-1": "`string`", "1-1": "`string`", "2-1": "`string`", "3-1": "`string`", "4-1": "`string`", "5-1": "`string`" }, "cols": 3, "rows": 11 } [/block] ## LDAP [block:callout] { "type": "info", "title": "LDAP v3 is supported", "body": "http://www.ietf.org/rfc/rfc2251.txt" } [/block] Examples of how to use remote endpoints of type `LDAP` can be found [here](http://devhub.nanoscale.io/docs/javascript-object-reference#remote-endpoint-request-object-ldap). To create a remote endpoint of type `LDAP` select `LDAP` from the `Type` select box. [block:image] { "images": [ { "image": [ "https://files.readme.io/3ab408a-Screen_Shot_2017-01-30_at_5.50.30_PM.png", "Screen Shot 2017-01-30 at 5.50.30 PM.png", 1140, 514, "#eaebec" ] } ] } [/block] Remote endpoints of type `LDAP` have the following properties: [block:parameters] { "data": { "0-0": "Type (required)", "h-0": "property", "h-1": "type", "h-2": "description", "0-1": "`string`", "0-2": "Type of Remote Endpoint you want to call. This will be `LDAP` in this case.", "1-0": "Name (required)", "1-1": "`string`", "1-2": "Name of the Remote Endpoint.", "2-0": "Codename (required)", "2-1": "`string`", "2-2": "Code Name determines how the Remote Endpoint Request and Response Objects are referred to within JavaScript logic blocks.", "3-0": "Description", "3-1": "`string`", "3-2": "A brief description of the Remote Endpoint.", "4-0": "Username (required)", "4-1": "`string`", "4-2": "The username to use when connecting to this LDAP instance.", "5-0": "Password (required)", "5-1": "`string`", "5-2": "The password to use when connecting to this LDAP instance.", "6-0": "Server (required)", "6-1": "`string`", "6-2": "The host for the LDAP instance.", "7-0": "Port (required)", "7-1": "`string`", "7-2": "The port on which the LDAP server is listening.", "8-0": "Use TLS", "8-1": "`boolean`", "8-2": "Whether or not to establish a connection with the LDAP instance using TLS.", "9-0": "Certificate", "9-1": "`file`", "9-2": "The TLS certificate to use when connecting to the LDAP instance.", "10-0": "Private key", "10-1": "`file`", "10-2": "The TLS private key to use when connecting to the LDAP instance.", "11-0": "Server name", "11-1": "`string`", "11-2": "The server name to use when establishing a TLS connection. This must match the certificate.", "12-0": "Private key password", "12-1": "`string`", "12-2": "The password for the private key." }, "cols": 3, "rows": 13 } [/block] ##SAP Hana [block:callout] { "type": "info", "title": "SAP HANA all SPs are supported with backward compatibility.", "body": "Only execute commands that are supported in each version." } [/block] Examples of how to use remote endpoints of type `SAP Hana` can be found [here](http://devhub.nanoscale.io/docs/javascript-object-reference#remote-endpoint-request-object-sap-hana). To create a remote endpoint of type `SAP Hana` select `SAP Hana` from the `Type` select box. ## Store [block:image] { "images": [ { "image": [ "https://files.readme.io/9a98f92-SAP-hana-remote-endpoint.png", "SAP-hana-remote-endpoint.png", 1271, 790, "#62b658" ] } ] } [/block] Remote endpoints of type `SAP Hana` have the following properties: [block:parameters] { "data": { "h-0": "property", "h-1": "type", "h-2": "description", "0-0": "Type (required)", "1-0": "Name (required)", "2-0": "Codename (required)", "3-0": "Description", "0-1": "`string`", "1-1": "`string`", "2-1": "`string`", "3-1": "`string`", "4-1": "`string`", "5-1": "`string`", "7-1": "`string`", "6-1": "`number`", "4-0": "Host", "5-0": "Port (required)", "6-0": "Username (required)", "7-0": "Password (required)", "9-1": "`number`", "10-1": "`number`", "8-1": "`boolean`", "8-0": "Transaction", "9-0": "Max. idle connections", "10-0": "Max. open connections", "4-2": "The host name or ip address of the server running the SAP Hana instance.", "0-2": "Type of remote endpoint you want to call. This will be SAP Hana in this case.", "1-2": "Name of the remote endpoint.", "2-2": "Codename determines how the Remote Endpoint Request and Response Objects are referred to within JavaScript logic blocks.", "3-2": "A brief description of the Remote Endpoint.", "5-2": "The port on the server that the SAP Hana instance is running on.", "6-2": "The username of the user for the SAP Hana instance.", "7-2": "The password of the user for the SAP Hana instance.", "9-2": "The maximum number of simultaneous open connections supported by SAP Hana.", "10-2": "The maximum number of simultaneous idle connections supported by SAP Hana.", "8-2": "Specify the auto commit property for DDL statements specific to the session. If checked, auto commit is enabled." }, "cols": 3, "rows": 11 } [/block] ##Store [block:callout] { "type": "info", "title": "Store is an internal nanoscale.io concept", "body": "It is a default storage option that is available 'out of the box' without any configuration required. It provides you with a way to store objects in collections that can be accessed across all your APIs and Proxy Endpoints." } [/block] Examples of how to use remote endpoints of type `Store` can be found [here](http://devhub.nanoscale.io/docs/javascript-object-reference#remote-endpoint-request-object-store). To create a remote endpoint of type `Store` select `Store` from the `Type` select box. There is nothing to configure. You just need to create at least one remote endpoint of this type to tie into your collections. You can have as many `Store` remote endpoints as you would like. They all point to the same set of collections. [block:image] { "images": [ { "image": [ "https://files.readme.io/qzzpyflZSpSJGAshBjgR_store.png", "store.png", "1138", "406", "", "" ] } ] } [/block] Remote endpoints of type `Store` have the following properties: [block:parameters] { "data": { "h-0": "property", "h-1": "type", "h-2": "description", "0-0": "Type (required)", "0-1": "`string`", "0-2": "Type of Remote Endpoint you want to call. This will be `Store` in this case.", "1-0": "Name (required)", "1-1": "`string`", "1-2": "Name of the Remote Endpoint.", "2-0": "Codename (required)", "2-1": "`string`", "2-2": "Code Name determines how the Remote Endpoint Request and Response Objects are referred to within JavaScript logic blocks.", "3-0": "Description", "3-1": "`string`", "3-2": "A brief description of the Remote Endpoint." }, "cols": 3, "rows": 4 } [/block] ## Push [block:callout] { "type": "info", "title": "Use Nanoscale.io to send push messages to your native and web applications or IoT devices for real time messaging.", "body": "Nanoscale supports the following push notifications platforms: Apple's Push Notification service, Google's Cloud Message (GCM) and Firebase Cloud Message (FCM), or MQTT." } [/block] Examples of how to use remote endpoints of type `Push` can be found [here](http://devhub.nanoscale.io/docs/javascript-object-reference#remote-endpoint-request-object-push). To create a remote endpoint of type `Push`, select `Push` from the `Type` select box. [block:image] { "images": [ { "image": [ "https://files.readme.io/eeb20a3-push-remote-endpoint.png", "push-remote-endpoint.png", 900, 427, "#f2f6f4" ] } ] } [/block] Remote endpoints of type `Push` have the following properties: [block:parameters] { "data": { "0-0": "Type (required)", "1-0": "Name (required)", "2-0": "Codename (required)", "3-0": "Description", "4-0": "Publish endpoint", "5-0": "Subscribe endpoint", "0-1": "`string`", "1-1": "`string`", "2-1": "`string`", "3-1": "`string`", "4-1": "`boolean`", "5-1": "`boolean`", "0-2": "Type of remote endpoint you want to call. This will be Push in this case.", "1-2": "Name of the remote endpoint.", "2-2": "Codename determines how the Remote Endpoint Request and Response Objects are referred to within JavaScript logic blocks.", "3-2": "A brief description of the Remote Endpoint.", "4-2": "When checked, an API is exposed to allow external systems to invoke the Push notification message sent to applications which are subscribed to the push notification.", "5-2": "When checked, an API is exposed to allow external systems and/or applications to dynamically subscribe to a push endpoint. When an application subscribes to a push endpoint, it will receive the push notifications.", "6-0": "Unsubscribe endpoint", "6-1": "`boolean`", "6-2": "When checked, an API is exposed to allow external systems and/or applications to dynamically unsubscribe to a push endpoint. When an application unsubscribes to a push endpoint, it will stop receiving push notifications.", "h-0": "property", "h-1": "type", "h-2": "description" }, "cols": 3, "rows": 7 } [/block] After creating the Remote Endpoint, you must add the push platform(s) that your remote endpoint will support. This can be either: Apple’s APN for iOS and OS X, Google’s Firebase Cloud Messaging (FCM) and Google Cloud Messaging (GCM), or MQTT. Select `New push platform` under Edit push platform to add one or more push platforms that you wish to support. [block:image] { "images": [ { "image": [ "https://files.readme.io/f93ca82-push-remote-endpoint-endpoint.png", "push-remote-endpoint-endpoint.png", 1033, 677, "#f8f9f8" ] } ] } [/block] Depending on the push platform type selected, different properties are exposed. *For iOS/OS X*: [block:image] { "images": [ { "image": [ "https://files.readme.io/6834d68-ios-push-platform.png", "ios-push-platform.png", 1017, 612, "#f6f6f6" ] } ] } [/block] Push platform of type `iOS or OS X` have the following properties: [block:parameters] { "data": { "h-0": "property", "h-1": "type", "h-2": "description", "0-0": "Name (required)", "1-0": "Codename (required)", "2-0": "Type (required)", "6-0": "Development", "5-0": "Topic (required)", "4-0": "Password", "3-0": "Certificate (required)", "0-1": "`string`", "1-1": "`string`", "2-1": "`string`", "3-1": "`file`", "4-1": "`string`", "5-1": "`string`", "6-1": "`boolean`", "0-2": "Name of the push platform.", "1-2": "Codename determines how the Remote Endpoint Request and Response Objects are referred to within JavaScript logic blocks.", "2-2": "Choose the push platform type. In this case, `iOS or OS X` is selected.", "3-2": "Upload the Apple push certificate obtained from Apple’s portal. (File should be in P12 format).", "4-2": "If the certificate was created with a password, enter password here.", "5-2": "The topic is typically the bundle ID of your app.", "6-2": "When checked, push notifications will use Apple’s Development environment for sending push notifications. When not checked, push notifications are sent to Apple's Production environment. Make sure the generated Apple certificate corresponds to the Apple environment selected." }, "cols": 3, "rows": 7 } [/block] *For Google GCM/FCM*: [block:image] { "images": [ { "image": [ "https://files.readme.io/2a1e5dc-google-fcm-push-platform.png", "google-fcm-push-platform.png", 1078, 434, "#f6f7f8" ] } ] } [/block] Push platform of type `GCM or FCM` have the following properties: [block:parameters] { "data": { "h-0": "property", "h-1": "type", "h-2": "description", "0-0": "Name (required)", "1-0": "Codename (required)", "2-0": "Type (required)", "3-0": "API Key (required)", "0-1": "`string`", "1-1": "`string`", "2-1": "`string`", "3-1": "`string`", "0-2": "Name of the push platform.", "1-2": "Codename determines how the Remote Endpoint Request and Response Objects are referred to within JavaScript logic blocks.", "2-2": "Choose the push platform type. In this case, `GCM or FCM` is selected.", "3-2": "The API key obtained from Google Developer/Firebase Console." }, "cols": 3, "rows": 4 } [/block] *For MQTT*: [block:image] { "images": [ { "image": [ "https://files.readme.io/e116437-mqtt-push-platform.png", "mqtt-push-platform.png", 1093, 628, "#eff0f1" ] } ] } [/block] Push platform of type `MQTT` have the following properties: [block:parameters] { "data": { "0-0": "Name (required)", "1-0": "Codename (required)", "2-0": "Type (required)", "3-0": "Password", "4-0": "Connect Timeout (required)", "5-0": "Ack timeout (required)", "6-0": "Timeout retries (required)", "0-1": "`string`", "1-1": "`string`", "2-1": "`string`", "3-1": "`string`", "4-1": "`number`", "7-0": "username", "7-1": "`string`", "5-1": "`number`", "6-1": "`number`", "7-2": "Username required by broker which is automatically created by Nanoscale.io to generate a unique value. (non-editable)", "0-2": "Name of the push platform.", "1-2": "Codename determines how the Remote Endpoint Request and Response Objects are referred to within JavaScript logic blocks.", "2-2": "Choose the push platform type. In this case, `MQTT` is selected.", "3-2": "Password required by the broker, if any.", "4-2": "Time to wait (in seconds) before a CONNACK is received.", "5-2": "This is the Keep Alive interval in seconds that the connection between client and server remain alive. Setting to 0 will tell the server not to disconnect to the client.", "6-2": "The number of tries to retry delivering the message if unsuccessful." }, "cols": 3, "rows": 8 } [/block] ##Redis [block:callout] { "type": "info", "title": "Redis 3.x and above supported." } [/block] Examples of how to use remote endpoints of type `Redis` can be found [here](http://devhub.nanoscale.io/docs/javascript-object-reference#remote-endpoint-request-object-redis). To create a remote endpoint of type `Redis` select `Redis` from the `Type` select box. [block:image] { "images": [ { "image": [ "https://files.readme.io/88af02d-redis-remote-endpoint.png", "redis-remote-endpoint.png", 900, 505, "#ecf2ec" ] } ] } [/block] Remote endpoints of type `Redis` have the following properties: [block:parameters] { "data": { "h-0": "property", "h-1": "type", "h-2": "description", "0-0": "Type (required)", "1-0": "Name (required)", "2-0": "Codename (required)", "3-0": "Description", "4-0": "Host (required)", "5-0": "Port (required)", "6-0": "Username", "7-0": "Password", "8-0": "Database", "9-0": "Max. open connections", "10-0": "Max. idle connections", "0-2": "Type of remote endpoint you want to call. This will be Redis in this case.", "1-2": "Name of the remote endpoint.", "2-2": "Codename determines how the Remote Endpoint Request and Response Objects are referred to within JavaScript logic blocks.", "3-2": "A brief description of the Remote Endpoint.", "4-2": "The host name or ip address of the server running the Redis instance.", "5-2": "The port on the server that the Redis instance is running on.", "6-2": "The username of the user for the database.", "7-2": "The password of the user for the database.", "8-2": "The name of the database of the Redis instance.", "9-2": "The maximum number of simultaneous open connections the database supports.", "10-2": "The maximum number of simultaneous idle connections the database supports.", "9-1": "`number`", "10-1": "`number`", "5-1": "`number`", "0-1": "`string`", "1-1": "`string`", "3-1": "`string`", "2-1": "`string`", "4-1": "`string`", "6-1": "`string`", "7-1": "`string`", "8-1": "`string`" }, "cols": 3, "rows": 11 } [/block] ##SMTP [block:callout] { "type": "info", "title": "SMTP version RFC 5321 supported." } [/block] Examples of how to use remote endpoints of type `SMTP` can be found [here](http://devhub.nanoscale.io/docs/javascript-object-reference#remote-endpoint-request-object-smtp). To create a remote endpoint of type `SMTP` select `SMTP` from the `Type` select box. [block:image] { "images": [ { "image": [ "https://files.readme.io/02087bf-smtp-remote-endpoint.png", "smtp-remote-endpoint.png", 901, 518, "#e9ece8" ] } ] } [/block] Remote endpoints of type `SMTP` have the following properties: [block:parameters] { "data": { "0-0": "Type (required)", "h-0": "property", "h-1": "type", "h-2": "description", "1-0": "Name (required)", "2-0": "Codename (required)", "3-0": "Description", "4-0": "Host (required)", "5-0": "Port (required)", "6-0": "Username (required)", "7-0": "Password (required)", "8-0": "Sender (required)", "0-2": "Type of remote endpoint you want to call. This will be SMTP in this case.", "1-2": "Name of the remote endpoint.", "2-2": "Codename determines how the Remote Endpoint Request and Response Objects are referred to within JavaScript logic blocks.", "3-2": "A brief description of the Remote Endpoint.", "4-2": "The host name or ip address of the server running the SMTP instance.", "5-2": "The port on the server that the SMTP instance is running on.", "6-2": "The username of the user for the server.", "7-2": "The password of the user for the server.", "8-2": "The name of the sender on the outgoing mail.", "0-1": "`string`", "1-1": "`string`", "2-1": "`string`", "3-1": "`string`", "6-1": "`string`", "7-1": "`string`", "8-1": "`string`", "4-1": "`string`", "5-1": "`number`" }, "cols": 3, "rows": 9 } [/block] ##Docker [block:callout] { "type": "info", "title": "Let Nanoscale.io run your Docker images", "body": "Nanoscale enables you to deploy your code as a Docker image and execute it via a proxy endpoint. A Docker is a piece of software in a complete filesystem that contains everything needed to run: code, runtime, system tools, system libraries. This allows you to write the code in the language of your choice, but let Nanoscale.io manage the runtime deployment. The Nanoscale.io cloud has its own Docker swarm to manage the runtime deployment of your code and will scale resources accordingly." } [/block] Examples of how to use remote endpoints of type `Docker` can be found [here](http://devhub.nanoscale.io/docs/javascript-object-reference#remote-endpoint-request-object-docker). For additional help on getting started with using Docker remote endpoints, [watch this video](http://devhub.nanoscale.io/docs/using-docker-remote-endpoints). To create a remote endpoint of type `Docker` select `Docker` from the `Type` select box. [block:image] { "images": [ { "image": [ "https://files.readme.io/43f7156-docker-remote-endpoint.png", "docker-remote-endpoint.png", 900, 809, "#f0f5ef" ] } ] } [/block] Remote endpoints of type `Docker` have the following properties: [block:parameters] { "data": { "h-0": "property", "h-1": "type", "h-2": "description", "0-0": "Type (required)", "1-0": "Name (required)", "2-0": "Codename (required)", "3-0": "Description", "4-0": "Repository (required)", "5-0": "Tag (required)", "6-0": "Command", "7-0": "Username", "8-0": "Password", "9-0": "Registry", "0-1": "`string`", "1-1": "`string`", "2-1": "`string`", "3-1": "`string`", "4-1": "`string`", "5-1": "`string`", "6-1": "`string`", "7-1": "`string`", "8-1": "`string`", "9-1": "`string`", "0-2": "Type of remote endpoint you want to call. This will be Docker in this case.", "1-2": "Name of the remote endpoint.", "2-2": "Codename determines how the Remote Endpoint Request and Response Objects are referred to within JavaScript logic blocks.", "3-2": "A brief description of the Remote Endpoint.", "4-2": "Location of the repository for the Docker image. If not fully qualified, we assume the image is pushed to Docker Hub (https://hub.docker.com), in which case, only the path is required (e.g. ‘nanoscale/java’).", "5-2": "If your image uses Tags to refer to a specific source image, enter the Tag. The default is ‘latest’ if your image doesn’t use Tags.", "6-2": "The command that executes your Docker image.", "7-2": "If your Docker image requires authentication, the username of the registry.", "8-2": "If your Docker image requires authentication, the password of the registry.", "9-2": "If using a private registry, enter the registry host." }, "cols": 3, "rows": 10 } [/block] <div id="job"></div> ##Job [block:callout] { "type": "info", "title": "Execute business logic at pre-defined scheduled intervals or via a proxy-endpoint." } [/block] Examples of how to use remote endpoints of type `Job` can be found [here](http://devhub.nanoscale.io/docs/javascript-object-reference#remote-endpoint-request-object-job). To create a remote endpoint of type `Job` select `Job` from the `Type` select box. [block:image] { "images": [ { "image": [ "https://files.readme.io/8078ae2-job-remote-endpoint.png", "job-remote-endpoint.png", 1056, 472, "#f6f8f8" ] } ] } [/block] Remote endpoints of type `Job` have the following properties: [block:parameters] { "data": { "h-0": "property", "h-1": "type", "h-2": "description", "0-0": "Type (required)", "1-0": "Name (required)", "2-0": "Codename (required)", "3-0": "Description", "0-2": "Type of remote endpoint you want to call. This will be Job in this case.", "1-2": "Name of the remote endpoint.", "2-2": "Codename determines how the Remote Endpoint Request and Response Objects are referred to within JavaScript logic blocks.", "3-2": "A brief description of the Remote Endpoint." }, "cols": 3, "rows": 4 } [/block] <div id="cryptographic-keys"></div> ##Cryptographic keys [block:callout] { "type": "warning", "title": "Generate public and private keys and store in Nanoscale.io's keystore", "body": "The functions to encrypt and/or decrypt data using the keys in Nanoscale.io's keystore do not require a remote endpoint." } [/block] Examples of how to use remote endpoints of type `Cryptographic keys` can be found [here](http://devhub.nanoscale.io/docs/javascript-object-reference#remote-endpoint-request-object-cryptographic-keys). To create a remote endpoint of type `Cryptographic keys`, select `Cryptographic keys` from the `Type` select box. [block:image] { "images": [ { "image": [ "https://files.readme.io/361517a-crypto-remote-endpoint.png", "crypto-remote-endpoint.png", 901, 324, "#eff1ee" ] } ] } [/block] Remote endpoints of type `Cryptographic keys` have the following properties: [block:parameters] { "data": { "0-0": "Type (required)", "1-0": "Name (required)", "2-0": "Codename (required)", "3-0": "Description", "0-1": "`string`", "1-1": "`string`", "2-1": "`string`", "3-1": "`string`", "0-2": "Type of remote endpoint you want to call. This will be Cryptographic keys in this case.", "1-2": "Name of the remote endpoint.", "2-2": "Codename determines how the Remote Endpoint Request and Response Objects are referred to within JavaScript logic blocks.", "3-2": "A brief description of the Remote Endpoint.", "h-0": "property", "h-1": "type", "h-2": "description" }, "cols": 3, "rows": 4 } [/block] After saving your Remote Endpoint you can edit it to provide additional details at both an overall and Environment-specific level. ## Environment-specific configuration for Remote Endpoints In most cases, you can override configuration parameters for a Remote Endpoint per environment. This allows you to have different configurations for a 'Production' versus 'Testing' environment. When you are editing a Remote Endpoint and you drill into an Environment, you will see a list of environment-specific datum allowed for the current Remote Endpoint type.