Cockroach Labs Egress Rules API

The Egress Rules API from Cockroach Labs — 3 operation(s) for egress rules.

Operations 6

GET /api/v1/clusters/{cluster_id}/networking/egress-rules List all egress rules associated with a cluster #
POST /api/v1/clusters/{cluster_id}/networking/egress-rules Add an egress rule #
POST /api/v1/clusters/{cluster_id}/networking/egress-rules/egress-traffic-policy Outbound traffic management #
DELETE /api/v1/clusters/{cluster_id}/networking/egress-rules/{rule_id} Delete an existing egress rule #
GET /api/v1/clusters/{cluster_id}/networking/egress-rules/{rule_id} Get an existing egress rule #
PATCH /api/v1/clusters/{cluster_id}/networking/egress-rules/{rule_id} Edit an existing egress rule #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/cockroach-labs:cockroach-labs-egress-rules-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

cockroach-labs-egress-rules-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  contact:
    email: support@cockroachlabs.com
    name: Cockroach Labs Support
    url: https://support.cockroachlabs.com
  description: An API for managing CockroachDB Cloud resources
  title: CockroachDB Cloud Egress Rules API
  version: '2026-09-15'
servers:
- url: https://cockroachlabs.cloud
security:
- Bearer: []
tags:
- name: Egress Rules
paths:
  /api/v1/clusters/{cluster_id}/networking/egress-rules:
    get:
      operationId: CockroachCloud_ListEgressRules
      summary: List all egress rules associated with a cluster
      description: 'Sort order: Name


        Can be used by the following roles assigned at the organization, folder or cluster scope:

        - CLUSTER_ADMIN

        - CLUSTER_OPERATOR_WRITER

        - AUDITOR'
      parameters:
      - name: cluster_id
        in: path
        description: 'cluster_id identifies the CockroachDB cluster owning the set of returned

          egress rules.'
        required: true
        schema:
          type: string
      - name: pagination.page
        in: query
        schema:
          type: string
      - name: pagination.limit
        in: query
        schema:
          type: integer
          format: int32
      - name: pagination.as_of_time
        in: query
        schema:
          type: string
          format: date-time
      - name: pagination.sort_order
        in: query
        description: " - ASC: Sort in ascending order. This is the default unless otherwise specified.\n - DESC: Sort in descending order."
        schema:
          type: string
          enum:
          - ASC
          - DESC
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListEgressRulesResponse'
        '400':
          description: Returned when a request field is invalid.
          content:
            application/json:
              schema: {}
        '401':
          description: Returned when the token bearer cannot be authenticated.
          content:
            application/json:
              schema: {}
        '403':
          description: Returned when the user does not have permission to access the resource.
          content:
            application/json:
              schema: {}
        '404':
          description: Returned when the resource does not exist.
          content:
            application/json:
              schema: {}
        '500':
          description: Server error
          content:
            application/json:
              schema: {}
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
      tags:
      - Egress Rules
      x-badges:
      - color: blue
        label: PREVIEW
      x-codeSamples:
      - lang: Shell + Curl
        source: "curl --request GET \\\n  --url 'https://cockroachlabs.cloud/api/v1/clusters/{cluster_id}/networking/egress-rules?pagination.page=SOME_STRING_VALUE&pagination.limit=SOME_INTEGER_VALUE&pagination.as_of_time=SOME_STRING_VALUE&pagination.sort_order=SOME_STRING_VALUE' \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'"
    post:
      operationId: CockroachCloud_AddEgressRule
      summary: Add an egress rule
      description: 'Can be used by the following roles assigned at the organization, folder or cluster scope:

        - CLUSTER_ADMIN

        - CLUSTER_OPERATOR_WRITER'
      parameters:
      - name: cluster_id
        in: path
        description: cluster_id identifies the cluster to which this egress rule applies.
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddEgressRuleBody'
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddEgressRuleResponse'
        '400':
          description: Returned when a request field is invalid.
          content:
            application/json:
              schema: {}
        '401':
          description: Returned when the token bearer cannot be authenticated.
          content:
            application/json:
              schema: {}
        '403':
          description: Returned when the user does not have permission to access the resource.
          content:
            application/json:
              schema: {}
        '404':
          description: Returned when the resource does not exist.
          content:
            application/json:
              schema: {}
        '500':
          description: Server error
          content:
            application/json:
              schema: {}
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
      tags:
      - Egress Rules
      x-badges:
      - color: blue
        label: PREVIEW
      x-codeSamples:
      - lang: Shell + Curl
        source: "curl --request POST \\\n  --url https://cockroachlabs.cloud/api/v1/clusters/{cluster_id}/networking/egress-rules \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --json '{\"cluster_id\":\"35c4abb2-bb66-46d7-afed-25ebef5ed100\",\"description\":\"egress for GCP storage buckets\",\"destination\":\"storage.googleapis.com\",\"name\":\"roach-buckets\",\"ports\":[443,80],\"type\":\"FQDN\"}'"
  /api/v1/clusters/{cluster_id}/networking/egress-rules/egress-traffic-policy:
    post:
      operationId: CockroachCloud_SetEgressTrafficPolicy
      summary: Outbound traffic management
      description: 'Can be used by the following roles assigned at the organization, folder or cluster scope:

        - CLUSTER_ADMIN

        - CLUSTER_OPERATOR_WRITER'
      parameters:
      - name: cluster_id
        in: path
        description: cluster_id identifies the cluster whose egress policy will be updated.
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetEgressTrafficPolicyBody'
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Returned when a request field is invalid.
          content:
            application/json:
              schema: {}
        '401':
          description: Returned when the token bearer cannot be authenticated.
          content:
            application/json:
              schema: {}
        '403':
          description: Returned when the user does not have permission to access the resource.
          content:
            application/json:
              schema: {}
        '404':
          description: Returned when the resource does not exist.
          content:
            application/json:
              schema: {}
        '500':
          description: Server error
          content:
            application/json:
              schema: {}
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
      tags:
      - Egress Rules
      x-badges:
      - color: blue
        label: PREVIEW
      x-codeSamples:
      - lang: Shell + Curl
        source: "curl --request POST \\\n  --url https://cockroachlabs.cloud/api/v1/clusters/{cluster_id}/networking/egress-rules/egress-traffic-policy \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --json '{\"allow_all\":true,\"idempotency_key\":\"string\"}'"
  /api/v1/clusters/{cluster_id}/networking/egress-rules/{rule_id}:
    delete:
      operationId: CockroachCloud_DeleteEgressRule
      summary: Delete an existing egress rule
      description: 'Can be used by the following roles assigned at the organization, folder or cluster scope:

        - CLUSTER_ADMIN

        - CLUSTER_OPERATOR_WRITER'
      parameters:
      - name: cluster_id
        in: path
        description: cluster_id uniquely identifies the cluster owning the egress rule.
        required: true
        schema:
          type: string
      - name: rule_id
        in: path
        description: rule_id is the UUID of an existing egress rule. This field is required.
        required: true
        schema:
          type: string
      - name: idempotency_key
        in: query
        description: 'idempotency_key uniquely identifies this request. If not set, it will be

          set by the server.'
        schema:
          type: string
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteEgressRuleResponse'
        '400':
          description: Returned when a request field is invalid.
          content:
            application/json:
              schema: {}
        '401':
          description: Returned when the token bearer cannot be authenticated.
          content:
            application/json:
              schema: {}
        '403':
          description: Returned when the user does not have permission to access the resource.
          content:
            application/json:
              schema: {}
        '404':
          description: Returned when the resource does not exist.
          content:
            application/json:
              schema: {}
        '500':
          description: Server error
          content:
            application/json:
              schema: {}
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
      tags:
      - Egress Rules
      x-badges:
      - color: blue
        label: PREVIEW
      x-codeSamples:
      - lang: Shell + Curl
        source: "curl --request DELETE \\\n  --url 'https://cockroachlabs.cloud/api/v1/clusters/{cluster_id}/networking/egress-rules/{rule_id}?idempotency_key=SOME_STRING_VALUE' \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'"
    get:
      operationId: CockroachCloud_GetEgressRule
      summary: Get an existing egress rule
      description: 'Can be used by the following roles assigned at the organization, folder or cluster scope:

        - CLUSTER_ADMIN

        - CLUSTER_OPERATOR_WRITER

        - AUDITOR'
      parameters:
      - name: cluster_id
        in: path
        description: cluster_id uniquely identifies the cluster owning the egress rule.
        required: true
        schema:
          type: string
      - name: rule_id
        in: path
        description: rule_id is the UUID of an existing egress rule.
        required: true
        schema:
          type: string
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetEgressRuleResponse'
        '400':
          description: Returned when a request field is invalid.
          content:
            application/json:
              schema: {}
        '401':
          description: Returned when the token bearer cannot be authenticated.
          content:
            application/json:
              schema: {}
        '403':
          description: Returned when the user does not have permission to access the resource.
          content:
            application/json:
              schema: {}
        '404':
          description: Returned when the resource does not exist.
          content:
            application/json:
              schema: {}
        '500':
          description: Server error
          content:
            application/json:
              schema: {}
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
      tags:
      - Egress Rules
      x-badges:
      - color: blue
        label: PREVIEW
      x-codeSamples:
      - lang: Shell + Curl
        source: "curl --request GET \\\n  --url https://cockroachlabs.cloud/api/v1/clusters/{cluster_id}/networking/egress-rules/{rule_id} \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'"
    patch:
      operationId: CockroachCloud_EditEgressRule
      summary: Edit an existing egress rule
      description: 'Can be used by the following roles assigned at the organization, folder or cluster scope:

        - CLUSTER_ADMIN

        - CLUSTER_OPERATOR_WRITER'
      parameters:
      - name: cluster_id
        in: path
        description: cluster_id uniquely identifies the cluster owning the egress rule.
        required: true
        schema:
          type: string
      - name: rule_id
        in: path
        description: rule_id is the UUID of an existing egress rule. This field is required.
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EditEgressRuleBody'
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EditEgressRuleResponse'
        '400':
          description: Returned when a request field is invalid.
          content:
            application/json:
              schema: {}
        '401':
          description: Returned when the token bearer cannot be authenticated.
          content:
            application/json:
              schema: {}
        '403':
          description: Returned when the user does not have permission to access the resource.
          content:
            application/json:
              schema: {}
        '404':
          description: Returned when the resource does not exist.
          content:
            application/json:
              schema: {}
        '500':
          description: Server error
          content:
            application/json:
              schema: {}
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
      tags:
      - Egress Rules
      x-badges:
      - color: blue
        label: PREVIEW
      x-codeSamples:
      - lang: Shell + Curl
        source: "curl --request PATCH \\\n  --url https://cockroachlabs.cloud/api/v1/clusters/{cluster_id}/networking/egress-rules/{rule_id} \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --json '{\"cluster_id\":\"35c4abb2-bb66-46d7-afed-25ebef5ed100\",\"ports\":[443,80],\"rule_id\":\"35c4abb2-bb66-46d7-afed-25ebef5ed2aa\"}'"
components:
  schemas:
    Any:
      description: "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nIn its binary encoding, an `Any` is an ordinary message; but in other wire\nforms like JSON, it has a special encoding. The format of the type URL is\ndescribed on the `type_url` field.\n\nProtobuf APIs provide utilities to interact with `Any` values:\n\n- A 'pack' operation accepts a message and constructs a generic `Any` wrapper\n  around it.\n- An 'unpack' operation reads the content of an `Any` message, either into an\n  existing message or a new one. Unpack operations must check the type of the\n  value they unpack against the declared `type_url`.\n- An 'is' operation decides whether an `Any` contains a message of the given\n  type, i.e. whether it can 'unpack' that type.\n\nThe JSON format representation of an `Any` follows one of these cases:\n\n- For types without special-cased JSON encodings, the JSON format\n  representation of the `Any` is the same as that of the message, with an\n  additional `@type` field which contains the type URL.\n- For types with special-cased JSON encodings (typically called 'well-known'\n  types, listed in https://protobuf.dev/programming-guides/json/#any), the\n  JSON format representation has a key `@type` which contains the type URL\n  and a key `value` which contains the JSON-serialized value.\n\nThe text format representation of an `Any` is like a message with one field\nwhose name is the type URL in brackets. For example, an `Any` containing a\n`foo.Bar` message may be written `[type.googleapis.com/foo.Bar] { a: 2 }`."
      type: object
      properties:
        '@type':
          description: 'Identifies the type of the serialized Protobuf message with a URI reference

            consisting of a prefix ending in a slash and the fully-qualified type name.


            Example: type.googleapis.com/google.protobuf.StringValue


            This string must contain at least one `/` character, and the content after

            the last `/` must be the fully-qualified name of the type in canonical

            form, without a leading dot. Do not write a scheme on these URI references

            so that clients do not attempt to contact them.


            The prefix is arbitrary and Protobuf implementations are expected to

            simply strip off everything up to and including the last `/` to identify

            the type. `type.googleapis.com/` is a common default prefix that some

            legacy implementations require. This prefix does not indicate the origin of

            the type, and URIs containing it are not expected to respond to any

            requests.


            All type URL strings must be legal URI references with the additional

            restriction (for the text format) that the content of the reference

            must consist only of alphanumeric characters, percent-encoded escapes, and

            characters in the following set (not including the outer backticks):

            `/-.~_!$&()*+,;=`. Despite our allowing percent encodings, implementations

            should not unescape them to prevent confusion with existing parsers. For

            example, `type.googleapis.com%2FFoo` should be rejected.


            In the original design of `Any`, the possibility of launching a type

            resolution service at these type URLs was considered but Protobuf never

            implemented one and considers contacting these URLs to be problematic and

            a potential security issue. Do not attempt to contact type URLs.'
          type: string
      additionalProperties: {}
    AddEgressRuleBody:
      type: object
      properties:
        description:
          description: description is text that serves to document the rules purpose.
          type: string
        destination:
          description: 'destination is the endpoint (or subnetwork if CIDR) to which traffic is

            allowed.'
          type: string
        idempotency_key:
          description: 'idempotency_key uniquely identifies this request. If not set, it will be

            set by the server.'
          type: string
        name:
          description: name is the name of the egress rule.
          type: string
        paths:
          description: 'Deprecated: This field is ignored and will be removed in the next version.

            paths are the allowed URL paths. If empty, all paths are allowed. Only

            valid if Type="FQDN".'
          type: array
          items:
            type: string
        ports:
          description: 'ports are the allowed ports for TCP protocol. If Empty, all ports are

            allowed.'
          type: array
          items:
            format: int32
            type: integer
        type:
          description: 'type classifies the Destination field. Valid types include: "FQDN",

            "CIDR".'
          type: string
      example:
        cluster_id: 35c4abb2-bb66-46d7-afed-25ebef5ed100
        description: egress for GCP storage buckets
        destination: storage.googleapis.com
        name: roach-buckets
        ports:
        - 443
        - 80
        type: FQDN
      required:
      - name
      - type
      - destination
      - description
      title: AddEgressRuleRequest
    SetEgressTrafficPolicyBody:
      type: object
      properties:
        allow_all:
          description: 'allow_all, if true results in unrestricted egress traffic. If false, egress

            traffic is set to default-deny and is managed via the Egress Rule

            Management API.'
          type: boolean
        idempotency_key:
          description: 'idempotency_key uniquely identifies this request. If not set, it will be

            set by the server.'
          type: string
      required:
      - allow_all
      title: SetEgressTrafficPolicyRequest
    EditEgressRuleResponse:
      type: object
      properties:
        Rule:
          $ref: '#/components/schemas/EgressRule'
      required:
      - rule
      title: EditEgressRuleResponse
    Status:
      type: object
      properties:
        code:
          type: integer
          format: int32
        details:
          type: array
          items:
            $ref: '#/components/schemas/Any'
        message:
          type: string
    EgressRule:
      description: EgressRule represents a network egress rule.
      type: object
      properties:
        cluster_id:
          description: cluster_id identifies the cluster to which this egress rule applies.
          type: string
        created_at:
          description: 'created_at is the time at which the time at which the egress rule was

            created.'
          type: string
          format: date-time
        crl_managed:
          description: 'crl_managed indicates this egress rule is managed by CockroachDB Cloud

            services. This field is set by the server.'
          type: boolean
        description:
          description: description is a longer that serves to document the rules purpose.
          type: string
        destination:
          description: 'destination is the endpoint (or subnetwork if CIDR) to which traffic is

            allowed.'
          type: string
        id:
          description: id uniquely identifies this egress rule.
          type: string
        name:
          description: name is the name of the egress rule.
          type: string
        paths:
          description: 'Deprecated: This field is ignored and will be removed in the next version.

            paths are the allowed URL paths. Only valid if Type="FQDN".'
          type: array
          items:
            type: string
        ports:
          description: 'ports are the allowed ports for TCP protocol. If Empty, all ports are

            allowed.'
          type: array
          items:
            format: int32
            type: integer
        state:
          description: state indicates the state of the egress rule.
          type: string
        type:
          description: 'type classifies the destination field. Valid types include: "FQDN",

            "CIDR".'
          type: string
      required:
      - name
      - id
      - cluster_id
      - type
      - state
      - crl_managed
      - destination
      - description
      title: EgressRule
    AddEgressRuleResponse:
      type: object
      properties:
        Rule:
          $ref: '#/components/schemas/EgressRule'
      required:
      - rule
      title: AddEgressRuleResponse
    ListEgressRulesResponse:
      type: object
      properties:
        pagination:
          $ref: '#/components/schemas/KeysetPaginationResponse'
        rules:
          description: rules are the egress rules associated with the given CockroachDB cluster.
          type: array
          items:
            $ref: '#/components/schemas/EgressRule'
      title: ListEgressRulesResponse
    DeleteEgressRuleResponse:
      type: object
      properties:
        Rule:
          $ref: '#/components/schemas/EgressRule'
      required:
      - rule
      title: DeleteEgressRuleResponse
    GetEgressRuleResponse:
      type: object
      properties:
        rule:
          $ref: '#/components/schemas/EgressRule'
      required:
      - rule
      title: GetEgressRuleResponse
    KeysetPaginationResponse:
      type: object
      properties:
        next_page:
          type: string
        previous_page:
          type: string
    EditEgressRuleBody:
      type: object
      properties:
        description:
          description: description is text that serves to document the rules purpose.
          type: string
        destination:
          description: 'destination is a CIDR range or fully-qualified domain name to which

            outgoing traffic should be allowed. This field is required.'
          type: string
        idempotency_key:
          description: 'idempotency_key uniquely identifies this request. If not set, it will be

            set by the server.'
          type: string
        paths:
          description: 'Deprecated: This field is ignored and will be removed in the next version.

            paths are the allowed URL paths. If empty, all paths are allowed. Only

            valid if Type="FQDN".'
          type: array
          items:
            type: string
        ports:
          description: 'ports are the allowed ports for TCP protocol. If empty, all ports are

            allowed.'
          type: array
          items:
            format: int32
            type: integer
        type:
          description: 'type is the destination type of this rule. Example values are

            FQDN or CIDR. This field is required.'
          type: string
      example:
        cluster_id: 35c4abb2-bb66-46d7-afed-25ebef5ed100
        ports:
        - 443
        - 80
        rule_id: 35c4abb2-bb66-46d7-afed-25ebef5ed2aa
      title: EditEgressRuleRequest
  securitySchemes:
    Bearer:
      type: http
      scheme: bearer
externalDocs:
  description: Use the CockroachDB Cloud API
  url: https://www.cockroachlabs.com/docs/cockroachcloud/cloud-api.html