{"_id":"588f722bbcace50f0052b9f0","parentDoc":null,"version":{"_id":"588f722bbcace50f0052b9e1","project":"565f5fa26bafd40d0030a064","__v":1,"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"},"user":"565f5f29de5dc50d00acfe9f","category":{"_id":"588f722bbcace50f0052b9e3","version":"588f722bbcace50f0052b9e1","project":"565f5fa26bafd40d0030a064","__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"},"__v":0,"project":"565f5fa26bafd40d0030a064","updates":[],"next":{"pages":[],"description":""},"createdAt":"2016-06-07T16:56:25.928Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":3,"body":"The Proxy Endpoints view shows a list of existing Proxy Endpoints and enables you to create a new one or delete an existing one. The list also includes a visual indicator on whether the Proxy Endpoint is active or inactive.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/U3ZaVGPbRKG8wX4wk81Q_api.png\",\n        \"api.png\",\n        \"1419\",\n        \"643\",\n        \"#5f86b1\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]\n\n[block:image]\n{\n  \"images\": [\n    {}\n  ]\n}\n[/block]\nWhen creating a new Proxy Endpoint, you will be required to select an [Environment](doc:environments) (you can use the default “Development” environment for development or test), and optionally specify one of your [Groups](doc:groups)) that the Proxy Endpoint belongs to.  \n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/RyDh6TdRNGy8VQRQsXIV_new-proxy.png\",\n        \"new-proxy.png\",\n        \"1144\",\n        \"439\",\n        \"#5b822c\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]\nOnce the Proxy Endpoint name has been defined, you can click on the name or the edit icon, and will navigate to the Workflow view.\n\n## Proxy Endpoint Workflow\n\nThe Workflow view allows you to define the business logic of how your Proxy Endpoint responds to incoming requests. This view layout consists of a series of workflow components, in sequential order from top to bottom.\n\nIt is recommended that you also review the [Request/Response Lifecycle](doc:request-response-lifecycle) page, which provides an explanation of how the overall endpoint workflow operates.\n \nClicking on a component in the workflow will display a set of properties or code blocks.\n\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/OwLnV7S7RUutG9pSskZu_multi-proxy.png\",\n        \"multi-proxy.png\",\n        \"1436\",\n        \"915\",\n        \"#941f21\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]\n## The available components in the workflow are:\n\n## 1. Proxy Endpoint Properties\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/DMSLxN8ZSZq668KoyHNM_user-guide-proxy-endpoints-proxy-endpoint-properties.png\",\n        \"user-guide-proxy-endpoints-proxy-endpoint-properties.png\",\n        \"1280\",\n        \"73\",\n        \"#f09422\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]\nThis is the top-level workflow component that contains properties for the Proxy Endpoint. \n\nProperties include:\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Property\",\n    \"h-1\": \"Description\",\n    \"0-0\": \"**Name**\",\n    \"0-1\": \"A human-friendly name for your Proxy Endpoint.\",\n    \"2-0\": \"**Active**\",\n    \"2-1\": \"Determines the status of the Proxy Endpoint, whether it is Active (reachable via HTTP and will execute the workflow) or Inactive (will not respond to an inbound request).
 Inactive Proxies, if accessed by a developer, will return 404.\",\n    \"3-0\": \"**CORS**\",\n    \"3-1\": \"(Cross-Origin Resource Sharing) allows the developer to be able to communicate with a cross-domain location from a browser that contains resources that you may require. When CORS is enabled on a Proxy Endpoint, it inherits the CORS settings defined at the parent API level. To view the CORS settings at the API, navigate to the API list view, hover over the desired API, and select the pencil icon to the edit the API properties.\",\n    \"4-0\": \"**Environment**\",\n    \"4-1\": \"Select the Environment that you want to use to when referring to Environment variables within JavaScript logic blocks in the Proxy Endpoint workflow and Environment Data in Remote Endpoints. These Environment variables can then be referenced within the JavaScript code blocks of Proxy Endpoints, and also used to specify different sets of Header and query parameters in Remote Endpoints. See [Environments](doc:environments) section for more information.\",\n    \"5-1\": \"Offers the convenience of organizing Proxy Endpoints together for better categorization of each Endpoint.\",\n    \"5-0\": \"**Group**\",\n    \"6-1\": \"Allows you to define a Proxy Endpoint route and assign a method definition of either a GET, POST, PUT and Delete. Multiple routes can be defined for a single Proxy Endpoint, enabling you to provide different endpoint routes to different clients, and manage responses based on the request using a single Proxy Endpoint workflow.\\n\\n**Make sure the route you define is unique within an API.**\",\n    \"6-0\": \"**Edit Routes**\",\n    \"1-0\": \"**Description**\",\n    \"1-1\": \"A human-friendly description for your Proxy Endpoint. This is useful for you as a developer to keep track of what exactly this endpoint does at a high level. It is also used in the Swagger Docs.\"\n  },\n  \"cols\": 2,\n  \"rows\": 7\n}\n[/block]\n## 2. Add Component Link\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/03qfFCnMQgaFtHFD0TeX_user-guide-proxy-endpoints-add-component-link.png\",\n        \"user-guide-proxy-endpoints-add-component-link.png\",\n        \"1280\",\n        \"73\",\n        \"#fce3c7\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]\nSelecting the “+” icon at the bottom of the workflow view is how you add a new component to your workflow.  The components can be dragged and dropped to re-order them within the workflow sequence. Be cautious about your JavaScript logic when changing the sequence of workflow components.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/Yh1GQjHsSPyuFv2OZ0ef_components.png\",\n        \"components.png\",\n        \"1140\",\n        \"322\",\n        \"#4c6484\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]\n\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Component Type\",\n    \"h-1\": \"Description\",\n    \"0-0\": \"**Single Call, Multi-Call, and Logic Component**\",\n    \"0-1\": \"Please visit the [Components](doc:components) reference section for more details.\",\n    \"1-0\": \"**Shared Component**\",\n    \"1-1\": \"Consists of:\\n1. **Component Reference** - a reference to a shared component you have defined outside of this specific proxy. These are great for repeated code steps.\"\n  },\n  \"cols\": 2,\n  \"rows\": 2\n}\n[/block]\n## 3. Shared Component\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/0c4bGaePQYuKzI2WYugp_shared-icon.png\",\n        \"shared-icon.png\",\n        \"97\",\n        \"126\",\n        \"#4c6483\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]\nA shared component allows the developer to define shared logic that can be reused by many different Proxy Endpoints in an API.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/V1Dz4uTJOmkshM6Tlwwg_shared.png\",\n        \"shared.png\",\n        \"1435\",\n        \"532\",\n        \"#64acec\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]\nThe following properties are available in a shared component:\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Property\",\n    \"h-1\": \"Description\",\n    \"0-0\": \"**Component**\",\n    \"0-1\": \"The shared component you would like to plug into this step as a component in your Proxy Endpoint.\"\n  },\n  \"cols\": 2,\n  \"rows\": 1\n}\n[/block]\n## 4. Test Component\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/Htno7G15TgGiVQbxSlZL_user-guide-proxy-endpoints-test-component.png\",\n        \"user-guide-proxy-endpoints-test-component.png\",\n        \"1280\",\n        \"73\",\n        \"#fcf1e2\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]\nThe test component allows the developer to instantly test a proxy endpoint by executing an API call against a specified route and method.\n\nThe following properties are available in a test component:\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Property\",\n    \"h-1\": \"Description\",\n    \"0-0\": \"**Name**\",\n    \"1-0\": \"**Method**\",\n    \"2-0\": \"**Route**\",\n    \"3-0\": \"**Headers and Query Parameters**\",\n    \"4-0\": \"**Content Type and Body**\",\n    \"0-1\": \"Specify unique name of the test cases within a proxy endpoint.\",\n    \"1-1\": \"Specify a method (GET/POST/PUT/DELETE) to be invoked to run the test.\",\n    \"2-1\": \"Select a unique route for the proxy on which test is to be executed. Note that each proxy can have multiple routes defined, hence separate tests needs to be defined for each specific routes within a proxy.\",\n    \"3-1\": \"Optionally specify header(s) and query parameter(s) as name-value pairs if required to test a GET or DELETE call.\",\n    \"4-1\": \"Optionally specify content type and body as name-value pairs if required to test a POST or PUT call.\"\n  },\n  \"cols\": 2,\n  \"rows\": 5\n}\n[/block]\nLearn more about how to test your APIs [here](doc:test-your-api-endpoint).","excerpt":"","slug":"proxy-endpoints","type":"basic","title":"Proxy Endpoints"}
The Proxy Endpoints view shows a list of existing Proxy Endpoints and enables you to create a new one or delete an existing one. The list also includes a visual indicator on whether the Proxy Endpoint is active or inactive. [block:image] { "images": [ { "image": [ "https://files.readme.io/U3ZaVGPbRKG8wX4wk81Q_api.png", "api.png", "1419", "643", "#5f86b1", "" ] } ] } [/block] [block:image] { "images": [ {} ] } [/block] When creating a new Proxy Endpoint, you will be required to select an [Environment](doc:environments) (you can use the default “Development” environment for development or test), and optionally specify one of your [Groups](doc:groups)) that the Proxy Endpoint belongs to. [block:image] { "images": [ { "image": [ "https://files.readme.io/RyDh6TdRNGy8VQRQsXIV_new-proxy.png", "new-proxy.png", "1144", "439", "#5b822c", "" ] } ] } [/block] Once the Proxy Endpoint name has been defined, you can click on the name or the edit icon, and will navigate to the Workflow view. ## Proxy Endpoint Workflow The Workflow view allows you to define the business logic of how your Proxy Endpoint responds to incoming requests. This view layout consists of a series of workflow components, in sequential order from top to bottom. It is recommended that you also review the [Request/Response Lifecycle](doc:request-response-lifecycle) page, which provides an explanation of how the overall endpoint workflow operates. Clicking on a component in the workflow will display a set of properties or code blocks. [block:image] { "images": [ { "image": [ "https://files.readme.io/OwLnV7S7RUutG9pSskZu_multi-proxy.png", "multi-proxy.png", "1436", "915", "#941f21", "" ] } ] } [/block] ## The available components in the workflow are: ## 1. Proxy Endpoint Properties [block:image] { "images": [ { "image": [ "https://files.readme.io/DMSLxN8ZSZq668KoyHNM_user-guide-proxy-endpoints-proxy-endpoint-properties.png", "user-guide-proxy-endpoints-proxy-endpoint-properties.png", "1280", "73", "#f09422", "" ] } ] } [/block] This is the top-level workflow component that contains properties for the Proxy Endpoint. Properties include: [block:parameters] { "data": { "h-0": "Property", "h-1": "Description", "0-0": "**Name**", "0-1": "A human-friendly name for your Proxy Endpoint.", "2-0": "**Active**", "2-1": "Determines the status of the Proxy Endpoint, whether it is Active (reachable via HTTP and will execute the workflow) or Inactive (will not respond to an inbound request).
 Inactive Proxies, if accessed by a developer, will return 404.", "3-0": "**CORS**", "3-1": "(Cross-Origin Resource Sharing) allows the developer to be able to communicate with a cross-domain location from a browser that contains resources that you may require. When CORS is enabled on a Proxy Endpoint, it inherits the CORS settings defined at the parent API level. To view the CORS settings at the API, navigate to the API list view, hover over the desired API, and select the pencil icon to the edit the API properties.", "4-0": "**Environment**", "4-1": "Select the Environment that you want to use to when referring to Environment variables within JavaScript logic blocks in the Proxy Endpoint workflow and Environment Data in Remote Endpoints. These Environment variables can then be referenced within the JavaScript code blocks of Proxy Endpoints, and also used to specify different sets of Header and query parameters in Remote Endpoints. See [Environments](doc:environments) section for more information.", "5-1": "Offers the convenience of organizing Proxy Endpoints together for better categorization of each Endpoint.", "5-0": "**Group**", "6-1": "Allows you to define a Proxy Endpoint route and assign a method definition of either a GET, POST, PUT and Delete. Multiple routes can be defined for a single Proxy Endpoint, enabling you to provide different endpoint routes to different clients, and manage responses based on the request using a single Proxy Endpoint workflow.\n\n**Make sure the route you define is unique within an API.**", "6-0": "**Edit Routes**", "1-0": "**Description**", "1-1": "A human-friendly description for your Proxy Endpoint. This is useful for you as a developer to keep track of what exactly this endpoint does at a high level. It is also used in the Swagger Docs." }, "cols": 2, "rows": 7 } [/block] ## 2. Add Component Link [block:image] { "images": [ { "image": [ "https://files.readme.io/03qfFCnMQgaFtHFD0TeX_user-guide-proxy-endpoints-add-component-link.png", "user-guide-proxy-endpoints-add-component-link.png", "1280", "73", "#fce3c7", "" ] } ] } [/block] Selecting the “+” icon at the bottom of the workflow view is how you add a new component to your workflow. The components can be dragged and dropped to re-order them within the workflow sequence. Be cautious about your JavaScript logic when changing the sequence of workflow components. [block:image] { "images": [ { "image": [ "https://files.readme.io/Yh1GQjHsSPyuFv2OZ0ef_components.png", "components.png", "1140", "322", "#4c6484", "" ] } ] } [/block] [block:parameters] { "data": { "h-0": "Component Type", "h-1": "Description", "0-0": "**Single Call, Multi-Call, and Logic Component**", "0-1": "Please visit the [Components](doc:components) reference section for more details.", "1-0": "**Shared Component**", "1-1": "Consists of:\n1. **Component Reference** - a reference to a shared component you have defined outside of this specific proxy. These are great for repeated code steps." }, "cols": 2, "rows": 2 } [/block] ## 3. Shared Component [block:image] { "images": [ { "image": [ "https://files.readme.io/0c4bGaePQYuKzI2WYugp_shared-icon.png", "shared-icon.png", "97", "126", "#4c6483", "" ] } ] } [/block] A shared component allows the developer to define shared logic that can be reused by many different Proxy Endpoints in an API. [block:image] { "images": [ { "image": [ "https://files.readme.io/V1Dz4uTJOmkshM6Tlwwg_shared.png", "shared.png", "1435", "532", "#64acec", "" ] } ] } [/block] The following properties are available in a shared component: [block:parameters] { "data": { "h-0": "Property", "h-1": "Description", "0-0": "**Component**", "0-1": "The shared component you would like to plug into this step as a component in your Proxy Endpoint." }, "cols": 2, "rows": 1 } [/block] ## 4. Test Component [block:image] { "images": [ { "image": [ "https://files.readme.io/Htno7G15TgGiVQbxSlZL_user-guide-proxy-endpoints-test-component.png", "user-guide-proxy-endpoints-test-component.png", "1280", "73", "#fcf1e2", "" ] } ] } [/block] The test component allows the developer to instantly test a proxy endpoint by executing an API call against a specified route and method. The following properties are available in a test component: [block:parameters] { "data": { "h-0": "Property", "h-1": "Description", "0-0": "**Name**", "1-0": "**Method**", "2-0": "**Route**", "3-0": "**Headers and Query Parameters**", "4-0": "**Content Type and Body**", "0-1": "Specify unique name of the test cases within a proxy endpoint.", "1-1": "Specify a method (GET/POST/PUT/DELETE) to be invoked to run the test.", "2-1": "Select a unique route for the proxy on which test is to be executed. Note that each proxy can have multiple routes defined, hence separate tests needs to be defined for each specific routes within a proxy.", "3-1": "Optionally specify header(s) and query parameter(s) as name-value pairs if required to test a GET or DELETE call.", "4-1": "Optionally specify content type and body as name-value pairs if required to test a POST or PUT call." }, "cols": 2, "rows": 5 } [/block] Learn more about how to test your APIs [here](doc:test-your-api-endpoint).