Soracom Virtual Private Gateway API
Provision and manage Soracom Virtual Private Gateways (VPG) including Canal (AWS VPC peering), Direct (AWS Direct Connect), Door (IPSec VPN), Gate (reverse-NAT), Junction (packet rules), and Peek (packet capture).
Provision and manage Soracom Virtual Private Gateways (VPG) including Canal (AWS VPC peering), Direct (AWS Direct Connect), Door (IPSec VPN), Gate (reverse-NAT), Junction (packet rules), and Peek (packet capture).
openapi: 3.0.0
info:
title: Soracom Virtual Private Gateway API
description: Provision and manage Soracom Virtual Private Gateways (Canal, Direct, Door, Gate), Junction packet rules, and
Peek packet captures.
version: 20250903-043502
servers:
- description: Japan coverage production API endpoint
url: https://api.soracom.io/v1
- description: Global coverage production API endpoint
url: https://g.api.soracom.io/v1
paths:
/virtual_private_gateways:
get:
description: Returns a list of VPGs.
operationId: listVirtualPrivateGateways
parameters:
- description: Tag name of the VPG. Filters through all VPGs that exactly match the tag name. When tag_name is specified,
tag_value is required.
in: query
name: tag_name
required: false
schema:
type: string
- description: Tag value of the VPG.
in: query
name: tag_value
required: false
schema:
type: string
- description: Tag match mode.
in: query
name: tag_value_match_mode
required: false
schema:
default: exact
enum:
- exact
- prefix
type: string
- description: Maximum number of results per response page.
in: query
name: limit
required: false
schema:
type: integer
- description: The last VPG ID retrieved on the current page. By specifying this parameter, you can continue to retrieve
the list from the next VPG onward.
in: query
name: last_evaluated_key
required: false
schema:
type: string
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/VirtualPrivateGateway'
type: array
description: List of VPGs.
security:
- api_key: []
api_token: []
summary: List Virtual Private Gateways
tags:
- VirtualPrivateGateway
x-soracom-cli:
- vpg list
x-soracom-cli-pagination:
request:
param: last_evaluated_key
response:
header: x-soracom-next-key
post:
description: Create a new VPG.
operationId: createVirtualPrivateGateway
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateVirtualPrivateGatewayRequest'
description: Request containing information for the new VPG to be created.
required: true
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/VirtualPrivateGateway'
description: Created
security:
- api_key: []
api_token: []
summary: Create Virtual Private Gateway
tags:
- VirtualPrivateGateway
x-soracom-cli:
- vpg create
/virtual_private_gateways/{vpg_id}:
get:
description: Retrieves information about the specified VPG.
operationId: getVirtualPrivateGateway
parameters:
- description: Target VPG ID.
in: path
name: vpg_id
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/VirtualPrivateGateway'
description: The specified VPG.
'404':
description: The specified VPG does not exist.
security:
- api_key: []
api_token: []
summary: Get Virtual Private Gateway
tags:
- VirtualPrivateGateway
x-soracom-cli:
- vpg get
/virtual_private_gateways/{vpg_id}/customer_routes:
post:
description: Creates a routing table entry for the specified VPG.
operationId: createCustomerRoute
parameters:
- description: Target VPG ID.
in: path
name: vpg_id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateCustomerRouteRequest'
required: true
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/CustomerRoute'
description: Created routing table entry
'400':
description: Invalid request
'404':
description: The specified VPG does not exist
security:
- api_key: []
api_token: []
summary: Create routing table entry
tags:
- VirtualPrivateGateway
x-soracom-cli:
- vpg create-customer-route
/virtual_private_gateways/{vpg_id}/customer_routes/{route_id}:
delete:
description: Deletes a routing table entry from the specified VPG.
operationId: deleteCustomerRoute
parameters:
- description: Target VPG ID.
in: path
name: vpg_id
required: true
schema:
type: string
- description: Target route ID
in: path
name: route_id
required: true
schema:
type: string
responses:
'204':
description: Deleted routing table entry
'404':
description: The specified VPG does not exist
security:
- api_key: []
api_token: []
summary: Delete routing table entry
tags:
- VirtualPrivateGateway
x-soracom-cli:
- vpg delete-customer-route
put:
description: Updates a routing table entry for the specified VPG.
operationId: updateCustomerRoute
parameters:
- description: Target VPG ID.
in: path
name: vpg_id
required: true
schema:
type: string
- description: Target route ID
in: path
name: route_id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateCustomerRouteRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/CustomerRoute'
description: Updated routing table entry
'400':
description: Invalid request
'404':
description: The specified VPG does not exist
security:
- api_key: []
api_token: []
summary: Update routing table entry
tags:
- VirtualPrivateGateway
x-soracom-cli:
- vpg update-customer-route
/virtual_private_gateways/{vpg_id}/fixed_public_ip_addresses:
delete:
description: Disables the fixed global IP address option for the VPG.
operationId: releaseFixedPublicIpAddresses
parameters:
- in: path
name: vpg_id
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/VirtualPrivateGateway'
description: The fixed global IP address option for the VPG was successfully disabled.
'400':
description: The fixed global IP address option for the VPG is already disabled.
'404':
description: The specified VPG does not exist.
security:
- api_key: []
api_token: []
summary: Disable the fixed global IP address option for the VPG
tags:
- VirtualPrivateGateway
x-soracom-cli:
- vpg release-fixed-public-ip-addresses
post:
description: Enables the fixed global IP address option for the VPG.
operationId: assignFixedPublicIpAddresses
parameters:
- in: path
name: vpg_id
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/VirtualPrivateGateway'
description: The fixed global IP address option for the VPG was successfully enabled.
'400':
description: The fixed global IP address option for the VPG is already enabled.
'404':
description: The specified VPG does not exist.
security:
- api_key: []
api_token: []
summary: Enable the fixed global IP address option for the VPG
tags:
- VirtualPrivateGateway
x-soracom-cli:
- vpg set-fixed-public-ip-addresses
/virtual_private_gateways/{vpg_id}/gate/close:
post:
description: Close Soracom Gate on the specified VPG.
operationId: closeGate
parameters:
- description: Target VPG ID.
in: path
name: vpg_id
required: true
schema:
type: string
responses:
'200':
description: Soracom Gate is successfully closed on the VPG.
'400':
description: Client side error in the request.
'404':
description: The specified VPG does not exist.
security:
- api_key: []
api_token: []
summary: Close SORACOM Gate.
tags:
- VirtualPrivateGateway
x-soracom-cli:
- vpg close-gate
/virtual_private_gateways/{vpg_id}/gate/disable_privacy_separator:
post:
description: Disables Soracom Gate's privacy separator feature on the specified VPG and enables the Gate D2D feature.
operationId: disableGatePrivacySeparator
parameters:
- description: VPG ID
in: path
name: vpg_id
required: true
schema:
format: VpgId
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/VirtualPrivateGateway'
description: Disabled the privacy separator successfully
'404':
description: The specified VPG does not exist.
security:
- api_key: []
api_token: []
summary: Disables Soracom Gate's privacy separator feature on the specified VPG
tags:
- VirtualPrivateGateway
x-soracom-cli:
- vpg disable-gate-privacy-separator
/virtual_private_gateways/{vpg_id}/gate/enable_privacy_separator:
post:
description: Enables Soracom Gate's privacy separator feature on the specified VPG and disables the Gate D2D feature.
operationId: enableGatePrivacySeparator
parameters:
- description: VPG ID
in: path
name: vpg_id
required: true
schema:
format: VpgId
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/VirtualPrivateGateway'
description: Enabled the privacy separator successfully
'404':
description: The specified VPG does not exist.
security:
- api_key: []
api_token: []
summary: Enables Soracom Gate privacy separator feature on the specified VPG
tags:
- VirtualPrivateGateway
x-soracom-cli:
- vpg enable-gate-privacy-separator
/virtual_private_gateways/{vpg_id}/gate/open:
post:
description: Open Soracom Gate on the specified VPG.
operationId: openGate
parameters:
- description: Target VPG ID.
in: path
name: vpg_id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/OpenGateRequest'
description: Optional configuration parameters for Gate.
responses:
'200':
description: SORACOM Gate is successfully opened on the VPG.
'400':
description: Client side error in the request.
'404':
description: The specified VPG does not exist.
security:
- api_key: []
api_token: []
summary: Open Soracom Gate
tags:
- VirtualPrivateGateway
x-soracom-cli:
- vpg open-gate
/virtual_private_gateways/{vpg_id}/gate/peers:
get:
description: List Gate Peers registered in the Virtual Private Gateway.
operationId: listGatePeers
parameters:
- description: Target VPG ID.
in: path
name: vpg_id
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/GatePeer'
type: array
description: List of Gate Peers registered in the VPG.
'400':
description: Client side error in the request.
'404':
description: The specified VPG does not exist.
security:
- api_key: []
api_token: []
summary: List VPG Gate Peers
tags:
- VirtualPrivateGateway
x-soracom-cli:
- vpg list-gate-peers
post:
description: Register a host as a Gate Peer in the Virtual Private Gateway.
operationId: registerGatePeer
parameters:
- description: Target VPG ID.
in: path
name: vpg_id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RegisterGatePeerRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/GatePeer'
description: Gate Peer is successfully registered.
'400':
description: Client side error in the request.
'404':
description: The specified VPG does not exist.
security:
- api_key: []
api_token: []
summary: Register VPG Gate Peer
tags:
- VirtualPrivateGateway
x-soracom-cli:
- vpg register-gate-peer
/virtual_private_gateways/{vpg_id}/gate/peers/{outer_ip_address}:
delete:
description: Unregister a Gate Peer from the Virtual Private Gateway.
operationId: unregisterGatePeer
parameters:
- description: Target VPG ID.
in: path
name: vpg_id
required: true
schema:
type: string
- description: ID of the target node.
in: path
name: outer_ip_address
required: true
schema:
type: string
responses:
'204':
description: Successfully deregistered the Gate Peer.
'400':
description: Client side error in the request.
'404':
description: The specified VPG or Peer does not exist.
security:
- api_key: []
api_token: []
summary: Unregister VPG Gate Peer
tags:
- VirtualPrivateGateway
x-soracom-cli:
- vpg unregister-gate-peer
/virtual_private_gateways/{vpg_id}/gate/routing/static/sims/disable:
post:
description: Disables SIM-Based Routing.
operationId: disableSimBasedRouting
parameters:
- description: Target VPG ID.
in: path
name: vpg_id
required: true
schema:
type: string
responses:
'204':
description: SIM-Based Routing has been disabled.
'404':
description: The specified VPG does not exist.
security:
- api_key: []
api_token: []
summary: Disable SIM-Based Routing
tags:
- VirtualPrivateGateway
x-soracom-cli:
- vpg disable-sim-based-routing
/virtual_private_gateways/{vpg_id}/gate/routing/static/sims/enable:
post:
description: Enables SIM-Based Routing.
operationId: enableSimBasedRouting
parameters:
- description: Target VPG ID.
in: path
name: vpg_id
required: true
schema:
type: string
responses:
'201':
description: SIM-Based Routing has been enabled.
'400':
description: SORACOM Gate is not enabled.
'404':
description: The specified VPG does not exist.
security:
- api_key: []
api_token: []
summary: Enable SIM-Based Routing
tags:
- VirtualPrivateGateway
x-soracom-cli:
- vpg enable-sim-based-routing
/virtual_private_gateways/{vpg_id}/gate/routing/static/sims/routes:
put:
description: Associates a router's LAN IP address range with its SIM ID.
operationId: putSimBasedRoutingRoutes
parameters:
- description: Target VPG ID.
in: path
name: vpg_id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PutSimBasedRoutingRoutesRequest'
description: Specify the LAN IP address range of the router to associate with a SIM ID.
required: true
responses:
'200':
description: OK
'400':
description: Client side error in the request.
'404':
description: The specified VPG does not exist.
security:
- api_key: []
api_token: []
summary: Associate a router's LAN IP address range with its SIM ID
tags:
- VirtualPrivateGateway
x-soracom-cli:
- vpg put-sim-based-routing-routes
/virtual_private_gateways/{vpg_id}/gate/set_vxlan_id:
post:
description: Set VXLAN ID for Gate.
operationId: setVirtualPrivateGatewayVxLanId
parameters:
- in: path
name: vpg_id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SetVirtualPrivateGatewayVxLanIdRequest'
required: true
responses:
'204':
description: OK
'404':
description: The specified VPG does not exist.
security:
- api_key: []
api_token: []
summary: Set VXLAN ID for Gate
tags:
- VirtualPrivateGateway
x-soracom-cli:
- vpg set-vxlan-id
/virtual_private_gateways/{vpg_id}/ip_address_map:
get:
description: 'Retrieves the list of IP address map entries for the specified VPG.
'
operationId: listVirtualPrivateGatewayIpAddressMapEntries
parameters:
- description: Target VPG ID.
in: path
name: vpg_id
required: true
schema:
type: string
- description: The maximum number of IP address map entries to retrieve. The response may contain fewer entries than
the specified value.
in: query
name: limit
required: false
schema:
type: integer
- description: The last IP address retrieved in the previous page. Use this parameter to retrieve the next page of IP
address map entries.
in: query
name: last_evaluated_key
required: false
schema:
type: string
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/IpAddressMapEntry'
type: array
description: 'List of IP address map entries associated with the specified VPG.
**Warning**: The response includes not only entries added via [VirtualPrivateGateway:putVirtualPrivateGatewayIpAddressMapEntry
API](#/VirtualPrivateGateway/putVirtualPrivateGatewayIpAddressMapEntry), but also automatically assigned IP addresses
for Gate Peers and the VPG itself.
'
'400':
description: Client side error in the request.
'404':
description: The specified VPG does not exist.
security:
- api_key: []
api_token: []
summary: List VPG IP address map entries
tags:
- VirtualPrivateGateway
x-soracom-cli:
- vpg list-ip-address-map-entries
x-soracom-cli-pagination:
request:
param: last_evaluated_key
response:
header: x-soracom-next-key
post:
description: 'Adds or updates an IP address map entry for the specified VPG.
**Warning**: The [VirtualPrivateGateway:listVirtualPrivateGatewayIpAddressMapEntries API](#/VirtualPrivateGateway/listVirtualPrivateGatewayIpAddressMapEntries)
response includes entries that are automatically assigned to Gate Peers and the VPG, but these cannot be added or
updated using the VirtualPrivateGateway:putVirtualPrivateGatewayIpAddressMapEntry API.
'
operationId: putVirtualPrivateGatewayIpAddressMapEntry
parameters:
- description: Target VPG ID.
in: path
name: vpg_id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PutIpAddressMapEntryRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/IpAddressMapEntry'
description: Successfully added or updated the IP address map entry.
'400':
description: Client side error in the request.
'404':
description: The specified VPG does not exist.
security:
- api_key: []
api_token: []
summary: Adds or updates an entry in VPG IP address map
tags:
- VirtualPrivateGateway
x-soracom-cli:
- vpg put-ip-address-map-entry
/virtual_private_gateways/{vpg_id}/ip_address_map/{key}:
delete:
description: 'Deletes an entry from the IP address map of the specified VPG.
**Warning**: The [VirtualPrivateGateway:listVirtualPrivateGatewayIpAddressMapEntries API](#/VirtualPrivateGateway/listVirtualPrivateGatewayIpAddressMapEntries)
response includes automatically assigned entries for Gate Peers and the VPG. These entries cannot be deleted using
the VirtualPrivateGateway:deleteVirtualPrivateGatewayIpAddressMapEntry API.
'
operationId: deleteVirtualPrivateGatewayIpAddressMapEntry
parameters:
- description: Target VPG ID.
in: path
name: vpg_id
required: true
schema:
type: string
- description: Identifier of the IP address map entry to delete (IMSI of the IoT SIM).
in: path
name: key
required: true
schema:
type: string
responses:
'204':
description: Successfully deleted the IP address map entry.
'400':
description: Client side error in the request.
'404':
description: The specified VPG or key does not exist.
security:
- api_key: []
api_token: []
summary: Delete VPG IP address map entry
tags:
- VirtualPrivateGateway
x-soracom-cli:
- vpg delete-ip-address-map-entry
/virtual_private_gateways/{vpg_id}/junction/mirroring/peers:
post:
description: Adds node in the list of Junction mirroring peers.
operationId: createMirroringPeer
parameters:
- description: VPG ID
in: path
name: vpg_id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/JunctionMirroringPeer'
description: Mirroring peer
required: true
responses:
'201':
description: Mirroring peer added/updated
'404':
description: No such VPG found
security:
- api_key: []
api_token: []
summary: Adds node in the list of Junction mirroring peers
tags:
- VirtualPrivateGateway
x-soracom-cli:
- vpg create-mirroring-peer
/virtual_private_gateways/{vpg_id}/junction/mirroring/peers/{ipaddr}:
delete:
description: Remove peer from the list of Junction mirroring peers.
operationId: deleteMirroringPeer
parameters:
- description: VPG ID
in: path
name: vpg_id
required: true
schema:
type: string
- description: IP address of mirroring peer
in: path
name: ipaddr
required: true
schema:
type: string
responses:
'204':
description: Mirroring peer removed
'404':
description: No such VPG found
security:
- api_key: []
api_token: []
summary: Remove peer from the list of Junction mirroring peers
tags:
- VirtualPrivateGateway
x-soracom-cli:
- vpg delete-mirroring-peer
put:
description: Updates a Junction mirroring peer.
operationId: updateMirroringPeer
parameters:
- description: VPG ID
in: path
name: vpg_id
required: true
schema:
type: string
- description: Mirroring peer IP address
in: path
name: ipaddr
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
items:
$ref: '#/components/schemas/AttributeUpdate'
type: array
description: List of attributes to update
required: true
responses:
'200':
description: Mirroring peer updated
'404':
description: No such VPG found
security:
- api_key: []
api_token: []
summary: Updates a Junction mirroring peer
tags:
- VirtualPrivateGateway
x-soracom-cli:
- vpg update-mirroring-peer
/virtual_private_gateways/{vpg_id}/junction/set_inspection:
post:
description: Sets configuration for Junction inspection feature.
operationId: setInspectionConfiguration
parameters:
- description: VPG ID
in: path
name: vpg_id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/JunctionInspectionConfiguration'
description: Inspection configuration
required: true
responses:
'200':
description: Configuration added/updated
'404':
description: No such VPG found
security:
- api_key: []
api_token: []
summary: Sets configuration for Junction inspection feature
tags:
- VirtualPrivateGateway
x-soracom-cli:
- vpg set-inspection
/virtual_private_gateways/{vpg_id}/junction/set_redirection:
post:
description: Sets configuration for Junction redirection feature.
operationId: setRedirectionConfiguration
parameters:
- description: VPG ID
in: path
name: vpg_id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/JunctionRedirectionConfiguration'
description: Redirection configuration
required: true
responses:
'200':
description: Configuration added/updated
'404':
description: No such VPG found
security:
- api_key: []
api_token: []
summary: Sets configuration for Junction redirection feature
tags:
- VirtualPrivateGateway
x-soracom-cli:
- vpg set-redirection
/virtual_private_gateways/{vpg_id}/junction/unset_inspection:
post:
description: Unset configuration for Junction inspection feature.
operationId: unsetInspectionConfiguration
parameters:
- description: VPG ID
in: path
name: vpg_id
required: true
schema:
type: string
responses:
'200':
description: Configuration unset
'404':
description: No such VPG found
security:
- api_key: []
api_token: []
summary: Unset configuration for Junction inspection feature
tags:
- VirtualPrivateGateway
x-soracom-cli:
- vpg unset-inspection
/virtual_private_gateways/{vpg_id}/junction/unset_redirection:
post:
description: Unset configuration for Junction redirection feature.
operationId: unsetRedirectionConfiguration
parameters:
- description: VPG ID
in: path
name: vpg_id
required: true
schema:
type: string
responses:
'200':
description: Configuration unset
'404':
description: No such VPG found
security:
- api_key: []
api_token: []
summary: Unset configuration for Junction redirection feature
tags:
- VirtualPrivateGateway
x-soracom-cli:
- vpg unset-redirection
/virtual_private_gateways/{vpg_id}/packet_capture_sessions:
get:
description: List packet capture sessions associated with the VPG.
operationId: listPacketCaptureSessions
parameters:
- description: VPG ID
in: path
name: vpg_id
required: true
schema:
type: string
- description: ID of the last packet capture session in the previous page. By specifying this parameter, you can continue
to retrieve the list from the next packet capture session onward.
in: query
name: last_evaluated_key
required: false
schema:
default: 'null'
type: string
- description: Max number of results in a response.
in: query
name: limit
required: false
schema:
default: 10
format: int32
type: integer
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/PacketCaptureSession'
type: array
description: List of packet capture sessions associated with the VPG
'400':
description: Failed to list packet capture sessions associated with the VPG
'404':
description: The specified VPG does not exist.
security:
- api_key: []
api_token: []
summary: List Packet Capture Sessions associated with the VPG
tags:
- VirtualPrivateGateway
x-soracom-cli:
- vpg list-packet-capture-sessions
x-soracom-cli-pagination:
request:
param: last_evaluated_key
response:
header: x-soracom-next-key
post:
description: Create a packet capture session associated with the VPG.
operationId: createPacketCaptureSession
parameters:
- description: VPG ID
in: path
name: vpg_id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PacketCaptureSessionRequest'
description: A packet capture session request
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PacketCaptureSession'
description: The packet capture sessions associated with the VPG
'400':
description: Failed to create a packet capture session associated with the VPG
'404':
description: The specified VPG does not exist.
security:
- api_key: []
api_token: []
summary: Create a packet capture session associated with the VPG
tags:
- VirtualPrivateGateway
x-soracom-cli:
- vpg create-packet-capture-session
/virtual_private_gateways/{vpg_id}/packet_capture_sessions/{session_id}:
delete:
description: Delete a packet capture session associated with the VPG.
operationId: deletePacketCaptureSession
parameters:
- description: VPG ID
in: path
name: vpg_id
required: true
schema:
type: string
- description: Packet capture session ID
in: path
name: session_id
required: true
schema
# --- truncated at 32 KB (75 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/soracom/refs/heads/main/openapi/soracom-vpg-api-openapi.yml