Summary

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

API Stability Preview

Syntax

graphql
createOrUpdateExternalFunction(
       input: CreateOrUpdateExternalFunctionInput!
    ): ExternalFunctionSpecificationOutput!

For the input, you'll have to give the URL for the external function, any parameters needed to use it, etc. See the Input Parameters section for details.

For the results, you can get information on the external function. See the Returned Values section for what's available.

Example

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();

Input Parameters

For the input, 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 Input Datatype

ParameterTypeRequiredDefaultStabilityDescription
Some input parameters may be required, as indicated in the Required column. For return values, this indicates that you are assured a value if the field is requested for 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 Values

For the results, you can get the specification and URL of an external function, along with anything used in its execution. The table below provides more information:

Table: ExternalFunctionSpecificationOutput Datatype

ParameterTypeRequiredDefaultStabilityDescription
Some input parameters may be required, as indicated in the Required column. For return values, this indicates that you are assured a value if the field is requested for 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.