Summary

The createIPFilter() mutation creates an IP filter in LogScale. IP filters control inbound access based on IP addresses or CIDR ranges. A filter expression uses an allow or deny directive followed by an IP address or CIDR range. After creating a filter, apply it to your organization or repository configuration to enforce access control. To modify a filter, use updateIPFilter() instead.

Syntax

graphql
createIPFilter(
      input: IPFilterInput!
   ): IPFilter!

The mutation accepts a single required argument, input, of type IPFilterInput!. The IPFilterInput type has two required fields: name and ipFilter. The return type is IPFilter!, which is non-null on success. The Input Parameters section describes the IPFilterInput fields. The Returned Values section lists the available fields on the returned IPFilter object.

Example

Raw
graphql
mutation {
  createIPFilter(input:
       { name: "no-local-filter"
         ipFilter: "deny 127.0.0.1" } )
  { id }
}
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 {
  createIPFilter(input:
       { name: \"no-local-filter\"
         ipFilter: \"deny 127.0.0.1\" } )
  { id }
}"
}
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 {
  createIPFilter(input:
       { name: \"no-local-filter\"
         ipFilter: \"deny 127.0.0.1\" } )
  { id }
}"
}
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 { ^
  createIPFilter(input: ^
       { name: \"no-local-filter\" ^
         ipFilter: \"deny 127.0.0.1\" } ) ^
  { id } ^
}" ^
} '
Windows Powershell and curl
powershell
curl.exe -X POST 
    -H "Authorization: Bearer $TOKEN"
    -H "Content-Type: application/json"
    -d '{"query" : "mutation {
  createIPFilter(input:
       { name: \"no-local-filter\"
         ipFilter: \"deny 127.0.0.1\" } )
  { id }
}"
}'
    "$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 {
  createIPFilter(input:
       { name: \"no-local-filter\"
         ipFilter: \"deny 127.0.0.1\" } )
  { id }
}";
$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 {
  createIPFilter(input:
       { name: \"no-local-filter\"
         ipFilter: \"deny 127.0.0.1\" } )
  { id }
}"
}'''

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 {
  createIPFilter(input:
       { name: \"no-local-filter\"
         ipFilter: \"deny 127.0.0.1\" } )
  { id }
}"
}
);


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();
Example Responses
Success (HTTP Response Code 200 OK)
json
{
  "data": {
    "createIPFilter": {
      "id": "abc123"
    }
  }
}

Input Parameters

The IPFilterInput object requires two fields: name and ipFilter. The ipFilter field takes a filter expression string. Each expression pairs an allow or deny directive with an IP address or CIDR range, for example, deny 127.0.0.1. For full filter expression syntax, see IP Filter. The following table describes both fields.

Table: IPFilterInput Input Datatype

ParameterTypeRequiredDefaultStabilityAvailabilityDescription
ipFilterStringyes Long-Term The IP filter to use.
nameStringyes Long-Term The name of the IP filter.

Returned Values

The mutation returns an IPFilter object representing the created IP filter. Request the id field to obtain the system-assigned identifier. Use this identifier in subsequent updateIPFilter() or deleteIPFilter() calls. Request ipFilter and name to confirm the values LogScale recorded.

Table: IPFilter Datatype

ParameterTypeRequiredDefaultStabilityAvailabilityDescription
idStringyes Long-Term The unique identifier for the IP filter.
ipFilterStringyes Long-Term The IP filter itself.
nameStringyes Long-Term The name for the IP filter.