Snowflake External Volume API
The Snowflake External Volume API is a REST API that you can use to access, update, and perform certain actions on External Volume resource in a Snowflake database.
The Snowflake External Volume API is a REST API that you can use to access, update, and perform certain actions on External Volume resource in a Snowflake database.
openapi: 3.0.0
servers:
- description: Snowflake REST Server
url: https://org-account.snowflakecomputing.com
info:
version: 0.0.1
title: Snowflake External Volume API
description: The Snowflake External Volume API is a REST API that you can use to access, update, and perform certain actions on External Volume resource in a Snowflake database.
contact:
name: Snowflake, Inc.
url: https://snowflake.com
email: support@snowflake.com
paths:
/api/v2/external-volumes:
get:
summary: List External Volumes
tags:
- external-volume
description: List external volumes
operationId: listExternalVolumes
parameters:
- $ref: common.yaml#/components/parameters/like
responses:
'200':
description: successful
headers:
X-Snowflake-Request-ID:
$ref: common.yaml#/components/headers/X-Snowflake-Request-ID
Link:
$ref: common.yaml#/components/headers/Link
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ExternalVolume'
examples:
Listexternalvolumes200Example:
summary: Default listExternalVolumes 200 response
x-microcks-default: true
value:
- name: Example Title
storage_locations:
- {}
allow_writes: true
comment: example_value
created_on: '2026-01-15T10:30:00Z'
owner: example_value
owner_role_type: example_value
'202':
$ref: common.yaml#/components/responses/202SuccessAcceptedResponse
'400':
$ref: common.yaml#/components/responses/400BadRequest
'401':
$ref: common.yaml#/components/responses/401Unauthorized
'403':
$ref: common.yaml#/components/responses/403Forbidden
'404':
$ref: common.yaml#/components/responses/404NotFound
'405':
$ref: common.yaml#/components/responses/405MethodNotAllowed
'408':
$ref: common.yaml#/components/responses/408RequestTimeout
'409':
$ref: common.yaml#/components/responses/409Conflict
'410':
$ref: common.yaml#/components/responses/410Gone
'429':
$ref: common.yaml#/components/responses/429LimitExceeded
'500':
$ref: common.yaml#/components/responses/500InternalServerError
'503':
$ref: common.yaml#/components/responses/503ServiceUnavailable
'504':
$ref: common.yaml#/components/responses/504GatewayTimeout
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
post:
summary: Create an External Volume
tags:
- external-volume
description: Create an external volume
operationId: createExternalVolume
parameters:
- $ref: common.yaml#/components/parameters/createMode
responses:
'200':
$ref: common.yaml#/components/responses/200SuccessResponse
'202':
$ref: common.yaml#/components/responses/202SuccessAcceptedResponse
'400':
$ref: common.yaml#/components/responses/400BadRequest
'401':
$ref: common.yaml#/components/responses/401Unauthorized
'403':
$ref: common.yaml#/components/responses/403Forbidden
'404':
$ref: common.yaml#/components/responses/404NotFound
'405':
$ref: common.yaml#/components/responses/405MethodNotAllowed
'408':
$ref: common.yaml#/components/responses/408RequestTimeout
'409':
$ref: common.yaml#/components/responses/409Conflict
'410':
$ref: common.yaml#/components/responses/410Gone
'429':
$ref: common.yaml#/components/responses/429LimitExceeded
'500':
$ref: common.yaml#/components/responses/500InternalServerError
'503':
$ref: common.yaml#/components/responses/503ServiceUnavailable
'504':
$ref: common.yaml#/components/responses/504GatewayTimeout
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExternalVolume'
examples:
CreateexternalvolumeRequestExample:
summary: Default createExternalVolume request
x-microcks-default: true
value:
name: Example Title
storage_locations:
- name: Example Title
storage_provider: S3
allow_writes: true
comment: example_value
created_on: '2026-01-15T10:30:00Z'
owner: example_value
owner_role_type: example_value
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/api/v2/external-volumes/{name}:
get:
summary: Fetch an External Volume
tags:
- external-volume
description: Fetch an external volume
operationId: fetchExternalVolume
parameters:
- $ref: common.yaml#/components/parameters/name
responses:
'200':
description: successful
headers:
X-Snowflake-Request-ID:
$ref: common.yaml#/components/headers/X-Snowflake-Request-ID
Link:
$ref: common.yaml#/components/headers/Link
content:
application/json:
schema:
$ref: '#/components/schemas/ExternalVolume'
examples:
Fetchexternalvolume200Example:
summary: Default fetchExternalVolume 200 response
x-microcks-default: true
value:
name: Example Title
storage_locations:
- name: Example Title
storage_provider: S3
allow_writes: true
comment: example_value
created_on: '2026-01-15T10:30:00Z'
owner: example_value
owner_role_type: example_value
'202':
$ref: common.yaml#/components/responses/202SuccessAcceptedResponse
'400':
$ref: common.yaml#/components/responses/400BadRequest
'401':
$ref: common.yaml#/components/responses/401Unauthorized
'403':
$ref: common.yaml#/components/responses/403Forbidden
'404':
$ref: common.yaml#/components/responses/404NotFound
'405':
$ref: common.yaml#/components/responses/405MethodNotAllowed
'408':
$ref: common.yaml#/components/responses/408RequestTimeout
'409':
$ref: common.yaml#/components/responses/409Conflict
'410':
$ref: common.yaml#/components/responses/410Gone
'429':
$ref: common.yaml#/components/responses/429LimitExceeded
'500':
$ref: common.yaml#/components/responses/500InternalServerError
'503':
$ref: common.yaml#/components/responses/503ServiceUnavailable
'504':
$ref: common.yaml#/components/responses/504GatewayTimeout
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
delete:
summary: Delete an External Volume
tags:
- external-volume
description: Delete an external volume
operationId: deleteExternalVolume
parameters:
- $ref: common.yaml#/components/parameters/name
- $ref: common.yaml#/components/parameters/ifExists
responses:
'200':
$ref: common.yaml#/components/responses/200SuccessResponse
'202':
$ref: common.yaml#/components/responses/202SuccessAcceptedResponse
'400':
$ref: common.yaml#/components/responses/400BadRequest
'401':
$ref: common.yaml#/components/responses/401Unauthorized
'403':
$ref: common.yaml#/components/responses/403Forbidden
'404':
$ref: common.yaml#/components/responses/404NotFound
'405':
$ref: common.yaml#/components/responses/405MethodNotAllowed
'408':
$ref: common.yaml#/components/responses/408RequestTimeout
'409':
$ref: common.yaml#/components/responses/409Conflict
'410':
$ref: common.yaml#/components/responses/410Gone
'429':
$ref: common.yaml#/components/responses/429LimitExceeded
'500':
$ref: common.yaml#/components/responses/500InternalServerError
'503':
$ref: common.yaml#/components/responses/503ServiceUnavailable
'504':
$ref: common.yaml#/components/responses/504GatewayTimeout
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/api/v2/external-volumes/{name}:undrop:
post:
summary: Undrop an External Volume
tags:
- external-volume
description: Undrop an external volume
operationId: undropExternalVolume
parameters:
- $ref: common.yaml#/components/parameters/name
responses:
'200':
$ref: common.yaml#/components/responses/200SuccessResponse
'202':
$ref: common.yaml#/components/responses/202SuccessAcceptedResponse
'400':
$ref: common.yaml#/components/responses/400BadRequest
'401':
$ref: common.yaml#/components/responses/401Unauthorized
'403':
$ref: common.yaml#/components/responses/403Forbidden
'404':
$ref: common.yaml#/components/responses/404NotFound
'405':
$ref: common.yaml#/components/responses/405MethodNotAllowed
'408':
$ref: common.yaml#/components/responses/408RequestTimeout
'409':
$ref: common.yaml#/components/responses/409Conflict
'410':
$ref: common.yaml#/components/responses/410Gone
'429':
$ref: common.yaml#/components/responses/429LimitExceeded
'500':
$ref: common.yaml#/components/responses/500InternalServerError
'503':
$ref: common.yaml#/components/responses/503ServiceUnavailable
'504':
$ref: common.yaml#/components/responses/504GatewayTimeout
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
components:
schemas:
ExternalVolume:
type: object
description: A Snowflake external volume
properties:
name:
type: string
pattern: ^"([^"]|"")+"|[a-zA-Z_][a-zA-Z0-9_$]*$
description: String that specifies the identifier (the name) for the external volume; must be unique in your account.
example: Example Title
storage_locations:
type: array
items:
$ref: '#/components/schemas/StorageLocation'
description: Set of named cloud storage locations in different regions and, optionally, cloud platforms.
example: []
allow_writes:
type: boolean
description: Specifies whether write operations are allowed for the external volume; must be set to TRUE for Iceberg tables that use Snowflake as the catalog.
example: true
comment:
type: string
description: String (literal) that specifies a comment for the external volume.
example: example_value
created_on:
type: string
format: date-time
readOnly: true
description: Date and time when the external volume was created.
example: '2026-01-15T10:30:00Z'
owner:
type: string
pattern: ^"([^"]|"")+"|[a-zA-Z_][a-zA-Z0-9_$]*$
readOnly: true
description: Role that owns the external volume
example: example_value
owner_role_type:
type: string
pattern: ^"([^"]|"")+"|[a-zA-Z_][a-zA-Z0-9_$]*$
readOnly: true
description: The type of role that owns the external volume
example: example_value
required:
- name
- storage_locations
StorageLocation:
type: object
properties:
name:
type: string
description: ''
example: Example Title
storage_provider:
type: string
enum:
- S3
- S3GOV
- GCS
- AZURE
description: Specifies the cloud storage provider that stores your data files.
example: S3
required:
- name
- storage_provider
discriminator:
propertyName: storage_provider
mapping:
S3: StorageLocationS3
S3GOV: StorageLocationS3Gov
GCS: StorageLocationGcs
AZURE: StorageLocationAzure
StorageLocationS3:
allOf:
- $ref: '#/components/schemas/StorageLocation'
properties:
storage_aws_role_arn:
type: string
description: Specifies the case-sensitive Amazon Resource Name (ARN) of the AWS identity and access management (IAM) role that grants privileges on the S3 bucket containing your data files.
example: example_value
storage_base_url:
type: string
description: Specifies the base URL for your cloud storage location.
example: https://www.example.com
storage_aws_external_id:
type: string
description: Optionally specifies an external ID that Snowflake uses to establish a trust relationship with AWS.
example: '500123'
encryption:
$ref: '#/components/schemas/Encryption'
description: Specifies the properties needed to encrypt data on the external volume.
required:
- storage_aws_role_arn
- storage_base_url
Encryption:
type: object
properties:
type:
type: string
enum:
- NONE
- AWS_SSE_S3
- AWS_SSE_KMS
- GCS_SSE_KMS
description: Specifies the encryption type used.
example: NONE
kms_key_id:
type: string
description: Specifies the ID for the Cloud KMS-managed key used to encrypt files written to the bucket.
example: '500123'
required:
- type
StorageLocationS3Gov:
allOf:
- $ref: '#/components/schemas/StorageLocation'
properties:
storage_aws_role_arn:
type: string
description: Specifies the case-sensitive Amazon Resource Name (ARN) of the AWS identity and access management (IAM) role that grants privileges on the S3 bucket containing your data files.
example: example_value
storage_base_url:
type: string
description: Specifies the base URL for your cloud storage location.
example: https://www.example.com
storage_aws_external_id:
type: string
description: Optionally specifies an external ID that Snowflake uses to establish a trust relationship with AWS.
example: '500123'
encryption:
$ref: '#/components/schemas/Encryption'
description: Specifies the properties needed to encrypt data on the external volume.
required:
- storage_aws_role_arn
- storage_base_url
StorageLocationGcs:
allOf:
- $ref: '#/components/schemas/StorageLocation'
properties:
storage_base_url:
type: string
description: Specifies the base URL for your cloud storage location.
example: https://www.example.com
encryption:
$ref: '#/components/schemas/Encryption'
description: Specifies the properties needed to encrypt data on the external volume.
required:
- storage_base_url
StorageLocationAzure:
allOf:
- $ref: '#/components/schemas/StorageLocation'
properties:
azure_tenant_id:
type: string
description: Specifies the ID for your Office 365 tenant that the allowed and blocked storage accounts belong to.
example: '500123'
storage_base_url:
type: string
description: Specifies the base URL for your cloud storage location.
example: https://www.example.com
required:
- azure_tenant_id
- storage_base_url
securitySchemes:
KeyPair:
$ref: common.yaml#/components/securitySchemes/KeyPair
ExternalOAuth:
$ref: common.yaml#/components/securitySchemes/ExternalOAuth
SnowflakeOAuth:
$ref: common.yaml#/components/securitySchemes/SnowflakeOAuth
security:
- KeyPair: []
- ExternalOAuth: []
- SnowflakeOAuth: []