API reference · Networking / Security groups
Security groups
Reusable firewalls for standard instances.
A security group is a set of rules shared by every standard instance that uses it. Inbound traffic no rule allows is dropped. Each organization has a default group, used when an instance names none. VPC instances use their subnet's firewall rules instead.
The security group object
A reusable firewall for standard instances.
Fields
idstringrequirede.g.
sg_....namestringrequiredIts name, unique among your live security groups. The organization's default group is called
default.rulesarray of SecurityGroupRulerequiredIts rules. Inbound traffic no rule allows is dropped.
Show 4 child fieldsHide child fields
directionstringrequiredingress(into the instance) oregress(out of it).One of
ingress,egress.protocolstringrequiredtcp,udp,icmporall.One of
tcp,udp,icmp,all.port_rangestringFor
tcp/udp: one port (22) or an inclusive range (8000-8100). Empty or left out foricmpandall, meaning every port.cidrstringrequiredOne IPv4 CIDR: the source for
ingress, the destination foregress, e.g.203.0.113.4/32. Avoid0.0.0.0/0on ingress where you can: it blocks private database network interfaces on instances using the group.
desired_statestringrequiredWhat you asked for:
present, ordeletedonce you deleted it.One of
present,deleted.observed_statestringrequiredWhat the platform last observed:
pendingandprovisioningwhile it is being created,activeonce ready,deleting/deletedon the way out,failedif it could not be made,unknownwhen it could not be checked.One of
pending,provisioning,active,deleting,deleted,failed,unknown.created_atstring or nullWhen it was created (RFC 3339, UTC).
updated_atstring or nullWhen it last changed (RFC 3339, UTC).
List security groups
Your security groups, newest first, with their rules. Filter by name with q, or by state.
Headers
AuthorizationstringrequiredBearerand your API key:Bearer PAN_….
Query parameters
limitintegerItems per page, 1 to 100. Defaults to 50.
From 1 to 100. Defaults to
50.cursorstringThe previous page's
next_cursor, to get the next page. Leave out for the first page; keep the other parameters the same.qstringOnly items whose name contains this text (case-insensitive), at most 255 characters.
At most 255 characters.
desired_statestringOnly items with this
desired_state:presentordeleted.One of
present,deleted.observed_statestringOnly items with this
observed_state.One of
pending,provisioning,active,deleting,deleted,failed,unknown.
Response 200
A page of security groups.dataarray of SecurityGrouprequiredShow 7 child fieldsHide child fields
idstringrequirede.g.
sg_....namestringrequiredIts name, unique among your live security groups. The organization's default group is called
default.rulesarray of SecurityGroupRulerequiredIts rules. Inbound traffic no rule allows is dropped.
Show 4 child fieldsHide child fields
directionstringrequiredingress(into the instance) oregress(out of it).One of
ingress,egress.protocolstringrequiredtcp,udp,icmporall.One of
tcp,udp,icmp,all.port_rangestringFor
tcp/udp: one port (22) or an inclusive range (8000-8100). Empty or left out foricmpandall, meaning every port.cidrstringrequiredOne IPv4 CIDR: the source for
ingress, the destination foregress, e.g.203.0.113.4/32. Avoid0.0.0.0/0on ingress where you can: it blocks private database network interfaces on instances using the group.
desired_statestringrequiredWhat you asked for:
present, ordeletedonce you deleted it.One of
present,deleted.observed_statestringrequiredWhat the platform last observed:
pendingandprovisioningwhile it is being created,activeonce ready,deleting/deletedon the way out,failedif it could not be made,unknownwhen it could not be checked.One of
pending,provisioning,active,deleting,deleted,failed,unknown.created_atstring or nullWhen it was created (RFC 3339, UTC).
updated_atstring or nullWhen it last changed (RFC 3339, UTC).
next_cursorstring or nullrequiredPass as
cursorfor the next page; null on the last page.
Errors
- 400
INVALID_PAGE:limitis not a whole number from 1 to 100. Send a value in that range, or leave it out for 50.INVALID_CURSOR:cursordoes not belong to this list with these filters. Start again without a cursor.INVALID_FILTER:qis longer than 255 characters, ordesired_stateorobserved_stateis not one of its listed values. Fix the parameter named indetail. - 401
UNAUTHENTICATED: the request has no API key, or the key is mistyped, revoked or expired, or its creator has left the organization. SendAuthorization: Bearer PAN_…with a valid key; create one in the console under Organization › API keys. - 403
INSUFFICIENT_SCOPE: the API key lacks the scope this endpoint needs (readfor GET,writefor changes; an AI app's key also needsdeletefor a destructive call). Use a key with that scope, or reconnect the AI app with "Manage and delete" access.FORBIDDEN: the member who created the key may not do this in the organization. Use a key created by an owner or admin.AI_APPS_DISABLED: the organization has turned AI app access off, and this request was made with an AI app's key or sent by Pantech's MCP server (Pantech-Client: mcp/…). An owner can turn it on in the console under Organization › AI apps. - 429
RATE_LIMITED: this API key, verified user or organization used its request budget for the current window, or this address exceeded an IP/failed-auth limit. WaitRetry-Afterseconds, then retry. For authenticated quota denials,RateLimit-Scopeidentifies the denying quota andRateLimit-Resetreports its remaining window in seconds. - 503
SERVICE_UNAVAILABLE: request quota storage is unavailable. Wait a few seconds, then retry.
Every code is explained in Errors.
curl "https://api.pantechdynamics.com/public/v1/security-groups" \
-H "Authorization: Bearer $PANTECH_API_KEY"{
"data": [
{
"id": "sg_06gk3x9tq7m2v8r4y1c5d0zp8w",
"name": "web",
"rules": [
{
"direction": "ingress",
"protocol": "tcp",
"port_range": "22",
"cidr": "203.0.113.4/32"
}
],
"desired_state": "present",
"observed_state": "active",
"created_at": "2026-10-03T09:30:00Z",
"updated_at": "2026-10-03T09:30:00Z"
}
],
"next_cursor": "eyJhdCI6IjIwMjYtMTAtMDNUMDk6MzA6MDBaIiwiaWQiOiJ2bV8wNmdrIn0"
}Create a security group
Creates a reusable firewall for standard instances in a security-group zone (af-abj-1). Each rule has a direction, a protocol (tcp, udp, icmp or all), a port_range for tcp/udp and one IPv4 cidr. Inbound traffic no rule allows is dropped. A group needs at least one rule.
The name is unique among your live security groups; a deleted group frees its name. Attach the group to an instance at create (security_group_id) or with Change an instance's security group, or to a database as a source of allowed address ranges.
Prefer narrow sources: a rule from 0.0.0.0/0 stops an instance from attaching a private database network interface.
Returns 202 Accepted with an operation_id (also in the Location header). The change happens in the background: poll GET /public/v1/operations/{operation_id}, or stream /events, until status is succeeded or failed; a failed operation carries a stable failure.code and a readable failure.reason. The group's id is the operation's resource_id.
Send an Idempotency-Key. A retry with the same key returns the original operation instead of making the change twice.
Headers
AuthorizationstringrequiredBearerand your API key:Bearer PAN_….Idempotency-KeystringrequiredA new value, such as a UUID, for each change. Resend with the same value to retry safely.
At most 255 characters.
Body
application/jsonnamestringrequired1 to 255 characters, unique among your live security groups.
At most 255 characters.
rulesarray of SecurityGroupRuleThe group's rules; at least one. Inbound traffic no rule allows is dropped.
Show 4 child fieldsHide child fields
directionstringrequiredingress(into the instance) oregress(out of it).One of
ingress,egress.protocolstringrequiredtcp,udp,icmporall.One of
tcp,udp,icmp,all.port_rangestringFor
tcp/udp: one port (22) or an inclusive range (8000-8100). Empty or left out foricmpandall, meaning every port.cidrstringrequiredOne IPv4 CIDR: the source for
ingress, the destination foregress, e.g.203.0.113.4/32. Avoid0.0.0.0/0on ingress where you can: it blocks private database network interfaces on instances using the group.
Response 202
Accepted. Followoperation_id until it finishes.operation_idstringrequiredThe operation carrying out the change. Poll
GET /public/v1/operations/{operation_id}(also theLocationheader) untilstatusissucceededorfailed.resource_idstringrequiredThe resource being created or changed, e.g. the new snapshot's id for a snapshot create.
statusstringrequiredThe operation's status when the request was accepted, usually
submitting. Followoperation_idfor the outcome.
Errors
- 400
IDEMPOTENCY_KEY_REQUIRED: theIdempotency-Keyheader is missing. Send a new unique value, such as a UUID, with every write.INVALID_IDEMPOTENCY_KEY: theIdempotency-Keyheader is longer than 255 characters. Use a shorter value.INVALID_REQUEST_BODY: the body is not a single valid JSON object. Send one JSON object with the fields documented for this endpoint. - 401
UNAUTHENTICATED: the request has no API key, or the key is mistyped, revoked or expired, or its creator has left the organization. SendAuthorization: Bearer PAN_…with a valid key; create one in the console under Organization › API keys. - 403
INSUFFICIENT_SCOPE: the API key lacks the scope this endpoint needs (readfor GET,writefor changes; an AI app's key also needsdeletefor a destructive call). Use a key with that scope, or reconnect the AI app with "Manage and delete" access.FORBIDDEN: the member who created the key may not do this in the organization. Use a key created by an owner or admin.AI_APPS_DISABLED: the organization has turned AI app access off, and this request was made with an AI app's key or sent by Pantech's MCP server (Pantech-Client: mcp/…). An owner can turn it on in the console under Organization › AI apps. - 409
SECURITY_GROUP_NAME_TAKEN: you already have a security group with this name. Choose a different name.SECURITY_GROUPS_NOT_SUPPORTED_IN_ZONE: this zone uses VPC firewall rules, not security groups.PROVIDER_ACCOUNT_NOT_READY: your organization's cloud account is still being set up, which takes a few minutes after sign-up. Retry shortly.CONCURRENT_UPDATE: the resource changed while this request was being processed. Retry the request; if it repeats, read the resource first. - 413
REQUEST_TOO_LARGE: the body is larger than 64 KiB. Send a smaller request. - 422
VALIDATION_FAILED: a field is invalid. Each entry oferrorsnames thefieldand itscode:nameREQUIREDorNAME_TOO_LONG: send a name of 1 to 255 characters.UNKNOWN_FIELD: the body has a field this endpoint does not take (named infield). Remove it or fix its spelling.VALIDATION_FAILEDwith noerrorsentry: the rule list is empty, or a rule has an unknowndirectionorprotocolor an invalid IPv4cidr. Send at least one valid rule. - 429
RATE_LIMITED: this API key, verified user or organization used its request budget for the current window, or this address exceeded an IP/failed-auth limit. WaitRetry-Afterseconds, then retry. For authenticated quota denials,RateLimit-Scopeidentifies the denying quota andRateLimit-Resetreports its remaining window in seconds. - 503
SERVICE_UNAVAILABLE: request quota storage is unavailable. Wait a few seconds, then retry.PROVISIONING_UNAVAILABLE: the provisioning service is temporarily unavailable. Wait a few seconds, then retry with the sameIdempotency-Key.
Every code is explained in Errors.
curl -X POST "https://api.pantechdynamics.com/public/v1/security-groups" \
-H "Authorization: Bearer $PANTECH_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"name": "web",
"rules": [
{
"direction": "ingress",
"protocol": "tcp",
"port_range": "443",
"cidr": "0.0.0.0/0"
},
{
"direction": "ingress",
"protocol": "tcp",
"port_range": "22",
"cidr": "203.0.113.4/32"
}
]
}'{
"operation_id": "op_06gk3x9tq7m2v8r4y1c5d0zp8w",
"resource_id": "sg_06gk3x9tq7m2v8r4y1c5d0zp8w",
"status": "submitting"
}Get a security group
One security group and its rules.
Headers
AuthorizationstringrequiredBearerand your API key:Bearer PAN_….
Path parameters
security_group_idstringrequiredThe resource's id.
Response 200
The security group.idstringrequirede.g.
sg_....namestringrequiredIts name, unique among your live security groups. The organization's default group is called
default.rulesarray of SecurityGroupRulerequiredIts rules. Inbound traffic no rule allows is dropped.
Show 4 child fieldsHide child fields
directionstringrequiredingress(into the instance) oregress(out of it).One of
ingress,egress.protocolstringrequiredtcp,udp,icmporall.One of
tcp,udp,icmp,all.port_rangestringFor
tcp/udp: one port (22) or an inclusive range (8000-8100). Empty or left out foricmpandall, meaning every port.cidrstringrequiredOne IPv4 CIDR: the source for
ingress, the destination foregress, e.g.203.0.113.4/32. Avoid0.0.0.0/0on ingress where you can: it blocks private database network interfaces on instances using the group.
desired_statestringrequiredWhat you asked for:
present, ordeletedonce you deleted it.One of
present,deleted.observed_statestringrequiredWhat the platform last observed:
pendingandprovisioningwhile it is being created,activeonce ready,deleting/deletedon the way out,failedif it could not be made,unknownwhen it could not be checked.One of
pending,provisioning,active,deleting,deleted,failed,unknown.created_atstring or nullWhen it was created (RFC 3339, UTC).
updated_atstring or nullWhen it last changed (RFC 3339, UTC).
Errors
- 401
UNAUTHENTICATED: the request has no API key, or the key is mistyped, revoked or expired, or its creator has left the organization. SendAuthorization: Bearer PAN_…with a valid key; create one in the console under Organization › API keys. - 403
INSUFFICIENT_SCOPE: the API key lacks the scope this endpoint needs (readfor GET,writefor changes; an AI app's key also needsdeletefor a destructive call). Use a key with that scope, or reconnect the AI app with "Manage and delete" access.FORBIDDEN: the member who created the key may not do this in the organization. Use a key created by an owner or admin.AI_APPS_DISABLED: the organization has turned AI app access off, and this request was made with an AI app's key or sent by Pantech's MCP server (Pantech-Client: mcp/…). An owner can turn it on in the console under Organization › AI apps. - 404
RESOURCE_NOT_FOUND: no security group with this id in your organization, or the id is not a security group id (sg_…). Check the id. - 429
RATE_LIMITED: this API key, verified user or organization used its request budget for the current window, or this address exceeded an IP/failed-auth limit. WaitRetry-Afterseconds, then retry. For authenticated quota denials,RateLimit-Scopeidentifies the denying quota andRateLimit-Resetreports its remaining window in seconds. - 503
SERVICE_UNAVAILABLE: request quota storage is unavailable. Wait a few seconds, then retry.
Every code is explained in Errors.
curl "https://api.pantechdynamics.com/public/v1/security-groups/sg_06gk3x9tq7m2v8r4y1c5d0zp8w" \
-H "Authorization: Bearer $PANTECH_API_KEY"{
"id": "sg_06gk3x9tq7m2v8r4y1c5d0zp8w",
"name": "web",
"rules": [
{
"direction": "ingress",
"protocol": "tcp",
"port_range": "22",
"cidr": "203.0.113.4/32"
}
],
"desired_state": "present",
"observed_state": "active",
"created_at": "2026-10-03T09:30:00Z",
"updated_at": "2026-10-03T09:30:00Z"
}Replace a security group's rules
Replaces the group's complete rule list, for every instance using it. Each rule has a direction, a protocol (tcp, udp, icmp or all), a port_range for tcp/udp and one IPv4 cidr. Inbound traffic no rule allows is dropped. A group needs at least one rule.
Databases the group is attached to are updated automatically; a list that would give one of them more than 1024 address ranges is refused. While an instance using the group has a private database network interface, an ingress rule whose source overlaps the private network's range (10.250.0.0/20), 0.0.0.0/0 included, is refused.
Returns 202 Accepted with an operation_id (also in the Location header). The change happens in the background: poll GET /public/v1/operations/{operation_id}, or stream /events, until status is succeeded or failed; a failed operation carries a stable failure.code and a readable failure.reason.
Send an Idempotency-Key. A retry with the same key returns the original operation instead of making the change twice.
Headers
AuthorizationstringrequiredBearerand your API key:Bearer PAN_….Idempotency-KeystringrequiredA new value, such as a UUID, for each change. Resend with the same value to retry safely.
At most 255 characters.
Path parameters
security_group_idstringrequiredThe resource's id.
Body
application/jsonrulesarray of SecurityGroupRulerequiredThe complete new rule list; at least one rule. It replaces every existing rule.
Show 4 child fieldsHide child fields
directionstringrequiredingress(into the instance) oregress(out of it).One of
ingress,egress.protocolstringrequiredtcp,udp,icmporall.One of
tcp,udp,icmp,all.port_rangestringFor
tcp/udp: one port (22) or an inclusive range (8000-8100). Empty or left out foricmpandall, meaning every port.cidrstringrequiredOne IPv4 CIDR: the source for
ingress, the destination foregress, e.g.203.0.113.4/32. Avoid0.0.0.0/0on ingress where you can: it blocks private database network interfaces on instances using the group.
Response 202
Accepted. Followoperation_id until it finishes.operation_idstringrequiredThe operation carrying out the change. Poll
GET /public/v1/operations/{operation_id}(also theLocationheader) untilstatusissucceededorfailed.resource_idstringrequiredThe resource being created or changed, e.g. the new snapshot's id for a snapshot create.
statusstringrequiredThe operation's status when the request was accepted, usually
submitting. Followoperation_idfor the outcome.
Errors
- 400
IDEMPOTENCY_KEY_REQUIRED: theIdempotency-Keyheader is missing. Send a new unique value, such as a UUID, with every write.INVALID_IDEMPOTENCY_KEY: theIdempotency-Keyheader is longer than 255 characters. Use a shorter value.INVALID_REQUEST_BODY: the body is not a single valid JSON object. Send one JSON object with the fields documented for this endpoint. - 401
UNAUTHENTICATED: the request has no API key, or the key is mistyped, revoked or expired, or its creator has left the organization. SendAuthorization: Bearer PAN_…with a valid key; create one in the console under Organization › API keys. - 403
INSUFFICIENT_SCOPE: the API key lacks the scope this endpoint needs (readfor GET,writefor changes; an AI app's key also needsdeletefor a destructive call). Use a key with that scope, or reconnect the AI app with "Manage and delete" access.FORBIDDEN: the member who created the key may not do this in the organization. Use a key created by an owner or admin.AI_APPS_DISABLED: the organization has turned AI app access off, and this request was made with an AI app's key or sent by Pantech's MCP server (Pantech-Client: mcp/…). An owner can turn it on in the console under Organization › AI apps. - 404
RESOURCE_NOT_FOUND: no security group with this id in your organization, or the id is not a security group id (sg_…). Check the id. - 409
INVALID_RESOURCE_STATE: the security group cannot do this in its current state, for example while it is being created or deleted. Wait for its current operation to finish, then retry.CONCURRENT_UPDATE: the resource changed while this request was being processed. Retry the request; if it repeats, read the resource first. - 413
REQUEST_TOO_LARGE: the body is larger than 64 KiB. Send a smaller request. - 422
VALIDATION_FAILED: a field is invalid. Each entry oferrorsnames thefieldand itscode:rulesREQUIRED: send the complete rule list.rulesRULE_ALLOWS_PRIVATE_NETWORK: an instance using this group has a private database network interface, and a rule's source overlaps the private network's range; the message names the range and the rules. Replace0.0.0.0/0(and any other overlapping source) with narrower ranges that leave out10.250.0.0/20.rulesDATABASE_ACCESS_RANGE_LIMIT_EXCEEDED: a database this group is attached to would get more than 1024 address ranges. Use fewer or wider (but at most /8) ranges, or detach the group from that database.UNKNOWN_FIELD: the body has a field this endpoint does not take (named infield). Remove it or fix its spelling.VALIDATION_FAILEDwith noerrorsentry: the list is empty, or a rule has an unknowndirectionorprotocolor an invalid IPv4cidr. Send at least one valid rule. - 429
RATE_LIMITED: this API key, verified user or organization used its request budget for the current window, or this address exceeded an IP/failed-auth limit. WaitRetry-Afterseconds, then retry. For authenticated quota denials,RateLimit-Scopeidentifies the denying quota andRateLimit-Resetreports its remaining window in seconds. - 503
SERVICE_UNAVAILABLE: request quota storage is unavailable. Wait a few seconds, then retry.PROVISIONING_UNAVAILABLE: the provisioning service is temporarily unavailable. Wait a few seconds, then retry with the sameIdempotency-Key.
Every code is explained in Errors.
curl -X PUT "https://api.pantechdynamics.com/public/v1/security-groups/sg_06gk3x9tq7m2v8r4y1c5d0zp8w/rules" \
-H "Authorization: Bearer $PANTECH_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"rules": [
{
"direction": "ingress",
"protocol": "tcp",
"port_range": "22",
"cidr": "203.0.113.4/32"
},
{
"direction": "ingress",
"protocol": "tcp",
"port_range": "5432",
"cidr": "10.0.1.0/24"
}
]
}'{
"operation_id": "op_06gk3x9tq7m2v8r4y1c5d0zp8w",
"resource_id": "sg_06gk3x9tq7m2v8r4y1c5d0zp8w",
"status": "submitting"
}Delete a security group
Deletes a security group. It must not be used by any instance. The organization's default group cannot be deleted. A group attached to a database cannot be deleted either: detach it with PUT /public/v1/databases/{database_id}/security-groups first.
Returns 202 Accepted with an operation_id (also in the Location header). The change happens in the background: poll GET /public/v1/operations/{operation_id}, or stream /events, until status is succeeded or failed; a failed operation carries a stable failure.code and a readable failure.reason.
Send an Idempotency-Key. A retry with the same key returns the original operation instead of making the change twice.
Scope: write. Destructive: an AI app's key also needs delete.
Headers
AuthorizationstringrequiredBearerand your API key:Bearer PAN_….Idempotency-KeystringrequiredA new value, such as a UUID, for each change. Resend with the same value to retry safely.
At most 255 characters.
Path parameters
security_group_idstringrequiredThe resource's id.
Response 202
Accepted. Followoperation_id until it finishes.operation_idstringrequiredThe operation carrying out the change. Poll
GET /public/v1/operations/{operation_id}(also theLocationheader) untilstatusissucceededorfailed.resource_idstringrequiredThe resource being created or changed, e.g. the new snapshot's id for a snapshot create.
statusstringrequiredThe operation's status when the request was accepted, usually
submitting. Followoperation_idfor the outcome.
Errors
- 400
IDEMPOTENCY_KEY_REQUIRED: theIdempotency-Keyheader is missing. Send a new unique value, such as a UUID, with every write.INVALID_IDEMPOTENCY_KEY: theIdempotency-Keyheader is longer than 255 characters. Use a shorter value. - 401
UNAUTHENTICATED: the request has no API key, or the key is mistyped, revoked or expired, or its creator has left the organization. SendAuthorization: Bearer PAN_…with a valid key; create one in the console under Organization › API keys. - 403
INSUFFICIENT_SCOPE: the API key lacks the scope this endpoint needs (readfor GET,writefor changes; an AI app's key also needsdeletefor a destructive call). Use a key with that scope, or reconnect the AI app with "Manage and delete" access.FORBIDDEN: the member who created the key may not do this in the organization. Use a key created by an owner or admin.AI_APPS_DISABLED: the organization has turned AI app access off, and this request was made with an AI app's key or sent by Pantech's MCP server (Pantech-Client: mcp/…). An owner can turn it on in the console under Organization › AI apps. - 404
RESOURCE_NOT_FOUND: no security group with this id in your organization, or the id is not a security group id (sg_…). Check the id. - 409
DEFAULT_SECURITY_GROUP_UNDELETABLE: the organization's default group cannot be deleted. You can change its rules instead.SECURITY_GROUP_ATTACHED_TO_DATABASE: a database uses this group;detailnames it. Detach the group from that database, then retry.INVALID_RESOURCE_STATE: instances still use this group, or it is already being deleted. Move those instances to another group first.CONCURRENT_UPDATE: the resource changed while this request was being processed. Retry the request; if it repeats, read the resource first. - 422
VALIDATION_FAILEDwith noerrorsentry: the platform refused the request, for example because the resource has already been deleted. Read the resource to check its state. - 429
RATE_LIMITED: this API key, verified user or organization used its request budget for the current window, or this address exceeded an IP/failed-auth limit. WaitRetry-Afterseconds, then retry. For authenticated quota denials,RateLimit-Scopeidentifies the denying quota andRateLimit-Resetreports its remaining window in seconds. - 503
SERVICE_UNAVAILABLE: request quota storage is unavailable. Wait a few seconds, then retry.PROVISIONING_UNAVAILABLE: the provisioning service is temporarily unavailable. Wait a few seconds, then retry with the sameIdempotency-Key.
Every code is explained in Errors.
curl -X DELETE "https://api.pantechdynamics.com/public/v1/security-groups/sg_06gk3x9tq7m2v8r4y1c5d0zp8w" \
-H "Authorization: Bearer $PANTECH_API_KEY" \
-H "Idempotency-Key: $(uuidgen)"{
"operation_id": "op_06gk3x9tq7m2v8r4y1c5d0zp8w",
"resource_id": "sg_06gk3x9tq7m2v8r4y1c5d0zp8w",
"status": "submitting"
}