For the complete documentation index, see llms.txt. This page is also available as Markdown.

Network Policies

Network policies are named IP allow and deny lists that control where API tokens, MCP servers, and users may connect from. A policy takes effect only once it is assigned — through _networkPolicyId on an API token or MCP server, or in account settings for workspace-user and end-user sign-in — and each environment (production or sandbox) keeps its own library of policies. Network policies must be enabled for the account, and only the account owner and administrators can manage them.

Network policy schema

List network policies

get
/v1/networkpolicies

Returns the policies of the caller's environment, most recently modified first. Policies in the recycle bin are not included. The include and exclude projection parameters used by other list endpoints are not supported here.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Query parameters
limitinteger · min: 1 · max: 1000Optional

Maximum number of policies to return per page.

Example: 100
sort_bystring · enumOptional

Field to order the page by. lastModified lists the most recently changed policy first; name lists alphabetically.

Example: namePossible values:
afterstringOptional

Opaque cursor for forward pagination. Pass the value from the Link response header (rel="next") to fetch the next page.

Responses
200

Array of network policies.

application/json
get/v1/networkpolicies
GET /v1/networkpolicies HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
  {
    "_id": "6ab1f501b9e454749402c749",
    "_userId": "624cb0346309dc3a543733a2",
    "name": "Corporate VPN egress",
    "description": "Office and VPN egress ranges. Deny beats allow.",
    "ipAllowList": [
      "10.0.0.0/8",
      "203.0.113.5/32",
      "2001:db8::/32"
    ],
    "ipDenyList": [
      "198.51.100.0/24"
    ],
    "createdAt": "2026-09-22T03:24:49.115Z",
    "lastModified": "2026-09-22T03:27:28.318Z"
  },
  {
    "_id": "6ab1ebbfb9e4547494ff7558",
    "_userId": "624cb0346309dc3a543733a2",
    "name": "Block known scanners",
    "ipAllowList": [],
    "ipDenyList": [
      "198.51.100.7/32",
      "192.0.2.0/24"
    ],
    "createdAt": "2026-09-22T02:45:19.304Z",
    "lastModified": "2026-09-22T02:45:19.304Z"
  }
]

Create a network policy

post
/v1/networkpolicies

Creates a policy in the caller's environment. Entries in both lists are validated and stored in normalized form — a bare address becomes /32 or /128, IPv6 is compressed — and the response shows the stored values. The new policy restricts nothing until it is assigned to an API token, an MCP server, or account sign-in.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Body

Request body for creating or replacing a network policy.

namestring · max: 150Required

Display name shown wherever a policy is picked or listed. Unique among the environment's policies that are not in the recycle bin.

Example: Corporate VPN egress
descriptionstring · max: 500Optional

Explains what the policy is for and where its ranges come from. Omit on PUT to clear it.

Example: Office and VPN egress ranges. Deny beats allow.
ipAllowListstring[] · max: 200Optional

Source addresses permitted to connect. Each entry is an IPv4 or IPv6 address or CIDR range; bare addresses are stored as /32 or /128. Leave empty to permit every address that ipDenyList does not block. Omitting the field on PUT empties the list.

Example: ["10.0.0.0/8","203.0.113.5","2001:db8::/32"]
ipDenyListstring[] · max: 200Optional

Source addresses refused even when ipAllowList permits them. Same entry format as ipAllowList; deny always wins over allow. Omitting the field on PUT empties the list.

Example: ["198.51.100.0/24"]
Responses
201

Created network policy, with entries in stored form.

application/json

Network policy as returned by the API.

_idstring · objectIdRead-onlyRequired

Unique identifier for the network policy.

Example: 6ab1f501b9e454749402c749
_userIdstring · objectIdRead-onlyRequired

Environment that owns the policy — the account user for production, or the sandbox user for a policy created there. A policy is visible and assignable only within its own environment.

Example: 624cb0346309dc3a543733a2
namestring · max: 150Required

Display name shown wherever a policy is picked or listed. Unique among the environment's policies that are not in the recycle bin.

Example: Corporate VPN egress
descriptionstring · max: 500Optional

Explains what the policy is for. Absent when the policy has no description.

Example: Office and VPN egress ranges. Deny beats allow.
ipAllowListstring[] · max: 200Required

Source addresses permitted to connect, each an IPv4 or IPv6 address or CIDR range in stored form (bare addresses carry /32 or /128). An empty list permits every address that ipDenyList does not block.

Example: ["10.0.0.0/8","203.0.113.5/32","2001:db8::/32"]
ipDenyListstring[] · max: 200Required

Source addresses refused even when ipAllowList permits them. Same entry format and stored form as ipAllowList; deny always wins over allow.

Example: ["198.51.100.0/24"]
createdAtstring · date-timeRead-onlyRequired

Timestamp when the policy was created.

Example: 2026-09-22T03:24:49.115Z
lastModifiedstring · date-timeRead-onlyRequired

Timestamp when the policy was last modified. Updated on every PUT and PATCH that changes a field.

Example: 2026-09-22T03:27:28.318Z
post/v1/networkpolicies
POST /v1/networkpolicies HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 187

{
  "name": "Corporate VPN egress",
  "description": "Office and VPN egress ranges. Deny beats allow.",
  "ipAllowList": [
    "10.0.0.0/8",
    "203.0.113.5",
    "2001:db8::/32"
  ],
  "ipDenyList": [
    "198.51.100.0/24"
  ]
}
{
  "_id": "6ab1f501b9e454749402c749",
  "_userId": "624cb0346309dc3a543733a2",
  "name": "Corporate VPN egress",
  "description": "Office and VPN egress ranges. Deny beats allow.",
  "ipAllowList": [
    "10.0.0.0/8",
    "203.0.113.5/32",
    "2001:db8::/32"
  ],
  "ipDenyList": [
    "198.51.100.0/24"
  ],
  "createdAt": "2026-09-22T03:24:49.115Z",
  "lastModified": "2026-09-22T03:24:49.115Z"
}

Get a network policy

get
/v1/networkpolicies/{_id}

Returns a single policy from the caller's environment. A policy that has been moved to the recycle bin, or that belongs to another environment, returns 404.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
_idstring · objectIdRequired

Network policy ID.

Example: 6ab1f501b9e454749402c749
Responses
200

Network policy.

application/json

Network policy as returned by the API.

_idstring · objectIdRead-onlyRequired

Unique identifier for the network policy.

Example: 6ab1f501b9e454749402c749
_userIdstring · objectIdRead-onlyRequired

Environment that owns the policy — the account user for production, or the sandbox user for a policy created there. A policy is visible and assignable only within its own environment.

Example: 624cb0346309dc3a543733a2
namestring · max: 150Required

Display name shown wherever a policy is picked or listed. Unique among the environment's policies that are not in the recycle bin.

Example: Corporate VPN egress
descriptionstring · max: 500Optional

Explains what the policy is for. Absent when the policy has no description.

Example: Office and VPN egress ranges. Deny beats allow.
ipAllowListstring[] · max: 200Required

Source addresses permitted to connect, each an IPv4 or IPv6 address or CIDR range in stored form (bare addresses carry /32 or /128). An empty list permits every address that ipDenyList does not block.

Example: ["10.0.0.0/8","203.0.113.5/32","2001:db8::/32"]
ipDenyListstring[] · max: 200Required

Source addresses refused even when ipAllowList permits them. Same entry format and stored form as ipAllowList; deny always wins over allow.

Example: ["198.51.100.0/24"]
createdAtstring · date-timeRead-onlyRequired

Timestamp when the policy was created.

Example: 2026-09-22T03:24:49.115Z
lastModifiedstring · date-timeRead-onlyRequired

Timestamp when the policy was last modified. Updated on every PUT and PATCH that changes a field.

Example: 2026-09-22T03:27:28.318Z
get/v1/networkpolicies/{_id}
GET /v1/networkpolicies/{_id} HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "_id": "6ab1f501b9e454749402c749",
  "_userId": "624cb0346309dc3a543733a2",
  "name": "Corporate VPN egress",
  "description": "Office and VPN egress ranges. Deny beats allow.",
  "ipAllowList": [
    "10.0.0.0/8",
    "203.0.113.5/32",
    "2001:db8::/32"
  ],
  "ipDenyList": [
    "198.51.100.0/24"
  ],
  "createdAt": "2026-09-22T03:24:49.115Z",
  "lastModified": "2026-09-22T03:27:28.318Z"
}

Replace a network policy

put
/v1/networkpolicies/{_id}

Replaces the policy with the request body. Fields left out are cleared: an omitted description is removed and an omitted ipAllowList or ipDenyList becomes empty, which lifts every restriction that list imposed. Entries are validated and normalized exactly as on create. The change applies to every token, MCP server, and sign-in setting the policy is assigned to.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
_idstring · objectIdRequired

Network policy ID.

Example: 6ab1f501b9e454749402c749
Body

Request body for creating or replacing a network policy.

namestring · max: 150Required

Display name shown wherever a policy is picked or listed. Unique among the environment's policies that are not in the recycle bin.

Example: Corporate VPN egress
descriptionstring · max: 500Optional

Explains what the policy is for and where its ranges come from. Omit on PUT to clear it.

Example: Office and VPN egress ranges. Deny beats allow.
ipAllowListstring[] · max: 200Optional

Source addresses permitted to connect. Each entry is an IPv4 or IPv6 address or CIDR range; bare addresses are stored as /32 or /128. Leave empty to permit every address that ipDenyList does not block. Omitting the field on PUT empties the list.

Example: ["10.0.0.0/8","203.0.113.5","2001:db8::/32"]
ipDenyListstring[] · max: 200Optional

Source addresses refused even when ipAllowList permits them. Same entry format as ipAllowList; deny always wins over allow. Omitting the field on PUT empties the list.

Example: ["198.51.100.0/24"]
Responses
200

Updated network policy, with entries in stored form.

application/json

Network policy as returned by the API.

_idstring · objectIdRead-onlyRequired

Unique identifier for the network policy.

Example: 6ab1f501b9e454749402c749
_userIdstring · objectIdRead-onlyRequired

Environment that owns the policy — the account user for production, or the sandbox user for a policy created there. A policy is visible and assignable only within its own environment.

Example: 624cb0346309dc3a543733a2
namestring · max: 150Required

Display name shown wherever a policy is picked or listed. Unique among the environment's policies that are not in the recycle bin.

Example: Corporate VPN egress
descriptionstring · max: 500Optional

Explains what the policy is for. Absent when the policy has no description.

Example: Office and VPN egress ranges. Deny beats allow.
ipAllowListstring[] · max: 200Required

Source addresses permitted to connect, each an IPv4 or IPv6 address or CIDR range in stored form (bare addresses carry /32 or /128). An empty list permits every address that ipDenyList does not block.

Example: ["10.0.0.0/8","203.0.113.5/32","2001:db8::/32"]
ipDenyListstring[] · max: 200Required

Source addresses refused even when ipAllowList permits them. Same entry format and stored form as ipAllowList; deny always wins over allow.

Example: ["198.51.100.0/24"]
createdAtstring · date-timeRead-onlyRequired

Timestamp when the policy was created.

Example: 2026-09-22T03:24:49.115Z
lastModifiedstring · date-timeRead-onlyRequired

Timestamp when the policy was last modified. Updated on every PUT and PATCH that changes a field.

Example: 2026-09-22T03:27:28.318Z
put/v1/networkpolicies/{_id}
PUT /v1/networkpolicies/{_id} HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 203

{
  "name": "Corporate VPN egress",
  "description": "Office and VPN egress ranges. Deny beats allow.",
  "ipAllowList": [
    "10.0.0.0/8",
    "203.0.113.5",
    "2001:db8::/32",
    "172.16.0.0/12"
  ],
  "ipDenyList": [
    "198.51.100.0/24"
  ]
}
{
  "_id": "6ab1f501b9e454749402c749",
  "_userId": "624cb0346309dc3a543733a2",
  "name": "Corporate VPN egress",
  "description": "Office and VPN egress ranges. Deny beats allow.",
  "ipAllowList": [
    "10.0.0.0/8",
    "203.0.113.5/32",
    "2001:db8::/32",
    "172.16.0.0/12"
  ],
  "ipDenyList": [
    "198.51.100.0/24"
  ],
  "createdAt": "2026-09-22T03:24:49.115Z",
  "lastModified": "2026-09-22T03:30:21.527Z"
}

Delete a network policy

delete
/v1/networkpolicies/{_id}

Moves the policy to the recycle bin, where it is retained for 30 days and can be restored. A policy that is still assigned to an API token, MCP server, or account sign-in setting is not deleted: the request fails with 409 network_policy_in_use and info lists every assignment. Repeat with force=true to clear those assignments and delete the policy — every principal it was assigned to loses the restriction. Use GET /v1/networkpolicies/{_id}/dependencies to review the assignments first.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
_idstring · objectIdRequired

Network policy ID.

Example: 6ab1f501b9e454749402c749
Query parameters
forcebooleanOptional

When true, clears the policy from every API token, MCP server, and account sign-in setting it is assigned to, then deletes it. Without it, an assigned policy returns 409 and nothing changes.

Default: falseExample: true
Responses
204

Network policy moved to the recycle bin.

No content

delete/v1/networkpolicies/{_id}
DELETE /v1/networkpolicies/{_id} HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*

No content

Patch a network policy

patch
/v1/networkpolicies/{_id}

Partially updates a policy with a JSON Patch document (RFC 6902). Fields the document does not touch are preserved, unlike PUT. Whitelisted paths:

Path
Operations

/name

add, replace

/description

add, replace, remove

/ipAllowList, /ipDenyList

replace the whole list

/ipAllowList/-, /ipDenyList/-

add one entry at the end

/ipAllowList/{index}, /ipDenyList/{index}

add or replace one entry

Entries are validated and normalized exactly as on create. move, copy, and test on /name or either list return 400 invalid_patch_operation; removing a single list entry by index is not supported (422) — replace the whole list instead. Any other path returns 422.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
_idstring · objectIdRequired

Network policy ID.

Example: 6ab1f501b9e454749402c749
Bodyobject · JsonPatchOperation[]

A JSON Patch document (RFC 6902). Send an array of patch operations on whitelisted fields — all other paths are rejected with 422.

opstring · enumRequired

The operation to perform.

Possible values:
pathstringRequired

JSON Pointer (RFC 6901) to the field to patch. Only whitelisted paths are accepted — unlisted paths return 422 with "<path> is not a whitelisted property".

valueanyOptional

The new value to set. Required for replace and add, omit for remove.

Responses
204

Network policy patched.

No content

patch/v1/networkpolicies/{_id}
PATCH /v1/networkpolicies/{_id} HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 71

[
  {
    "op": "replace",
    "path": "/name",
    "value": "Corporate VPN egress (2026)"
  }
]

No content

List assignments of a network policy

get
/v1/networkpolicies/{_id}/dependencies

Returns every API token, MCP server, and account sign-in setting the policy is assigned to within its own environment. Call it before DELETE to see what a force=true delete would clear. Unlike other /dependencies endpoints, the response is a fixed object rather than a map keyed by resource type.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
_idstring · objectIdRequired

Network policy ID.

Example: 6ab1f501b9e454749402c749
Responses
200

Assignments of the policy. All keys are present even when the policy is unassigned.

application/json

Every place a network policy is assigned within its own environment. All four keys are always present; an unassigned policy returns empty arrays and false flags.

get/v1/networkpolicies/{_id}/dependencies
GET /v1/networkpolicies/{_id}/dependencies HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "mcpservers": [
    {
      "_id": "6ab1f4a95af4c5a3ea6b0a28",
      "name": "Order lookup MCP server"
    }
  ],
  "accesstokens": [],
  "account": {
    "workspaceUsers": false,
    "workspaceUserEnvironments": [],
    "endUsers": false,
    "endUserEnvironments": []
  }
}

Get audit log for a network policy

get
/v1/networkpolicies/{_id}/audit

Returns the change history for a network policy, newest first. Each entry records one event with who made the change, when, and which fields were affected. Entries survive the policy's deletion and purge; the route itself returns 404 once the policy has been purged, so use GET /v1/audit?resourceType=networkpolicy to read the history of a purged policy.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
_idstring · objectIdRequired

Network policy ID.

Example: 6ab1f501b9e454749402c749
Query parameters
limitinteger · min: 1 · max: 1000Optional

Maximum number of audit entries to return per page.

Default: 1000Example: 100
afterstringOptional

Opaque pagination cursor for the next page. Take it from the after value in the Link response header's rel="next" URL rather than constructing it.

Example: W3siJGRhdGUiOiIyMDI2LTA5LTIyVDAzOjI3OjEwLjM5N1oifSwiNmFiMWY1OGU0ZGI1Njg4ZmQ4Y2FjMTc5Il0
fromstring · date-timeOptional

Only return entries at or after this timestamp.

Example: 2026-09-01T00:00:00.000Z
tostring · date-timeOptional

Only return entries at or before this timestamp.

Example: 2026-09-30T23:59:59.999Z
actionstring · enumOptional

Filter by the change type. Maps to the event field on each entry.

Example: updatePossible values:
sourcestring · enumOptional

Filter by how the change was initiated.

Example: apiPossible values:
_byUserIdstring · objectIdOptional

Filter to changes performed by a single user.

Example: 624cb0346309dc3a543733a2
Responses
200

Array of audit entries, newest first.

application/json
get/v1/networkpolicies/{_id}/audit
GET /v1/networkpolicies/{_id}/audit HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
  {
    "_id": "6ab1f5a0b9e454749402f002",
    "resourceType": "networkpolicy",
    "_resourceId": "6ab1f501b9e454749402c749",
    "source": "api",
    "event": "update",
    "time": "2026-09-22T03:27:28.318Z",
    "byUser": {
      "_id": "624cb0346309dc3a543733a2",
      "email": "user@example.com",
      "name": "Jane Doe"
    },
    "fieldChanges": [
      {
        "fieldPath": "ipAllowList",
        "oldValue": [
          "10.0.0.0/8"
        ],
        "newValue": [
          "10.0.0.0/8",
          "172.16.0.0/12"
        ]
      }
    ]
  },
  {
    "_id": "6ab1f501b9e454749402c752",
    "resourceType": "networkpolicy",
    "_resourceId": "6ab1f501b9e454749402c749",
    "source": "api",
    "event": "create",
    "time": "2026-09-22T03:24:49.115Z",
    "byUser": {
      "_id": "624cb0346309dc3a543733a2",
      "email": "user@example.com",
      "name": "Jane Doe"
    },
    "fieldChanges": []
  }
]

Last updated

Was this helpful?