Proxy Request

Proxy Request - kintone.proxy()

This API makes requests to external APIs. CORS errors can be avoided by using this API. For more information on CORS errors, check the following link from the MDN Web Docs:
CORS errors (External link)

Function

kintone.proxy(url, method, headers, data, successCallback, failureCallback)

Parameters

PARAMETER VALUE REQUIRED DESCRIPTION
url String Yes The request URL.
method String Yes The HTTP method. Specify one of the following: GET / POST / PUT / DELETE.
headers Object Yes Specify the request header as an object. To ignore this parameter, input {}.
Sample: { 'Content-Type': 'application/json' }
data Object or String Yes The data that will be sent in the request.To ignore this parameter, input {}.
Applied only for POST/PUT requests. Ignored for GET/DELETE requests.
For GET/DELETE requests, set the parameter on the QueryString of the url instead.
successCallback Function Optional The callback function that will run once the request to the other end of the proxy has finished. It will receive the response body (string), the status code (number) and the response header (object) as parameters from the external API.

If ignored, a kintone.Promise object will be returned that can be fulfilled with an array containing a Response body (string), Status code (number) and Response header (object).
failureCallback Function Optional The callback function that will run when the API request to the other end of the proxy fails. It will receive the response body (string) as the parameter from the external API.
If the callback is ignored, a kintone.Promise object will be returned that can be fulfilled with the Response body (string) from the proxy API.

Returns

A kintone.Promise object will be returned if the successCallback or failureCallback parameters are ignored. Otherwise, nothing will be returned.

Sample Request

1
2
3
4
5
kintone.proxy('https://*****.***.net', 'GET', {}, {}, function(body, status, headers) {
  console.log(status, JSON.parse(body), headers);
}, function(error) {
  console.log(error); // Display the response body (string) from the proxy API
});

Sample Request Using Promises

1
2
3
4
5
6
7
8
9
kintone.proxy('https://*****.***.net', 'GET', {}, {}).then(function(args) {
  /*  args[0] -> body(string)
   *  args[1] -> status(number)
   *  args[2] -> headers(object)
   */
  console.log(args[1], JSON.parse(args[0]), args[2]);
}, function(error) {
  console.log(error); // Display the response body (string) from the proxy API
});

Notes

  • Specifying a non-existent url will return an error status code of 503 (DNS Cache Missing).
  • If the request origin subdomain has IP restrictions and attempts to access another App in the same subdomain, the kintone.com IP Addresses must be allowed access. A list of IP Addresses used by Kintone can be found in the following article on the help site:
    Domains and IP Addresses Used by Kintone (External link)
  • Note that this allows any kintone.com domain to access the API. Therefore, it is not recommended from a security standpoint.
  • When using Kintone REST API on your own Kintone subdomain, use the Kintone REST API Request instead of the kintone.proxy() API. For more information on Kintone REST API Request, refer to the following article:
    Kintone REST API Request
  • When using this API to execute external APIs, cookies that should be generated at the API destination are not automatically generated.
  • The Content-Length header and Transfer-Encoding headers are automatically added if the HTTP Method is set to POST or PUT. Explicitly setting when making requests will cause an error.
  • Any kind of Content-type can be used.

Limitations

  • The following are the limitations on external API responses to be executed:
    • The maximum lines of the response header from the other end of the proxy is 100 lines, and the maximum size for each line is 8,180 bytes.
    • The maximum size of the response body from the other end of the proxy is 10MB. Errors will occur if lines or sizes go over the maximum.
    • This API can only handle a response body of characters. Images, or other binary data are not supported.
  • Communication with servers using self-signed certificates is not possible.