API Stability Preview

The createOrUpdateExternalFunction() GraphQL mutation field is used to creates or updates an external function specification. This is a preview and may change.

To get some details on an external function, use the getExternalFunction() query. Use the addFunctionsToAllowList() and the removeFunctionsFromAllowList() mutations to enable and disable functions for use with specified language version. To delete an external function, use deleteExternalFunction().

Syntax

graphql
createOrUpdateExternalFunction(
       input: CreateOrUpdateExternalFunctionInput!
    ): ExternalFunctionSpecificationOutput!

Example

Below is an example of how this mutation field might be used:

Raw
graphql
mutation {
  createOrUpdateExternalFunction(input:
       { name: "my-ext-function",
         procedureURL: "https://function.company.com",
         parameters: [{name: "parameter1", parameterType: String } ],
         description: "Cool External Function",
         kind: { name: General }
      } )
  { name }
}
Mac OS or Linux (curl)
shell
curl -v -X POST $YOUR_LOGSCALE_URL/graphql \
    -H "Authorization: Bearer $TOKEN" \
    -H "Content-Type: application/json" \
    -d @- << EOF
{"query" : "mutation {
  createOrUpdateExternalFunction(input:
       { name: \"my-ext-function\",
         procedureURL: \"https://function.company.com\",
         parameters: [{name: \"parameter1\", parameterType: String } ],
         description: \"Cool External Function\",
         kind: { name: General }
      } )
  { name }
}"
}
EOF
Mac OS or Linux (curl) One-line
shell
curl -v -X POST $YOUR_LOGSCALE_URL/graphql \
    -H "Authorization: Bearer $TOKEN" \
    -H "Content-Type: application/json" \
    -d @- << EOF
{"query" : "mutation {
  createOrUpdateExternalFunction(input:
       { name: \"my-ext-function\",
         procedureURL: \"https://function.company.com\",
         parameters: [{name: \"parameter1\", parameterType: String } ],
         description: \"Cool External Function\",
         kind: { name: General }
      } )
  { name }
}"
}
EOF
Windows Cmd and curl
shell
curl -v -X POST $YOUR_LOGSCALE_URL/graphql ^
    -H "Authorization: Bearer $TOKEN" ^
    -H "Content-Type: application/json" ^
    -d @'{"query" : "mutation { ^
  createOrUpdateExternalFunction(input: ^
       { name: \"my-ext-function\", ^
         procedureURL: \"https://function.company.com\", ^
         parameters: [{name: \"parameter1\", parameterType: String } ], ^
         description: \"Cool External Function\", ^
         kind: { name: General } ^
      } ) ^
  { name } ^
}" ^
} '
Windows Powershell and curl
powershell
curl.exe -X POST 
    -H "Authorization: Bearer $TOKEN"
    -H "Content-Type: application/json"
    -d '{"query" : "mutation {
  createOrUpdateExternalFunction(input:
       { name: \"my-ext-function\",
         procedureURL: \"https://function.company.com\",
         parameters: [{name: \"parameter1\", parameterType: String } ],
         description: \"Cool External Function\",
         kind: { name: General }
      } )
  { name }
}"
}'
    "$YOUR_LOGSCALE_URL/graphql"
Perl
perl
#!/usr/bin/perl

use HTTP::Request;
use LWP;

my $TOKEN = "TOKEN";

my $uri = '$YOUR_LOGSCALE_URL/graphql';

my $query = "mutation {
  createOrUpdateExternalFunction(input:
       { name: \"my-ext-function\",
         procedureURL: \"https://function.company.com\",
         parameters: [{name: \"parameter1\", parameterType: String } ],
         description: \"Cool External Function\",
         kind: { name: General }
      } )
  { name }
}";
$query =~ s/\n/ /g;
my $json = sprintf('{"query" : "%s"}',$query);
my $req = HTTP::Request->new("POST", $uri );

$req->header("Authorization" => "Bearer $TOKEN");
$req->header("Content-Type" => "application/json");

$req->content( $json );

my $lwp = LWP::UserAgent->new;

my $result = $lwp->request( $req );

print $result->{"_content"},"\n";
Python
python
#! /usr/local/bin/python3

import requests

url = '$YOUR_LOGSCALE_URL/graphql'
mydata = r'''{"query" : "mutation {
  createOrUpdateExternalFunction(input:
       { name: \"my-ext-function\",
         procedureURL: \"https://function.company.com\",
         parameters: [{name: \"parameter1\", parameterType: String } ],
         description: \"Cool External Function\",
         kind: { name: General }
      } )
  { name }
}"
}'''

resp = requests.post(url,
                     data = mydata,
                     headers = {
   "Authorization" : "Bearer $TOKEN",
   "Content-Type" : "application/json"
}
)

print(resp.text)
Node.js
javascript
const https = require('https');

const data = JSON.stringify(
    {"query" : "mutation {
  createOrUpdateExternalFunction(input:
       { name: \"my-ext-function\",
         procedureURL: \"https://function.company.com\",
         parameters: [{name: \"parameter1\", parameterType: String } ],
         description: \"Cool External Function\",
         kind: { name: General }
      } )
  { name }
}"
}
);


const options = {
  hostname: '$YOUR_LOGSCALE_URL',
  path: 'graphql',
  port: 443,
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Content-Length': data.length,
    Authorization: 'BEARER ' + process.env.TOKEN,
    'User-Agent': 'Node',
  },
};

const req = https.request(options, (res) => {
  let data = '';
  console.log(`statusCode: ${res.statusCode}`);

  res.on('data', (d) => {
    data += d;
  });
  res.on('end', () => {
    console.log(JSON.parse(data).data);
  });
});

req.on('error', (error) => {
  console.error(error);
});

req.write(data);
req.end();

Given Datatype

For this input datatype, you would give the URL for the external function, any parameters needed to use it, and other related factors. These are listed and explained, along with links to sub-parameters, in the table below:

Table: CreateOrUpdateExternalFunctionInput

ParameterTypeRequiredDefaultStabilityDescription
Some arguments may be required, as indicated in the Required column. For return datatypes, this indicates that you must specify which fields you want returned in the results.
Table last updated: Sep 17, 2024
descriptionstringyes PreviewThe description for the external function.
kindKindInputyes PreviewThe kind of external function. It defines how the external function is executed. See KindInput.
namestringyes PreviewThe name of the external function.
parameters[ParameterSpecificationInput]yes PreviewThe parameter specifications for the external function. See ParameterSpecificationInput.
procedureURLstringyes PreviewThe URL for the external function.

Returned Datatype

This returned datatype can provide the specification and URL of an external function, along with any parameters used in its execution. The table below provides more information and links to tables containing sub-parameters:

Table: ExternalFunctionSpecificationOutput

ParameterTypeRequiredDefaultStabilityDescription
Some arguments may be required, as indicated in the Required column. For return datatypes, this indicates that you must specify which fields you want returned in the results.
Table last updated: Sep 24, 2024
descriptionstringyes PreviewThe description for the external function.
kindKindOutputyes PreviewThe kind of external function, how it's executed. See KindOutput.
namestringyes PreviewThe name of the external function.
parameters[ParameterSpecificationOutput]yes PreviewThe parameter specifications for the external function. See ParameterSpecificationOutput.
procedureURLstringyes PreviewThe URL for the external function.