blob: b267713cc8fdc320b14049cfdaffdc9b22c645df [file]
{
"bindings": [
{
"id": "rust",
"label": "Rust",
"language": "rust"
},
{
"id": "java",
"label": "Java",
"language": "java"
},
{
"id": "python",
"label": "Python",
"language": "python"
},
{
"id": "nodejs",
"label": "Node.js",
"language": "javascript"
},
{
"id": "ruby",
"label": "Ruby",
"language": "ruby"
},
{
"id": "go",
"label": "Go",
"language": "go"
},
{
"id": "c",
"label": "C",
"language": "c"
},
{
"id": "cpp",
"label": "C++",
"language": "cpp"
}
],
"services": [
{
"name": "aliyun-drive",
"scheme": "aliyun-drive",
"groups": [
"General"
],
"configs": [
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "The Root of this backend.\n\nAll operations will happen under this root.\n\nDefault to `/` if not set."
},
{
"name": "access_token",
"type": "string",
"required": false,
"group": "General",
"comments": "The access_token of this backend.\n\nSolution for client-only purpose. #4733\n\nRequired if no client_id, client_secret and refresh_token are provided."
},
{
"name": "client_id",
"type": "string",
"required": false,
"group": "General",
"comments": "The client_id of this backend.\n\nRequired if no access_token is provided."
},
{
"name": "client_secret",
"type": "string",
"required": false,
"group": "General",
"comments": "The client_secret of this backend.\n\nRequired if no access_token is provided."
},
{
"name": "refresh_token",
"type": "string",
"required": false,
"group": "General",
"comments": "The refresh_token of this backend.\n\nRequired if no access_token is provided."
},
{
"name": "drive_type",
"type": "string",
"required": true,
"group": "General",
"comments": "The drive_type of this backend.\n\nAll operations will happen under this type of drive.\n\nAvailable values are `default`, `backup` and `resource`.\n\nFallback to default if not set or no other drives can be found."
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"aliyun-drive\", [\n (\"drive_type\".to_string(), \"...\".to_string()),\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"aliyun-drive\", [\n // The Root of this backend.\n //\n // All operations will happen under this root.\n //\n // Default to `/` if not set.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // The access_token of this backend.\n //\n // Solution for client-only purpose. #4733\n //\n // Required if no client_id, client_secret and refresh_token are provided.\n // (\"access_token\".to_string(), \"...\".to_string()),\n\n // The client_id of this backend.\n //\n // Required if no access_token is provided.\n // (\"client_id\".to_string(), \"...\".to_string()),\n\n // The client_secret of this backend.\n //\n // Required if no access_token is provided.\n // (\"client_secret\".to_string(), \"...\".to_string()),\n\n // The refresh_token of this backend.\n //\n // Required if no access_token is provided.\n // (\"refresh_token\".to_string(), \"...\".to_string()),\n\n // The drive_type of this backend.\n //\n // All operations will happen under this type of drive.\n //\n // Available values are `default`, `backup` and `resource`.\n //\n // Fallback to default if not set or no other drives can be found.\n (\"drive_type\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nconfig.put(\"drive_type\", \"...\");\nOperator operator = Operator.of(\"aliyun-drive\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// The Root of this backend.\n//\n// All operations will happen under this root.\n//\n// Default to `/` if not set.\n// config.put(\"root\", \"...\");\n\n// The access_token of this backend.\n//\n// Solution for client-only purpose. #4733\n//\n// Required if no client_id, client_secret and refresh_token are provided.\n// config.put(\"access_token\", \"...\");\n\n// The client_id of this backend.\n//\n// Required if no access_token is provided.\n// config.put(\"client_id\", \"...\");\n\n// The client_secret of this backend.\n//\n// Required if no access_token is provided.\n// config.put(\"client_secret\", \"...\");\n\n// The refresh_token of this backend.\n//\n// Required if no access_token is provided.\n// config.put(\"refresh_token\", \"...\");\n\n// The drive_type of this backend.\n//\n// All operations will happen under this type of drive.\n//\n// Available values are `default`, `backup` and `resource`.\n//\n// Fallback to default if not set or no other drives can be found.\nconfig.put(\"drive_type\", \"...\");\nOperator operator = Operator.of(\"aliyun-drive\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"aliyun-drive\",\n drive_type=\"...\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"aliyun-drive\",\n # The Root of this backend.\n #\n # All operations will happen under this root.\n #\n # Default to `/` if not set.\n # root=\"...\",\n\n # The access_token of this backend.\n #\n # Solution for client-only purpose. #4733\n #\n # Required if no client_id, client_secret and refresh_token are provided.\n # access_token=\"...\",\n\n # The client_id of this backend.\n #\n # Required if no access_token is provided.\n # client_id=\"...\",\n\n # The client_secret of this backend.\n #\n # Required if no access_token is provided.\n # client_secret=\"...\",\n\n # The refresh_token of this backend.\n #\n # Required if no access_token is provided.\n # refresh_token=\"...\",\n\n # The drive_type of this backend.\n #\n # All operations will happen under this type of drive.\n #\n # Available values are `default`, `backup` and `resource`.\n #\n # Fallback to default if not set or no other drives can be found.\n drive_type=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"aliyun-drive\", {\n drive_type: \"...\",\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"aliyun-drive\", {\n // The Root of this backend.\n //\n // All operations will happen under this root.\n //\n // Default to `/` if not set.\n // root: \"...\",\n\n // The access_token of this backend.\n //\n // Solution for client-only purpose. #4733\n //\n // Required if no client_id, client_secret and refresh_token are provided.\n // access_token: \"...\",\n\n // The client_id of this backend.\n //\n // Required if no access_token is provided.\n // client_id: \"...\",\n\n // The client_secret of this backend.\n //\n // Required if no access_token is provided.\n // client_secret: \"...\",\n\n // The refresh_token of this backend.\n //\n // Required if no access_token is provided.\n // refresh_token: \"...\",\n\n // The drive_type of this backend.\n //\n // All operations will happen under this type of drive.\n //\n // Available values are `default`, `backup` and `resource`.\n //\n // Fallback to default if not set or no other drives can be found.\n drive_type: \"...\",\n});"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/aliyun-drive\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(aliyun-drive.Scheme, opendal.OperatorOptions{\n\t\"drive_type\": \"...\",\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/aliyun-drive\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(aliyun-drive.Scheme, opendal.OperatorOptions{\n\t// The Root of this backend.\n\t//\n\t// All operations will happen under this root.\n\t//\n\t// Default to `/` if not set.\n\t// \"root\": \"...\",\n\n\t// The access_token of this backend.\n\t//\n\t// Solution for client-only purpose. #4733\n\t//\n\t// Required if no client_id, client_secret and refresh_token are provided.\n\t// \"access_token\": \"...\",\n\n\t// The client_id of this backend.\n\t//\n\t// Required if no access_token is provided.\n\t// \"client_id\": \"...\",\n\n\t// The client_secret of this backend.\n\t//\n\t// Required if no access_token is provided.\n\t// \"client_secret\": \"...\",\n\n\t// The refresh_token of this backend.\n\t//\n\t// Required if no access_token is provided.\n\t// \"refresh_token\": \"...\",\n\n\t// The drive_type of this backend.\n\t//\n\t// All operations will happen under this type of drive.\n\t//\n\t// Available values are `default`, `backup` and `resource`.\n\t//\n\t// Fallback to default if not set or no other drives can be found.\n\t\"drive_type\": \"...\",\n})"
}
]
},
{
"name": "alluxio",
"scheme": "alluxio",
"groups": [
"General"
],
"configs": [
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "root of this backend.\n\nAll operations will happen under this root.\n\ndefault to `/` if not set."
},
{
"name": "endpoint",
"type": "string",
"required": false,
"group": "General",
"comments": "endpoint of this backend.\n\nEndpoint must be full uri, mostly like `http://127.0.0.1:39999`."
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"alluxio\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"alluxio\", [\n // root of this backend.\n //\n // All operations will happen under this root.\n //\n // default to `/` if not set.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // endpoint of this backend.\n //\n // Endpoint must be full uri, mostly like `http://127.0.0.1:39999`.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nOperator operator = Operator.of(\"alluxio\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// root of this backend.\n//\n// All operations will happen under this root.\n//\n// default to `/` if not set.\n// config.put(\"root\", \"...\");\n\n// endpoint of this backend.\n//\n// Endpoint must be full uri, mostly like `http://127.0.0.1:39999`.\n// config.put(\"endpoint\", \"...\");\nOperator operator = Operator.of(\"alluxio\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"alluxio\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"alluxio\",\n # root of this backend.\n #\n # All operations will happen under this root.\n #\n # default to `/` if not set.\n # root=\"...\",\n\n # endpoint of this backend.\n #\n # Endpoint must be full uri, mostly like `http://127.0.0.1:39999`.\n # endpoint=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"alluxio\", {\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"alluxio\", {\n // root of this backend.\n //\n // All operations will happen under this root.\n //\n // default to `/` if not set.\n // root: \"...\",\n\n // endpoint of this backend.\n //\n // Endpoint must be full uri, mostly like `http://127.0.0.1:39999`.\n // endpoint: \"...\",\n});"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/alluxio\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(alluxio.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/alluxio\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(alluxio.Scheme, opendal.OperatorOptions{\n\t// root of this backend.\n\t//\n\t// All operations will happen under this root.\n\t//\n\t// default to `/` if not set.\n\t// \"root\": \"...\",\n\n\t// endpoint of this backend.\n\t//\n\t// Endpoint must be full uri, mostly like `http://127.0.0.1:39999`.\n\t// \"endpoint\": \"...\",\n})"
}
]
},
{
"name": "azblob",
"scheme": "azblob",
"groups": [
"General"
],
"configs": [
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "The root of Azblob service backend.\n\nAll operations will happen under this root."
},
{
"name": "container",
"type": "string",
"required": true,
"group": "General",
"comments": "The container name of Azblob service backend."
},
{
"name": "endpoint",
"type": "string",
"required": false,
"group": "General",
"comments": "The endpoint of Azblob service backend.\n\nEndpoint must be full uri, e.g.\n\n- Azblob: `https://accountname.blob.core.windows.net`\n- Azurite: `http://127.0.0.1:10000/devstoreaccount1`"
},
{
"name": "account_name",
"type": "string",
"required": false,
"group": "General",
"comments": "The account name of Azblob service backend."
},
{
"name": "account_key",
"type": "string",
"required": false,
"group": "General",
"comments": "The account key of Azblob service backend."
},
{
"name": "encryption_key",
"type": "string",
"required": false,
"group": "General",
"comments": "The encryption key of Azblob service backend."
},
{
"name": "encryption_key_sha256",
"type": "string",
"required": false,
"group": "General",
"comments": "The encryption key sha256 of Azblob service backend."
},
{
"name": "encryption_algorithm",
"type": "string",
"required": false,
"group": "General",
"comments": "The encryption algorithm of Azblob service backend."
},
{
"name": "sas_token",
"type": "string",
"required": false,
"group": "General",
"comments": "The sas token of Azblob service backend."
},
{
"name": "batch_max_operations",
"type": "integer",
"required": false,
"group": "General",
"deprecated": {
"since": "0.57.0",
"note": "Azblob delete batch capability is enabled by default with Azure Blob's 256-operation batch limit. Use CapabilityOverrideLayer to override delete_max_size for specific endpoints."
},
"comments": "Deprecated: Azblob delete batch capability is enabled by default with Azure Blob's 256-operation batch limit."
},
{
"name": "skip_signature",
"type": "bool",
"required": false,
"group": "General",
"comments": "Skip signature will skip loading credentials and signing requests."
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"azblob\", [\n (\"container\".to_string(), \"...\".to_string()),\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"azblob\", [\n // The root of Azblob service backend.\n //\n // All operations will happen under this root.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // The container name of Azblob service backend.\n (\"container\".to_string(), \"...\".to_string()),\n\n // The endpoint of Azblob service backend.\n //\n // Endpoint must be full uri, e.g.\n //\n // - Azblob: `https://accountname.blob.core.windows.net`\n // - Azurite: `http://127.0.0.1:10000/devstoreaccount1`\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // The account name of Azblob service backend.\n // (\"account_name\".to_string(), \"...\".to_string()),\n\n // The account key of Azblob service backend.\n // (\"account_key\".to_string(), \"...\".to_string()),\n\n // The encryption key of Azblob service backend.\n // (\"encryption_key\".to_string(), \"...\".to_string()),\n\n // The encryption key sha256 of Azblob service backend.\n // (\"encryption_key_sha256\".to_string(), \"...\".to_string()),\n\n // The encryption algorithm of Azblob service backend.\n // (\"encryption_algorithm\".to_string(), \"...\".to_string()),\n\n // The sas token of Azblob service backend.\n // (\"sas_token\".to_string(), \"...\".to_string()),\n\n // Skip signature will skip loading credentials and signing requests.\n // (\"skip_signature\".to_string(), \"true\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nconfig.put(\"container\", \"...\");\nOperator operator = Operator.of(\"azblob\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// The root of Azblob service backend.\n//\n// All operations will happen under this root.\n// config.put(\"root\", \"...\");\n\n// The container name of Azblob service backend.\nconfig.put(\"container\", \"...\");\n\n// The endpoint of Azblob service backend.\n//\n// Endpoint must be full uri, e.g.\n//\n// - Azblob: `https://accountname.blob.core.windows.net`\n// - Azurite: `http://127.0.0.1:10000/devstoreaccount1`\n// config.put(\"endpoint\", \"...\");\n\n// The account name of Azblob service backend.\n// config.put(\"account_name\", \"...\");\n\n// The account key of Azblob service backend.\n// config.put(\"account_key\", \"...\");\n\n// The encryption key of Azblob service backend.\n// config.put(\"encryption_key\", \"...\");\n\n// The encryption key sha256 of Azblob service backend.\n// config.put(\"encryption_key_sha256\", \"...\");\n\n// The encryption algorithm of Azblob service backend.\n// config.put(\"encryption_algorithm\", \"...\");\n\n// The sas token of Azblob service backend.\n// config.put(\"sas_token\", \"...\");\n\n// Skip signature will skip loading credentials and signing requests.\n// config.put(\"skip_signature\", \"true\");\nOperator operator = Operator.of(\"azblob\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"azblob\",\n container=\"...\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"azblob\",\n # The root of Azblob service backend.\n #\n # All operations will happen under this root.\n # root=\"...\",\n\n # The container name of Azblob service backend.\n container=\"...\",\n\n # The endpoint of Azblob service backend.\n #\n # Endpoint must be full uri, e.g.\n #\n # - Azblob: `https://accountname.blob.core.windows.net`\n # - Azurite: `http://127.0.0.1:10000/devstoreaccount1`\n # endpoint=\"...\",\n\n # The account name of Azblob service backend.\n # account_name=\"...\",\n\n # The account key of Azblob service backend.\n # account_key=\"...\",\n\n # The encryption key of Azblob service backend.\n # encryption_key=\"...\",\n\n # The encryption key sha256 of Azblob service backend.\n # encryption_key_sha256=\"...\",\n\n # The encryption algorithm of Azblob service backend.\n # encryption_algorithm=\"...\",\n\n # The sas token of Azblob service backend.\n # sas_token=\"...\",\n\n # Skip signature will skip loading credentials and signing requests.\n # skip_signature=\"true\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"azblob\", {\n container: \"...\",\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"azblob\", {\n // The root of Azblob service backend.\n //\n // All operations will happen under this root.\n // root: \"...\",\n\n // The container name of Azblob service backend.\n container: \"...\",\n\n // The endpoint of Azblob service backend.\n //\n // Endpoint must be full uri, e.g.\n //\n // - Azblob: `https://accountname.blob.core.windows.net`\n // - Azurite: `http://127.0.0.1:10000/devstoreaccount1`\n // endpoint: \"...\",\n\n // The account name of Azblob service backend.\n // account_name: \"...\",\n\n // The account key of Azblob service backend.\n // account_key: \"...\",\n\n // The encryption key of Azblob service backend.\n // encryption_key: \"...\",\n\n // The encryption key sha256 of Azblob service backend.\n // encryption_key_sha256: \"...\",\n\n // The encryption algorithm of Azblob service backend.\n // encryption_algorithm: \"...\",\n\n // The sas token of Azblob service backend.\n // sas_token: \"...\",\n\n // Skip signature will skip loading credentials and signing requests.\n // skip_signature: \"true\",\n});"
},
{
"binding": "ruby",
"language": "ruby",
"minimal": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"azblob\", {\n \"container\" => \"...\",\n})",
"full": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"azblob\", {\n # The root of Azblob service backend.\n #\n # All operations will happen under this root.\n # \"root\" => \"...\",\n\n # The container name of Azblob service backend.\n \"container\" => \"...\",\n\n # The endpoint of Azblob service backend.\n #\n # Endpoint must be full uri, e.g.\n #\n # - Azblob: `https://accountname.blob.core.windows.net`\n # - Azurite: `http://127.0.0.1:10000/devstoreaccount1`\n # \"endpoint\" => \"...\",\n\n # The account name of Azblob service backend.\n # \"account_name\" => \"...\",\n\n # The account key of Azblob service backend.\n # \"account_key\" => \"...\",\n\n # The encryption key of Azblob service backend.\n # \"encryption_key\" => \"...\",\n\n # The encryption key sha256 of Azblob service backend.\n # \"encryption_key_sha256\" => \"...\",\n\n # The encryption algorithm of Azblob service backend.\n # \"encryption_algorithm\" => \"...\",\n\n # The sas token of Azblob service backend.\n # \"sas_token\" => \"...\",\n\n # Skip signature will skip loading credentials and signing requests.\n # \"skip_signature\" => \"true\",\n})"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/azblob\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(azblob.Scheme, opendal.OperatorOptions{\n\t\"container\": \"...\",\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/azblob\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(azblob.Scheme, opendal.OperatorOptions{\n\t// The root of Azblob service backend.\n\t//\n\t// All operations will happen under this root.\n\t// \"root\": \"...\",\n\n\t// The container name of Azblob service backend.\n\t\"container\": \"...\",\n\n\t// The endpoint of Azblob service backend.\n\t//\n\t// Endpoint must be full uri, e.g.\n\t//\n\t// - Azblob: `https://accountname.blob.core.windows.net`\n\t// - Azurite: `http://127.0.0.1:10000/devstoreaccount1`\n\t// \"endpoint\": \"...\",\n\n\t// The account name of Azblob service backend.\n\t// \"account_name\": \"...\",\n\n\t// The account key of Azblob service backend.\n\t// \"account_key\": \"...\",\n\n\t// The encryption key of Azblob service backend.\n\t// \"encryption_key\": \"...\",\n\n\t// The encryption key sha256 of Azblob service backend.\n\t// \"encryption_key_sha256\": \"...\",\n\n\t// The encryption algorithm of Azblob service backend.\n\t// \"encryption_algorithm\": \"...\",\n\n\t// The sas token of Azblob service backend.\n\t// \"sas_token\": \"...\",\n\n\t// Skip signature will skip loading credentials and signing requests.\n\t// \"skip_signature\": \"true\",\n})"
}
]
},
{
"name": "azdls",
"scheme": "azdls",
"groups": [
"General"
],
"configs": [
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "Root of this backend."
},
{
"name": "filesystem",
"type": "string",
"required": true,
"group": "General",
"comments": "Filesystem name of this backend."
},
{
"name": "endpoint",
"type": "string",
"required": false,
"group": "General",
"comments": "Endpoint of this backend."
},
{
"name": "account_name",
"type": "string",
"required": false,
"group": "General",
"comments": "Account name of this backend."
},
{
"name": "account_key",
"type": "string",
"required": false,
"group": "General",
"comments": "Account key of this backend.\n- required for shared_key authentication"
},
{
"name": "client_secret",
"type": "string",
"required": false,
"group": "General",
"comments": "client_secret\nThe client secret of the service principal.\n- required for client_credentials authentication"
},
{
"name": "tenant_id",
"type": "string",
"required": false,
"group": "General",
"comments": "tenant_id\nThe tenant id of the service principal.\n- required for client_credentials authentication"
},
{
"name": "client_id",
"type": "string",
"required": false,
"group": "General",
"comments": "client_id\nThe client id of the service principal.\n- required for client_credentials authentication"
},
{
"name": "sas_token",
"type": "string",
"required": false,
"group": "General",
"comments": "sas_token\nThe shared access signature token.\n- required for sas authentication"
},
{
"name": "authority_host",
"type": "string",
"required": false,
"group": "General",
"comments": "authority_host\nThe authority host of the service principal.\n- required for client_credentials authentication\n- default value: `https://login.microsoftonline.com`"
},
{
"name": "enable_hns",
"type": "bool",
"required": false,
"group": "General",
"comments": "Whether hierarchical namespace (HNS) is enabled for the storage account.\nWhen enabled, recursive deletion can use pagination to avoid timeouts on large directories.\n- default value: `false`"
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"azdls\", [\n (\"filesystem\".to_string(), \"...\".to_string()),\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"azdls\", [\n // Root of this backend.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // Filesystem name of this backend.\n (\"filesystem\".to_string(), \"...\".to_string()),\n\n // Endpoint of this backend.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // Account name of this backend.\n // (\"account_name\".to_string(), \"...\".to_string()),\n\n // Account key of this backend.\n // - required for shared_key authentication\n // (\"account_key\".to_string(), \"...\".to_string()),\n\n // client_secret\n // The client secret of the service principal.\n // - required for client_credentials authentication\n // (\"client_secret\".to_string(), \"...\".to_string()),\n\n // tenant_id\n // The tenant id of the service principal.\n // - required for client_credentials authentication\n // (\"tenant_id\".to_string(), \"...\".to_string()),\n\n // client_id\n // The client id of the service principal.\n // - required for client_credentials authentication\n // (\"client_id\".to_string(), \"...\".to_string()),\n\n // sas_token\n // The shared access signature token.\n // - required for sas authentication\n // (\"sas_token\".to_string(), \"...\".to_string()),\n\n // authority_host\n // The authority host of the service principal.\n // - required for client_credentials authentication\n // - default value: `https://login.microsoftonline.com`\n // (\"authority_host\".to_string(), \"...\".to_string()),\n\n // Whether hierarchical namespace (HNS) is enabled for the storage account.\n // When enabled, recursive deletion can use pagination to avoid timeouts on large directories.\n // - default value: `false`\n // (\"enable_hns\".to_string(), \"true\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nconfig.put(\"filesystem\", \"...\");\nOperator operator = Operator.of(\"azdls\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// Root of this backend.\n// config.put(\"root\", \"...\");\n\n// Filesystem name of this backend.\nconfig.put(\"filesystem\", \"...\");\n\n// Endpoint of this backend.\n// config.put(\"endpoint\", \"...\");\n\n// Account name of this backend.\n// config.put(\"account_name\", \"...\");\n\n// Account key of this backend.\n// - required for shared_key authentication\n// config.put(\"account_key\", \"...\");\n\n// client_secret\n// The client secret of the service principal.\n// - required for client_credentials authentication\n// config.put(\"client_secret\", \"...\");\n\n// tenant_id\n// The tenant id of the service principal.\n// - required for client_credentials authentication\n// config.put(\"tenant_id\", \"...\");\n\n// client_id\n// The client id of the service principal.\n// - required for client_credentials authentication\n// config.put(\"client_id\", \"...\");\n\n// sas_token\n// The shared access signature token.\n// - required for sas authentication\n// config.put(\"sas_token\", \"...\");\n\n// authority_host\n// The authority host of the service principal.\n// - required for client_credentials authentication\n// - default value: `https://login.microsoftonline.com`\n// config.put(\"authority_host\", \"...\");\n\n// Whether hierarchical namespace (HNS) is enabled for the storage account.\n// When enabled, recursive deletion can use pagination to avoid timeouts on large directories.\n// - default value: `false`\n// config.put(\"enable_hns\", \"true\");\nOperator operator = Operator.of(\"azdls\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"azdls\",\n filesystem=\"...\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"azdls\",\n # Root of this backend.\n # root=\"...\",\n\n # Filesystem name of this backend.\n filesystem=\"...\",\n\n # Endpoint of this backend.\n # endpoint=\"...\",\n\n # Account name of this backend.\n # account_name=\"...\",\n\n # Account key of this backend.\n # - required for shared_key authentication\n # account_key=\"...\",\n\n # client_secret\n # The client secret of the service principal.\n # - required for client_credentials authentication\n # client_secret=\"...\",\n\n # tenant_id\n # The tenant id of the service principal.\n # - required for client_credentials authentication\n # tenant_id=\"...\",\n\n # client_id\n # The client id of the service principal.\n # - required for client_credentials authentication\n # client_id=\"...\",\n\n # sas_token\n # The shared access signature token.\n # - required for sas authentication\n # sas_token=\"...\",\n\n # authority_host\n # The authority host of the service principal.\n # - required for client_credentials authentication\n # - default value: `https://login.microsoftonline.com`\n # authority_host=\"...\",\n\n # Whether hierarchical namespace (HNS) is enabled for the storage account.\n # When enabled, recursive deletion can use pagination to avoid timeouts on large directories.\n # - default value: `false`\n # enable_hns=\"true\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"azdls\", {\n filesystem: \"...\",\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"azdls\", {\n // Root of this backend.\n // root: \"...\",\n\n // Filesystem name of this backend.\n filesystem: \"...\",\n\n // Endpoint of this backend.\n // endpoint: \"...\",\n\n // Account name of this backend.\n // account_name: \"...\",\n\n // Account key of this backend.\n // - required for shared_key authentication\n // account_key: \"...\",\n\n // client_secret\n // The client secret of the service principal.\n // - required for client_credentials authentication\n // client_secret: \"...\",\n\n // tenant_id\n // The tenant id of the service principal.\n // - required for client_credentials authentication\n // tenant_id: \"...\",\n\n // client_id\n // The client id of the service principal.\n // - required for client_credentials authentication\n // client_id: \"...\",\n\n // sas_token\n // The shared access signature token.\n // - required for sas authentication\n // sas_token: \"...\",\n\n // authority_host\n // The authority host of the service principal.\n // - required for client_credentials authentication\n // - default value: `https://login.microsoftonline.com`\n // authority_host: \"...\",\n\n // Whether hierarchical namespace (HNS) is enabled for the storage account.\n // When enabled, recursive deletion can use pagination to avoid timeouts on large directories.\n // - default value: `false`\n // enable_hns: \"true\",\n});"
},
{
"binding": "ruby",
"language": "ruby",
"minimal": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"azdls\", {\n \"filesystem\" => \"...\",\n})",
"full": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"azdls\", {\n # Root of this backend.\n # \"root\" => \"...\",\n\n # Filesystem name of this backend.\n \"filesystem\" => \"...\",\n\n # Endpoint of this backend.\n # \"endpoint\" => \"...\",\n\n # Account name of this backend.\n # \"account_name\" => \"...\",\n\n # Account key of this backend.\n # - required for shared_key authentication\n # \"account_key\" => \"...\",\n\n # client_secret\n # The client secret of the service principal.\n # - required for client_credentials authentication\n # \"client_secret\" => \"...\",\n\n # tenant_id\n # The tenant id of the service principal.\n # - required for client_credentials authentication\n # \"tenant_id\" => \"...\",\n\n # client_id\n # The client id of the service principal.\n # - required for client_credentials authentication\n # \"client_id\" => \"...\",\n\n # sas_token\n # The shared access signature token.\n # - required for sas authentication\n # \"sas_token\" => \"...\",\n\n # authority_host\n # The authority host of the service principal.\n # - required for client_credentials authentication\n # - default value: `https://login.microsoftonline.com`\n # \"authority_host\" => \"...\",\n\n # Whether hierarchical namespace (HNS) is enabled for the storage account.\n # When enabled, recursive deletion can use pagination to avoid timeouts on large directories.\n # - default value: `false`\n # \"enable_hns\" => \"true\",\n})"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/azdls\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(azdls.Scheme, opendal.OperatorOptions{\n\t\"filesystem\": \"...\",\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/azdls\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(azdls.Scheme, opendal.OperatorOptions{\n\t// Root of this backend.\n\t// \"root\": \"...\",\n\n\t// Filesystem name of this backend.\n\t\"filesystem\": \"...\",\n\n\t// Endpoint of this backend.\n\t// \"endpoint\": \"...\",\n\n\t// Account name of this backend.\n\t// \"account_name\": \"...\",\n\n\t// Account key of this backend.\n\t// - required for shared_key authentication\n\t// \"account_key\": \"...\",\n\n\t// client_secret\n\t// The client secret of the service principal.\n\t// - required for client_credentials authentication\n\t// \"client_secret\": \"...\",\n\n\t// tenant_id\n\t// The tenant id of the service principal.\n\t// - required for client_credentials authentication\n\t// \"tenant_id\": \"...\",\n\n\t// client_id\n\t// The client id of the service principal.\n\t// - required for client_credentials authentication\n\t// \"client_id\": \"...\",\n\n\t// sas_token\n\t// The shared access signature token.\n\t// - required for sas authentication\n\t// \"sas_token\": \"...\",\n\n\t// authority_host\n\t// The authority host of the service principal.\n\t// - required for client_credentials authentication\n\t// - default value: `https://login.microsoftonline.com`\n\t// \"authority_host\": \"...\",\n\n\t// Whether hierarchical namespace (HNS) is enabled for the storage account.\n\t// When enabled, recursive deletion can use pagination to avoid timeouts on large directories.\n\t// - default value: `false`\n\t// \"enable_hns\": \"true\",\n})"
}
]
},
{
"name": "azfile",
"scheme": "azfile",
"groups": [
"General"
],
"configs": [
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "The root path for azfile."
},
{
"name": "endpoint",
"type": "string",
"required": false,
"group": "General",
"comments": "The endpoint for azfile."
},
{
"name": "share_name",
"type": "string",
"required": true,
"group": "General",
"comments": "The share name for azfile."
},
{
"name": "account_name",
"type": "string",
"required": false,
"group": "General",
"comments": "The account name for azfile."
},
{
"name": "account_key",
"type": "string",
"required": false,
"group": "General",
"comments": "The account key for azfile."
},
{
"name": "sas_token",
"type": "string",
"required": false,
"group": "General",
"comments": "The sas token for azfile."
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"azfile\", [\n (\"share_name\".to_string(), \"...\".to_string()),\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"azfile\", [\n // The root path for azfile.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // The endpoint for azfile.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // The share name for azfile.\n (\"share_name\".to_string(), \"...\".to_string()),\n\n // The account name for azfile.\n // (\"account_name\".to_string(), \"...\".to_string()),\n\n // The account key for azfile.\n // (\"account_key\".to_string(), \"...\".to_string()),\n\n // The sas token for azfile.\n // (\"sas_token\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nconfig.put(\"share_name\", \"...\");\nOperator operator = Operator.of(\"azfile\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// The root path for azfile.\n// config.put(\"root\", \"...\");\n\n// The endpoint for azfile.\n// config.put(\"endpoint\", \"...\");\n\n// The share name for azfile.\nconfig.put(\"share_name\", \"...\");\n\n// The account name for azfile.\n// config.put(\"account_name\", \"...\");\n\n// The account key for azfile.\n// config.put(\"account_key\", \"...\");\n\n// The sas token for azfile.\n// config.put(\"sas_token\", \"...\");\nOperator operator = Operator.of(\"azfile\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"azfile\",\n share_name=\"...\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"azfile\",\n # The root path for azfile.\n # root=\"...\",\n\n # The endpoint for azfile.\n # endpoint=\"...\",\n\n # The share name for azfile.\n share_name=\"...\",\n\n # The account name for azfile.\n # account_name=\"...\",\n\n # The account key for azfile.\n # account_key=\"...\",\n\n # The sas token for azfile.\n # sas_token=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"azfile\", {\n share_name: \"...\",\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"azfile\", {\n // The root path for azfile.\n // root: \"...\",\n\n // The endpoint for azfile.\n // endpoint: \"...\",\n\n // The share name for azfile.\n share_name: \"...\",\n\n // The account name for azfile.\n // account_name: \"...\",\n\n // The account key for azfile.\n // account_key: \"...\",\n\n // The sas token for azfile.\n // sas_token: \"...\",\n});"
},
{
"binding": "ruby",
"language": "ruby",
"minimal": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"azfile\", {\n \"share_name\" => \"...\",\n})",
"full": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"azfile\", {\n # The root path for azfile.\n # \"root\" => \"...\",\n\n # The endpoint for azfile.\n # \"endpoint\" => \"...\",\n\n # The share name for azfile.\n \"share_name\" => \"...\",\n\n # The account name for azfile.\n # \"account_name\" => \"...\",\n\n # The account key for azfile.\n # \"account_key\" => \"...\",\n\n # The sas token for azfile.\n # \"sas_token\" => \"...\",\n})"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/azfile\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(azfile.Scheme, opendal.OperatorOptions{\n\t\"share_name\": \"...\",\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/azfile\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(azfile.Scheme, opendal.OperatorOptions{\n\t// The root path for azfile.\n\t// \"root\": \"...\",\n\n\t// The endpoint for azfile.\n\t// \"endpoint\": \"...\",\n\n\t// The share name for azfile.\n\t\"share_name\": \"...\",\n\n\t// The account name for azfile.\n\t// \"account_name\": \"...\",\n\n\t// The account key for azfile.\n\t// \"account_key\": \"...\",\n\n\t// The sas token for azfile.\n\t// \"sas_token\": \"...\",\n})"
}
]
},
{
"name": "b2",
"scheme": "b2",
"groups": [
"General"
],
"configs": [
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "root of this backend.\n\nAll operations will happen under this root."
},
{
"name": "application_key_id",
"type": "string",
"required": false,
"group": "General",
"comments": "keyID of this backend.\n\n- If application_key_id is set, we will take user's input first.\n- If not, we will try to load it from environment."
},
{
"name": "application_key",
"type": "string",
"required": false,
"group": "General",
"comments": "applicationKey of this backend.\n\n- If application_key is set, we will take user's input first.\n- If not, we will try to load it from environment."
},
{
"name": "bucket",
"type": "string",
"required": true,
"group": "General",
"comments": "bucket of this backend.\n\nrequired."
},
{
"name": "bucket_id",
"type": "string",
"required": true,
"group": "General",
"comments": "bucket id of this backend.\n\nrequired."
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"b2\", [\n (\"bucket\".to_string(), \"...\".to_string()),\n (\"bucket_id\".to_string(), \"...\".to_string()),\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"b2\", [\n // root of this backend.\n //\n // All operations will happen under this root.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // keyID of this backend.\n //\n // - If application_key_id is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // (\"application_key_id\".to_string(), \"...\".to_string()),\n\n // applicationKey of this backend.\n //\n // - If application_key is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // (\"application_key\".to_string(), \"...\".to_string()),\n\n // bucket of this backend.\n //\n // required.\n (\"bucket\".to_string(), \"...\".to_string()),\n\n // bucket id of this backend.\n //\n // required.\n (\"bucket_id\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nconfig.put(\"bucket\", \"...\");\nconfig.put(\"bucket_id\", \"...\");\nOperator operator = Operator.of(\"b2\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// root of this backend.\n//\n// All operations will happen under this root.\n// config.put(\"root\", \"...\");\n\n// keyID of this backend.\n//\n// - If application_key_id is set, we will take user's input first.\n// - If not, we will try to load it from environment.\n// config.put(\"application_key_id\", \"...\");\n\n// applicationKey of this backend.\n//\n// - If application_key is set, we will take user's input first.\n// - If not, we will try to load it from environment.\n// config.put(\"application_key\", \"...\");\n\n// bucket of this backend.\n//\n// required.\nconfig.put(\"bucket\", \"...\");\n\n// bucket id of this backend.\n//\n// required.\nconfig.put(\"bucket_id\", \"...\");\nOperator operator = Operator.of(\"b2\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"b2\",\n bucket=\"...\",\n bucket_id=\"...\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"b2\",\n # root of this backend.\n #\n # All operations will happen under this root.\n # root=\"...\",\n\n # keyID of this backend.\n #\n # - If application_key_id is set, we will take user's input first.\n # - If not, we will try to load it from environment.\n # application_key_id=\"...\",\n\n # applicationKey of this backend.\n #\n # - If application_key is set, we will take user's input first.\n # - If not, we will try to load it from environment.\n # application_key=\"...\",\n\n # bucket of this backend.\n #\n # required.\n bucket=\"...\",\n\n # bucket id of this backend.\n #\n # required.\n bucket_id=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"b2\", {\n bucket: \"...\",\n bucket_id: \"...\",\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"b2\", {\n // root of this backend.\n //\n // All operations will happen under this root.\n // root: \"...\",\n\n // keyID of this backend.\n //\n // - If application_key_id is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // application_key_id: \"...\",\n\n // applicationKey of this backend.\n //\n // - If application_key is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // application_key: \"...\",\n\n // bucket of this backend.\n //\n // required.\n bucket: \"...\",\n\n // bucket id of this backend.\n //\n // required.\n bucket_id: \"...\",\n});"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/b2\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(b2.Scheme, opendal.OperatorOptions{\n\t\"bucket\": \"...\",\n\t\"bucket_id\": \"...\",\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/b2\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(b2.Scheme, opendal.OperatorOptions{\n\t// root of this backend.\n\t//\n\t// All operations will happen under this root.\n\t// \"root\": \"...\",\n\n\t// keyID of this backend.\n\t//\n\t// - If application_key_id is set, we will take user's input first.\n\t// - If not, we will try to load it from environment.\n\t// \"application_key_id\": \"...\",\n\n\t// applicationKey of this backend.\n\t//\n\t// - If application_key is set, we will take user's input first.\n\t// - If not, we will try to load it from environment.\n\t// \"application_key\": \"...\",\n\n\t// bucket of this backend.\n\t//\n\t// required.\n\t\"bucket\": \"...\",\n\n\t// bucket id of this backend.\n\t//\n\t// required.\n\t\"bucket_id\": \"...\",\n})"
}
]
},
{
"name": "cacache",
"scheme": "cacache",
"groups": [
"General"
],
"configs": [
{
"name": "datadir",
"type": "string",
"required": false,
"group": "General",
"comments": "That path to the cacache data directory."
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"cacache\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"cacache\", [\n // That path to the cacache data directory.\n // (\"datadir\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nOperator operator = Operator.of(\"cacache\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// That path to the cacache data directory.\n// config.put(\"datadir\", \"...\");\nOperator operator = Operator.of(\"cacache\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"cacache\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"cacache\",\n # That path to the cacache data directory.\n # datadir=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"cacache\", {\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"cacache\", {\n // That path to the cacache data directory.\n // datadir: \"...\",\n});"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/cacache\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(cacache.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/cacache\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(cacache.Scheme, opendal.OperatorOptions{\n\t// That path to the cacache data directory.\n\t// \"datadir\": \"...\",\n})"
}
]
},
{
"name": "cloudflare-kv",
"scheme": "cloudflare-kv",
"groups": [
"General"
],
"configs": [
{
"name": "api_token",
"type": "string",
"required": false,
"group": "General",
"comments": "The token used to authenticate with CloudFlare."
},
{
"name": "account_id",
"type": "string",
"required": false,
"group": "General",
"comments": "The account ID used to authenticate with CloudFlare. Used as URI path parameter."
},
{
"name": "namespace_id",
"type": "string",
"required": false,
"group": "General",
"comments": "The namespace ID. Used as URI path parameter."
},
{
"name": "default_ttl",
"type": "duration",
"required": false,
"group": "General",
"comments": "The default ttl for write operations."
},
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "Root within this backend."
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"cloudflare-kv\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"cloudflare-kv\", [\n // The token used to authenticate with CloudFlare.\n // (\"api_token\".to_string(), \"...\".to_string()),\n\n // The account ID used to authenticate with CloudFlare. Used as URI path parameter.\n // (\"account_id\".to_string(), \"...\".to_string()),\n\n // The namespace ID. Used as URI path parameter.\n // (\"namespace_id\".to_string(), \"...\".to_string()),\n\n // The default ttl for write operations.\n // (\"default_ttl\".to_string(), \"10s\".to_string()),\n\n // Root within this backend.\n // (\"root\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"cloudflare-kv\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"cloudflare-kv\",\n # The token used to authenticate with CloudFlare.\n # api_token=\"...\",\n\n # The account ID used to authenticate with CloudFlare. Used as URI path parameter.\n # account_id=\"...\",\n\n # The namespace ID. Used as URI path parameter.\n # namespace_id=\"...\",\n\n # The default ttl for write operations.\n # default_ttl=\"10s\",\n\n # Root within this backend.\n # root=\"...\",\n)"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/cloudflare-kv\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(cloudflare-kv.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/cloudflare-kv\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(cloudflare-kv.Scheme, opendal.OperatorOptions{\n\t// The token used to authenticate with CloudFlare.\n\t// \"api_token\": \"...\",\n\n\t// The account ID used to authenticate with CloudFlare. Used as URI path parameter.\n\t// \"account_id\": \"...\",\n\n\t// The namespace ID. Used as URI path parameter.\n\t// \"namespace_id\": \"...\",\n\n\t// The default ttl for write operations.\n\t// \"default_ttl\": \"10s\",\n\n\t// Root within this backend.\n\t// \"root\": \"...\",\n})"
}
]
},
{
"name": "compfs",
"scheme": "compfs",
"groups": [
"General"
],
"configs": [
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "root of this backend.\n\nAll operations will happen under this root."
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"compfs\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"compfs\", [\n // root of this backend.\n //\n // All operations will happen under this root.\n // (\"root\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"compfs\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"compfs\",\n # root of this backend.\n #\n # All operations will happen under this root.\n # root=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"compfs\", {\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"compfs\", {\n // root of this backend.\n //\n // All operations will happen under this root.\n // root: \"...\",\n});"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/compfs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(compfs.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/compfs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(compfs.Scheme, opendal.OperatorOptions{\n\t// root of this backend.\n\t//\n\t// All operations will happen under this root.\n\t// \"root\": \"...\",\n})"
}
]
},
{
"name": "cos",
"scheme": "cos",
"groups": [
"General"
],
"configs": [
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "Root of this backend."
},
{
"name": "endpoint",
"type": "string",
"required": false,
"group": "General",
"comments": "Endpoint of this backend."
},
{
"name": "secret_id",
"type": "string",
"required": false,
"group": "General",
"comments": "Secret ID of this backend."
},
{
"name": "secret_key",
"type": "string",
"required": false,
"group": "General",
"comments": "Secret key of this backend."
},
{
"name": "security_token",
"type": "string",
"required": false,
"group": "General",
"comments": "Security token (a.k.a. session token) of this backend.\n\nThis is used for temporary credentials issued by Tencent Cloud STS\n(e.g. `GetFederationToken` / `AssumeRole`). When `security_token` is\nprovided, it will be used together with `secret_id` and `secret_key`\nto sign requests, and the `x-cos-security-token` header will be\nattached automatically by the signer.\n\nIf this field is not set, OpenDAL will also fall back to reading\nthe token from environment variables `TENCENTCLOUD_TOKEN`,\n`TENCENTCLOUD_SECURITY_TOKEN` or `QCLOUD_SECRET_TOKEN` (unless\n`disable_config_load` is enabled)."
},
{
"name": "bucket",
"type": "string",
"required": false,
"group": "General",
"comments": "Bucket of this backend."
},
{
"name": "enable_versioning",
"type": "bool",
"required": false,
"group": "General",
"deprecated": {
"since": "0.57.0",
"note": "COS versioning capability is enabled by default and this option is no longer needed."
},
"comments": "Deprecated: COS versioning capability is enabled by default."
},
{
"name": "disable_config_load",
"type": "bool",
"required": false,
"group": "General",
"comments": "Disable config load so that opendal will not load config from"
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"cos\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"cos\", [\n // Root of this backend.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // Endpoint of this backend.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // Secret ID of this backend.\n // (\"secret_id\".to_string(), \"...\".to_string()),\n\n // Secret key of this backend.\n // (\"secret_key\".to_string(), \"...\".to_string()),\n\n // Security token (a.k.a. session token) of this backend.\n //\n // This is used for temporary credentials issued by Tencent Cloud STS\n // (e.g. `GetFederationToken` / `AssumeRole`). When `security_token` is\n // provided, it will be used together with `secret_id` and `secret_key`\n // to sign requests, and the `x-cos-security-token` header will be\n // attached automatically by the signer.\n //\n // If this field is not set, OpenDAL will also fall back to reading\n // the token from environment variables `TENCENTCLOUD_TOKEN`,\n // `TENCENTCLOUD_SECURITY_TOKEN` or `QCLOUD_SECRET_TOKEN` (unless\n // `disable_config_load` is enabled).\n // (\"security_token\".to_string(), \"...\".to_string()),\n\n // Bucket of this backend.\n // (\"bucket\".to_string(), \"...\".to_string()),\n\n // Disable config load so that opendal will not load config from\n // (\"disable_config_load\".to_string(), \"true\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nOperator operator = Operator.of(\"cos\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// Root of this backend.\n// config.put(\"root\", \"...\");\n\n// Endpoint of this backend.\n// config.put(\"endpoint\", \"...\");\n\n// Secret ID of this backend.\n// config.put(\"secret_id\", \"...\");\n\n// Secret key of this backend.\n// config.put(\"secret_key\", \"...\");\n\n// Security token (a.k.a. session token) of this backend.\n//\n// This is used for temporary credentials issued by Tencent Cloud STS\n// (e.g. `GetFederationToken` / `AssumeRole`). When `security_token` is\n// provided, it will be used together with `secret_id` and `secret_key`\n// to sign requests, and the `x-cos-security-token` header will be\n// attached automatically by the signer.\n//\n// If this field is not set, OpenDAL will also fall back to reading\n// the token from environment variables `TENCENTCLOUD_TOKEN`,\n// `TENCENTCLOUD_SECURITY_TOKEN` or `QCLOUD_SECRET_TOKEN` (unless\n// `disable_config_load` is enabled).\n// config.put(\"security_token\", \"...\");\n\n// Bucket of this backend.\n// config.put(\"bucket\", \"...\");\n\n// Disable config load so that opendal will not load config from\n// config.put(\"disable_config_load\", \"true\");\nOperator operator = Operator.of(\"cos\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"cos\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"cos\",\n # Root of this backend.\n # root=\"...\",\n\n # Endpoint of this backend.\n # endpoint=\"...\",\n\n # Secret ID of this backend.\n # secret_id=\"...\",\n\n # Secret key of this backend.\n # secret_key=\"...\",\n\n # Security token (a.k.a. session token) of this backend.\n #\n # This is used for temporary credentials issued by Tencent Cloud STS\n # (e.g. `GetFederationToken` / `AssumeRole`). When `security_token` is\n # provided, it will be used together with `secret_id` and `secret_key`\n # to sign requests, and the `x-cos-security-token` header will be\n # attached automatically by the signer.\n #\n # If this field is not set, OpenDAL will also fall back to reading\n # the token from environment variables `TENCENTCLOUD_TOKEN`,\n # `TENCENTCLOUD_SECURITY_TOKEN` or `QCLOUD_SECRET_TOKEN` (unless\n # `disable_config_load` is enabled).\n # security_token=\"...\",\n\n # Bucket of this backend.\n # bucket=\"...\",\n\n # Disable config load so that opendal will not load config from\n # disable_config_load=\"true\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"cos\", {\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"cos\", {\n // Root of this backend.\n // root: \"...\",\n\n // Endpoint of this backend.\n // endpoint: \"...\",\n\n // Secret ID of this backend.\n // secret_id: \"...\",\n\n // Secret key of this backend.\n // secret_key: \"...\",\n\n // Security token (a.k.a. session token) of this backend.\n //\n // This is used for temporary credentials issued by Tencent Cloud STS\n // (e.g. `GetFederationToken` / `AssumeRole`). When `security_token` is\n // provided, it will be used together with `secret_id` and `secret_key`\n // to sign requests, and the `x-cos-security-token` header will be\n // attached automatically by the signer.\n //\n // If this field is not set, OpenDAL will also fall back to reading\n // the token from environment variables `TENCENTCLOUD_TOKEN`,\n // `TENCENTCLOUD_SECURITY_TOKEN` or `QCLOUD_SECRET_TOKEN` (unless\n // `disable_config_load` is enabled).\n // security_token: \"...\",\n\n // Bucket of this backend.\n // bucket: \"...\",\n\n // Disable config load so that opendal will not load config from\n // disable_config_load: \"true\",\n});"
},
{
"binding": "ruby",
"language": "ruby",
"minimal": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"cos\", {\n})",
"full": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"cos\", {\n # Root of this backend.\n # \"root\" => \"...\",\n\n # Endpoint of this backend.\n # \"endpoint\" => \"...\",\n\n # Secret ID of this backend.\n # \"secret_id\" => \"...\",\n\n # Secret key of this backend.\n # \"secret_key\" => \"...\",\n\n # Security token (a.k.a. session token) of this backend.\n #\n # This is used for temporary credentials issued by Tencent Cloud STS\n # (e.g. `GetFederationToken` / `AssumeRole`). When `security_token` is\n # provided, it will be used together with `secret_id` and `secret_key`\n # to sign requests, and the `x-cos-security-token` header will be\n # attached automatically by the signer.\n #\n # If this field is not set, OpenDAL will also fall back to reading\n # the token from environment variables `TENCENTCLOUD_TOKEN`,\n # `TENCENTCLOUD_SECURITY_TOKEN` or `QCLOUD_SECRET_TOKEN` (unless\n # `disable_config_load` is enabled).\n # \"security_token\" => \"...\",\n\n # Bucket of this backend.\n # \"bucket\" => \"...\",\n\n # Disable config load so that opendal will not load config from\n # \"disable_config_load\" => \"true\",\n})"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/cos\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(cos.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/cos\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(cos.Scheme, opendal.OperatorOptions{\n\t// Root of this backend.\n\t// \"root\": \"...\",\n\n\t// Endpoint of this backend.\n\t// \"endpoint\": \"...\",\n\n\t// Secret ID of this backend.\n\t// \"secret_id\": \"...\",\n\n\t// Secret key of this backend.\n\t// \"secret_key\": \"...\",\n\n\t// Security token (a.k.a. session token) of this backend.\n\t//\n\t// This is used for temporary credentials issued by Tencent Cloud STS\n\t// (e.g. `GetFederationToken` / `AssumeRole`). When `security_token` is\n\t// provided, it will be used together with `secret_id` and `secret_key`\n\t// to sign requests, and the `x-cos-security-token` header will be\n\t// attached automatically by the signer.\n\t//\n\t// If this field is not set, OpenDAL will also fall back to reading\n\t// the token from environment variables `TENCENTCLOUD_TOKEN`,\n\t// `TENCENTCLOUD_SECURITY_TOKEN` or `QCLOUD_SECRET_TOKEN` (unless\n\t// `disable_config_load` is enabled).\n\t// \"security_token\": \"...\",\n\n\t// Bucket of this backend.\n\t// \"bucket\": \"...\",\n\n\t// Disable config load so that opendal will not load config from\n\t// \"disable_config_load\": \"true\",\n})"
}
]
},
{
"name": "d1",
"scheme": "d1",
"groups": [
"General"
],
"configs": [
{
"name": "token",
"type": "string",
"required": false,
"group": "General",
"comments": "Set the token of cloudflare api."
},
{
"name": "account_id",
"type": "string",
"required": false,
"group": "General",
"comments": "Set the account id of cloudflare api."
},
{
"name": "database_id",
"type": "string",
"required": false,
"group": "General",
"comments": "Set the database id of cloudflare api."
},
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "Set the working directory of OpenDAL."
},
{
"name": "table",
"type": "string",
"required": false,
"group": "General",
"comments": "Set the table of D1 Database."
},
{
"name": "key_field",
"type": "string",
"required": false,
"group": "General",
"comments": "Set the key field of D1 Database."
},
{
"name": "value_field",
"type": "string",
"required": false,
"group": "General",
"comments": "Set the value field of D1 Database."
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"d1\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"d1\", [\n // Set the token of cloudflare api.\n // (\"token\".to_string(), \"...\".to_string()),\n\n // Set the account id of cloudflare api.\n // (\"account_id\".to_string(), \"...\".to_string()),\n\n // Set the database id of cloudflare api.\n // (\"database_id\".to_string(), \"...\".to_string()),\n\n // Set the working directory of OpenDAL.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // Set the table of D1 Database.\n // (\"table\".to_string(), \"...\".to_string()),\n\n // Set the key field of D1 Database.\n // (\"key_field\".to_string(), \"...\".to_string()),\n\n // Set the value field of D1 Database.\n // (\"value_field\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"d1\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"d1\",\n # Set the token of cloudflare api.\n # token=\"...\",\n\n # Set the account id of cloudflare api.\n # account_id=\"...\",\n\n # Set the database id of cloudflare api.\n # database_id=\"...\",\n\n # Set the working directory of OpenDAL.\n # root=\"...\",\n\n # Set the table of D1 Database.\n # table=\"...\",\n\n # Set the key field of D1 Database.\n # key_field=\"...\",\n\n # Set the value field of D1 Database.\n # value_field=\"...\",\n)"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/d1\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(d1.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/d1\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(d1.Scheme, opendal.OperatorOptions{\n\t// Set the token of cloudflare api.\n\t// \"token\": \"...\",\n\n\t// Set the account id of cloudflare api.\n\t// \"account_id\": \"...\",\n\n\t// Set the database id of cloudflare api.\n\t// \"database_id\": \"...\",\n\n\t// Set the working directory of OpenDAL.\n\t// \"root\": \"...\",\n\n\t// Set the table of D1 Database.\n\t// \"table\": \"...\",\n\n\t// Set the key field of D1 Database.\n\t// \"key_field\": \"...\",\n\n\t// Set the value field of D1 Database.\n\t// \"value_field\": \"...\",\n})"
}
]
},
{
"name": "dashmap",
"scheme": "dashmap",
"groups": [
"General"
],
"configs": [
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "root path of this backend"
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"dashmap\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"dashmap\", [\n // root path of this backend\n // (\"root\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nOperator operator = Operator.of(\"dashmap\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// root path of this backend\n// config.put(\"root\", \"...\");\nOperator operator = Operator.of(\"dashmap\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"dashmap\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"dashmap\",\n # root path of this backend\n # root=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"dashmap\", {\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"dashmap\", {\n // root path of this backend\n // root: \"...\",\n});"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/dashmap\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(dashmap.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/dashmap\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(dashmap.Scheme, opendal.OperatorOptions{\n\t// root path of this backend\n\t// \"root\": \"...\",\n})"
}
]
},
{
"name": "dbfs",
"scheme": "dbfs",
"groups": [
"General"
],
"configs": [
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "The root for dbfs."
},
{
"name": "endpoint",
"type": "string",
"required": false,
"group": "General",
"comments": "The endpoint for dbfs."
},
{
"name": "token",
"type": "string",
"required": false,
"group": "General",
"comments": "The token for dbfs."
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"dbfs\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"dbfs\", [\n // The root for dbfs.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // The endpoint for dbfs.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // The token for dbfs.\n // (\"token\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"dbfs\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"dbfs\",\n # The root for dbfs.\n # root=\"...\",\n\n # The endpoint for dbfs.\n # endpoint=\"...\",\n\n # The token for dbfs.\n # token=\"...\",\n)"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/dbfs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(dbfs.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/dbfs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(dbfs.Scheme, opendal.OperatorOptions{\n\t// The root for dbfs.\n\t// \"root\": \"...\",\n\n\t// The endpoint for dbfs.\n\t// \"endpoint\": \"...\",\n\n\t// The token for dbfs.\n\t// \"token\": \"...\",\n})"
}
]
},
{
"name": "dropbox",
"scheme": "dropbox",
"groups": [
"General"
],
"configs": [
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "root path for dropbox."
},
{
"name": "access_token",
"type": "string",
"required": false,
"group": "General",
"comments": "access token for dropbox."
},
{
"name": "refresh_token",
"type": "string",
"required": false,
"group": "General",
"comments": "refresh_token for dropbox."
},
{
"name": "client_id",
"type": "string",
"required": false,
"group": "General",
"comments": "client_id for dropbox."
},
{
"name": "client_secret",
"type": "string",
"required": false,
"group": "General",
"comments": "client_secret for dropbox."
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"dropbox\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"dropbox\", [\n // root path for dropbox.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // access token for dropbox.\n // (\"access_token\".to_string(), \"...\".to_string()),\n\n // refresh_token for dropbox.\n // (\"refresh_token\".to_string(), \"...\".to_string()),\n\n // client_id for dropbox.\n // (\"client_id\".to_string(), \"...\".to_string()),\n\n // client_secret for dropbox.\n // (\"client_secret\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nOperator operator = Operator.of(\"dropbox\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// root path for dropbox.\n// config.put(\"root\", \"...\");\n\n// access token for dropbox.\n// config.put(\"access_token\", \"...\");\n\n// refresh_token for dropbox.\n// config.put(\"refresh_token\", \"...\");\n\n// client_id for dropbox.\n// config.put(\"client_id\", \"...\");\n\n// client_secret for dropbox.\n// config.put(\"client_secret\", \"...\");\nOperator operator = Operator.of(\"dropbox\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"dropbox\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"dropbox\",\n # root path for dropbox.\n # root=\"...\",\n\n # access token for dropbox.\n # access_token=\"...\",\n\n # refresh_token for dropbox.\n # refresh_token=\"...\",\n\n # client_id for dropbox.\n # client_id=\"...\",\n\n # client_secret for dropbox.\n # client_secret=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"dropbox\", {\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"dropbox\", {\n // root path for dropbox.\n // root: \"...\",\n\n // access token for dropbox.\n // access_token: \"...\",\n\n // refresh_token for dropbox.\n // refresh_token: \"...\",\n\n // client_id for dropbox.\n // client_id: \"...\",\n\n // client_secret for dropbox.\n // client_secret: \"...\",\n});"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/dropbox\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(dropbox.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/dropbox\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(dropbox.Scheme, opendal.OperatorOptions{\n\t// root path for dropbox.\n\t// \"root\": \"...\",\n\n\t// access token for dropbox.\n\t// \"access_token\": \"...\",\n\n\t// refresh_token for dropbox.\n\t// \"refresh_token\": \"...\",\n\n\t// client_id for dropbox.\n\t// \"client_id\": \"...\",\n\n\t// client_secret for dropbox.\n\t// \"client_secret\": \"...\",\n})"
}
]
},
{
"name": "etcd",
"scheme": "etcd",
"groups": [
"General"
],
"configs": [
{
"name": "endpoints",
"type": "string",
"required": false,
"group": "General",
"comments": "network address of the Etcd services.\nIf use https, must set TLS options: `ca_path`, `cert_path`, `key_path`.\ne.g. \"127.0.0.1:23790,127.0.0.1:23791,127.0.0.1:23792\" or \"http://127.0.0.1:23790,http://127.0.0.1:23791,http://127.0.0.1:23792\" or \"https://127.0.0.1:23790,https://127.0.0.1:23791,https://127.0.0.1:23792\"\n\ndefault is \"http://127.0.0.1:2379\""
},
{
"name": "username",
"type": "string",
"required": false,
"group": "General",
"comments": "the username to connect etcd service.\n\ndefault is None"
},
{
"name": "password",
"type": "string",
"required": false,
"group": "General",
"comments": "the password for authentication\n\ndefault is None"
},
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "the working directory of the etcd service. Can be \"/path/to/dir\"\n\ndefault is \"/\""
},
{
"name": "ca_path",
"type": "string",
"required": false,
"group": "General",
"comments": "certificate authority file path\n\ndefault is None"
},
{
"name": "cert_path",
"type": "string",
"required": false,
"group": "General",
"comments": "cert path\n\ndefault is None"
},
{
"name": "key_path",
"type": "string",
"required": false,
"group": "General",
"comments": "key path\n\ndefault is None"
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"etcd\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"etcd\", [\n // network address of the Etcd services.\n // If use https, must set TLS options: `ca_path`, `cert_path`, `key_path`.\n // e.g. \"127.0.0.1:23790,127.0.0.1:23791,127.0.0.1:23792\" or \"http://127.0.0.1:23790,http://127.0.0.1:23791,http://127.0.0.1:23792\" or \"https://127.0.0.1:23790,https://127.0.0.1:23791,https://127.0.0.1:23792\"\n //\n // default is \"http://127.0.0.1:2379\"\n // (\"endpoints\".to_string(), \"...\".to_string()),\n\n // the username to connect etcd service.\n //\n // default is None\n // (\"username\".to_string(), \"...\".to_string()),\n\n // the password for authentication\n //\n // default is None\n // (\"password\".to_string(), \"...\".to_string()),\n\n // the working directory of the etcd service. Can be \"/path/to/dir\"\n //\n // default is \"/\"\n // (\"root\".to_string(), \"...\".to_string()),\n\n // certificate authority file path\n //\n // default is None\n // (\"ca_path\".to_string(), \"...\".to_string()),\n\n // cert path\n //\n // default is None\n // (\"cert_path\".to_string(), \"...\".to_string()),\n\n // key path\n //\n // default is None\n // (\"key_path\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nOperator operator = Operator.of(\"etcd\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// network address of the Etcd services.\n// If use https, must set TLS options: `ca_path`, `cert_path`, `key_path`.\n// e.g. \"127.0.0.1:23790,127.0.0.1:23791,127.0.0.1:23792\" or \"http://127.0.0.1:23790,http://127.0.0.1:23791,http://127.0.0.1:23792\" or \"https://127.0.0.1:23790,https://127.0.0.1:23791,https://127.0.0.1:23792\"\n//\n// default is \"http://127.0.0.1:2379\"\n// config.put(\"endpoints\", \"...\");\n\n// the username to connect etcd service.\n//\n// default is None\n// config.put(\"username\", \"...\");\n\n// the password for authentication\n//\n// default is None\n// config.put(\"password\", \"...\");\n\n// the working directory of the etcd service. Can be \"/path/to/dir\"\n//\n// default is \"/\"\n// config.put(\"root\", \"...\");\n\n// certificate authority file path\n//\n// default is None\n// config.put(\"ca_path\", \"...\");\n\n// cert path\n//\n// default is None\n// config.put(\"cert_path\", \"...\");\n\n// key path\n//\n// default is None\n// config.put(\"key_path\", \"...\");\nOperator operator = Operator.of(\"etcd\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"etcd\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"etcd\",\n # network address of the Etcd services.\n # If use https, must set TLS options: `ca_path`, `cert_path`, `key_path`.\n # e.g. \"127.0.0.1:23790,127.0.0.1:23791,127.0.0.1:23792\" or \"http://127.0.0.1:23790,http://127.0.0.1:23791,http://127.0.0.1:23792\" or \"https://127.0.0.1:23790,https://127.0.0.1:23791,https://127.0.0.1:23792\"\n #\n # default is \"http://127.0.0.1:2379\"\n # endpoints=\"...\",\n\n # the username to connect etcd service.\n #\n # default is None\n # username=\"...\",\n\n # the password for authentication\n #\n # default is None\n # password=\"...\",\n\n # the working directory of the etcd service. Can be \"/path/to/dir\"\n #\n # default is \"/\"\n # root=\"...\",\n\n # certificate authority file path\n #\n # default is None\n # ca_path=\"...\",\n\n # cert path\n #\n # default is None\n # cert_path=\"...\",\n\n # key path\n #\n # default is None\n # key_path=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"etcd\", {\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"etcd\", {\n // network address of the Etcd services.\n // If use https, must set TLS options: `ca_path`, `cert_path`, `key_path`.\n // e.g. \"127.0.0.1:23790,127.0.0.1:23791,127.0.0.1:23792\" or \"http://127.0.0.1:23790,http://127.0.0.1:23791,http://127.0.0.1:23792\" or \"https://127.0.0.1:23790,https://127.0.0.1:23791,https://127.0.0.1:23792\"\n //\n // default is \"http://127.0.0.1:2379\"\n // endpoints: \"...\",\n\n // the username to connect etcd service.\n //\n // default is None\n // username: \"...\",\n\n // the password for authentication\n //\n // default is None\n // password: \"...\",\n\n // the working directory of the etcd service. Can be \"/path/to/dir\"\n //\n // default is \"/\"\n // root: \"...\",\n\n // certificate authority file path\n //\n // default is None\n // ca_path: \"...\",\n\n // cert path\n //\n // default is None\n // cert_path: \"...\",\n\n // key path\n //\n // default is None\n // key_path: \"...\",\n});"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/etcd\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(etcd.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/etcd\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(etcd.Scheme, opendal.OperatorOptions{\n\t// network address of the Etcd services.\n\t// If use https, must set TLS options: `ca_path`, `cert_path`, `key_path`.\n\t// e.g. \"127.0.0.1:23790,127.0.0.1:23791,127.0.0.1:23792\" or \"http://127.0.0.1:23790,http://127.0.0.1:23791,http://127.0.0.1:23792\" or \"https://127.0.0.1:23790,https://127.0.0.1:23791,https://127.0.0.1:23792\"\n\t//\n\t// default is \"http://127.0.0.1:2379\"\n\t// \"endpoints\": \"...\",\n\n\t// the username to connect etcd service.\n\t//\n\t// default is None\n\t// \"username\": \"...\",\n\n\t// the password for authentication\n\t//\n\t// default is None\n\t// \"password\": \"...\",\n\n\t// the working directory of the etcd service. Can be \"/path/to/dir\"\n\t//\n\t// default is \"/\"\n\t// \"root\": \"...\",\n\n\t// certificate authority file path\n\t//\n\t// default is None\n\t// \"ca_path\": \"...\",\n\n\t// cert path\n\t//\n\t// default is None\n\t// \"cert_path\": \"...\",\n\n\t// key path\n\t//\n\t// default is None\n\t// \"key_path\": \"...\",\n})"
}
]
},
{
"name": "foundationdb",
"scheme": "foundationdb",
"groups": [
"General"
],
"configs": [
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "root of the backend."
},
{
"name": "config_path",
"type": "string",
"required": false,
"group": "General",
"comments": "config_path for the backend."
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"foundationdb\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"foundationdb\", [\n // root of the backend.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // config_path for the backend.\n // (\"config_path\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"foundationdb\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"foundationdb\",\n # root of the backend.\n # root=\"...\",\n\n # config_path for the backend.\n # config_path=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"foundationdb\", {\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"foundationdb\", {\n // root of the backend.\n // root: \"...\",\n\n // config_path for the backend.\n // config_path: \"...\",\n});"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/foundationdb\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(foundationdb.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/foundationdb\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(foundationdb.Scheme, opendal.OperatorOptions{\n\t// root of the backend.\n\t// \"root\": \"...\",\n\n\t// config_path for the backend.\n\t// \"config_path\": \"...\",\n})"
}
]
},
{
"name": "foyer",
"scheme": "foyer",
"groups": [
"General"
],
"configs": [
{
"name": "name",
"type": "string",
"required": false,
"group": "General",
"comments": "Name for this cache instance."
},
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "Root path of this backend."
},
{
"name": "memory",
"type": "integer",
"required": false,
"group": "General",
"comments": "Memory capacity in bytes for the cache."
},
{
"name": "disk_path",
"type": "string",
"required": false,
"group": "General",
"comments": "Disk cache directory path.\n\nIf set, enables hybrid cache with disk storage. Data will be persisted to\nthis directory when memory cache is full."
},
{
"name": "disk_capacity",
"type": "integer",
"required": false,
"group": "General",
"comments": "Disk cache total capacity in bytes.\nOnly used when `disk_path` is set."
},
{
"name": "disk_file_size",
"type": "integer",
"required": false,
"group": "General",
"comments": "Individual cache file size in bytes.\n\nDefault is 1 MiB.\nOnly used when `disk_path` is set."
},
{
"name": "recover_mode",
"type": "string",
"required": false,
"group": "General",
"comments": "Recovery mode when starting the cache.\n\nValid values: \"none\" (default), \"quiet\", \"strict\".\n- \"none\": Don't recover from disk\n- \"quiet\": Recover and skip errors\n- \"strict\": Recover and panic on errors"
},
{
"name": "shards",
"type": "integer",
"required": false,
"group": "General",
"comments": "Number of shards for concurrent access.\n\nDefault is 1. Higher values improve concurrency but increase overhead."
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"foyer\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"foyer\", [\n // Name for this cache instance.\n // (\"name\".to_string(), \"...\".to_string()),\n\n // Root path of this backend.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // Memory capacity in bytes for the cache.\n // (\"memory\".to_string(), \"1000\".to_string()),\n\n // Disk cache directory path.\n //\n // If set, enables hybrid cache with disk storage. Data will be persisted to\n // this directory when memory cache is full.\n // (\"disk_path\".to_string(), \"...\".to_string()),\n\n // Disk cache total capacity in bytes.\n // Only used when `disk_path` is set.\n // (\"disk_capacity\".to_string(), \"1000\".to_string()),\n\n // Individual cache file size in bytes.\n //\n // Default is 1 MiB.\n // Only used when `disk_path` is set.\n // (\"disk_file_size\".to_string(), \"1000\".to_string()),\n\n // Recovery mode when starting the cache.\n //\n // Valid values: \"none\" (default), \"quiet\", \"strict\".\n // - \"none\": Don't recover from disk\n // - \"quiet\": Recover and skip errors\n // - \"strict\": Recover and panic on errors\n // (\"recover_mode\".to_string(), \"...\".to_string()),\n\n // Number of shards for concurrent access.\n //\n // Default is 1. Higher values improve concurrency but increase overhead.\n // (\"shards\".to_string(), \"1000\".to_string()),\n])?;"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"foyer\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"foyer\",\n # Name for this cache instance.\n # name=\"...\",\n\n # Root path of this backend.\n # root=\"...\",\n\n # Memory capacity in bytes for the cache.\n # memory=\"1000\",\n\n # Disk cache directory path.\n #\n # If set, enables hybrid cache with disk storage. Data will be persisted to\n # this directory when memory cache is full.\n # disk_path=\"...\",\n\n # Disk cache total capacity in bytes.\n # Only used when `disk_path` is set.\n # disk_capacity=\"1000\",\n\n # Individual cache file size in bytes.\n #\n # Default is 1 MiB.\n # Only used when `disk_path` is set.\n # disk_file_size=\"1000\",\n\n # Recovery mode when starting the cache.\n #\n # Valid values: \"none\" (default), \"quiet\", \"strict\".\n # - \"none\": Don't recover from disk\n # - \"quiet\": Recover and skip errors\n # - \"strict\": Recover and panic on errors\n # recover_mode=\"...\",\n\n # Number of shards for concurrent access.\n #\n # Default is 1. Higher values improve concurrency but increase overhead.\n # shards=\"1000\",\n)"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/foyer\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(foyer.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/foyer\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(foyer.Scheme, opendal.OperatorOptions{\n\t// Name for this cache instance.\n\t// \"name\": \"...\",\n\n\t// Root path of this backend.\n\t// \"root\": \"...\",\n\n\t// Memory capacity in bytes for the cache.\n\t// \"memory\": \"1000\",\n\n\t// Disk cache directory path.\n\t//\n\t// If set, enables hybrid cache with disk storage. Data will be persisted to\n\t// this directory when memory cache is full.\n\t// \"disk_path\": \"...\",\n\n\t// Disk cache total capacity in bytes.\n\t// Only used when `disk_path` is set.\n\t// \"disk_capacity\": \"1000\",\n\n\t// Individual cache file size in bytes.\n\t//\n\t// Default is 1 MiB.\n\t// Only used when `disk_path` is set.\n\t// \"disk_file_size\": \"1000\",\n\n\t// Recovery mode when starting the cache.\n\t//\n\t// Valid values: \"none\" (default), \"quiet\", \"strict\".\n\t// - \"none\": Don't recover from disk\n\t// - \"quiet\": Recover and skip errors\n\t// - \"strict\": Recover and panic on errors\n\t// \"recover_mode\": \"...\",\n\n\t// Number of shards for concurrent access.\n\t//\n\t// Default is 1. Higher values improve concurrency but increase overhead.\n\t// \"shards\": \"1000\",\n})"
}
]
},
{
"name": "fs",
"scheme": "fs",
"groups": [
"General"
],
"configs": [
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "root dir for backend"
},
{
"name": "atomic_write_dir",
"type": "string",
"required": false,
"group": "General",
"comments": "tmp dir for atomic write"
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"fs\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"fs\", [\n // root dir for backend\n // (\"root\".to_string(), \"...\".to_string()),\n\n // tmp dir for atomic write\n // (\"atomic_write_dir\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nOperator operator = Operator.of(\"fs\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// root dir for backend\n// config.put(\"root\", \"...\");\n\n// tmp dir for atomic write\n// config.put(\"atomic_write_dir\", \"...\");\nOperator operator = Operator.of(\"fs\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"fs\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"fs\",\n # root dir for backend\n # root=\"...\",\n\n # tmp dir for atomic write\n # atomic_write_dir=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"fs\", {\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"fs\", {\n // root dir for backend\n // root: \"...\",\n\n // tmp dir for atomic write\n // atomic_write_dir: \"...\",\n});"
},
{
"binding": "ruby",
"language": "ruby",
"minimal": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"fs\", {\n})",
"full": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"fs\", {\n # root dir for backend\n # \"root\" => \"...\",\n\n # tmp dir for atomic write\n # \"atomic_write_dir\" => \"...\",\n})"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/fs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(fs.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/fs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(fs.Scheme, opendal.OperatorOptions{\n\t// root dir for backend\n\t// \"root\": \"...\",\n\n\t// tmp dir for atomic write\n\t// \"atomic_write_dir\": \"...\",\n})"
}
]
},
{
"name": "ftp",
"scheme": "ftp",
"groups": [
"General"
],
"configs": [
{
"name": "endpoint",
"type": "string",
"required": false,
"group": "General",
"comments": "endpoint of this backend"
},
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "root of this backend"
},
{
"name": "user",
"type": "string",
"required": false,
"group": "General",
"comments": "user of this backend"
},
{
"name": "password",
"type": "string",
"required": false,
"group": "General",
"comments": "password of this backend"
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"ftp\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"ftp\", [\n // endpoint of this backend\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // root of this backend\n // (\"root\".to_string(), \"...\".to_string()),\n\n // user of this backend\n // (\"user\".to_string(), \"...\".to_string()),\n\n // password of this backend\n // (\"password\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"ftp\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"ftp\",\n # endpoint of this backend\n # endpoint=\"...\",\n\n # root of this backend\n # root=\"...\",\n\n # user of this backend\n # user=\"...\",\n\n # password of this backend\n # password=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"ftp\", {\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"ftp\", {\n // endpoint of this backend\n // endpoint: \"...\",\n\n // root of this backend\n // root: \"...\",\n\n // user of this backend\n // user: \"...\",\n\n // password of this backend\n // password: \"...\",\n});"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/ftp\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(ftp.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/ftp\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(ftp.Scheme, opendal.OperatorOptions{\n\t// endpoint of this backend\n\t// \"endpoint\": \"...\",\n\n\t// root of this backend\n\t// \"root\": \"...\",\n\n\t// user of this backend\n\t// \"user\": \"...\",\n\n\t// password of this backend\n\t// \"password\": \"...\",\n})"
}
]
},
{
"name": "gcs",
"scheme": "gcs",
"groups": [
"General",
"Credentials",
"Behavior",
"Deprecated"
],
"configs": [
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"default": "/",
"comments": "root URI, all operations happens under `root`"
},
{
"name": "bucket",
"type": "string",
"required": true,
"group": "General",
"example": "my-bucket",
"comments": "bucket name"
},
{
"name": "endpoint",
"type": "string",
"required": false,
"group": "General",
"default": "https://storage.googleapis.com",
"comments": "endpoint URI of GCS service,\ndefault is `https://storage.googleapis.com`"
},
{
"name": "scope",
"type": "string",
"required": false,
"group": "General",
"comments": "Scope for gcs."
},
{
"name": "service_account",
"type": "string",
"required": false,
"group": "Credentials",
"comments": "Service Account for gcs."
},
{
"name": "credential",
"type": "string",
"required": false,
"group": "Credentials",
"comments": "Credentials string for GCS service OAuth2 authentication."
},
{
"name": "credential_path",
"type": "string",
"required": false,
"group": "Credentials",
"comments": "Local path to credentials file for GCS service OAuth2 authentication."
},
{
"name": "predefined_acl",
"type": "string",
"required": false,
"group": "Behavior",
"comments": "The predefined acl for GCS."
},
{
"name": "default_storage_class",
"type": "string",
"required": false,
"group": "Behavior",
"comments": "The default storage class used by gcs."
},
{
"name": "skip_signature",
"type": "bool",
"required": false,
"group": "Credentials",
"comments": "Skip signature will skip loading credentials and signing requests."
},
{
"name": "allow_anonymous",
"type": "bool",
"required": false,
"group": "Deprecated",
"deprecated": {
"since": "0.57.0",
"note": "Please use `skip_signature` instead of `allow_anonymous`"
},
"comments": "Allow opendal to send requests without signing when credentials are not\nloaded."
},
{
"name": "disable_vm_metadata",
"type": "bool",
"required": false,
"group": "Credentials",
"comments": "Disable attempting to load credentials from the GCE metadata server when\nrunning within Google Cloud."
},
{
"name": "disable_config_load",
"type": "bool",
"required": false,
"group": "Credentials",
"comments": "Disable loading configuration from the environment."
},
{
"name": "token",
"type": "string",
"required": false,
"group": "Credentials",
"comments": "A Google Cloud OAuth2 token.\n\nTakes precedence over `credential` and `credential_path`."
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"gcs\", [\n (\"bucket\".to_string(), \"my-bucket\".to_string()),\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"gcs\", [\n // --- General ---\n // root URI, all operations happens under `root`\n // (\"root\".to_string(), \"/\".to_string()),\n\n // bucket name\n (\"bucket\".to_string(), \"my-bucket\".to_string()),\n\n // endpoint URI of GCS service,\n // default is `https://storage.googleapis.com`\n // (\"endpoint\".to_string(), \"https://storage.googleapis.com\".to_string()),\n\n // Scope for gcs.\n // (\"scope\".to_string(), \"...\".to_string()),\n // --- Credentials ---\n // Service Account for gcs.\n // (\"service_account\".to_string(), \"...\".to_string()),\n\n // Credentials string for GCS service OAuth2 authentication.\n // (\"credential\".to_string(), \"...\".to_string()),\n\n // Local path to credentials file for GCS service OAuth2 authentication.\n // (\"credential_path\".to_string(), \"...\".to_string()),\n\n // Skip signature will skip loading credentials and signing requests.\n // (\"skip_signature\".to_string(), \"true\".to_string()),\n\n // Disable attempting to load credentials from the GCE metadata server when\n // running within Google Cloud.\n // (\"disable_vm_metadata\".to_string(), \"true\".to_string()),\n\n // Disable loading configuration from the environment.\n // (\"disable_config_load\".to_string(), \"true\".to_string()),\n\n // A Google Cloud OAuth2 token.\n //\n // Takes precedence over `credential` and `credential_path`.\n // (\"token\".to_string(), \"...\".to_string()),\n // --- Behavior ---\n // The predefined acl for GCS.\n // (\"predefined_acl\".to_string(), \"...\".to_string()),\n\n // The default storage class used by gcs.\n // (\"default_storage_class\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nconfig.put(\"bucket\", \"my-bucket\");\nOperator operator = Operator.of(\"gcs\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// --- General ---\n// root URI, all operations happens under `root`\n// config.put(\"root\", \"/\");\n\n// bucket name\nconfig.put(\"bucket\", \"my-bucket\");\n\n// endpoint URI of GCS service,\n// default is `https://storage.googleapis.com`\n// config.put(\"endpoint\", \"https://storage.googleapis.com\");\n\n// Scope for gcs.\n// config.put(\"scope\", \"...\");\n// --- Credentials ---\n// Service Account for gcs.\n// config.put(\"service_account\", \"...\");\n\n// Credentials string for GCS service OAuth2 authentication.\n// config.put(\"credential\", \"...\");\n\n// Local path to credentials file for GCS service OAuth2 authentication.\n// config.put(\"credential_path\", \"...\");\n\n// Skip signature will skip loading credentials and signing requests.\n// config.put(\"skip_signature\", \"true\");\n\n// Disable attempting to load credentials from the GCE metadata server when\n// running within Google Cloud.\n// config.put(\"disable_vm_metadata\", \"true\");\n\n// Disable loading configuration from the environment.\n// config.put(\"disable_config_load\", \"true\");\n\n// A Google Cloud OAuth2 token.\n//\n// Takes precedence over `credential` and `credential_path`.\n// config.put(\"token\", \"...\");\n// --- Behavior ---\n// The predefined acl for GCS.\n// config.put(\"predefined_acl\", \"...\");\n\n// The default storage class used by gcs.\n// config.put(\"default_storage_class\", \"...\");\nOperator operator = Operator.of(\"gcs\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"gcs\",\n bucket=\"my-bucket\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"gcs\",\n # --- General ---\n # root URI, all operations happens under `root`\n # root=\"/\",\n\n # bucket name\n bucket=\"my-bucket\",\n\n # endpoint URI of GCS service,\n # default is `https://storage.googleapis.com`\n # endpoint=\"https://storage.googleapis.com\",\n\n # Scope for gcs.\n # scope=\"...\",\n # --- Credentials ---\n # Service Account for gcs.\n # service_account=\"...\",\n\n # Credentials string for GCS service OAuth2 authentication.\n # credential=\"...\",\n\n # Local path to credentials file for GCS service OAuth2 authentication.\n # credential_path=\"...\",\n\n # Skip signature will skip loading credentials and signing requests.\n # skip_signature=\"true\",\n\n # Disable attempting to load credentials from the GCE metadata server when\n # running within Google Cloud.\n # disable_vm_metadata=\"true\",\n\n # Disable loading configuration from the environment.\n # disable_config_load=\"true\",\n\n # A Google Cloud OAuth2 token.\n #\n # Takes precedence over `credential` and `credential_path`.\n # token=\"...\",\n # --- Behavior ---\n # The predefined acl for GCS.\n # predefined_acl=\"...\",\n\n # The default storage class used by gcs.\n # default_storage_class=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"gcs\", {\n bucket: \"my-bucket\",\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"gcs\", {\n // --- General ---\n // root URI, all operations happens under `root`\n // root: \"/\",\n\n // bucket name\n bucket: \"my-bucket\",\n\n // endpoint URI of GCS service,\n // default is `https://storage.googleapis.com`\n // endpoint: \"https://storage.googleapis.com\",\n\n // Scope for gcs.\n // scope: \"...\",\n // --- Credentials ---\n // Service Account for gcs.\n // service_account: \"...\",\n\n // Credentials string for GCS service OAuth2 authentication.\n // credential: \"...\",\n\n // Local path to credentials file for GCS service OAuth2 authentication.\n // credential_path: \"...\",\n\n // Skip signature will skip loading credentials and signing requests.\n // skip_signature: \"true\",\n\n // Disable attempting to load credentials from the GCE metadata server when\n // running within Google Cloud.\n // disable_vm_metadata: \"true\",\n\n // Disable loading configuration from the environment.\n // disable_config_load: \"true\",\n\n // A Google Cloud OAuth2 token.\n //\n // Takes precedence over `credential` and `credential_path`.\n // token: \"...\",\n // --- Behavior ---\n // The predefined acl for GCS.\n // predefined_acl: \"...\",\n\n // The default storage class used by gcs.\n // default_storage_class: \"...\",\n});"
},
{
"binding": "ruby",
"language": "ruby",
"minimal": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"gcs\", {\n \"bucket\" => \"my-bucket\",\n})",
"full": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"gcs\", {\n # --- General ---\n # root URI, all operations happens under `root`\n # \"root\" => \"/\",\n\n # bucket name\n \"bucket\" => \"my-bucket\",\n\n # endpoint URI of GCS service,\n # default is `https://storage.googleapis.com`\n # \"endpoint\" => \"https://storage.googleapis.com\",\n\n # Scope for gcs.\n # \"scope\" => \"...\",\n # --- Credentials ---\n # Service Account for gcs.\n # \"service_account\" => \"...\",\n\n # Credentials string for GCS service OAuth2 authentication.\n # \"credential\" => \"...\",\n\n # Local path to credentials file for GCS service OAuth2 authentication.\n # \"credential_path\" => \"...\",\n\n # Skip signature will skip loading credentials and signing requests.\n # \"skip_signature\" => \"true\",\n\n # Disable attempting to load credentials from the GCE metadata server when\n # running within Google Cloud.\n # \"disable_vm_metadata\" => \"true\",\n\n # Disable loading configuration from the environment.\n # \"disable_config_load\" => \"true\",\n\n # A Google Cloud OAuth2 token.\n #\n # Takes precedence over `credential` and `credential_path`.\n # \"token\" => \"...\",\n # --- Behavior ---\n # The predefined acl for GCS.\n # \"predefined_acl\" => \"...\",\n\n # The default storage class used by gcs.\n # \"default_storage_class\" => \"...\",\n})"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/gcs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(gcs.Scheme, opendal.OperatorOptions{\n\t\"bucket\": \"my-bucket\",\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/gcs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(gcs.Scheme, opendal.OperatorOptions{\n\t// --- General ---\n\t// root URI, all operations happens under `root`\n\t// \"root\": \"/\",\n\n\t// bucket name\n\t\"bucket\": \"my-bucket\",\n\n\t// endpoint URI of GCS service,\n\t// default is `https://storage.googleapis.com`\n\t// \"endpoint\": \"https://storage.googleapis.com\",\n\n\t// Scope for gcs.\n\t// \"scope\": \"...\",\n\t// --- Credentials ---\n\t// Service Account for gcs.\n\t// \"service_account\": \"...\",\n\n\t// Credentials string for GCS service OAuth2 authentication.\n\t// \"credential\": \"...\",\n\n\t// Local path to credentials file for GCS service OAuth2 authentication.\n\t// \"credential_path\": \"...\",\n\n\t// Skip signature will skip loading credentials and signing requests.\n\t// \"skip_signature\": \"true\",\n\n\t// Disable attempting to load credentials from the GCE metadata server when\n\t// running within Google Cloud.\n\t// \"disable_vm_metadata\": \"true\",\n\n\t// Disable loading configuration from the environment.\n\t// \"disable_config_load\": \"true\",\n\n\t// A Google Cloud OAuth2 token.\n\t//\n\t// Takes precedence over `credential` and `credential_path`.\n\t// \"token\": \"...\",\n\t// --- Behavior ---\n\t// The predefined acl for GCS.\n\t// \"predefined_acl\": \"...\",\n\n\t// The default storage class used by gcs.\n\t// \"default_storage_class\": \"...\",\n})"
}
]
},
{
"name": "gdrive",
"scheme": "gdrive",
"groups": [
"General"
],
"configs": [
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "The root for gdrive"
},
{
"name": "access_token",
"type": "string",
"required": false,
"group": "General",
"comments": "Access token for gdrive."
},
{
"name": "refresh_token",
"type": "string",
"required": false,
"group": "General",
"comments": "Refresh token for gdrive."
},
{
"name": "client_id",
"type": "string",
"required": false,
"group": "General",
"comments": "Client id for gdrive."
},
{
"name": "client_secret",
"type": "string",
"required": false,
"group": "General",
"comments": "Client secret for gdrive."
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"gdrive\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"gdrive\", [\n // The root for gdrive\n // (\"root\".to_string(), \"...\".to_string()),\n\n // Access token for gdrive.\n // (\"access_token\".to_string(), \"...\".to_string()),\n\n // Refresh token for gdrive.\n // (\"refresh_token\".to_string(), \"...\".to_string()),\n\n // Client id for gdrive.\n // (\"client_id\".to_string(), \"...\".to_string()),\n\n // Client secret for gdrive.\n // (\"client_secret\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nOperator operator = Operator.of(\"gdrive\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// The root for gdrive\n// config.put(\"root\", \"...\");\n\n// Access token for gdrive.\n// config.put(\"access_token\", \"...\");\n\n// Refresh token for gdrive.\n// config.put(\"refresh_token\", \"...\");\n\n// Client id for gdrive.\n// config.put(\"client_id\", \"...\");\n\n// Client secret for gdrive.\n// config.put(\"client_secret\", \"...\");\nOperator operator = Operator.of(\"gdrive\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"gdrive\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"gdrive\",\n # The root for gdrive\n # root=\"...\",\n\n # Access token for gdrive.\n # access_token=\"...\",\n\n # Refresh token for gdrive.\n # refresh_token=\"...\",\n\n # Client id for gdrive.\n # client_id=\"...\",\n\n # Client secret for gdrive.\n # client_secret=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"gdrive\", {\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"gdrive\", {\n // The root for gdrive\n // root: \"...\",\n\n // Access token for gdrive.\n // access_token: \"...\",\n\n // Refresh token for gdrive.\n // refresh_token: \"...\",\n\n // Client id for gdrive.\n // client_id: \"...\",\n\n // Client secret for gdrive.\n // client_secret: \"...\",\n});"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/gdrive\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(gdrive.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/gdrive\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(gdrive.Scheme, opendal.OperatorOptions{\n\t// The root for gdrive\n\t// \"root\": \"...\",\n\n\t// Access token for gdrive.\n\t// \"access_token\": \"...\",\n\n\t// Refresh token for gdrive.\n\t// \"refresh_token\": \"...\",\n\n\t// Client id for gdrive.\n\t// \"client_id\": \"...\",\n\n\t// Client secret for gdrive.\n\t// \"client_secret\": \"...\",\n})"
}
]
},
{
"name": "ghac",
"scheme": "ghac",
"groups": [
"General"
],
"configs": [
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "The root path for ghac."
},
{
"name": "version",
"type": "string",
"required": false,
"group": "General",
"comments": "The version that used by cache."
},
{
"name": "endpoint",
"type": "string",
"required": false,
"group": "General",
"comments": "The endpoint for ghac service."
},
{
"name": "runtime_token",
"type": "string",
"required": false,
"group": "General",
"comments": "The runtime token for ghac service."
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"ghac\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"ghac\", [\n // The root path for ghac.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // The version that used by cache.\n // (\"version\".to_string(), \"...\".to_string()),\n\n // The endpoint for ghac service.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // The runtime token for ghac service.\n // (\"runtime_token\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nOperator operator = Operator.of(\"ghac\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// The root path for ghac.\n// config.put(\"root\", \"...\");\n\n// The version that used by cache.\n// config.put(\"version\", \"...\");\n\n// The endpoint for ghac service.\n// config.put(\"endpoint\", \"...\");\n\n// The runtime token for ghac service.\n// config.put(\"runtime_token\", \"...\");\nOperator operator = Operator.of(\"ghac\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"ghac\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"ghac\",\n # The root path for ghac.\n # root=\"...\",\n\n # The version that used by cache.\n # version=\"...\",\n\n # The endpoint for ghac service.\n # endpoint=\"...\",\n\n # The runtime token for ghac service.\n # runtime_token=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"ghac\", {\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"ghac\", {\n // The root path for ghac.\n // root: \"...\",\n\n // The version that used by cache.\n // version: \"...\",\n\n // The endpoint for ghac service.\n // endpoint: \"...\",\n\n // The runtime token for ghac service.\n // runtime_token: \"...\",\n});"
},
{
"binding": "ruby",
"language": "ruby",
"minimal": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"ghac\", {\n})",
"full": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"ghac\", {\n # The root path for ghac.\n # \"root\" => \"...\",\n\n # The version that used by cache.\n # \"version\" => \"...\",\n\n # The endpoint for ghac service.\n # \"endpoint\" => \"...\",\n\n # The runtime token for ghac service.\n # \"runtime_token\" => \"...\",\n})"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/ghac\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(ghac.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/ghac\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(ghac.Scheme, opendal.OperatorOptions{\n\t// The root path for ghac.\n\t// \"root\": \"...\",\n\n\t// The version that used by cache.\n\t// \"version\": \"...\",\n\n\t// The endpoint for ghac service.\n\t// \"endpoint\": \"...\",\n\n\t// The runtime token for ghac service.\n\t// \"runtime_token\": \"...\",\n})"
}
]
},
{
"name": "github",
"scheme": "github",
"groups": [
"General"
],
"configs": [
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "root of this backend.\n\nAll operations will happen under this root."
},
{
"name": "token",
"type": "string",
"required": false,
"group": "General",
"comments": "GitHub access_token.\n\noptional.\nIf not provided, the backend will only support read operations for public repositories.\nAnd rate limit will be limited to 60 requests per hour."
},
{
"name": "owner",
"type": "string",
"required": true,
"group": "General",
"comments": "GitHub repo owner.\n\nrequired."
},
{
"name": "repo",
"type": "string",
"required": true,
"group": "General",
"comments": "GitHub repo name.\n\nrequired."
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"github\", [\n (\"owner\".to_string(), \"...\".to_string()),\n (\"repo\".to_string(), \"...\".to_string()),\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"github\", [\n // root of this backend.\n //\n // All operations will happen under this root.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // GitHub access_token.\n //\n // optional.\n // If not provided, the backend will only support read operations for public repositories.\n // And rate limit will be limited to 60 requests per hour.\n // (\"token\".to_string(), \"...\".to_string()),\n\n // GitHub repo owner.\n //\n // required.\n (\"owner\".to_string(), \"...\".to_string()),\n\n // GitHub repo name.\n //\n // required.\n (\"repo\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"github\",\n owner=\"...\",\n repo=\"...\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"github\",\n # root of this backend.\n #\n # All operations will happen under this root.\n # root=\"...\",\n\n # GitHub access_token.\n #\n # optional.\n # If not provided, the backend will only support read operations for public repositories.\n # And rate limit will be limited to 60 requests per hour.\n # token=\"...\",\n\n # GitHub repo owner.\n #\n # required.\n owner=\"...\",\n\n # GitHub repo name.\n #\n # required.\n repo=\"...\",\n)"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/github\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(github.Scheme, opendal.OperatorOptions{\n\t\"owner\": \"...\",\n\t\"repo\": \"...\",\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/github\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(github.Scheme, opendal.OperatorOptions{\n\t// root of this backend.\n\t//\n\t// All operations will happen under this root.\n\t// \"root\": \"...\",\n\n\t// GitHub access_token.\n\t//\n\t// optional.\n\t// If not provided, the backend will only support read operations for public repositories.\n\t// And rate limit will be limited to 60 requests per hour.\n\t// \"token\": \"...\",\n\n\t// GitHub repo owner.\n\t//\n\t// required.\n\t\"owner\": \"...\",\n\n\t// GitHub repo name.\n\t//\n\t// required.\n\t\"repo\": \"...\",\n})"
}
]
},
{
"name": "goosefs",
"scheme": "goosefs",
"groups": [
"General"
],
"configs": [
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "Root path of this backend.\n\nAll operations will happen under this root.\nDefault to `/` if not set."
},
{
"name": "master_addr",
"type": "string",
"required": false,
"group": "General",
"comments": "Master address(es) in `host:port` format.\n\nFor single master: `\"10.0.0.1:9200\"`\nFor HA (comma-separated): `\"10.0.0.1:9200,10.0.0.2:9200,10.0.0.3:9200\"`\n\nWhen multiple addresses are provided, the client uses\n`PollingMasterInquireClient` to discover the Primary Master automatically.\n\nResolution precedence at `build()` time (highest → lowest), following\n`goosefs-sdk` `docs/CLIENT_CONFIGURATION.md` §1:\n1. This field (when set on the builder / OpenDAL config map)\n2. `GOOSEFS_MASTER_ADDR` environment variable\n3. `goosefs.master.rpc.addresses` / `goosefs.master.hostname` in\n`goosefs-site.properties`\n\n`build()` fails with `ConfigInvalid` only when **none** of the above\nsupplies a master address."
},
{
"name": "block_size",
"type": "integer",
"required": false,
"group": "General",
"comments": "Block size in bytes for new files (default: 64 MiB)."
},
{
"name": "chunk_size",
"type": "integer",
"required": false,
"group": "General",
"comments": "Chunk size in bytes for streaming RPCs (default: 1 MiB)."
},
{
"name": "write_type",
"type": "string",
"required": false,
"group": "General",
"comments": "Default write type for new files.\n\nSupported values: `\"must_cache\"`, `\"cache_through\"`, `\"through\"`, `\"async_through\"`.\nDefault: `\"must_cache\"`."
},
{
"name": "auth_type",
"type": "string",
"required": false,
"group": "General",
"comments": "Authentication type.\n\nSupported values: `\"nosasl\"`, `\"simple\"`.\nDefault: `\"simple\"` — PLAIN SASL with username.\n`\"nosasl\"` — skip authentication entirely."
},
{
"name": "auth_username",
"type": "string",
"required": false,
"group": "General",
"comments": "Authentication username.\n\nUsed in SIMPLE mode as the login identity.\nDefault: current OS user (`$USER` / `$USERNAME`)."
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"goosefs\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"goosefs\", [\n // Root path of this backend.\n //\n // All operations will happen under this root.\n // Default to `/` if not set.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // Master address(es) in `host:port` format.\n //\n // For single master: `\"10.0.0.1:9200\"`\n // For HA (comma-separated): `\"10.0.0.1:9200,10.0.0.2:9200,10.0.0.3:9200\"`\n //\n // When multiple addresses are provided, the client uses\n // `PollingMasterInquireClient` to discover the Primary Master automatically.\n //\n // Resolution precedence at `build()` time (highest → lowest), following\n // `goosefs-sdk` `docs/CLIENT_CONFIGURATION.md` §1:\n // 1. This field (when set on the builder / OpenDAL config map)\n // 2. `GOOSEFS_MASTER_ADDR` environment variable\n // 3. `goosefs.master.rpc.addresses` / `goosefs.master.hostname` in\n // `goosefs-site.properties`\n //\n // `build()` fails with `ConfigInvalid` only when **none** of the above\n // supplies a master address.\n // (\"master_addr\".to_string(), \"...\".to_string()),\n\n // Block size in bytes for new files (default: 64 MiB).\n // (\"block_size\".to_string(), \"1000\".to_string()),\n\n // Chunk size in bytes for streaming RPCs (default: 1 MiB).\n // (\"chunk_size\".to_string(), \"1000\".to_string()),\n\n // Default write type for new files.\n //\n // Supported values: `\"must_cache\"`, `\"cache_through\"`, `\"through\"`, `\"async_through\"`.\n // Default: `\"must_cache\"`.\n // (\"write_type\".to_string(), \"...\".to_string()),\n\n // Authentication type.\n //\n // Supported values: `\"nosasl\"`, `\"simple\"`.\n // Default: `\"simple\"` — PLAIN SASL with username.\n // `\"nosasl\"` — skip authentication entirely.\n // (\"auth_type\".to_string(), \"...\".to_string()),\n\n // Authentication username.\n //\n // Used in SIMPLE mode as the login identity.\n // Default: current OS user (`$USER` / `$USERNAME`).\n // (\"auth_username\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nOperator operator = Operator.of(\"goosefs\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// Root path of this backend.\n//\n// All operations will happen under this root.\n// Default to `/` if not set.\n// config.put(\"root\", \"...\");\n\n// Master address(es) in `host:port` format.\n//\n// For single master: `\"10.0.0.1:9200\"`\n// For HA (comma-separated): `\"10.0.0.1:9200,10.0.0.2:9200,10.0.0.3:9200\"`\n//\n// When multiple addresses are provided, the client uses\n// `PollingMasterInquireClient` to discover the Primary Master automatically.\n//\n// Resolution precedence at `build()` time (highest → lowest), following\n// `goosefs-sdk` `docs/CLIENT_CONFIGURATION.md` §1:\n// 1. This field (when set on the builder / OpenDAL config map)\n// 2. `GOOSEFS_MASTER_ADDR` environment variable\n// 3. `goosefs.master.rpc.addresses` / `goosefs.master.hostname` in\n// `goosefs-site.properties`\n//\n// `build()` fails with `ConfigInvalid` only when **none** of the above\n// supplies a master address.\n// config.put(\"master_addr\", \"...\");\n\n// Block size in bytes for new files (default: 64 MiB).\n// config.put(\"block_size\", \"1000\");\n\n// Chunk size in bytes for streaming RPCs (default: 1 MiB).\n// config.put(\"chunk_size\", \"1000\");\n\n// Default write type for new files.\n//\n// Supported values: `\"must_cache\"`, `\"cache_through\"`, `\"through\"`, `\"async_through\"`.\n// Default: `\"must_cache\"`.\n// config.put(\"write_type\", \"...\");\n\n// Authentication type.\n//\n// Supported values: `\"nosasl\"`, `\"simple\"`.\n// Default: `\"simple\"` — PLAIN SASL with username.\n// `\"nosasl\"` — skip authentication entirely.\n// config.put(\"auth_type\", \"...\");\n\n// Authentication username.\n//\n// Used in SIMPLE mode as the login identity.\n// Default: current OS user (`$USER` / `$USERNAME`).\n// config.put(\"auth_username\", \"...\");\nOperator operator = Operator.of(\"goosefs\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"goosefs\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"goosefs\",\n # Root path of this backend.\n #\n # All operations will happen under this root.\n # Default to `/` if not set.\n # root=\"...\",\n\n # Master address(es) in `host:port` format.\n #\n # For single master: `\"10.0.0.1:9200\"`\n # For HA (comma-separated): `\"10.0.0.1:9200,10.0.0.2:9200,10.0.0.3:9200\"`\n #\n # When multiple addresses are provided, the client uses\n # `PollingMasterInquireClient` to discover the Primary Master automatically.\n #\n # Resolution precedence at `build()` time (highest → lowest), following\n # `goosefs-sdk` `docs/CLIENT_CONFIGURATION.md` §1:\n # 1. This field (when set on the builder / OpenDAL config map)\n # 2. `GOOSEFS_MASTER_ADDR` environment variable\n # 3. `goosefs.master.rpc.addresses` / `goosefs.master.hostname` in\n # `goosefs-site.properties`\n #\n # `build()` fails with `ConfigInvalid` only when **none** of the above\n # supplies a master address.\n # master_addr=\"...\",\n\n # Block size in bytes for new files (default: 64 MiB).\n # block_size=\"1000\",\n\n # Chunk size in bytes for streaming RPCs (default: 1 MiB).\n # chunk_size=\"1000\",\n\n # Default write type for new files.\n #\n # Supported values: `\"must_cache\"`, `\"cache_through\"`, `\"through\"`, `\"async_through\"`.\n # Default: `\"must_cache\"`.\n # write_type=\"...\",\n\n # Authentication type.\n #\n # Supported values: `\"nosasl\"`, `\"simple\"`.\n # Default: `\"simple\"` — PLAIN SASL with username.\n # `\"nosasl\"` — skip authentication entirely.\n # auth_type=\"...\",\n\n # Authentication username.\n #\n # Used in SIMPLE mode as the login identity.\n # Default: current OS user (`$USER` / `$USERNAME`).\n # auth_username=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"goosefs\", {\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"goosefs\", {\n // Root path of this backend.\n //\n // All operations will happen under this root.\n // Default to `/` if not set.\n // root: \"...\",\n\n // Master address(es) in `host:port` format.\n //\n // For single master: `\"10.0.0.1:9200\"`\n // For HA (comma-separated): `\"10.0.0.1:9200,10.0.0.2:9200,10.0.0.3:9200\"`\n //\n // When multiple addresses are provided, the client uses\n // `PollingMasterInquireClient` to discover the Primary Master automatically.\n //\n // Resolution precedence at `build()` time (highest → lowest), following\n // `goosefs-sdk` `docs/CLIENT_CONFIGURATION.md` §1:\n // 1. This field (when set on the builder / OpenDAL config map)\n // 2. `GOOSEFS_MASTER_ADDR` environment variable\n // 3. `goosefs.master.rpc.addresses` / `goosefs.master.hostname` in\n // `goosefs-site.properties`\n //\n // `build()` fails with `ConfigInvalid` only when **none** of the above\n // supplies a master address.\n // master_addr: \"...\",\n\n // Block size in bytes for new files (default: 64 MiB).\n // block_size: \"1000\",\n\n // Chunk size in bytes for streaming RPCs (default: 1 MiB).\n // chunk_size: \"1000\",\n\n // Default write type for new files.\n //\n // Supported values: `\"must_cache\"`, `\"cache_through\"`, `\"through\"`, `\"async_through\"`.\n // Default: `\"must_cache\"`.\n // write_type: \"...\",\n\n // Authentication type.\n //\n // Supported values: `\"nosasl\"`, `\"simple\"`.\n // Default: `\"simple\"` — PLAIN SASL with username.\n // `\"nosasl\"` — skip authentication entirely.\n // auth_type: \"...\",\n\n // Authentication username.\n //\n // Used in SIMPLE mode as the login identity.\n // Default: current OS user (`$USER` / `$USERNAME`).\n // auth_username: \"...\",\n});"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/goosefs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(goosefs.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/goosefs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(goosefs.Scheme, opendal.OperatorOptions{\n\t// Root path of this backend.\n\t//\n\t// All operations will happen under this root.\n\t// Default to `/` if not set.\n\t// \"root\": \"...\",\n\n\t// Master address(es) in `host:port` format.\n\t//\n\t// For single master: `\"10.0.0.1:9200\"`\n\t// For HA (comma-separated): `\"10.0.0.1:9200,10.0.0.2:9200,10.0.0.3:9200\"`\n\t//\n\t// When multiple addresses are provided, the client uses\n\t// `PollingMasterInquireClient` to discover the Primary Master automatically.\n\t//\n\t// Resolution precedence at `build()` time (highest → lowest), following\n\t// `goosefs-sdk` `docs/CLIENT_CONFIGURATION.md` §1:\n\t// 1. This field (when set on the builder / OpenDAL config map)\n\t// 2. `GOOSEFS_MASTER_ADDR` environment variable\n\t// 3. `goosefs.master.rpc.addresses` / `goosefs.master.hostname` in\n\t// `goosefs-site.properties`\n\t//\n\t// `build()` fails with `ConfigInvalid` only when **none** of the above\n\t// supplies a master address.\n\t// \"master_addr\": \"...\",\n\n\t// Block size in bytes for new files (default: 64 MiB).\n\t// \"block_size\": \"1000\",\n\n\t// Chunk size in bytes for streaming RPCs (default: 1 MiB).\n\t// \"chunk_size\": \"1000\",\n\n\t// Default write type for new files.\n\t//\n\t// Supported values: `\"must_cache\"`, `\"cache_through\"`, `\"through\"`, `\"async_through\"`.\n\t// Default: `\"must_cache\"`.\n\t// \"write_type\": \"...\",\n\n\t// Authentication type.\n\t//\n\t// Supported values: `\"nosasl\"`, `\"simple\"`.\n\t// Default: `\"simple\"` — PLAIN SASL with username.\n\t// `\"nosasl\"` — skip authentication entirely.\n\t// \"auth_type\": \"...\",\n\n\t// Authentication username.\n\t//\n\t// Used in SIMPLE mode as the login identity.\n\t// Default: current OS user (`$USER` / `$USERNAME`).\n\t// \"auth_username\": \"...\",\n})"
}
]
},
{
"name": "gridfs",
"scheme": "gridfs",
"groups": [
"General"
],
"configs": [
{
"name": "connection_string",
"type": "string",
"required": false,
"group": "General",
"comments": "The connection string of the MongoDB service."
},
{
"name": "database",
"type": "string",
"required": false,
"group": "General",
"comments": "The database name of the MongoDB GridFs service to read/write."
},
{
"name": "bucket",
"type": "string",
"required": false,
"group": "General",
"comments": "The bucket name of the MongoDB GridFs service to read/write."
},
{
"name": "chunk_size",
"type": "integer",
"required": false,
"group": "General",
"comments": "The chunk size of the MongoDB GridFs service used to break the user file into chunks."
},
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "The working directory, all operations will be performed under it."
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"gridfs\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"gridfs\", [\n // The connection string of the MongoDB service.\n // (\"connection_string\".to_string(), \"...\".to_string()),\n\n // The database name of the MongoDB GridFs service to read/write.\n // (\"database\".to_string(), \"...\".to_string()),\n\n // The bucket name of the MongoDB GridFs service to read/write.\n // (\"bucket\".to_string(), \"...\".to_string()),\n\n // The chunk size of the MongoDB GridFs service used to break the user file into chunks.\n // (\"chunk_size\".to_string(), \"1000\".to_string()),\n\n // The working directory, all operations will be performed under it.\n // (\"root\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nOperator operator = Operator.of(\"gridfs\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// The connection string of the MongoDB service.\n// config.put(\"connection_string\", \"...\");\n\n// The database name of the MongoDB GridFs service to read/write.\n// config.put(\"database\", \"...\");\n\n// The bucket name of the MongoDB GridFs service to read/write.\n// config.put(\"bucket\", \"...\");\n\n// The chunk size of the MongoDB GridFs service used to break the user file into chunks.\n// config.put(\"chunk_size\", \"1000\");\n\n// The working directory, all operations will be performed under it.\n// config.put(\"root\", \"...\");\nOperator operator = Operator.of(\"gridfs\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"gridfs\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"gridfs\",\n # The connection string of the MongoDB service.\n # connection_string=\"...\",\n\n # The database name of the MongoDB GridFs service to read/write.\n # database=\"...\",\n\n # The bucket name of the MongoDB GridFs service to read/write.\n # bucket=\"...\",\n\n # The chunk size of the MongoDB GridFs service used to break the user file into chunks.\n # chunk_size=\"1000\",\n\n # The working directory, all operations will be performed under it.\n # root=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"gridfs\", {\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"gridfs\", {\n // The connection string of the MongoDB service.\n // connection_string: \"...\",\n\n // The database name of the MongoDB GridFs service to read/write.\n // database: \"...\",\n\n // The bucket name of the MongoDB GridFs service to read/write.\n // bucket: \"...\",\n\n // The chunk size of the MongoDB GridFs service used to break the user file into chunks.\n // chunk_size: \"1000\",\n\n // The working directory, all operations will be performed under it.\n // root: \"...\",\n});"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/gridfs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(gridfs.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/gridfs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(gridfs.Scheme, opendal.OperatorOptions{\n\t// The connection string of the MongoDB service.\n\t// \"connection_string\": \"...\",\n\n\t// The database name of the MongoDB GridFs service to read/write.\n\t// \"database\": \"...\",\n\n\t// The bucket name of the MongoDB GridFs service to read/write.\n\t// \"bucket\": \"...\",\n\n\t// The chunk size of the MongoDB GridFs service used to break the user file into chunks.\n\t// \"chunk_size\": \"1000\",\n\n\t// The working directory, all operations will be performed under it.\n\t// \"root\": \"...\",\n})"
}
]
},
{
"name": "hdfs",
"scheme": "hdfs",
"groups": [
"General"
],
"configs": [
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "work dir of this backend"
},
{
"name": "name_node",
"type": "string",
"required": false,
"group": "General",
"comments": "name node of this backend"
},
{
"name": "kerberos_ticket_cache_path",
"type": "string",
"required": false,
"group": "General",
"comments": "kerberos_ticket_cache_path of this backend"
},
{
"name": "user",
"type": "string",
"required": false,
"group": "General",
"comments": "user of this backend"
},
{
"name": "enable_append",
"type": "bool",
"required": false,
"group": "General",
"deprecated": {
"since": "0.57.0",
"note": "HDFS append capability is enabled by default and this option is no longer needed."
},
"comments": "Deprecated: HDFS append capability is enabled by default."
},
{
"name": "atomic_write_dir",
"type": "string",
"required": false,
"group": "General",
"comments": "atomic_write_dir of this backend"
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"hdfs\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"hdfs\", [\n // work dir of this backend\n // (\"root\".to_string(), \"...\".to_string()),\n\n // name node of this backend\n // (\"name_node\".to_string(), \"...\".to_string()),\n\n // kerberos_ticket_cache_path of this backend\n // (\"kerberos_ticket_cache_path\".to_string(), \"...\".to_string()),\n\n // user of this backend\n // (\"user\".to_string(), \"...\".to_string()),\n\n // atomic_write_dir of this backend\n // (\"atomic_write_dir\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"hdfs\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"hdfs\",\n # work dir of this backend\n # root=\"...\",\n\n # name node of this backend\n # name_node=\"...\",\n\n # kerberos_ticket_cache_path of this backend\n # kerberos_ticket_cache_path=\"...\",\n\n # user of this backend\n # user=\"...\",\n\n # atomic_write_dir of this backend\n # atomic_write_dir=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"hdfs\", {\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"hdfs\", {\n // work dir of this backend\n // root: \"...\",\n\n // name node of this backend\n // name_node: \"...\",\n\n // kerberos_ticket_cache_path of this backend\n // kerberos_ticket_cache_path: \"...\",\n\n // user of this backend\n // user: \"...\",\n\n // atomic_write_dir of this backend\n // atomic_write_dir: \"...\",\n});"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/hdfs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(hdfs.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/hdfs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(hdfs.Scheme, opendal.OperatorOptions{\n\t// work dir of this backend\n\t// \"root\": \"...\",\n\n\t// name node of this backend\n\t// \"name_node\": \"...\",\n\n\t// kerberos_ticket_cache_path of this backend\n\t// \"kerberos_ticket_cache_path\": \"...\",\n\n\t// user of this backend\n\t// \"user\": \"...\",\n\n\t// atomic_write_dir of this backend\n\t// \"atomic_write_dir\": \"...\",\n})"
}
]
},
{
"name": "hdfs-native",
"scheme": "hdfs-native",
"groups": [
"General"
],
"configs": [
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "work dir of this backend"
},
{
"name": "name_node",
"type": "string",
"required": false,
"group": "General",
"comments": "name_node of this backend"
},
{
"name": "enable_append",
"type": "bool",
"required": false,
"group": "General",
"deprecated": {
"since": "0.57.0",
"note": "HDFS Native append capability is enabled by default and this option is no longer needed."
},
"comments": "Deprecated: HDFS Native append capability is enabled by default."
},
{
"name": "options",
"type": "map",
"required": false,
"group": "General",
"comments": "other options for hdfs client"
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"hdfs-native\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"hdfs-native\", [\n // work dir of this backend\n // (\"root\".to_string(), \"...\".to_string()),\n\n // name_node of this backend\n // (\"name_node\".to_string(), \"...\".to_string()),\n\n // other options for hdfs client\n // (\"options\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"hdfs-native\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"hdfs-native\",\n # work dir of this backend\n # root=\"...\",\n\n # name_node of this backend\n # name_node=\"...\",\n\n # other options for hdfs client\n # options=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"hdfs-native\", {\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"hdfs-native\", {\n // work dir of this backend\n // root: \"...\",\n\n // name_node of this backend\n // name_node: \"...\",\n\n // other options for hdfs client\n // options: \"...\",\n});"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/hdfs-native\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(hdfs-native.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/hdfs-native\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(hdfs-native.Scheme, opendal.OperatorOptions{\n\t// work dir of this backend\n\t// \"root\": \"...\",\n\n\t// name_node of this backend\n\t// \"name_node\": \"...\",\n\n\t// other options for hdfs client\n\t// \"options\": \"...\",\n})"
}
]
},
{
"name": "hf",
"scheme": "hf",
"groups": [
"General"
],
"configs": [
{
"name": "repo_type",
"type": "string",
"required": false,
"group": "General",
"comments": "Repo type of this backend. Required."
},
{
"name": "repo_id",
"type": "string",
"required": false,
"group": "General",
"comments": "Repo id of this backend.\n\nThis is required."
},
{
"name": "revision",
"type": "string",
"required": false,
"group": "General",
"comments": "Revision of this backend.\n\nDefault is main."
},
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "Root of this backend. Can be \"/path/to/dir\".\n\nDefault is \"/\"."
},
{
"name": "token",
"type": "string",
"required": false,
"group": "General",
"comments": "Token of this backend.\n\nThis is optional."
},
{
"name": "endpoint",
"type": "string",
"required": false,
"group": "General",
"comments": "Endpoint of the Hugging Face Hub.\n\nDefault is \"https://huggingface.co\"."
},
{
"name": "download_mode",
"type": "string",
"required": false,
"group": "General",
"comments": "Download mode. Either `xet` (default) or `http`.\n\nWhen unset, the mode is resolved from the `HF_HUB_DISABLE_XET`\nenvironment variable: a non-empty value forces `http`, otherwise it\ndefaults to `xet`. An explicit value here takes precedence.\n\nSee <https://huggingface.co/docs/huggingface_hub/package_reference/environment_variables#hfhubdisablexet>."
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"hf\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"hf\", [\n // Repo type of this backend. Required.\n // (\"repo_type\".to_string(), \"...\".to_string()),\n\n // Repo id of this backend.\n //\n // This is required.\n // (\"repo_id\".to_string(), \"...\".to_string()),\n\n // Revision of this backend.\n //\n // Default is main.\n // (\"revision\".to_string(), \"...\".to_string()),\n\n // Root of this backend. Can be \"/path/to/dir\".\n //\n // Default is \"/\".\n // (\"root\".to_string(), \"...\".to_string()),\n\n // Token of this backend.\n //\n // This is optional.\n // (\"token\".to_string(), \"...\".to_string()),\n\n // Endpoint of the Hugging Face Hub.\n //\n // Default is \"https://huggingface.co\".\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // Download mode. Either `xet` (default) or `http`.\n //\n // When unset, the mode is resolved from the `HF_HUB_DISABLE_XET`\n // environment variable: a non-empty value forces `http`, otherwise it\n // defaults to `xet`. An explicit value here takes precedence.\n //\n // See <https://huggingface.co/docs/huggingface_hub/package_reference/environment_variables#hfhubdisablexet>.\n // (\"download_mode\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nOperator operator = Operator.of(\"hf\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// Repo type of this backend. Required.\n// config.put(\"repo_type\", \"...\");\n\n// Repo id of this backend.\n//\n// This is required.\n// config.put(\"repo_id\", \"...\");\n\n// Revision of this backend.\n//\n// Default is main.\n// config.put(\"revision\", \"...\");\n\n// Root of this backend. Can be \"/path/to/dir\".\n//\n// Default is \"/\".\n// config.put(\"root\", \"...\");\n\n// Token of this backend.\n//\n// This is optional.\n// config.put(\"token\", \"...\");\n\n// Endpoint of the Hugging Face Hub.\n//\n// Default is \"https://huggingface.co\".\n// config.put(\"endpoint\", \"...\");\n\n// Download mode. Either `xet` (default) or `http`.\n//\n// When unset, the mode is resolved from the `HF_HUB_DISABLE_XET`\n// environment variable: a non-empty value forces `http`, otherwise it\n// defaults to `xet`. An explicit value here takes precedence.\n//\n// See <https://huggingface.co/docs/huggingface_hub/package_reference/environment_variables#hfhubdisablexet>.\n// config.put(\"download_mode\", \"...\");\nOperator operator = Operator.of(\"hf\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"hf\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"hf\",\n # Repo type of this backend. Required.\n # repo_type=\"...\",\n\n # Repo id of this backend.\n #\n # This is required.\n # repo_id=\"...\",\n\n # Revision of this backend.\n #\n # Default is main.\n # revision=\"...\",\n\n # Root of this backend. Can be \"/path/to/dir\".\n #\n # Default is \"/\".\n # root=\"...\",\n\n # Token of this backend.\n #\n # This is optional.\n # token=\"...\",\n\n # Endpoint of the Hugging Face Hub.\n #\n # Default is \"https://huggingface.co\".\n # endpoint=\"...\",\n\n # Download mode. Either `xet` (default) or `http`.\n #\n # When unset, the mode is resolved from the `HF_HUB_DISABLE_XET`\n # environment variable: a non-empty value forces `http`, otherwise it\n # defaults to `xet`. An explicit value here takes precedence.\n #\n # See <https://huggingface.co/docs/huggingface_hub/package_reference/environment_variables#hfhubdisablexet>.\n # download_mode=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"hf\", {\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"hf\", {\n // Repo type of this backend. Required.\n // repo_type: \"...\",\n\n // Repo id of this backend.\n //\n // This is required.\n // repo_id: \"...\",\n\n // Revision of this backend.\n //\n // Default is main.\n // revision: \"...\",\n\n // Root of this backend. Can be \"/path/to/dir\".\n //\n // Default is \"/\".\n // root: \"...\",\n\n // Token of this backend.\n //\n // This is optional.\n // token: \"...\",\n\n // Endpoint of the Hugging Face Hub.\n //\n // Default is \"https://huggingface.co\".\n // endpoint: \"...\",\n\n // Download mode. Either `xet` (default) or `http`.\n //\n // When unset, the mode is resolved from the `HF_HUB_DISABLE_XET`\n // environment variable: a non-empty value forces `http`, otherwise it\n // defaults to `xet`. An explicit value here takes precedence.\n //\n // See <https://huggingface.co/docs/huggingface_hub/package_reference/environment_variables#hfhubdisablexet>.\n // download_mode: \"...\",\n});"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/hf\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(hf.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/hf\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(hf.Scheme, opendal.OperatorOptions{\n\t// Repo type of this backend. Required.\n\t// \"repo_type\": \"...\",\n\n\t// Repo id of this backend.\n\t//\n\t// This is required.\n\t// \"repo_id\": \"...\",\n\n\t// Revision of this backend.\n\t//\n\t// Default is main.\n\t// \"revision\": \"...\",\n\n\t// Root of this backend. Can be \"/path/to/dir\".\n\t//\n\t// Default is \"/\".\n\t// \"root\": \"...\",\n\n\t// Token of this backend.\n\t//\n\t// This is optional.\n\t// \"token\": \"...\",\n\n\t// Endpoint of the Hugging Face Hub.\n\t//\n\t// Default is \"https://huggingface.co\".\n\t// \"endpoint\": \"...\",\n\n\t// Download mode. Either `xet` (default) or `http`.\n\t//\n\t// When unset, the mode is resolved from the `HF_HUB_DISABLE_XET`\n\t// environment variable: a non-empty value forces `http`, otherwise it\n\t// defaults to `xet`. An explicit value here takes precedence.\n\t//\n\t// See <https://huggingface.co/docs/huggingface_hub/package_reference/environment_variables#hfhubdisablexet>.\n\t// \"download_mode\": \"...\",\n})"
}
]
},
{
"name": "http",
"scheme": "http",
"groups": [
"General"
],
"configs": [
{
"name": "endpoint",
"type": "string",
"required": false,
"group": "General",
"comments": "endpoint of this backend"
},
{
"name": "username",
"type": "string",
"required": false,
"group": "General",
"comments": "username of this backend"
},
{
"name": "password",
"type": "string",
"required": false,
"group": "General",
"comments": "password of this backend"
},
{
"name": "token",
"type": "string",
"required": false,
"group": "General",
"comments": "token of this backend"
},
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "root of this backend"
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"http\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"http\", [\n // endpoint of this backend\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // username of this backend\n // (\"username\".to_string(), \"...\".to_string()),\n\n // password of this backend\n // (\"password\".to_string(), \"...\".to_string()),\n\n // token of this backend\n // (\"token\".to_string(), \"...\".to_string()),\n\n // root of this backend\n // (\"root\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nOperator operator = Operator.of(\"http\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// endpoint of this backend\n// config.put(\"endpoint\", \"...\");\n\n// username of this backend\n// config.put(\"username\", \"...\");\n\n// password of this backend\n// config.put(\"password\", \"...\");\n\n// token of this backend\n// config.put(\"token\", \"...\");\n\n// root of this backend\n// config.put(\"root\", \"...\");\nOperator operator = Operator.of(\"http\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"http\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"http\",\n # endpoint of this backend\n # endpoint=\"...\",\n\n # username of this backend\n # username=\"...\",\n\n # password of this backend\n # password=\"...\",\n\n # token of this backend\n # token=\"...\",\n\n # root of this backend\n # root=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"http\", {\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"http\", {\n // endpoint of this backend\n // endpoint: \"...\",\n\n // username of this backend\n // username: \"...\",\n\n // password of this backend\n // password: \"...\",\n\n // token of this backend\n // token: \"...\",\n\n // root of this backend\n // root: \"...\",\n});"
},
{
"binding": "ruby",
"language": "ruby",
"minimal": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"http\", {\n})",
"full": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"http\", {\n # endpoint of this backend\n # \"endpoint\" => \"...\",\n\n # username of this backend\n # \"username\" => \"...\",\n\n # password of this backend\n # \"password\" => \"...\",\n\n # token of this backend\n # \"token\" => \"...\",\n\n # root of this backend\n # \"root\" => \"...\",\n})"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/http\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(http.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/http\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(http.Scheme, opendal.OperatorOptions{\n\t// endpoint of this backend\n\t// \"endpoint\": \"...\",\n\n\t// username of this backend\n\t// \"username\": \"...\",\n\n\t// password of this backend\n\t// \"password\": \"...\",\n\n\t// token of this backend\n\t// \"token\": \"...\",\n\n\t// root of this backend\n\t// \"root\": \"...\",\n})"
}
]
},
{
"name": "ipfs",
"scheme": "ipfs",
"groups": [
"General"
],
"configs": [
{
"name": "endpoint",
"type": "string",
"required": false,
"group": "General",
"comments": "IPFS gateway endpoint."
},
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "IPFS root."
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"ipfs\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"ipfs\", [\n // IPFS gateway endpoint.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // IPFS root.\n // (\"root\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nOperator operator = Operator.of(\"ipfs\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// IPFS gateway endpoint.\n// config.put(\"endpoint\", \"...\");\n\n// IPFS root.\n// config.put(\"root\", \"...\");\nOperator operator = Operator.of(\"ipfs\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"ipfs\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"ipfs\",\n # IPFS gateway endpoint.\n # endpoint=\"...\",\n\n # IPFS root.\n # root=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"ipfs\", {\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"ipfs\", {\n // IPFS gateway endpoint.\n // endpoint: \"...\",\n\n // IPFS root.\n // root: \"...\",\n});"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/ipfs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(ipfs.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/ipfs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(ipfs.Scheme, opendal.OperatorOptions{\n\t// IPFS gateway endpoint.\n\t// \"endpoint\": \"...\",\n\n\t// IPFS root.\n\t// \"root\": \"...\",\n})"
}
]
},
{
"name": "ipmfs",
"scheme": "ipmfs",
"groups": [
"General"
],
"configs": [
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "Root for ipfs."
},
{
"name": "endpoint",
"type": "string",
"required": false,
"group": "General",
"comments": "Endpoint for ipfs."
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"ipmfs\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"ipmfs\", [\n // Root for ipfs.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // Endpoint for ipfs.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nOperator operator = Operator.of(\"ipmfs\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// Root for ipfs.\n// config.put(\"root\", \"...\");\n\n// Endpoint for ipfs.\n// config.put(\"endpoint\", \"...\");\nOperator operator = Operator.of(\"ipmfs\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"ipmfs\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"ipmfs\",\n # Root for ipfs.\n # root=\"...\",\n\n # Endpoint for ipfs.\n # endpoint=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"ipmfs\", {\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"ipmfs\", {\n // Root for ipfs.\n // root: \"...\",\n\n // Endpoint for ipfs.\n // endpoint: \"...\",\n});"
},
{
"binding": "ruby",
"language": "ruby",
"minimal": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"ipmfs\", {\n})",
"full": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"ipmfs\", {\n # Root for ipfs.\n # \"root\" => \"...\",\n\n # Endpoint for ipfs.\n # \"endpoint\" => \"...\",\n})"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/ipmfs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(ipmfs.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/ipmfs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(ipmfs.Scheme, opendal.OperatorOptions{\n\t// Root for ipfs.\n\t// \"root\": \"...\",\n\n\t// Endpoint for ipfs.\n\t// \"endpoint\": \"...\",\n})"
}
]
},
{
"name": "koofr",
"scheme": "koofr",
"groups": [
"General"
],
"configs": [
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "root of this backend.\n\nAll operations will happen under this root."
},
{
"name": "endpoint",
"type": "string",
"required": true,
"group": "General",
"comments": "Koofr endpoint."
},
{
"name": "email",
"type": "string",
"required": true,
"group": "General",
"comments": "Koofr email."
},
{
"name": "password",
"type": "string",
"required": false,
"group": "General",
"comments": "password of this backend. (Must be the application password)"
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"koofr\", [\n (\"endpoint\".to_string(), \"...\".to_string()),\n (\"email\".to_string(), \"...\".to_string()),\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"koofr\", [\n // root of this backend.\n //\n // All operations will happen under this root.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // Koofr endpoint.\n (\"endpoint\".to_string(), \"...\".to_string()),\n\n // Koofr email.\n (\"email\".to_string(), \"...\".to_string()),\n\n // password of this backend. (Must be the application password)\n // (\"password\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nconfig.put(\"endpoint\", \"...\");\nconfig.put(\"email\", \"...\");\nOperator operator = Operator.of(\"koofr\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// root of this backend.\n//\n// All operations will happen under this root.\n// config.put(\"root\", \"...\");\n\n// Koofr endpoint.\nconfig.put(\"endpoint\", \"...\");\n\n// Koofr email.\nconfig.put(\"email\", \"...\");\n\n// password of this backend. (Must be the application password)\n// config.put(\"password\", \"...\");\nOperator operator = Operator.of(\"koofr\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"koofr\",\n endpoint=\"...\",\n email=\"...\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"koofr\",\n # root of this backend.\n #\n # All operations will happen under this root.\n # root=\"...\",\n\n # Koofr endpoint.\n endpoint=\"...\",\n\n # Koofr email.\n email=\"...\",\n\n # password of this backend. (Must be the application password)\n # password=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"koofr\", {\n endpoint: \"...\",\n email: \"...\",\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"koofr\", {\n // root of this backend.\n //\n // All operations will happen under this root.\n // root: \"...\",\n\n // Koofr endpoint.\n endpoint: \"...\",\n\n // Koofr email.\n email: \"...\",\n\n // password of this backend. (Must be the application password)\n // password: \"...\",\n});"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/koofr\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(koofr.Scheme, opendal.OperatorOptions{\n\t\"endpoint\": \"...\",\n\t\"email\": \"...\",\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/koofr\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(koofr.Scheme, opendal.OperatorOptions{\n\t// root of this backend.\n\t//\n\t// All operations will happen under this root.\n\t// \"root\": \"...\",\n\n\t// Koofr endpoint.\n\t\"endpoint\": \"...\",\n\n\t// Koofr email.\n\t\"email\": \"...\",\n\n\t// password of this backend. (Must be the application password)\n\t// \"password\": \"...\",\n})"
}
]
},
{
"name": "lakefs",
"scheme": "lakefs",
"groups": [
"General"
],
"configs": [
{
"name": "endpoint",
"type": "string",
"required": false,
"group": "General",
"comments": "Base url.\n\nThis is required."
},
{
"name": "username",
"type": "string",
"required": false,
"group": "General",
"comments": "Username for Lakefs basic authentication.\n\nThis is required."
},
{
"name": "password",
"type": "string",
"required": false,
"group": "General",
"comments": "Password for Lakefs basic authentication.\n\nThis is required."
},
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "Root of this backend. Can be \"/path/to/dir\".\n\nDefault is \"/\"."
},
{
"name": "repository",
"type": "string",
"required": false,
"group": "General",
"comments": "The repository name\n\nThis is required."
},
{
"name": "branch",
"type": "string",
"required": false,
"group": "General",
"comments": "Name of the branch or a commit ID. Default is main.\n\nThis is optional."
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"lakefs\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"lakefs\", [\n // Base url.\n //\n // This is required.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // Username for Lakefs basic authentication.\n //\n // This is required.\n // (\"username\".to_string(), \"...\".to_string()),\n\n // Password for Lakefs basic authentication.\n //\n // This is required.\n // (\"password\".to_string(), \"...\".to_string()),\n\n // Root of this backend. Can be \"/path/to/dir\".\n //\n // Default is \"/\".\n // (\"root\".to_string(), \"...\".to_string()),\n\n // The repository name\n //\n // This is required.\n // (\"repository\".to_string(), \"...\".to_string()),\n\n // Name of the branch or a commit ID. Default is main.\n //\n // This is optional.\n // (\"branch\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"lakefs\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"lakefs\",\n # Base url.\n #\n # This is required.\n # endpoint=\"...\",\n\n # Username for Lakefs basic authentication.\n #\n # This is required.\n # username=\"...\",\n\n # Password for Lakefs basic authentication.\n #\n # This is required.\n # password=\"...\",\n\n # Root of this backend. Can be \"/path/to/dir\".\n #\n # Default is \"/\".\n # root=\"...\",\n\n # The repository name\n #\n # This is required.\n # repository=\"...\",\n\n # Name of the branch or a commit ID. Default is main.\n #\n # This is optional.\n # branch=\"...\",\n)"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/lakefs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(lakefs.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/lakefs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(lakefs.Scheme, opendal.OperatorOptions{\n\t// Base url.\n\t//\n\t// This is required.\n\t// \"endpoint\": \"...\",\n\n\t// Username for Lakefs basic authentication.\n\t//\n\t// This is required.\n\t// \"username\": \"...\",\n\n\t// Password for Lakefs basic authentication.\n\t//\n\t// This is required.\n\t// \"password\": \"...\",\n\n\t// Root of this backend. Can be \"/path/to/dir\".\n\t//\n\t// Default is \"/\".\n\t// \"root\": \"...\",\n\n\t// The repository name\n\t//\n\t// This is required.\n\t// \"repository\": \"...\",\n\n\t// Name of the branch or a commit ID. Default is main.\n\t//\n\t// This is optional.\n\t// \"branch\": \"...\",\n})"
}
]
},
{
"name": "memcached",
"scheme": "memcached",
"groups": [
"General"
],
"configs": [
{
"name": "endpoint",
"type": "string",
"required": false,
"group": "General",
"comments": "network address of the memcached service.\n\nFor example: \"tcp://localhost:11211\""
},
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "the working directory of the service. Can be \"/path/to/dir\"\n\ndefault is \"/\""
},
{
"name": "username",
"type": "string",
"required": false,
"group": "General",
"comments": "Memcached username, optional."
},
{
"name": "password",
"type": "string",
"required": false,
"group": "General",
"comments": "Memcached password, optional."
},
{
"name": "default_ttl",
"type": "duration",
"required": false,
"group": "General",
"comments": "The default ttl for put operations."
},
{
"name": "connection_pool_max_size",
"type": "integer",
"required": false,
"group": "General",
"comments": "The maximum number of connections allowed.\n\ndefault is 10"
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"memcached\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"memcached\", [\n // network address of the memcached service.\n //\n // For example: \"tcp://localhost:11211\"\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // the working directory of the service. Can be \"/path/to/dir\"\n //\n // default is \"/\"\n // (\"root\".to_string(), \"...\".to_string()),\n\n // Memcached username, optional.\n // (\"username\".to_string(), \"...\".to_string()),\n\n // Memcached password, optional.\n // (\"password\".to_string(), \"...\".to_string()),\n\n // The default ttl for put operations.\n // (\"default_ttl\".to_string(), \"10s\".to_string()),\n\n // The maximum number of connections allowed.\n //\n // default is 10\n // (\"connection_pool_max_size\".to_string(), \"1000\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nOperator operator = Operator.of(\"memcached\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// network address of the memcached service.\n//\n// For example: \"tcp://localhost:11211\"\n// config.put(\"endpoint\", \"...\");\n\n// the working directory of the service. Can be \"/path/to/dir\"\n//\n// default is \"/\"\n// config.put(\"root\", \"...\");\n\n// Memcached username, optional.\n// config.put(\"username\", \"...\");\n\n// Memcached password, optional.\n// config.put(\"password\", \"...\");\n\n// The default ttl for put operations.\n// config.put(\"default_ttl\", \"10s\");\n\n// The maximum number of connections allowed.\n//\n// default is 10\n// config.put(\"connection_pool_max_size\", \"1000\");\nOperator operator = Operator.of(\"memcached\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"memcached\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"memcached\",\n # network address of the memcached service.\n #\n # For example: \"tcp://localhost:11211\"\n # endpoint=\"...\",\n\n # the working directory of the service. Can be \"/path/to/dir\"\n #\n # default is \"/\"\n # root=\"...\",\n\n # Memcached username, optional.\n # username=\"...\",\n\n # Memcached password, optional.\n # password=\"...\",\n\n # The default ttl for put operations.\n # default_ttl=\"10s\",\n\n # The maximum number of connections allowed.\n #\n # default is 10\n # connection_pool_max_size=\"1000\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"memcached\", {\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"memcached\", {\n // network address of the memcached service.\n //\n // For example: \"tcp://localhost:11211\"\n // endpoint: \"...\",\n\n // the working directory of the service. Can be \"/path/to/dir\"\n //\n // default is \"/\"\n // root: \"...\",\n\n // Memcached username, optional.\n // username: \"...\",\n\n // Memcached password, optional.\n // password: \"...\",\n\n // The default ttl for put operations.\n // default_ttl: \"10s\",\n\n // The maximum number of connections allowed.\n //\n // default is 10\n // connection_pool_max_size: \"1000\",\n});"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/memcached\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(memcached.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/memcached\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(memcached.Scheme, opendal.OperatorOptions{\n\t// network address of the memcached service.\n\t//\n\t// For example: \"tcp://localhost:11211\"\n\t// \"endpoint\": \"...\",\n\n\t// the working directory of the service. Can be \"/path/to/dir\"\n\t//\n\t// default is \"/\"\n\t// \"root\": \"...\",\n\n\t// Memcached username, optional.\n\t// \"username\": \"...\",\n\n\t// Memcached password, optional.\n\t// \"password\": \"...\",\n\n\t// The default ttl for put operations.\n\t// \"default_ttl\": \"10s\",\n\n\t// The maximum number of connections allowed.\n\t//\n\t// default is 10\n\t// \"connection_pool_max_size\": \"1000\",\n})"
}
]
},
{
"name": "memory",
"scheme": "memory",
"groups": [
"General"
],
"configs": [
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "root of the backend."
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"memory\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"memory\", [\n // root of the backend.\n // (\"root\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nOperator operator = Operator.of(\"memory\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// root of the backend.\n// config.put(\"root\", \"...\");\nOperator operator = Operator.of(\"memory\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"memory\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"memory\",\n # root of the backend.\n # root=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"memory\", {\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"memory\", {\n // root of the backend.\n // root: \"...\",\n});"
},
{
"binding": "ruby",
"language": "ruby",
"minimal": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"memory\", {\n})",
"full": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"memory\", {\n # root of the backend.\n # \"root\" => \"...\",\n})"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/memory\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(memory.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/memory\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(memory.Scheme, opendal.OperatorOptions{\n\t// root of the backend.\n\t// \"root\": \"...\",\n})"
}
]
},
{
"name": "mini_moka",
"scheme": "mini-moka",
"groups": [
"General"
],
"configs": [
{
"name": "max_capacity",
"type": "integer",
"required": false,
"group": "General",
"comments": "Sets the max capacity of the cache.\n\nRefer to [`mini-moka::sync::CacheBuilder::max_capacity`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.max_capacity)"
},
{
"name": "time_to_live",
"type": "string",
"required": false,
"group": "General",
"comments": "Sets the time to live of the cache.\n\nRefer to [`mini-moka::sync::CacheBuilder::time_to_live`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.time_to_live)"
},
{
"name": "time_to_idle",
"type": "string",
"required": false,
"group": "General",
"comments": "Sets the time to idle of the cache.\n\nRefer to [`mini-moka::sync::CacheBuilder::time_to_idle`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.time_to_idle)"
},
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "root path of this backend"
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"mini-moka\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"mini-moka\", [\n // Sets the max capacity of the cache.\n //\n // Refer to [`mini-moka::sync::CacheBuilder::max_capacity`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.max_capacity)\n // (\"max_capacity\".to_string(), \"1000\".to_string()),\n\n // Sets the time to live of the cache.\n //\n // Refer to [`mini-moka::sync::CacheBuilder::time_to_live`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.time_to_live)\n // (\"time_to_live\".to_string(), \"...\".to_string()),\n\n // Sets the time to idle of the cache.\n //\n // Refer to [`mini-moka::sync::CacheBuilder::time_to_idle`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.time_to_idle)\n // (\"time_to_idle\".to_string(), \"...\".to_string()),\n\n // root path of this backend\n // (\"root\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nOperator operator = Operator.of(\"mini-moka\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// Sets the max capacity of the cache.\n//\n// Refer to [`mini-moka::sync::CacheBuilder::max_capacity`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.max_capacity)\n// config.put(\"max_capacity\", \"1000\");\n\n// Sets the time to live of the cache.\n//\n// Refer to [`mini-moka::sync::CacheBuilder::time_to_live`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.time_to_live)\n// config.put(\"time_to_live\", \"...\");\n\n// Sets the time to idle of the cache.\n//\n// Refer to [`mini-moka::sync::CacheBuilder::time_to_idle`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.time_to_idle)\n// config.put(\"time_to_idle\", \"...\");\n\n// root path of this backend\n// config.put(\"root\", \"...\");\nOperator operator = Operator.of(\"mini-moka\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"mini-moka\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"mini-moka\",\n # Sets the max capacity of the cache.\n #\n # Refer to [`mini-moka::sync::CacheBuilder::max_capacity`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.max_capacity)\n # max_capacity=\"1000\",\n\n # Sets the time to live of the cache.\n #\n # Refer to [`mini-moka::sync::CacheBuilder::time_to_live`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.time_to_live)\n # time_to_live=\"...\",\n\n # Sets the time to idle of the cache.\n #\n # Refer to [`mini-moka::sync::CacheBuilder::time_to_idle`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.time_to_idle)\n # time_to_idle=\"...\",\n\n # root path of this backend\n # root=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"mini-moka\", {\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"mini-moka\", {\n // Sets the max capacity of the cache.\n //\n // Refer to [`mini-moka::sync::CacheBuilder::max_capacity`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.max_capacity)\n // max_capacity: \"1000\",\n\n // Sets the time to live of the cache.\n //\n // Refer to [`mini-moka::sync::CacheBuilder::time_to_live`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.time_to_live)\n // time_to_live: \"...\",\n\n // Sets the time to idle of the cache.\n //\n // Refer to [`mini-moka::sync::CacheBuilder::time_to_idle`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.time_to_idle)\n // time_to_idle: \"...\",\n\n // root path of this backend\n // root: \"...\",\n});"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/mini-moka\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(mini-moka.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/mini-moka\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(mini-moka.Scheme, opendal.OperatorOptions{\n\t// Sets the max capacity of the cache.\n\t//\n\t// Refer to [`mini-moka::sync::CacheBuilder::max_capacity`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.max_capacity)\n\t// \"max_capacity\": \"1000\",\n\n\t// Sets the time to live of the cache.\n\t//\n\t// Refer to [`mini-moka::sync::CacheBuilder::time_to_live`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.time_to_live)\n\t// \"time_to_live\": \"...\",\n\n\t// Sets the time to idle of the cache.\n\t//\n\t// Refer to [`mini-moka::sync::CacheBuilder::time_to_idle`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.time_to_idle)\n\t// \"time_to_idle\": \"...\",\n\n\t// root path of this backend\n\t// \"root\": \"...\",\n})"
}
]
},
{
"name": "moka",
"scheme": "moka",
"groups": [
"General"
],
"configs": [
{
"name": "name",
"type": "string",
"required": false,
"group": "General",
"comments": "Name for this cache instance."
},
{
"name": "max_capacity",
"type": "integer",
"required": false,
"group": "General",
"comments": "Sets the max capacity of the cache.\n\nRefer to [`moka::future::CacheBuilder::max_capacity`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.max_capacity)"
},
{
"name": "time_to_live",
"type": "string",
"required": false,
"group": "General",
"comments": "Sets the time to live of the cache.\n\nRefer to [`moka::future::CacheBuilder::time_to_live`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.time_to_live)"
},
{
"name": "time_to_idle",
"type": "string",
"required": false,
"group": "General",
"comments": "Sets the time to idle of the cache.\n\nRefer to [`moka::future::CacheBuilder::time_to_idle`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.time_to_idle)"
},
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "root path of this backend"
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"moka\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"moka\", [\n // Name for this cache instance.\n // (\"name\".to_string(), \"...\".to_string()),\n\n // Sets the max capacity of the cache.\n //\n // Refer to [`moka::future::CacheBuilder::max_capacity`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.max_capacity)\n // (\"max_capacity\".to_string(), \"1000\".to_string()),\n\n // Sets the time to live of the cache.\n //\n // Refer to [`moka::future::CacheBuilder::time_to_live`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.time_to_live)\n // (\"time_to_live\".to_string(), \"...\".to_string()),\n\n // Sets the time to idle of the cache.\n //\n // Refer to [`moka::future::CacheBuilder::time_to_idle`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.time_to_idle)\n // (\"time_to_idle\".to_string(), \"...\".to_string()),\n\n // root path of this backend\n // (\"root\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nOperator operator = Operator.of(\"moka\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// Name for this cache instance.\n// config.put(\"name\", \"...\");\n\n// Sets the max capacity of the cache.\n//\n// Refer to [`moka::future::CacheBuilder::max_capacity`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.max_capacity)\n// config.put(\"max_capacity\", \"1000\");\n\n// Sets the time to live of the cache.\n//\n// Refer to [`moka::future::CacheBuilder::time_to_live`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.time_to_live)\n// config.put(\"time_to_live\", \"...\");\n\n// Sets the time to idle of the cache.\n//\n// Refer to [`moka::future::CacheBuilder::time_to_idle`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.time_to_idle)\n// config.put(\"time_to_idle\", \"...\");\n\n// root path of this backend\n// config.put(\"root\", \"...\");\nOperator operator = Operator.of(\"moka\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"moka\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"moka\",\n # Name for this cache instance.\n # name=\"...\",\n\n # Sets the max capacity of the cache.\n #\n # Refer to [`moka::future::CacheBuilder::max_capacity`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.max_capacity)\n # max_capacity=\"1000\",\n\n # Sets the time to live of the cache.\n #\n # Refer to [`moka::future::CacheBuilder::time_to_live`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.time_to_live)\n # time_to_live=\"...\",\n\n # Sets the time to idle of the cache.\n #\n # Refer to [`moka::future::CacheBuilder::time_to_idle`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.time_to_idle)\n # time_to_idle=\"...\",\n\n # root path of this backend\n # root=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"moka\", {\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"moka\", {\n // Name for this cache instance.\n // name: \"...\",\n\n // Sets the max capacity of the cache.\n //\n // Refer to [`moka::future::CacheBuilder::max_capacity`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.max_capacity)\n // max_capacity: \"1000\",\n\n // Sets the time to live of the cache.\n //\n // Refer to [`moka::future::CacheBuilder::time_to_live`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.time_to_live)\n // time_to_live: \"...\",\n\n // Sets the time to idle of the cache.\n //\n // Refer to [`moka::future::CacheBuilder::time_to_idle`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.time_to_idle)\n // time_to_idle: \"...\",\n\n // root path of this backend\n // root: \"...\",\n});"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/moka\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(moka.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/moka\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(moka.Scheme, opendal.OperatorOptions{\n\t// Name for this cache instance.\n\t// \"name\": \"...\",\n\n\t// Sets the max capacity of the cache.\n\t//\n\t// Refer to [`moka::future::CacheBuilder::max_capacity`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.max_capacity)\n\t// \"max_capacity\": \"1000\",\n\n\t// Sets the time to live of the cache.\n\t//\n\t// Refer to [`moka::future::CacheBuilder::time_to_live`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.time_to_live)\n\t// \"time_to_live\": \"...\",\n\n\t// Sets the time to idle of the cache.\n\t//\n\t// Refer to [`moka::future::CacheBuilder::time_to_idle`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.time_to_idle)\n\t// \"time_to_idle\": \"...\",\n\n\t// root path of this backend\n\t// \"root\": \"...\",\n})"
}
]
},
{
"name": "mongodb",
"scheme": "mongodb",
"groups": [
"General"
],
"configs": [
{
"name": "connection_string",
"type": "string",
"required": false,
"group": "General",
"comments": "connection string of this backend"
},
{
"name": "database",
"type": "string",
"required": false,
"group": "General",
"comments": "database of this backend"
},
{
"name": "collection",
"type": "string",
"required": false,
"group": "General",
"comments": "collection of this backend"
},
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "root of this backend"
},
{
"name": "key_field",
"type": "string",
"required": false,
"group": "General",
"comments": "key field of this backend"
},
{
"name": "value_field",
"type": "string",
"required": false,
"group": "General",
"comments": "value field of this backend"
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"mongodb\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"mongodb\", [\n // connection string of this backend\n // (\"connection_string\".to_string(), \"...\".to_string()),\n\n // database of this backend\n // (\"database\".to_string(), \"...\".to_string()),\n\n // collection of this backend\n // (\"collection\".to_string(), \"...\".to_string()),\n\n // root of this backend\n // (\"root\".to_string(), \"...\".to_string()),\n\n // key field of this backend\n // (\"key_field\".to_string(), \"...\".to_string()),\n\n // value field of this backend\n // (\"value_field\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nOperator operator = Operator.of(\"mongodb\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// connection string of this backend\n// config.put(\"connection_string\", \"...\");\n\n// database of this backend\n// config.put(\"database\", \"...\");\n\n// collection of this backend\n// config.put(\"collection\", \"...\");\n\n// root of this backend\n// config.put(\"root\", \"...\");\n\n// key field of this backend\n// config.put(\"key_field\", \"...\");\n\n// value field of this backend\n// config.put(\"value_field\", \"...\");\nOperator operator = Operator.of(\"mongodb\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"mongodb\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"mongodb\",\n # connection string of this backend\n # connection_string=\"...\",\n\n # database of this backend\n # database=\"...\",\n\n # collection of this backend\n # collection=\"...\",\n\n # root of this backend\n # root=\"...\",\n\n # key field of this backend\n # key_field=\"...\",\n\n # value field of this backend\n # value_field=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"mongodb\", {\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"mongodb\", {\n // connection string of this backend\n // connection_string: \"...\",\n\n // database of this backend\n // database: \"...\",\n\n // collection of this backend\n // collection: \"...\",\n\n // root of this backend\n // root: \"...\",\n\n // key field of this backend\n // key_field: \"...\",\n\n // value field of this backend\n // value_field: \"...\",\n});"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/mongodb\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(mongodb.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/mongodb\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(mongodb.Scheme, opendal.OperatorOptions{\n\t// connection string of this backend\n\t// \"connection_string\": \"...\",\n\n\t// database of this backend\n\t// \"database\": \"...\",\n\n\t// collection of this backend\n\t// \"collection\": \"...\",\n\n\t// root of this backend\n\t// \"root\": \"...\",\n\n\t// key field of this backend\n\t// \"key_field\": \"...\",\n\n\t// value field of this backend\n\t// \"value_field\": \"...\",\n})"
}
]
},
{
"name": "monoiofs",
"scheme": "monoiofs",
"groups": [
"General"
],
"configs": [
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "The Root of this backend.\n\nAll operations will happen under this root.\n\nBuilder::build will return error if not set."
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"monoiofs\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"monoiofs\", [\n // The Root of this backend.\n //\n // All operations will happen under this root.\n //\n // Builder::build will return error if not set.\n // (\"root\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"monoiofs\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"monoiofs\",\n # The Root of this backend.\n #\n # All operations will happen under this root.\n #\n # Builder::build will return error if not set.\n # root=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"monoiofs\", {\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"monoiofs\", {\n // The Root of this backend.\n //\n // All operations will happen under this root.\n //\n // Builder::build will return error if not set.\n // root: \"...\",\n});"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/monoiofs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(monoiofs.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/monoiofs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(monoiofs.Scheme, opendal.OperatorOptions{\n\t// The Root of this backend.\n\t//\n\t// All operations will happen under this root.\n\t//\n\t// Builder::build will return error if not set.\n\t// \"root\": \"...\",\n})"
}
]
},
{
"name": "mysql",
"scheme": "mysql",
"groups": [
"General"
],
"configs": [
{
"name": "connection_string",
"type": "string",
"required": false,
"group": "General",
"comments": "This connection string is used to connect to the mysql service. There are url based formats.\n\nThe format of connect string resembles the url format of the mysql client.\nThe format is: `[scheme://][user[:[password]]@]host[:port][/schema][?attribute1=value1&attribute2=value2...`\n\n- `mysql://user@localhost`\n- `mysql://user:password@localhost`\n- `mysql://user:password@localhost:3306`\n- `mysql://user:password@localhost:3306/db`\n\nFor more information, please refer to <https://docs.rs/sqlx/latest/sqlx/mysql/struct.MySqlConnectOptions.html>."
},
{
"name": "table",
"type": "string",
"required": false,
"group": "General",
"comments": "The table name for mysql."
},
{
"name": "key_field",
"type": "string",
"required": false,
"group": "General",
"comments": "The key field name for mysql."
},
{
"name": "value_field",
"type": "string",
"required": false,
"group": "General",
"comments": "The value field name for mysql."
},
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "The root for mysql."
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"mysql\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"mysql\", [\n // This connection string is used to connect to the mysql service. There are url based formats.\n //\n // The format of connect string resembles the url format of the mysql client.\n // The format is: `[scheme://][user[:[password]]@]host[:port][/schema][?attribute1=value1&attribute2=value2...`\n //\n // - `mysql://user@localhost`\n // - `mysql://user:password@localhost`\n // - `mysql://user:password@localhost:3306`\n // - `mysql://user:password@localhost:3306/db`\n //\n // For more information, please refer to <https://docs.rs/sqlx/latest/sqlx/mysql/struct.MySqlConnectOptions.html>.\n // (\"connection_string\".to_string(), \"...\".to_string()),\n\n // The table name for mysql.\n // (\"table\".to_string(), \"...\".to_string()),\n\n // The key field name for mysql.\n // (\"key_field\".to_string(), \"...\".to_string()),\n\n // The value field name for mysql.\n // (\"value_field\".to_string(), \"...\".to_string()),\n\n // The root for mysql.\n // (\"root\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nOperator operator = Operator.of(\"mysql\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// This connection string is used to connect to the mysql service. There are url based formats.\n//\n// The format of connect string resembles the url format of the mysql client.\n// The format is: `[scheme://][user[:[password]]@]host[:port][/schema][?attribute1=value1&attribute2=value2...`\n//\n// - `mysql://user@localhost`\n// - `mysql://user:password@localhost`\n// - `mysql://user:password@localhost:3306`\n// - `mysql://user:password@localhost:3306/db`\n//\n// For more information, please refer to <https://docs.rs/sqlx/latest/sqlx/mysql/struct.MySqlConnectOptions.html>.\n// config.put(\"connection_string\", \"...\");\n\n// The table name for mysql.\n// config.put(\"table\", \"...\");\n\n// The key field name for mysql.\n// config.put(\"key_field\", \"...\");\n\n// The value field name for mysql.\n// config.put(\"value_field\", \"...\");\n\n// The root for mysql.\n// config.put(\"root\", \"...\");\nOperator operator = Operator.of(\"mysql\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"mysql\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"mysql\",\n # This connection string is used to connect to the mysql service. There are url based formats.\n #\n # The format of connect string resembles the url format of the mysql client.\n # The format is: `[scheme://][user[:[password]]@]host[:port][/schema][?attribute1=value1&attribute2=value2...`\n #\n # - `mysql://user@localhost`\n # - `mysql://user:password@localhost`\n # - `mysql://user:password@localhost:3306`\n # - `mysql://user:password@localhost:3306/db`\n #\n # For more information, please refer to <https://docs.rs/sqlx/latest/sqlx/mysql/struct.MySqlConnectOptions.html>.\n # connection_string=\"...\",\n\n # The table name for mysql.\n # table=\"...\",\n\n # The key field name for mysql.\n # key_field=\"...\",\n\n # The value field name for mysql.\n # value_field=\"...\",\n\n # The root for mysql.\n # root=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"mysql\", {\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"mysql\", {\n // This connection string is used to connect to the mysql service. There are url based formats.\n //\n // The format of connect string resembles the url format of the mysql client.\n // The format is: `[scheme://][user[:[password]]@]host[:port][/schema][?attribute1=value1&attribute2=value2...`\n //\n // - `mysql://user@localhost`\n // - `mysql://user:password@localhost`\n // - `mysql://user:password@localhost:3306`\n // - `mysql://user:password@localhost:3306/db`\n //\n // For more information, please refer to <https://docs.rs/sqlx/latest/sqlx/mysql/struct.MySqlConnectOptions.html>.\n // connection_string: \"...\",\n\n // The table name for mysql.\n // table: \"...\",\n\n // The key field name for mysql.\n // key_field: \"...\",\n\n // The value field name for mysql.\n // value_field: \"...\",\n\n // The root for mysql.\n // root: \"...\",\n});"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/mysql\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(mysql.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/mysql\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(mysql.Scheme, opendal.OperatorOptions{\n\t// This connection string is used to connect to the mysql service. There are url based formats.\n\t//\n\t// The format of connect string resembles the url format of the mysql client.\n\t// The format is: `[scheme://][user[:[password]]@]host[:port][/schema][?attribute1=value1&attribute2=value2...`\n\t//\n\t// - `mysql://user@localhost`\n\t// - `mysql://user:password@localhost`\n\t// - `mysql://user:password@localhost:3306`\n\t// - `mysql://user:password@localhost:3306/db`\n\t//\n\t// For more information, please refer to <https://docs.rs/sqlx/latest/sqlx/mysql/struct.MySqlConnectOptions.html>.\n\t// \"connection_string\": \"...\",\n\n\t// The table name for mysql.\n\t// \"table\": \"...\",\n\n\t// The key field name for mysql.\n\t// \"key_field\": \"...\",\n\n\t// The value field name for mysql.\n\t// \"value_field\": \"...\",\n\n\t// The root for mysql.\n\t// \"root\": \"...\",\n})"
}
]
},
{
"name": "obs",
"scheme": "obs",
"groups": [
"General"
],
"configs": [
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "Root for obs."
},
{
"name": "endpoint",
"type": "string",
"required": false,
"group": "General",
"comments": "Endpoint for obs."
},
{
"name": "access_key_id",
"type": "string",
"required": false,
"group": "General",
"comments": "Access key id for obs."
},
{
"name": "secret_access_key",
"type": "string",
"required": false,
"group": "General",
"comments": "Secret access key for obs."
},
{
"name": "bucket",
"type": "string",
"required": false,
"group": "General",
"comments": "Bucket for obs."
},
{
"name": "enable_versioning",
"type": "bool",
"required": false,
"group": "General",
"deprecated": {
"since": "0.57.0",
"note": "OBS versioning capability is not controlled by this option and this option is no longer needed."
},
"comments": "Deprecated: OBS versioning capability is not controlled by service config."
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"obs\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"obs\", [\n // Root for obs.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // Endpoint for obs.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // Access key id for obs.\n // (\"access_key_id\".to_string(), \"...\".to_string()),\n\n // Secret access key for obs.\n // (\"secret_access_key\".to_string(), \"...\".to_string()),\n\n // Bucket for obs.\n // (\"bucket\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nOperator operator = Operator.of(\"obs\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// Root for obs.\n// config.put(\"root\", \"...\");\n\n// Endpoint for obs.\n// config.put(\"endpoint\", \"...\");\n\n// Access key id for obs.\n// config.put(\"access_key_id\", \"...\");\n\n// Secret access key for obs.\n// config.put(\"secret_access_key\", \"...\");\n\n// Bucket for obs.\n// config.put(\"bucket\", \"...\");\nOperator operator = Operator.of(\"obs\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"obs\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"obs\",\n # Root for obs.\n # root=\"...\",\n\n # Endpoint for obs.\n # endpoint=\"...\",\n\n # Access key id for obs.\n # access_key_id=\"...\",\n\n # Secret access key for obs.\n # secret_access_key=\"...\",\n\n # Bucket for obs.\n # bucket=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"obs\", {\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"obs\", {\n // Root for obs.\n // root: \"...\",\n\n // Endpoint for obs.\n // endpoint: \"...\",\n\n // Access key id for obs.\n // access_key_id: \"...\",\n\n // Secret access key for obs.\n // secret_access_key: \"...\",\n\n // Bucket for obs.\n // bucket: \"...\",\n});"
},
{
"binding": "ruby",
"language": "ruby",
"minimal": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"obs\", {\n})",
"full": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"obs\", {\n # Root for obs.\n # \"root\" => \"...\",\n\n # Endpoint for obs.\n # \"endpoint\" => \"...\",\n\n # Access key id for obs.\n # \"access_key_id\" => \"...\",\n\n # Secret access key for obs.\n # \"secret_access_key\" => \"...\",\n\n # Bucket for obs.\n # \"bucket\" => \"...\",\n})"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/obs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(obs.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/obs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(obs.Scheme, opendal.OperatorOptions{\n\t// Root for obs.\n\t// \"root\": \"...\",\n\n\t// Endpoint for obs.\n\t// \"endpoint\": \"...\",\n\n\t// Access key id for obs.\n\t// \"access_key_id\": \"...\",\n\n\t// Secret access key for obs.\n\t// \"secret_access_key\": \"...\",\n\n\t// Bucket for obs.\n\t// \"bucket\": \"...\",\n})"
}
]
},
{
"name": "onedrive",
"scheme": "onedrive",
"groups": [
"General"
],
"configs": [
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "The root path for the OneDrive service for the file access"
},
{
"name": "access_token",
"type": "string",
"required": false,
"group": "General",
"comments": "Microsoft Graph API (also OneDrive API) access token"
},
{
"name": "refresh_token",
"type": "string",
"required": false,
"group": "General",
"comments": "Microsoft Graph API (also OneDrive API) refresh token"
},
{
"name": "client_id",
"type": "string",
"required": false,
"group": "General",
"comments": "Microsoft Graph API Application (client) ID that is in the Azure's app registration portal"
},
{
"name": "client_secret",
"type": "string",
"required": false,
"group": "General",
"comments": "Microsoft Graph API Application client secret that is in the Azure's app registration portal"
},
{
"name": "enable_versioning",
"type": "bool",
"required": false,
"group": "General",
"deprecated": {
"since": "0.57.0",
"note": "OneDrive versioning capability is enabled by default and this option is no longer needed."
},
"comments": "Deprecated: OneDrive versioning capability is enabled by default."
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"onedrive\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"onedrive\", [\n // The root path for the OneDrive service for the file access\n // (\"root\".to_string(), \"...\".to_string()),\n\n // Microsoft Graph API (also OneDrive API) access token\n // (\"access_token\".to_string(), \"...\".to_string()),\n\n // Microsoft Graph API (also OneDrive API) refresh token\n // (\"refresh_token\".to_string(), \"...\".to_string()),\n\n // Microsoft Graph API Application (client) ID that is in the Azure's app registration portal\n // (\"client_id\".to_string(), \"...\".to_string()),\n\n // Microsoft Graph API Application client secret that is in the Azure's app registration portal\n // (\"client_secret\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nOperator operator = Operator.of(\"onedrive\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// The root path for the OneDrive service for the file access\n// config.put(\"root\", \"...\");\n\n// Microsoft Graph API (also OneDrive API) access token\n// config.put(\"access_token\", \"...\");\n\n// Microsoft Graph API (also OneDrive API) refresh token\n// config.put(\"refresh_token\", \"...\");\n\n// Microsoft Graph API Application (client) ID that is in the Azure's app registration portal\n// config.put(\"client_id\", \"...\");\n\n// Microsoft Graph API Application client secret that is in the Azure's app registration portal\n// config.put(\"client_secret\", \"...\");\nOperator operator = Operator.of(\"onedrive\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"onedrive\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"onedrive\",\n # The root path for the OneDrive service for the file access\n # root=\"...\",\n\n # Microsoft Graph API (also OneDrive API) access token\n # access_token=\"...\",\n\n # Microsoft Graph API (also OneDrive API) refresh token\n # refresh_token=\"...\",\n\n # Microsoft Graph API Application (client) ID that is in the Azure's app registration portal\n # client_id=\"...\",\n\n # Microsoft Graph API Application client secret that is in the Azure's app registration portal\n # client_secret=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"onedrive\", {\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"onedrive\", {\n // The root path for the OneDrive service for the file access\n // root: \"...\",\n\n // Microsoft Graph API (also OneDrive API) access token\n // access_token: \"...\",\n\n // Microsoft Graph API (also OneDrive API) refresh token\n // refresh_token: \"...\",\n\n // Microsoft Graph API Application (client) ID that is in the Azure's app registration portal\n // client_id: \"...\",\n\n // Microsoft Graph API Application client secret that is in the Azure's app registration portal\n // client_secret: \"...\",\n});"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/onedrive\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(onedrive.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/onedrive\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(onedrive.Scheme, opendal.OperatorOptions{\n\t// The root path for the OneDrive service for the file access\n\t// \"root\": \"...\",\n\n\t// Microsoft Graph API (also OneDrive API) access token\n\t// \"access_token\": \"...\",\n\n\t// Microsoft Graph API (also OneDrive API) refresh token\n\t// \"refresh_token\": \"...\",\n\n\t// Microsoft Graph API Application (client) ID that is in the Azure's app registration portal\n\t// \"client_id\": \"...\",\n\n\t// Microsoft Graph API Application client secret that is in the Azure's app registration portal\n\t// \"client_secret\": \"...\",\n})"
}
]
},
{
"name": "opfs",
"scheme": "opfs",
"groups": [
"General"
],
"configs": [
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "Root directory for this backend."
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"opfs\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"opfs\", [\n // Root directory for this backend.\n // (\"root\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"opfs\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"opfs\",\n # Root directory for this backend.\n # root=\"...\",\n)"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/opfs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(opfs.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/opfs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(opfs.Scheme, opendal.OperatorOptions{\n\t// Root directory for this backend.\n\t// \"root\": \"...\",\n})"
}
]
},
{
"name": "oss",
"scheme": "oss",
"groups": [
"General"
],
"configs": [
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "Root for oss."
},
{
"name": "endpoint",
"type": "string",
"required": false,
"group": "General",
"comments": "Endpoint for oss."
},
{
"name": "presign_endpoint",
"type": "string",
"required": false,
"group": "General",
"comments": "Presign endpoint for oss."
},
{
"name": "bucket",
"type": "string",
"required": true,
"group": "General",
"comments": "Bucket for oss."
},
{
"name": "addressing_style",
"type": "string",
"required": false,
"group": "General",
"comments": "Addressing style for oss."
},
{
"name": "presign_addressing_style",
"type": "string",
"required": false,
"group": "General",
"comments": "Pre sign addressing style for oss."
},
{
"name": "enable_versioning",
"type": "bool",
"required": false,
"group": "General",
"deprecated": {
"since": "0.57.0",
"note": "OSS versioning capability is enabled by default and this option is no longer needed."
},
"comments": "Deprecated: OSS versioning capability is enabled by default."
},
{
"name": "server_side_encryption",
"type": "string",
"required": false,
"group": "General",
"comments": "Server side encryption for oss."
},
{
"name": "server_side_encryption_key_id",
"type": "string",
"required": false,
"group": "General",
"comments": "Server side encryption key id for oss."
},
{
"name": "skip_signature",
"type": "bool",
"required": false,
"group": "General",
"comments": "Skip signature will skip loading credentials and signing requests."
},
{
"name": "allow_anonymous",
"type": "bool",
"required": false,
"group": "General",
"deprecated": {
"since": "0.57.0",
"note": "Please use `skip_signature` instead of `allow_anonymous`"
},
"comments": "Allow anonymous for oss."
},
{
"name": "access_key_id",
"type": "string",
"required": false,
"group": "General",
"comments": "Access key id for oss.\n\n- this field if it's `is_some`\n- env value: `ALIBABA_CLOUD_ACCESS_KEY_ID`"
},
{
"name": "access_key_secret",
"type": "string",
"required": false,
"group": "General",
"comments": "Access key secret for oss.\n\n- this field if it's `is_some`\n- env value: `ALIBABA_CLOUD_ACCESS_KEY_SECRET`"
},
{
"name": "security_token",
"type": "string",
"required": false,
"group": "General",
"comments": "`security_token` will be loaded from\n\n- this field if it's `is_some`\n- env value: `ALIBABA_CLOUD_SECURITY_TOKEN`"
},
{
"name": "batch_max_operations",
"type": "integer",
"required": false,
"group": "General",
"deprecated": {
"since": "0.57.0",
"note": "OSS delete batch capability is enabled by default. Use CapabilityOverrideLayer to override delete_max_size for specific endpoints."
},
"comments": "Deprecated: OSS delete batch capability is enabled by default."
},
{
"name": "delete_max_size",
"type": "integer",
"required": false,
"group": "General",
"deprecated": {
"since": "0.57.0",
"note": "OSS delete batch capability is enabled by default. Use CapabilityOverrideLayer to override delete_max_size for specific endpoints."
},
"comments": "Deprecated: OSS delete batch capability is enabled by default."
},
{
"name": "role_arn",
"type": "string",
"required": false,
"group": "General",
"comments": "If `role_arn` is set, we will use already known config as source\ncredential to assume role with `role_arn`.\n\n- this field if it's `is_some`\n- env value: `ALIBABA_CLOUD_ROLE_ARN`"
},
{
"name": "role_session_name",
"type": "string",
"required": false,
"group": "General",
"comments": "role_session_name for this backend."
},
{
"name": "oidc_provider_arn",
"type": "string",
"required": false,
"group": "General",
"comments": "`oidc_provider_arn` will be loaded from\n\n- this field if it's `is_some`\n- env value: `ALIBABA_CLOUD_OIDC_PROVIDER_ARN`"
},
{
"name": "oidc_token_file",
"type": "string",
"required": false,
"group": "General",
"comments": "`oidc_token_file` will be loaded from\n\n- this field if it's `is_some`\n- env value: `ALIBABA_CLOUD_OIDC_TOKEN_FILE`"
},
{
"name": "sts_endpoint",
"type": "string",
"required": false,
"group": "General",
"comments": "`sts_endpoint` will be loaded from\n\n- this field if it's `is_some`\n- env value: `ALIBABA_CLOUD_STS_ENDPOINT`"
},
{
"name": "external_id",
"type": "string",
"required": false,
"group": "General",
"comments": "external_id for this backend."
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"oss\", [\n (\"bucket\".to_string(), \"...\".to_string()),\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"oss\", [\n // Root for oss.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // Endpoint for oss.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // Presign endpoint for oss.\n // (\"presign_endpoint\".to_string(), \"...\".to_string()),\n\n // Bucket for oss.\n (\"bucket\".to_string(), \"...\".to_string()),\n\n // Addressing style for oss.\n // (\"addressing_style\".to_string(), \"...\".to_string()),\n\n // Pre sign addressing style for oss.\n // (\"presign_addressing_style\".to_string(), \"...\".to_string()),\n\n // Server side encryption for oss.\n // (\"server_side_encryption\".to_string(), \"...\".to_string()),\n\n // Server side encryption key id for oss.\n // (\"server_side_encryption_key_id\".to_string(), \"...\".to_string()),\n\n // Skip signature will skip loading credentials and signing requests.\n // (\"skip_signature\".to_string(), \"true\".to_string()),\n\n // Access key id for oss.\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_ACCESS_KEY_ID`\n // (\"access_key_id\".to_string(), \"...\".to_string()),\n\n // Access key secret for oss.\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_ACCESS_KEY_SECRET`\n // (\"access_key_secret\".to_string(), \"...\".to_string()),\n\n // `security_token` will be loaded from\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_SECURITY_TOKEN`\n // (\"security_token\".to_string(), \"...\".to_string()),\n\n // If `role_arn` is set, we will use already known config as source\n // credential to assume role with `role_arn`.\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_ROLE_ARN`\n // (\"role_arn\".to_string(), \"...\".to_string()),\n\n // role_session_name for this backend.\n // (\"role_session_name\".to_string(), \"...\".to_string()),\n\n // `oidc_provider_arn` will be loaded from\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_OIDC_PROVIDER_ARN`\n // (\"oidc_provider_arn\".to_string(), \"...\".to_string()),\n\n // `oidc_token_file` will be loaded from\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_OIDC_TOKEN_FILE`\n // (\"oidc_token_file\".to_string(), \"...\".to_string()),\n\n // `sts_endpoint` will be loaded from\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_STS_ENDPOINT`\n // (\"sts_endpoint\".to_string(), \"...\".to_string()),\n\n // external_id for this backend.\n // (\"external_id\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nconfig.put(\"bucket\", \"...\");\nOperator operator = Operator.of(\"oss\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// Root for oss.\n// config.put(\"root\", \"...\");\n\n// Endpoint for oss.\n// config.put(\"endpoint\", \"...\");\n\n// Presign endpoint for oss.\n// config.put(\"presign_endpoint\", \"...\");\n\n// Bucket for oss.\nconfig.put(\"bucket\", \"...\");\n\n// Addressing style for oss.\n// config.put(\"addressing_style\", \"...\");\n\n// Pre sign addressing style for oss.\n// config.put(\"presign_addressing_style\", \"...\");\n\n// Server side encryption for oss.\n// config.put(\"server_side_encryption\", \"...\");\n\n// Server side encryption key id for oss.\n// config.put(\"server_side_encryption_key_id\", \"...\");\n\n// Skip signature will skip loading credentials and signing requests.\n// config.put(\"skip_signature\", \"true\");\n\n// Access key id for oss.\n//\n// - this field if it's `is_some`\n// - env value: `ALIBABA_CLOUD_ACCESS_KEY_ID`\n// config.put(\"access_key_id\", \"...\");\n\n// Access key secret for oss.\n//\n// - this field if it's `is_some`\n// - env value: `ALIBABA_CLOUD_ACCESS_KEY_SECRET`\n// config.put(\"access_key_secret\", \"...\");\n\n// `security_token` will be loaded from\n//\n// - this field if it's `is_some`\n// - env value: `ALIBABA_CLOUD_SECURITY_TOKEN`\n// config.put(\"security_token\", \"...\");\n\n// If `role_arn` is set, we will use already known config as source\n// credential to assume role with `role_arn`.\n//\n// - this field if it's `is_some`\n// - env value: `ALIBABA_CLOUD_ROLE_ARN`\n// config.put(\"role_arn\", \"...\");\n\n// role_session_name for this backend.\n// config.put(\"role_session_name\", \"...\");\n\n// `oidc_provider_arn` will be loaded from\n//\n// - this field if it's `is_some`\n// - env value: `ALIBABA_CLOUD_OIDC_PROVIDER_ARN`\n// config.put(\"oidc_provider_arn\", \"...\");\n\n// `oidc_token_file` will be loaded from\n//\n// - this field if it's `is_some`\n// - env value: `ALIBABA_CLOUD_OIDC_TOKEN_FILE`\n// config.put(\"oidc_token_file\", \"...\");\n\n// `sts_endpoint` will be loaded from\n//\n// - this field if it's `is_some`\n// - env value: `ALIBABA_CLOUD_STS_ENDPOINT`\n// config.put(\"sts_endpoint\", \"...\");\n\n// external_id for this backend.\n// config.put(\"external_id\", \"...\");\nOperator operator = Operator.of(\"oss\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"oss\",\n bucket=\"...\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"oss\",\n # Root for oss.\n # root=\"...\",\n\n # Endpoint for oss.\n # endpoint=\"...\",\n\n # Presign endpoint for oss.\n # presign_endpoint=\"...\",\n\n # Bucket for oss.\n bucket=\"...\",\n\n # Addressing style for oss.\n # addressing_style=\"...\",\n\n # Pre sign addressing style for oss.\n # presign_addressing_style=\"...\",\n\n # Server side encryption for oss.\n # server_side_encryption=\"...\",\n\n # Server side encryption key id for oss.\n # server_side_encryption_key_id=\"...\",\n\n # Skip signature will skip loading credentials and signing requests.\n # skip_signature=\"true\",\n\n # Access key id for oss.\n #\n # - this field if it's `is_some`\n # - env value: `ALIBABA_CLOUD_ACCESS_KEY_ID`\n # access_key_id=\"...\",\n\n # Access key secret for oss.\n #\n # - this field if it's `is_some`\n # - env value: `ALIBABA_CLOUD_ACCESS_KEY_SECRET`\n # access_key_secret=\"...\",\n\n # `security_token` will be loaded from\n #\n # - this field if it's `is_some`\n # - env value: `ALIBABA_CLOUD_SECURITY_TOKEN`\n # security_token=\"...\",\n\n # If `role_arn` is set, we will use already known config as source\n # credential to assume role with `role_arn`.\n #\n # - this field if it's `is_some`\n # - env value: `ALIBABA_CLOUD_ROLE_ARN`\n # role_arn=\"...\",\n\n # role_session_name for this backend.\n # role_session_name=\"...\",\n\n # `oidc_provider_arn` will be loaded from\n #\n # - this field if it's `is_some`\n # - env value: `ALIBABA_CLOUD_OIDC_PROVIDER_ARN`\n # oidc_provider_arn=\"...\",\n\n # `oidc_token_file` will be loaded from\n #\n # - this field if it's `is_some`\n # - env value: `ALIBABA_CLOUD_OIDC_TOKEN_FILE`\n # oidc_token_file=\"...\",\n\n # `sts_endpoint` will be loaded from\n #\n # - this field if it's `is_some`\n # - env value: `ALIBABA_CLOUD_STS_ENDPOINT`\n # sts_endpoint=\"...\",\n\n # external_id for this backend.\n # external_id=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"oss\", {\n bucket: \"...\",\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"oss\", {\n // Root for oss.\n // root: \"...\",\n\n // Endpoint for oss.\n // endpoint: \"...\",\n\n // Presign endpoint for oss.\n // presign_endpoint: \"...\",\n\n // Bucket for oss.\n bucket: \"...\",\n\n // Addressing style for oss.\n // addressing_style: \"...\",\n\n // Pre sign addressing style for oss.\n // presign_addressing_style: \"...\",\n\n // Server side encryption for oss.\n // server_side_encryption: \"...\",\n\n // Server side encryption key id for oss.\n // server_side_encryption_key_id: \"...\",\n\n // Skip signature will skip loading credentials and signing requests.\n // skip_signature: \"true\",\n\n // Access key id for oss.\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_ACCESS_KEY_ID`\n // access_key_id: \"...\",\n\n // Access key secret for oss.\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_ACCESS_KEY_SECRET`\n // access_key_secret: \"...\",\n\n // `security_token` will be loaded from\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_SECURITY_TOKEN`\n // security_token: \"...\",\n\n // If `role_arn` is set, we will use already known config as source\n // credential to assume role with `role_arn`.\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_ROLE_ARN`\n // role_arn: \"...\",\n\n // role_session_name for this backend.\n // role_session_name: \"...\",\n\n // `oidc_provider_arn` will be loaded from\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_OIDC_PROVIDER_ARN`\n // oidc_provider_arn: \"...\",\n\n // `oidc_token_file` will be loaded from\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_OIDC_TOKEN_FILE`\n // oidc_token_file: \"...\",\n\n // `sts_endpoint` will be loaded from\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_STS_ENDPOINT`\n // sts_endpoint: \"...\",\n\n // external_id for this backend.\n // external_id: \"...\",\n});"
},
{
"binding": "ruby",
"language": "ruby",
"minimal": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"oss\", {\n \"bucket\" => \"...\",\n})",
"full": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"oss\", {\n # Root for oss.\n # \"root\" => \"...\",\n\n # Endpoint for oss.\n # \"endpoint\" => \"...\",\n\n # Presign endpoint for oss.\n # \"presign_endpoint\" => \"...\",\n\n # Bucket for oss.\n \"bucket\" => \"...\",\n\n # Addressing style for oss.\n # \"addressing_style\" => \"...\",\n\n # Pre sign addressing style for oss.\n # \"presign_addressing_style\" => \"...\",\n\n # Server side encryption for oss.\n # \"server_side_encryption\" => \"...\",\n\n # Server side encryption key id for oss.\n # \"server_side_encryption_key_id\" => \"...\",\n\n # Skip signature will skip loading credentials and signing requests.\n # \"skip_signature\" => \"true\",\n\n # Access key id for oss.\n #\n # - this field if it's `is_some`\n # - env value: `ALIBABA_CLOUD_ACCESS_KEY_ID`\n # \"access_key_id\" => \"...\",\n\n # Access key secret for oss.\n #\n # - this field if it's `is_some`\n # - env value: `ALIBABA_CLOUD_ACCESS_KEY_SECRET`\n # \"access_key_secret\" => \"...\",\n\n # `security_token` will be loaded from\n #\n # - this field if it's `is_some`\n # - env value: `ALIBABA_CLOUD_SECURITY_TOKEN`\n # \"security_token\" => \"...\",\n\n # If `role_arn` is set, we will use already known config as source\n # credential to assume role with `role_arn`.\n #\n # - this field if it's `is_some`\n # - env value: `ALIBABA_CLOUD_ROLE_ARN`\n # \"role_arn\" => \"...\",\n\n # role_session_name for this backend.\n # \"role_session_name\" => \"...\",\n\n # `oidc_provider_arn` will be loaded from\n #\n # - this field if it's `is_some`\n # - env value: `ALIBABA_CLOUD_OIDC_PROVIDER_ARN`\n # \"oidc_provider_arn\" => \"...\",\n\n # `oidc_token_file` will be loaded from\n #\n # - this field if it's `is_some`\n # - env value: `ALIBABA_CLOUD_OIDC_TOKEN_FILE`\n # \"oidc_token_file\" => \"...\",\n\n # `sts_endpoint` will be loaded from\n #\n # - this field if it's `is_some`\n # - env value: `ALIBABA_CLOUD_STS_ENDPOINT`\n # \"sts_endpoint\" => \"...\",\n\n # external_id for this backend.\n # \"external_id\" => \"...\",\n})"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/oss\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(oss.Scheme, opendal.OperatorOptions{\n\t\"bucket\": \"...\",\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/oss\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(oss.Scheme, opendal.OperatorOptions{\n\t// Root for oss.\n\t// \"root\": \"...\",\n\n\t// Endpoint for oss.\n\t// \"endpoint\": \"...\",\n\n\t// Presign endpoint for oss.\n\t// \"presign_endpoint\": \"...\",\n\n\t// Bucket for oss.\n\t\"bucket\": \"...\",\n\n\t// Addressing style for oss.\n\t// \"addressing_style\": \"...\",\n\n\t// Pre sign addressing style for oss.\n\t// \"presign_addressing_style\": \"...\",\n\n\t// Server side encryption for oss.\n\t// \"server_side_encryption\": \"...\",\n\n\t// Server side encryption key id for oss.\n\t// \"server_side_encryption_key_id\": \"...\",\n\n\t// Skip signature will skip loading credentials and signing requests.\n\t// \"skip_signature\": \"true\",\n\n\t// Access key id for oss.\n\t//\n\t// - this field if it's `is_some`\n\t// - env value: `ALIBABA_CLOUD_ACCESS_KEY_ID`\n\t// \"access_key_id\": \"...\",\n\n\t// Access key secret for oss.\n\t//\n\t// - this field if it's `is_some`\n\t// - env value: `ALIBABA_CLOUD_ACCESS_KEY_SECRET`\n\t// \"access_key_secret\": \"...\",\n\n\t// `security_token` will be loaded from\n\t//\n\t// - this field if it's `is_some`\n\t// - env value: `ALIBABA_CLOUD_SECURITY_TOKEN`\n\t// \"security_token\": \"...\",\n\n\t// If `role_arn` is set, we will use already known config as source\n\t// credential to assume role with `role_arn`.\n\t//\n\t// - this field if it's `is_some`\n\t// - env value: `ALIBABA_CLOUD_ROLE_ARN`\n\t// \"role_arn\": \"...\",\n\n\t// role_session_name for this backend.\n\t// \"role_session_name\": \"...\",\n\n\t// `oidc_provider_arn` will be loaded from\n\t//\n\t// - this field if it's `is_some`\n\t// - env value: `ALIBABA_CLOUD_OIDC_PROVIDER_ARN`\n\t// \"oidc_provider_arn\": \"...\",\n\n\t// `oidc_token_file` will be loaded from\n\t//\n\t// - this field if it's `is_some`\n\t// - env value: `ALIBABA_CLOUD_OIDC_TOKEN_FILE`\n\t// \"oidc_token_file\": \"...\",\n\n\t// `sts_endpoint` will be loaded from\n\t//\n\t// - this field if it's `is_some`\n\t// - env value: `ALIBABA_CLOUD_STS_ENDPOINT`\n\t// \"sts_endpoint\": \"...\",\n\n\t// external_id for this backend.\n\t// \"external_id\": \"...\",\n})"
}
]
},
{
"name": "pcloud",
"scheme": "pcloud",
"groups": [
"General"
],
"configs": [
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "root of this backend.\n\nAll operations will happen under this root."
},
{
"name": "endpoint",
"type": "string",
"required": true,
"group": "General",
"comments": "pCloud endpoint address."
},
{
"name": "username",
"type": "string",
"required": false,
"group": "General",
"comments": "pCloud username."
},
{
"name": "password",
"type": "string",
"required": false,
"group": "General",
"comments": "pCloud password."
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"pcloud\", [\n (\"endpoint\".to_string(), \"...\".to_string()),\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"pcloud\", [\n // root of this backend.\n //\n // All operations will happen under this root.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // pCloud endpoint address.\n (\"endpoint\".to_string(), \"...\".to_string()),\n\n // pCloud username.\n // (\"username\".to_string(), \"...\".to_string()),\n\n // pCloud password.\n // (\"password\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"pcloud\",\n endpoint=\"...\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"pcloud\",\n # root of this backend.\n #\n # All operations will happen under this root.\n # root=\"...\",\n\n # pCloud endpoint address.\n endpoint=\"...\",\n\n # pCloud username.\n # username=\"...\",\n\n # pCloud password.\n # password=\"...\",\n)"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/pcloud\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(pcloud.Scheme, opendal.OperatorOptions{\n\t\"endpoint\": \"...\",\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/pcloud\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(pcloud.Scheme, opendal.OperatorOptions{\n\t// root of this backend.\n\t//\n\t// All operations will happen under this root.\n\t// \"root\": \"...\",\n\n\t// pCloud endpoint address.\n\t\"endpoint\": \"...\",\n\n\t// pCloud username.\n\t// \"username\": \"...\",\n\n\t// pCloud password.\n\t// \"password\": \"...\",\n})"
}
]
},
{
"name": "persy",
"scheme": "persy",
"groups": [
"General"
],
"configs": [
{
"name": "datafile",
"type": "string",
"required": false,
"group": "General",
"comments": "That path to the persy data file. The directory in the path must already exist."
},
{
"name": "segment",
"type": "string",
"required": false,
"group": "General",
"comments": "That name of the persy segment."
},
{
"name": "index",
"type": "string",
"required": false,
"group": "General",
"comments": "That name of the persy index."
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"persy\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"persy\", [\n // That path to the persy data file. The directory in the path must already exist.\n // (\"datafile\".to_string(), \"...\".to_string()),\n\n // That name of the persy segment.\n // (\"segment\".to_string(), \"...\".to_string()),\n\n // That name of the persy index.\n // (\"index\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nOperator operator = Operator.of(\"persy\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// That path to the persy data file. The directory in the path must already exist.\n// config.put(\"datafile\", \"...\");\n\n// That name of the persy segment.\n// config.put(\"segment\", \"...\");\n\n// That name of the persy index.\n// config.put(\"index\", \"...\");\nOperator operator = Operator.of(\"persy\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"persy\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"persy\",\n # That path to the persy data file. The directory in the path must already exist.\n # datafile=\"...\",\n\n # That name of the persy segment.\n # segment=\"...\",\n\n # That name of the persy index.\n # index=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"persy\", {\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"persy\", {\n // That path to the persy data file. The directory in the path must already exist.\n // datafile: \"...\",\n\n // That name of the persy segment.\n // segment: \"...\",\n\n // That name of the persy index.\n // index: \"...\",\n});"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/persy\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(persy.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/persy\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(persy.Scheme, opendal.OperatorOptions{\n\t// That path to the persy data file. The directory in the path must already exist.\n\t// \"datafile\": \"...\",\n\n\t// That name of the persy segment.\n\t// \"segment\": \"...\",\n\n\t// That name of the persy index.\n\t// \"index\": \"...\",\n})"
}
]
},
{
"name": "postgresql",
"scheme": "postgresql",
"groups": [
"General"
],
"configs": [
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "Root of this backend.\n\nAll operations will happen under this root.\n\nDefault to `/` if not set."
},
{
"name": "connection_string",
"type": "string",
"required": false,
"group": "General",
"comments": "The URL should be with a scheme of either `postgres://` or `postgresql://`.\n\n- `postgresql://user@localhost`\n- `postgresql://user:password@%2Fvar%2Flib%2Fpostgresql/mydb?connect_timeout=10`\n- `postgresql://user@host1:1234,host2,host3:5678?target_session_attrs=read-write`\n- `postgresql:///mydb?user=user&host=/var/lib/postgresql`\n\nFor more information, please visit <https://docs.rs/sqlx/latest/sqlx/postgres/struct.PgConnectOptions.html>."
},
{
"name": "table",
"type": "string",
"required": false,
"group": "General",
"comments": "the table of postgresql"
},
{
"name": "key_field",
"type": "string",
"required": false,
"group": "General",
"comments": "the key field of postgresql"
},
{
"name": "value_field",
"type": "string",
"required": false,
"group": "General",
"comments": "the value field of postgresql"
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"postgresql\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"postgresql\", [\n // Root of this backend.\n //\n // All operations will happen under this root.\n //\n // Default to `/` if not set.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // The URL should be with a scheme of either `postgres://` or `postgresql://`.\n //\n // - `postgresql://user@localhost`\n // - `postgresql://user:password@%2Fvar%2Flib%2Fpostgresql/mydb?connect_timeout=10`\n // - `postgresql://user@host1:1234,host2,host3:5678?target_session_attrs=read-write`\n // - `postgresql:///mydb?user=user&host=/var/lib/postgresql`\n //\n // For more information, please visit <https://docs.rs/sqlx/latest/sqlx/postgres/struct.PgConnectOptions.html>.\n // (\"connection_string\".to_string(), \"...\".to_string()),\n\n // the table of postgresql\n // (\"table\".to_string(), \"...\".to_string()),\n\n // the key field of postgresql\n // (\"key_field\".to_string(), \"...\".to_string()),\n\n // the value field of postgresql\n // (\"value_field\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nOperator operator = Operator.of(\"postgresql\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// Root of this backend.\n//\n// All operations will happen under this root.\n//\n// Default to `/` if not set.\n// config.put(\"root\", \"...\");\n\n// The URL should be with a scheme of either `postgres://` or `postgresql://`.\n//\n// - `postgresql://user@localhost`\n// - `postgresql://user:password@%2Fvar%2Flib%2Fpostgresql/mydb?connect_timeout=10`\n// - `postgresql://user@host1:1234,host2,host3:5678?target_session_attrs=read-write`\n// - `postgresql:///mydb?user=user&host=/var/lib/postgresql`\n//\n// For more information, please visit <https://docs.rs/sqlx/latest/sqlx/postgres/struct.PgConnectOptions.html>.\n// config.put(\"connection_string\", \"...\");\n\n// the table of postgresql\n// config.put(\"table\", \"...\");\n\n// the key field of postgresql\n// config.put(\"key_field\", \"...\");\n\n// the value field of postgresql\n// config.put(\"value_field\", \"...\");\nOperator operator = Operator.of(\"postgresql\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"postgresql\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"postgresql\",\n # Root of this backend.\n #\n # All operations will happen under this root.\n #\n # Default to `/` if not set.\n # root=\"...\",\n\n # The URL should be with a scheme of either `postgres://` or `postgresql://`.\n #\n # - `postgresql://user@localhost`\n # - `postgresql://user:password@%2Fvar%2Flib%2Fpostgresql/mydb?connect_timeout=10`\n # - `postgresql://user@host1:1234,host2,host3:5678?target_session_attrs=read-write`\n # - `postgresql:///mydb?user=user&host=/var/lib/postgresql`\n #\n # For more information, please visit <https://docs.rs/sqlx/latest/sqlx/postgres/struct.PgConnectOptions.html>.\n # connection_string=\"...\",\n\n # the table of postgresql\n # table=\"...\",\n\n # the key field of postgresql\n # key_field=\"...\",\n\n # the value field of postgresql\n # value_field=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"postgresql\", {\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"postgresql\", {\n // Root of this backend.\n //\n // All operations will happen under this root.\n //\n // Default to `/` if not set.\n // root: \"...\",\n\n // The URL should be with a scheme of either `postgres://` or `postgresql://`.\n //\n // - `postgresql://user@localhost`\n // - `postgresql://user:password@%2Fvar%2Flib%2Fpostgresql/mydb?connect_timeout=10`\n // - `postgresql://user@host1:1234,host2,host3:5678?target_session_attrs=read-write`\n // - `postgresql:///mydb?user=user&host=/var/lib/postgresql`\n //\n // For more information, please visit <https://docs.rs/sqlx/latest/sqlx/postgres/struct.PgConnectOptions.html>.\n // connection_string: \"...\",\n\n // the table of postgresql\n // table: \"...\",\n\n // the key field of postgresql\n // key_field: \"...\",\n\n // the value field of postgresql\n // value_field: \"...\",\n});"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/postgresql\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(postgresql.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/postgresql\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(postgresql.Scheme, opendal.OperatorOptions{\n\t// Root of this backend.\n\t//\n\t// All operations will happen under this root.\n\t//\n\t// Default to `/` if not set.\n\t// \"root\": \"...\",\n\n\t// The URL should be with a scheme of either `postgres://` or `postgresql://`.\n\t//\n\t// - `postgresql://user@localhost`\n\t// - `postgresql://user:password@%2Fvar%2Flib%2Fpostgresql/mydb?connect_timeout=10`\n\t// - `postgresql://user@host1:1234,host2,host3:5678?target_session_attrs=read-write`\n\t// - `postgresql:///mydb?user=user&host=/var/lib/postgresql`\n\t//\n\t// For more information, please visit <https://docs.rs/sqlx/latest/sqlx/postgres/struct.PgConnectOptions.html>.\n\t// \"connection_string\": \"...\",\n\n\t// the table of postgresql\n\t// \"table\": \"...\",\n\n\t// the key field of postgresql\n\t// \"key_field\": \"...\",\n\n\t// the value field of postgresql\n\t// \"value_field\": \"...\",\n})"
}
]
},
{
"name": "redb",
"scheme": "redb",
"groups": [
"General"
],
"configs": [
{
"name": "datadir",
"type": "string",
"required": false,
"group": "General",
"comments": "path to the redb data directory."
},
{
"name": "table",
"type": "string",
"required": false,
"group": "General",
"comments": "The table name for redb."
},
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "The root for redb."
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"redb\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"redb\", [\n // path to the redb data directory.\n // (\"datadir\".to_string(), \"...\".to_string()),\n\n // The table name for redb.\n // (\"table\".to_string(), \"...\".to_string()),\n\n // The root for redb.\n // (\"root\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nOperator operator = Operator.of(\"redb\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// path to the redb data directory.\n// config.put(\"datadir\", \"...\");\n\n// The table name for redb.\n// config.put(\"table\", \"...\");\n\n// The root for redb.\n// config.put(\"root\", \"...\");\nOperator operator = Operator.of(\"redb\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"redb\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"redb\",\n # path to the redb data directory.\n # datadir=\"...\",\n\n # The table name for redb.\n # table=\"...\",\n\n # The root for redb.\n # root=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"redb\", {\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"redb\", {\n // path to the redb data directory.\n // datadir: \"...\",\n\n // The table name for redb.\n // table: \"...\",\n\n // The root for redb.\n // root: \"...\",\n});"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/redb\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(redb.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/redb\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(redb.Scheme, opendal.OperatorOptions{\n\t// path to the redb data directory.\n\t// \"datadir\": \"...\",\n\n\t// The table name for redb.\n\t// \"table\": \"...\",\n\n\t// The root for redb.\n\t// \"root\": \"...\",\n})"
}
]
},
{
"name": "redis",
"scheme": "redis",
"groups": [
"General"
],
"configs": [
{
"name": "endpoint",
"type": "string",
"required": false,
"group": "General",
"comments": "network address of the Redis service. Can be \"tcp://127.0.0.1:6379\", e.g.\n\ndefault is \"tcp://127.0.0.1:6379\""
},
{
"name": "cluster_endpoints",
"type": "string",
"required": false,
"group": "General",
"comments": "network address of the Redis cluster service. Can be \"tcp://127.0.0.1:6379,tcp://127.0.0.1:6380,tcp://127.0.0.1:6381\", e.g.\n\ndefault is None"
},
{
"name": "connection_pool_max_size",
"type": "integer",
"required": false,
"group": "General",
"comments": "The maximum number of connections allowed.\n\ndefault is 10"
},
{
"name": "username",
"type": "string",
"required": false,
"group": "General",
"comments": "the username to connect redis service.\n\ndefault is None"
},
{
"name": "password",
"type": "string",
"required": false,
"group": "General",
"comments": "the password for authentication\n\ndefault is None"
},
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "the working directory of the Redis service. Can be \"/path/to/dir\"\n\ndefault is \"/\""
},
{
"name": "db",
"type": "integer",
"required": true,
"group": "General",
"comments": "the number of DBs redis can take is unlimited\n\ndefault is db 0"
},
{
"name": "default_ttl",
"type": "duration",
"required": false,
"group": "General",
"comments": "The default ttl for put operations."
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"redis\", [\n (\"db\".to_string(), \"1000\".to_string()),\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"redis\", [\n // network address of the Redis service. Can be \"tcp://127.0.0.1:6379\", e.g.\n //\n // default is \"tcp://127.0.0.1:6379\"\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // network address of the Redis cluster service. Can be \"tcp://127.0.0.1:6379,tcp://127.0.0.1:6380,tcp://127.0.0.1:6381\", e.g.\n //\n // default is None\n // (\"cluster_endpoints\".to_string(), \"...\".to_string()),\n\n // The maximum number of connections allowed.\n //\n // default is 10\n // (\"connection_pool_max_size\".to_string(), \"1000\".to_string()),\n\n // the username to connect redis service.\n //\n // default is None\n // (\"username\".to_string(), \"...\".to_string()),\n\n // the password for authentication\n //\n // default is None\n // (\"password\".to_string(), \"...\".to_string()),\n\n // the working directory of the Redis service. Can be \"/path/to/dir\"\n //\n // default is \"/\"\n // (\"root\".to_string(), \"...\".to_string()),\n\n // the number of DBs redis can take is unlimited\n //\n // default is db 0\n (\"db\".to_string(), \"1000\".to_string()),\n\n // The default ttl for put operations.\n // (\"default_ttl\".to_string(), \"10s\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nconfig.put(\"db\", \"1000\");\nOperator operator = Operator.of(\"redis\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// network address of the Redis service. Can be \"tcp://127.0.0.1:6379\", e.g.\n//\n// default is \"tcp://127.0.0.1:6379\"\n// config.put(\"endpoint\", \"...\");\n\n// network address of the Redis cluster service. Can be \"tcp://127.0.0.1:6379,tcp://127.0.0.1:6380,tcp://127.0.0.1:6381\", e.g.\n//\n// default is None\n// config.put(\"cluster_endpoints\", \"...\");\n\n// The maximum number of connections allowed.\n//\n// default is 10\n// config.put(\"connection_pool_max_size\", \"1000\");\n\n// the username to connect redis service.\n//\n// default is None\n// config.put(\"username\", \"...\");\n\n// the password for authentication\n//\n// default is None\n// config.put(\"password\", \"...\");\n\n// the working directory of the Redis service. Can be \"/path/to/dir\"\n//\n// default is \"/\"\n// config.put(\"root\", \"...\");\n\n// the number of DBs redis can take is unlimited\n//\n// default is db 0\nconfig.put(\"db\", \"1000\");\n\n// The default ttl for put operations.\n// config.put(\"default_ttl\", \"10s\");\nOperator operator = Operator.of(\"redis\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"redis\",\n db=\"1000\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"redis\",\n # network address of the Redis service. Can be \"tcp://127.0.0.1:6379\", e.g.\n #\n # default is \"tcp://127.0.0.1:6379\"\n # endpoint=\"...\",\n\n # network address of the Redis cluster service. Can be \"tcp://127.0.0.1:6379,tcp://127.0.0.1:6380,tcp://127.0.0.1:6381\", e.g.\n #\n # default is None\n # cluster_endpoints=\"...\",\n\n # The maximum number of connections allowed.\n #\n # default is 10\n # connection_pool_max_size=\"1000\",\n\n # the username to connect redis service.\n #\n # default is None\n # username=\"...\",\n\n # the password for authentication\n #\n # default is None\n # password=\"...\",\n\n # the working directory of the Redis service. Can be \"/path/to/dir\"\n #\n # default is \"/\"\n # root=\"...\",\n\n # the number of DBs redis can take is unlimited\n #\n # default is db 0\n db=\"1000\",\n\n # The default ttl for put operations.\n # default_ttl=\"10s\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"redis\", {\n db: \"1000\",\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"redis\", {\n // network address of the Redis service. Can be \"tcp://127.0.0.1:6379\", e.g.\n //\n // default is \"tcp://127.0.0.1:6379\"\n // endpoint: \"...\",\n\n // network address of the Redis cluster service. Can be \"tcp://127.0.0.1:6379,tcp://127.0.0.1:6380,tcp://127.0.0.1:6381\", e.g.\n //\n // default is None\n // cluster_endpoints: \"...\",\n\n // The maximum number of connections allowed.\n //\n // default is 10\n // connection_pool_max_size: \"1000\",\n\n // the username to connect redis service.\n //\n // default is None\n // username: \"...\",\n\n // the password for authentication\n //\n // default is None\n // password: \"...\",\n\n // the working directory of the Redis service. Can be \"/path/to/dir\"\n //\n // default is \"/\"\n // root: \"...\",\n\n // the number of DBs redis can take is unlimited\n //\n // default is db 0\n db: \"1000\",\n\n // The default ttl for put operations.\n // default_ttl: \"10s\",\n});"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/redis\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(redis.Scheme, opendal.OperatorOptions{\n\t\"db\": \"1000\",\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/redis\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(redis.Scheme, opendal.OperatorOptions{\n\t// network address of the Redis service. Can be \"tcp://127.0.0.1:6379\", e.g.\n\t//\n\t// default is \"tcp://127.0.0.1:6379\"\n\t// \"endpoint\": \"...\",\n\n\t// network address of the Redis cluster service. Can be \"tcp://127.0.0.1:6379,tcp://127.0.0.1:6380,tcp://127.0.0.1:6381\", e.g.\n\t//\n\t// default is None\n\t// \"cluster_endpoints\": \"...\",\n\n\t// The maximum number of connections allowed.\n\t//\n\t// default is 10\n\t// \"connection_pool_max_size\": \"1000\",\n\n\t// the username to connect redis service.\n\t//\n\t// default is None\n\t// \"username\": \"...\",\n\n\t// the password for authentication\n\t//\n\t// default is None\n\t// \"password\": \"...\",\n\n\t// the working directory of the Redis service. Can be \"/path/to/dir\"\n\t//\n\t// default is \"/\"\n\t// \"root\": \"...\",\n\n\t// the number of DBs redis can take is unlimited\n\t//\n\t// default is db 0\n\t\"db\": \"1000\",\n\n\t// The default ttl for put operations.\n\t// \"default_ttl\": \"10s\",\n})"
}
]
},
{
"name": "rocksdb",
"scheme": "rocksdb",
"groups": [
"General"
],
"configs": [
{
"name": "datadir",
"type": "string",
"required": false,
"group": "General",
"comments": "The path to the rocksdb data directory."
},
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "the working directory of the service. Can be \"/path/to/dir\"\n\ndefault is \"/\""
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"rocksdb\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"rocksdb\", [\n // The path to the rocksdb data directory.\n // (\"datadir\".to_string(), \"...\".to_string()),\n\n // the working directory of the service. Can be \"/path/to/dir\"\n //\n // default is \"/\"\n // (\"root\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"rocksdb\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"rocksdb\",\n # The path to the rocksdb data directory.\n # datadir=\"...\",\n\n # the working directory of the service. Can be \"/path/to/dir\"\n #\n # default is \"/\"\n # root=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"rocksdb\", {\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"rocksdb\", {\n // The path to the rocksdb data directory.\n // datadir: \"...\",\n\n // the working directory of the service. Can be \"/path/to/dir\"\n //\n // default is \"/\"\n // root: \"...\",\n});"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/rocksdb\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(rocksdb.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/rocksdb\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(rocksdb.Scheme, opendal.OperatorOptions{\n\t// The path to the rocksdb data directory.\n\t// \"datadir\": \"...\",\n\n\t// the working directory of the service. Can be \"/path/to/dir\"\n\t//\n\t// default is \"/\"\n\t// \"root\": \"...\",\n})"
}
]
},
{
"name": "s3",
"scheme": "s3",
"groups": [
"General",
"Credentials",
"Assume role",
"Encryption",
"Behavior",
"Deprecated"
],
"configs": [
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"default": "/",
"comments": "root of this backend.\n\nAll operations will happen under this root.\n\ndefault to `/` if not set."
},
{
"name": "bucket",
"type": "string",
"required": true,
"group": "General",
"example": "my-bucket",
"comments": "bucket name of this backend.\n\nrequired."
},
{
"name": "enable_versioning",
"type": "bool",
"required": false,
"group": "Deprecated",
"deprecated": {
"since": "0.57.0",
"note": "S3 versioning capability is enabled by default and this option is no longer needed."
},
"comments": "Deprecated: S3 versioning capability is enabled by default."
},
{
"name": "endpoint",
"type": "string",
"required": false,
"group": "General",
"default": "https://s3.amazonaws.com",
"comments": "endpoint of this backend.\n\nEndpoint must be full uri, e.g.\n\n- AWS S3: `https://s3.amazonaws.com` or `https://s3.{region}.amazonaws.com`\n- Cloudflare R2: `https://<ACCOUNT_ID>.r2.cloudflarestorage.com`\n- Aliyun OSS: `https://{region}.aliyuncs.com`\n- Tencent COS: `https://cos.{region}.myqcloud.com`\n- Minio: `http://127.0.0.1:9000`\n\nIf user inputs endpoint without scheme like \"s3.amazonaws.com\", we\nwill prepend \"https://\" before it.\n\n- If endpoint is set, we will take user's input first.\n- If not, we will try to load it from environment.\n- If still not set, default to `https://s3.amazonaws.com`."
},
{
"name": "region",
"type": "string",
"required": false,
"group": "General",
"example": "us-east-1",
"comments": "Region represent the signing region of this endpoint. This is required\nif you are using the default AWS S3 endpoint.\n\nIf using a custom endpoint,\n- If region is set, we will take user's input first.\n- If not, we will try to load it from environment."
},
{
"name": "access_key_id",
"type": "string",
"required": false,
"group": "Credentials",
"comments": "access_key_id of this backend.\n\n- If access_key_id is set, we will take user's input first.\n- If not, we will try to load it from environment."
},
{
"name": "secret_access_key",
"type": "string",
"required": false,
"group": "Credentials",
"comments": "secret_access_key of this backend.\n\n- If secret_access_key is set, we will take user's input first.\n- If not, we will try to load it from environment."
},
{
"name": "session_token",
"type": "string",
"required": false,
"group": "Credentials",
"comments": "session_token (aka, security token) of this backend.\n\nThis token will expire after sometime, it's recommended to set session_token\nby hand."
},
{
"name": "role_arn",
"type": "string",
"required": false,
"group": "Assume role",
"comments": "role_arn for this backend.\n\nIf `role_arn` is set, we will use already known config as source\ncredential to assume role with `role_arn`."
},
{
"name": "external_id",
"type": "string",
"required": false,
"group": "Assume role",
"comments": "external_id for this backend."
},
{
"name": "role_session_name",
"type": "string",
"required": false,
"group": "Assume role",
"comments": "role_session_name for this backend."
},
{
"name": "assume_role_duration_seconds",
"type": "integer",
"required": false,
"group": "Assume role",
"comments": "assume_role_duration_seconds for this backend."
},
{
"name": "assume_role_session_tags",
"type": "map",
"required": false,
"group": "Assume role",
"comments": "assume_role_session_tags for this backend."
},
{
"name": "disable_config_load",
"type": "bool",
"required": false,
"group": "Credentials",
"comments": "Disable config load so that opendal will not load config from\nenvironment.\n\nFor examples:\n\n- envs like `AWS_ACCESS_KEY_ID`\n- files like `~/.aws/config`"
},
{
"name": "disable_ec2_metadata",
"type": "bool",
"required": false,
"group": "Credentials",
"comments": "Disable load credential from ec2 metadata.\n\nThis option is used to disable the default behavior of opendal\nto load credential from ec2 metadata, a.k.a., IMDSv2"
},
{
"name": "skip_signature",
"type": "bool",
"required": false,
"group": "Credentials",
"comments": "Skip signature will skip loading credentials and signing requests."
},
{
"name": "allow_anonymous",
"type": "bool",
"required": false,
"group": "Deprecated",
"deprecated": {
"since": "0.57.0",
"note": "Please use `skip_signature` instead of `allow_anonymous`"
},
"comments": "Allow anonymous will allow opendal to send request without signing\nwhen credential is not loaded."
},
{
"name": "server_side_encryption",
"type": "string",
"required": false,
"group": "Encryption",
"comments": "server_side_encryption for this backend.\n\nAvailable values: `AES256`, `aws:kms`."
},
{
"name": "server_side_encryption_aws_kms_key_id",
"type": "string",
"required": false,
"group": "Encryption",
"comments": "server_side_encryption_aws_kms_key_id for this backend\n\n- If `server_side_encryption` set to `aws:kms`, and `server_side_encryption_aws_kms_key_id`\nis not set, S3 will use aws managed kms key to encrypt data.\n- If `server_side_encryption` set to `aws:kms`, and `server_side_encryption_aws_kms_key_id`\nis a valid kms key id, S3 will use the provided kms key to encrypt data.\n- If the `server_side_encryption_aws_kms_key_id` is invalid or not found, an error will be\nreturned.\n- If `server_side_encryption` is not `aws:kms`, setting `server_side_encryption_aws_kms_key_id`\nis a noop."
},
{
"name": "server_side_encryption_customer_algorithm",
"type": "string",
"required": false,
"group": "Encryption",
"comments": "server_side_encryption_customer_algorithm for this backend.\n\nAvailable values: `AES256`."
},
{
"name": "server_side_encryption_customer_key",
"type": "string",
"required": false,
"group": "Encryption",
"comments": "server_side_encryption_customer_key for this backend.\n\nValue: BASE64-encoded key that matches algorithm specified in\n`server_side_encryption_customer_algorithm`."
},
{
"name": "server_side_encryption_customer_key_md5",
"type": "string",
"required": false,
"group": "Encryption",
"comments": "Set server_side_encryption_customer_key_md5 for this backend.\n\nValue: MD5 digest of key specified in `server_side_encryption_customer_key`."
},
{
"name": "default_storage_class",
"type": "string",
"required": false,
"group": "Behavior",
"comments": "default storage_class for this backend.\n\nAvailable values:\n- `DEEP_ARCHIVE`\n- `GLACIER`\n- `GLACIER_IR`\n- `INTELLIGENT_TIERING`\n- `ONEZONE_IA`\n- `EXPRESS_ONEZONE`\n- `OUTPOSTS`\n- `REDUCED_REDUNDANCY`\n- `STANDARD`\n- `STANDARD_IA`\n\nS3 compatible services don't support all of them"
},
{
"name": "enable_virtual_host_style",
"type": "bool",
"required": false,
"group": "Behavior",
"comments": "Enable virtual host style so that opendal will send API requests\nin virtual host style instead of path style.\n\n- By default, opendal will send API to `https://s3.us-east-1.amazonaws.com/bucket_name`\n- Enabled, opendal will send API to `https://bucket_name.s3.us-east-1.amazonaws.com`"
},
{
"name": "batch_max_operations",
"type": "integer",
"required": false,
"group": "Deprecated",
"deprecated": {
"since": "0.57.0",
"note": "S3 delete batch capability is enabled by default. Use CapabilityOverrideLayer to override delete_max_size for specific endpoints."
},
"comments": "Deprecated: S3 delete batch capability is enabled by default."
},
{
"name": "delete_max_size",
"type": "integer",
"required": false,
"group": "Deprecated",
"deprecated": {
"since": "0.57.0",
"note": "S3 delete batch capability is enabled by default. Use CapabilityOverrideLayer to override delete_max_size for specific endpoints."
},
"comments": "Deprecated: S3 delete batch capability is enabled by default."
},
{
"name": "disable_stat_with_override",
"type": "bool",
"required": false,
"group": "Deprecated",
"deprecated": {
"since": "0.57.0",
"note": "S3 stat override capabilities are enabled by default. Use CapabilityOverrideLayer to override them for specific endpoints."
},
"comments": "Deprecated: S3 stat override capabilities are enabled by default."
},
{
"name": "checksum_algorithm",
"type": "string",
"required": false,
"group": "Behavior",
"comments": "Checksum Algorithm to use when sending checksums in HTTP headers.\nThis is necessary when writing to AWS S3 Buckets with Object Lock enabled for example.\n\nAvailable options:\n- \"crc32c\"\n- \"md5\""
},
{
"name": "disable_write_with_if_match",
"type": "bool",
"required": false,
"group": "Deprecated",
"deprecated": {
"since": "0.57.0",
"note": "S3 write with If-Match capability is enabled by default and this option is no longer needed."
},
"comments": "Deprecated: S3 write with If-Match capability is enabled by default."
},
{
"name": "enable_write_with_append",
"type": "bool",
"required": false,
"group": "Deprecated",
"deprecated": {
"since": "0.57.0",
"note": "S3 append capability is enabled by default and this option is no longer needed."
},
"comments": "Deprecated: S3 append capability is enabled by default."
},
{
"name": "disable_list_objects_v2",
"type": "bool",
"required": false,
"group": "Behavior",
"comments": "OpenDAL uses List Objects V2 by default to list objects.\nHowever, some legacy services do not yet support V2.\nThis option allows users to switch back to the older List Objects V1."
},
{
"name": "enable_request_payer",
"type": "bool",
"required": false,
"group": "Behavior",
"comments": "Indicates whether the client agrees to pay for the requests made to the S3 bucket."
},
{
"name": "default_acl",
"type": "string",
"required": false,
"group": "Behavior",
"comments": "Default ACL for new objects.\nNote that some s3 services like minio do not support this option."
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"s3\", [\n (\"bucket\".to_string(), \"my-bucket\".to_string()),\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"s3\", [\n // --- General ---\n // root of this backend.\n //\n // All operations will happen under this root.\n //\n // default to `/` if not set.\n // (\"root\".to_string(), \"/\".to_string()),\n\n // bucket name of this backend.\n //\n // required.\n (\"bucket\".to_string(), \"my-bucket\".to_string()),\n\n // endpoint of this backend.\n //\n // Endpoint must be full uri, e.g.\n //\n // - AWS S3: `https://s3.amazonaws.com` or `https://s3.{region}.amazonaws.com`\n // - Cloudflare R2: `https://<ACCOUNT_ID>.r2.cloudflarestorage.com`\n // - Aliyun OSS: `https://{region}.aliyuncs.com`\n // - Tencent COS: `https://cos.{region}.myqcloud.com`\n // - Minio: `http://127.0.0.1:9000`\n //\n // If user inputs endpoint without scheme like \"s3.amazonaws.com\", we\n // will prepend \"https://\" before it.\n //\n // - If endpoint is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // - If still not set, default to `https://s3.amazonaws.com`.\n // (\"endpoint\".to_string(), \"https://s3.amazonaws.com\".to_string()),\n\n // Region represent the signing region of this endpoint. This is required\n // if you are using the default AWS S3 endpoint.\n //\n // If using a custom endpoint,\n // - If region is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // (\"region\".to_string(), \"us-east-1\".to_string()),\n // --- Credentials ---\n // access_key_id of this backend.\n //\n // - If access_key_id is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // (\"access_key_id\".to_string(), \"...\".to_string()),\n\n // secret_access_key of this backend.\n //\n // - If secret_access_key is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // (\"secret_access_key\".to_string(), \"...\".to_string()),\n\n // session_token (aka, security token) of this backend.\n //\n // This token will expire after sometime, it's recommended to set session_token\n // by hand.\n // (\"session_token\".to_string(), \"...\".to_string()),\n\n // Disable config load so that opendal will not load config from\n // environment.\n //\n // For examples:\n //\n // - envs like `AWS_ACCESS_KEY_ID`\n // - files like `~/.aws/config`\n // (\"disable_config_load\".to_string(), \"true\".to_string()),\n\n // Disable load credential from ec2 metadata.\n //\n // This option is used to disable the default behavior of opendal\n // to load credential from ec2 metadata, a.k.a., IMDSv2\n // (\"disable_ec2_metadata\".to_string(), \"true\".to_string()),\n\n // Skip signature will skip loading credentials and signing requests.\n // (\"skip_signature\".to_string(), \"true\".to_string()),\n // --- Assume role ---\n // role_arn for this backend.\n //\n // If `role_arn` is set, we will use already known config as source\n // credential to assume role with `role_arn`.\n // (\"role_arn\".to_string(), \"...\".to_string()),\n\n // external_id for this backend.\n // (\"external_id\".to_string(), \"...\".to_string()),\n\n // role_session_name for this backend.\n // (\"role_session_name\".to_string(), \"...\".to_string()),\n\n // assume_role_duration_seconds for this backend.\n // (\"assume_role_duration_seconds\".to_string(), \"1000\".to_string()),\n\n // assume_role_session_tags for this backend.\n // (\"assume_role_session_tags\".to_string(), \"...\".to_string()),\n // --- Encryption ---\n // server_side_encryption for this backend.\n //\n // Available values: `AES256`, `aws:kms`.\n // (\"server_side_encryption\".to_string(), \"...\".to_string()),\n\n // server_side_encryption_aws_kms_key_id for this backend\n //\n // - If `server_side_encryption` set to `aws:kms`, and `server_side_encryption_aws_kms_key_id`\n // is not set, S3 will use aws managed kms key to encrypt data.\n // - If `server_side_encryption` set to `aws:kms`, and `server_side_encryption_aws_kms_key_id`\n // is a valid kms key id, S3 will use the provided kms key to encrypt data.\n // - If the `server_side_encryption_aws_kms_key_id` is invalid or not found, an error will be\n // returned.\n // - If `server_side_encryption` is not `aws:kms`, setting `server_side_encryption_aws_kms_key_id`\n // is a noop.\n // (\"server_side_encryption_aws_kms_key_id\".to_string(), \"...\".to_string()),\n\n // server_side_encryption_customer_algorithm for this backend.\n //\n // Available values: `AES256`.\n // (\"server_side_encryption_customer_algorithm\".to_string(), \"...\".to_string()),\n\n // server_side_encryption_customer_key for this backend.\n //\n // Value: BASE64-encoded key that matches algorithm specified in\n // `server_side_encryption_customer_algorithm`.\n // (\"server_side_encryption_customer_key\".to_string(), \"...\".to_string()),\n\n // Set server_side_encryption_customer_key_md5 for this backend.\n //\n // Value: MD5 digest of key specified in `server_side_encryption_customer_key`.\n // (\"server_side_encryption_customer_key_md5\".to_string(), \"...\".to_string()),\n // --- Behavior ---\n // default storage_class for this backend.\n //\n // Available values:\n // - `DEEP_ARCHIVE`\n // - `GLACIER`\n // - `GLACIER_IR`\n // - `INTELLIGENT_TIERING`\n // - `ONEZONE_IA`\n // - `EXPRESS_ONEZONE`\n // - `OUTPOSTS`\n // - `REDUCED_REDUNDANCY`\n // - `STANDARD`\n // - `STANDARD_IA`\n //\n // S3 compatible services don't support all of them\n // (\"default_storage_class\".to_string(), \"...\".to_string()),\n\n // Enable virtual host style so that opendal will send API requests\n // in virtual host style instead of path style.\n //\n // - By default, opendal will send API to `https://s3.us-east-1.amazonaws.com/bucket_name`\n // - Enabled, opendal will send API to `https://bucket_name.s3.us-east-1.amazonaws.com`\n // (\"enable_virtual_host_style\".to_string(), \"true\".to_string()),\n\n // Checksum Algorithm to use when sending checksums in HTTP headers.\n // This is necessary when writing to AWS S3 Buckets with Object Lock enabled for example.\n //\n // Available options:\n // - \"crc32c\"\n // - \"md5\"\n // (\"checksum_algorithm\".to_string(), \"...\".to_string()),\n\n // OpenDAL uses List Objects V2 by default to list objects.\n // However, some legacy services do not yet support V2.\n // This option allows users to switch back to the older List Objects V1.\n // (\"disable_list_objects_v2\".to_string(), \"true\".to_string()),\n\n // Indicates whether the client agrees to pay for the requests made to the S3 bucket.\n // (\"enable_request_payer\".to_string(), \"true\".to_string()),\n\n // Default ACL for new objects.\n // Note that some s3 services like minio do not support this option.\n // (\"default_acl\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nconfig.put(\"bucket\", \"my-bucket\");\nOperator operator = Operator.of(\"s3\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// --- General ---\n// root of this backend.\n//\n// All operations will happen under this root.\n//\n// default to `/` if not set.\n// config.put(\"root\", \"/\");\n\n// bucket name of this backend.\n//\n// required.\nconfig.put(\"bucket\", \"my-bucket\");\n\n// endpoint of this backend.\n//\n// Endpoint must be full uri, e.g.\n//\n// - AWS S3: `https://s3.amazonaws.com` or `https://s3.{region}.amazonaws.com`\n// - Cloudflare R2: `https://<ACCOUNT_ID>.r2.cloudflarestorage.com`\n// - Aliyun OSS: `https://{region}.aliyuncs.com`\n// - Tencent COS: `https://cos.{region}.myqcloud.com`\n// - Minio: `http://127.0.0.1:9000`\n//\n// If user inputs endpoint without scheme like \"s3.amazonaws.com\", we\n// will prepend \"https://\" before it.\n//\n// - If endpoint is set, we will take user's input first.\n// - If not, we will try to load it from environment.\n// - If still not set, default to `https://s3.amazonaws.com`.\n// config.put(\"endpoint\", \"https://s3.amazonaws.com\");\n\n// Region represent the signing region of this endpoint. This is required\n// if you are using the default AWS S3 endpoint.\n//\n// If using a custom endpoint,\n// - If region is set, we will take user's input first.\n// - If not, we will try to load it from environment.\n// config.put(\"region\", \"us-east-1\");\n// --- Credentials ---\n// access_key_id of this backend.\n//\n// - If access_key_id is set, we will take user's input first.\n// - If not, we will try to load it from environment.\n// config.put(\"access_key_id\", \"...\");\n\n// secret_access_key of this backend.\n//\n// - If secret_access_key is set, we will take user's input first.\n// - If not, we will try to load it from environment.\n// config.put(\"secret_access_key\", \"...\");\n\n// session_token (aka, security token) of this backend.\n//\n// This token will expire after sometime, it's recommended to set session_token\n// by hand.\n// config.put(\"session_token\", \"...\");\n\n// Disable config load so that opendal will not load config from\n// environment.\n//\n// For examples:\n//\n// - envs like `AWS_ACCESS_KEY_ID`\n// - files like `~/.aws/config`\n// config.put(\"disable_config_load\", \"true\");\n\n// Disable load credential from ec2 metadata.\n//\n// This option is used to disable the default behavior of opendal\n// to load credential from ec2 metadata, a.k.a., IMDSv2\n// config.put(\"disable_ec2_metadata\", \"true\");\n\n// Skip signature will skip loading credentials and signing requests.\n// config.put(\"skip_signature\", \"true\");\n// --- Assume role ---\n// role_arn for this backend.\n//\n// If `role_arn` is set, we will use already known config as source\n// credential to assume role with `role_arn`.\n// config.put(\"role_arn\", \"...\");\n\n// external_id for this backend.\n// config.put(\"external_id\", \"...\");\n\n// role_session_name for this backend.\n// config.put(\"role_session_name\", \"...\");\n\n// assume_role_duration_seconds for this backend.\n// config.put(\"assume_role_duration_seconds\", \"1000\");\n\n// assume_role_session_tags for this backend.\n// config.put(\"assume_role_session_tags\", \"...\");\n// --- Encryption ---\n// server_side_encryption for this backend.\n//\n// Available values: `AES256`, `aws:kms`.\n// config.put(\"server_side_encryption\", \"...\");\n\n// server_side_encryption_aws_kms_key_id for this backend\n//\n// - If `server_side_encryption` set to `aws:kms`, and `server_side_encryption_aws_kms_key_id`\n// is not set, S3 will use aws managed kms key to encrypt data.\n// - If `server_side_encryption` set to `aws:kms`, and `server_side_encryption_aws_kms_key_id`\n// is a valid kms key id, S3 will use the provided kms key to encrypt data.\n// - If the `server_side_encryption_aws_kms_key_id` is invalid or not found, an error will be\n// returned.\n// - If `server_side_encryption` is not `aws:kms`, setting `server_side_encryption_aws_kms_key_id`\n// is a noop.\n// config.put(\"server_side_encryption_aws_kms_key_id\", \"...\");\n\n// server_side_encryption_customer_algorithm for this backend.\n//\n// Available values: `AES256`.\n// config.put(\"server_side_encryption_customer_algorithm\", \"...\");\n\n// server_side_encryption_customer_key for this backend.\n//\n// Value: BASE64-encoded key that matches algorithm specified in\n// `server_side_encryption_customer_algorithm`.\n// config.put(\"server_side_encryption_customer_key\", \"...\");\n\n// Set server_side_encryption_customer_key_md5 for this backend.\n//\n// Value: MD5 digest of key specified in `server_side_encryption_customer_key`.\n// config.put(\"server_side_encryption_customer_key_md5\", \"...\");\n// --- Behavior ---\n// default storage_class for this backend.\n//\n// Available values:\n// - `DEEP_ARCHIVE`\n// - `GLACIER`\n// - `GLACIER_IR`\n// - `INTELLIGENT_TIERING`\n// - `ONEZONE_IA`\n// - `EXPRESS_ONEZONE`\n// - `OUTPOSTS`\n// - `REDUCED_REDUNDANCY`\n// - `STANDARD`\n// - `STANDARD_IA`\n//\n// S3 compatible services don't support all of them\n// config.put(\"default_storage_class\", \"...\");\n\n// Enable virtual host style so that opendal will send API requests\n// in virtual host style instead of path style.\n//\n// - By default, opendal will send API to `https://s3.us-east-1.amazonaws.com/bucket_name`\n// - Enabled, opendal will send API to `https://bucket_name.s3.us-east-1.amazonaws.com`\n// config.put(\"enable_virtual_host_style\", \"true\");\n\n// Checksum Algorithm to use when sending checksums in HTTP headers.\n// This is necessary when writing to AWS S3 Buckets with Object Lock enabled for example.\n//\n// Available options:\n// - \"crc32c\"\n// - \"md5\"\n// config.put(\"checksum_algorithm\", \"...\");\n\n// OpenDAL uses List Objects V2 by default to list objects.\n// However, some legacy services do not yet support V2.\n// This option allows users to switch back to the older List Objects V1.\n// config.put(\"disable_list_objects_v2\", \"true\");\n\n// Indicates whether the client agrees to pay for the requests made to the S3 bucket.\n// config.put(\"enable_request_payer\", \"true\");\n\n// Default ACL for new objects.\n// Note that some s3 services like minio do not support this option.\n// config.put(\"default_acl\", \"...\");\nOperator operator = Operator.of(\"s3\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"s3\",\n bucket=\"my-bucket\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"s3\",\n # --- General ---\n # root of this backend.\n #\n # All operations will happen under this root.\n #\n # default to `/` if not set.\n # root=\"/\",\n\n # bucket name of this backend.\n #\n # required.\n bucket=\"my-bucket\",\n\n # endpoint of this backend.\n #\n # Endpoint must be full uri, e.g.\n #\n # - AWS S3: `https://s3.amazonaws.com` or `https://s3.{region}.amazonaws.com`\n # - Cloudflare R2: `https://<ACCOUNT_ID>.r2.cloudflarestorage.com`\n # - Aliyun OSS: `https://{region}.aliyuncs.com`\n # - Tencent COS: `https://cos.{region}.myqcloud.com`\n # - Minio: `http://127.0.0.1:9000`\n #\n # If user inputs endpoint without scheme like \"s3.amazonaws.com\", we\n # will prepend \"https://\" before it.\n #\n # - If endpoint is set, we will take user's input first.\n # - If not, we will try to load it from environment.\n # - If still not set, default to `https://s3.amazonaws.com`.\n # endpoint=\"https://s3.amazonaws.com\",\n\n # Region represent the signing region of this endpoint. This is required\n # if you are using the default AWS S3 endpoint.\n #\n # If using a custom endpoint,\n # - If region is set, we will take user's input first.\n # - If not, we will try to load it from environment.\n # region=\"us-east-1\",\n # --- Credentials ---\n # access_key_id of this backend.\n #\n # - If access_key_id is set, we will take user's input first.\n # - If not, we will try to load it from environment.\n # access_key_id=\"...\",\n\n # secret_access_key of this backend.\n #\n # - If secret_access_key is set, we will take user's input first.\n # - If not, we will try to load it from environment.\n # secret_access_key=\"...\",\n\n # session_token (aka, security token) of this backend.\n #\n # This token will expire after sometime, it's recommended to set session_token\n # by hand.\n # session_token=\"...\",\n\n # Disable config load so that opendal will not load config from\n # environment.\n #\n # For examples:\n #\n # - envs like `AWS_ACCESS_KEY_ID`\n # - files like `~/.aws/config`\n # disable_config_load=\"true\",\n\n # Disable load credential from ec2 metadata.\n #\n # This option is used to disable the default behavior of opendal\n # to load credential from ec2 metadata, a.k.a., IMDSv2\n # disable_ec2_metadata=\"true\",\n\n # Skip signature will skip loading credentials and signing requests.\n # skip_signature=\"true\",\n # --- Assume role ---\n # role_arn for this backend.\n #\n # If `role_arn` is set, we will use already known config as source\n # credential to assume role with `role_arn`.\n # role_arn=\"...\",\n\n # external_id for this backend.\n # external_id=\"...\",\n\n # role_session_name for this backend.\n # role_session_name=\"...\",\n\n # assume_role_duration_seconds for this backend.\n # assume_role_duration_seconds=\"1000\",\n\n # assume_role_session_tags for this backend.\n # assume_role_session_tags=\"...\",\n # --- Encryption ---\n # server_side_encryption for this backend.\n #\n # Available values: `AES256`, `aws:kms`.\n # server_side_encryption=\"...\",\n\n # server_side_encryption_aws_kms_key_id for this backend\n #\n # - If `server_side_encryption` set to `aws:kms`, and `server_side_encryption_aws_kms_key_id`\n # is not set, S3 will use aws managed kms key to encrypt data.\n # - If `server_side_encryption` set to `aws:kms`, and `server_side_encryption_aws_kms_key_id`\n # is a valid kms key id, S3 will use the provided kms key to encrypt data.\n # - If the `server_side_encryption_aws_kms_key_id` is invalid or not found, an error will be\n # returned.\n # - If `server_side_encryption` is not `aws:kms`, setting `server_side_encryption_aws_kms_key_id`\n # is a noop.\n # server_side_encryption_aws_kms_key_id=\"...\",\n\n # server_side_encryption_customer_algorithm for this backend.\n #\n # Available values: `AES256`.\n # server_side_encryption_customer_algorithm=\"...\",\n\n # server_side_encryption_customer_key for this backend.\n #\n # Value: BASE64-encoded key that matches algorithm specified in\n # `server_side_encryption_customer_algorithm`.\n # server_side_encryption_customer_key=\"...\",\n\n # Set server_side_encryption_customer_key_md5 for this backend.\n #\n # Value: MD5 digest of key specified in `server_side_encryption_customer_key`.\n # server_side_encryption_customer_key_md5=\"...\",\n # --- Behavior ---\n # default storage_class for this backend.\n #\n # Available values:\n # - `DEEP_ARCHIVE`\n # - `GLACIER`\n # - `GLACIER_IR`\n # - `INTELLIGENT_TIERING`\n # - `ONEZONE_IA`\n # - `EXPRESS_ONEZONE`\n # - `OUTPOSTS`\n # - `REDUCED_REDUNDANCY`\n # - `STANDARD`\n # - `STANDARD_IA`\n #\n # S3 compatible services don't support all of them\n # default_storage_class=\"...\",\n\n # Enable virtual host style so that opendal will send API requests\n # in virtual host style instead of path style.\n #\n # - By default, opendal will send API to `https://s3.us-east-1.amazonaws.com/bucket_name`\n # - Enabled, opendal will send API to `https://bucket_name.s3.us-east-1.amazonaws.com`\n # enable_virtual_host_style=\"true\",\n\n # Checksum Algorithm to use when sending checksums in HTTP headers.\n # This is necessary when writing to AWS S3 Buckets with Object Lock enabled for example.\n #\n # Available options:\n # - \"crc32c\"\n # - \"md5\"\n # checksum_algorithm=\"...\",\n\n # OpenDAL uses List Objects V2 by default to list objects.\n # However, some legacy services do not yet support V2.\n # This option allows users to switch back to the older List Objects V1.\n # disable_list_objects_v2=\"true\",\n\n # Indicates whether the client agrees to pay for the requests made to the S3 bucket.\n # enable_request_payer=\"true\",\n\n # Default ACL for new objects.\n # Note that some s3 services like minio do not support this option.\n # default_acl=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"s3\", {\n bucket: \"my-bucket\",\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"s3\", {\n // --- General ---\n // root of this backend.\n //\n // All operations will happen under this root.\n //\n // default to `/` if not set.\n // root: \"/\",\n\n // bucket name of this backend.\n //\n // required.\n bucket: \"my-bucket\",\n\n // endpoint of this backend.\n //\n // Endpoint must be full uri, e.g.\n //\n // - AWS S3: `https://s3.amazonaws.com` or `https://s3.{region}.amazonaws.com`\n // - Cloudflare R2: `https://<ACCOUNT_ID>.r2.cloudflarestorage.com`\n // - Aliyun OSS: `https://{region}.aliyuncs.com`\n // - Tencent COS: `https://cos.{region}.myqcloud.com`\n // - Minio: `http://127.0.0.1:9000`\n //\n // If user inputs endpoint without scheme like \"s3.amazonaws.com\", we\n // will prepend \"https://\" before it.\n //\n // - If endpoint is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // - If still not set, default to `https://s3.amazonaws.com`.\n // endpoint: \"https://s3.amazonaws.com\",\n\n // Region represent the signing region of this endpoint. This is required\n // if you are using the default AWS S3 endpoint.\n //\n // If using a custom endpoint,\n // - If region is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // region: \"us-east-1\",\n // --- Credentials ---\n // access_key_id of this backend.\n //\n // - If access_key_id is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // access_key_id: \"...\",\n\n // secret_access_key of this backend.\n //\n // - If secret_access_key is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // secret_access_key: \"...\",\n\n // session_token (aka, security token) of this backend.\n //\n // This token will expire after sometime, it's recommended to set session_token\n // by hand.\n // session_token: \"...\",\n\n // Disable config load so that opendal will not load config from\n // environment.\n //\n // For examples:\n //\n // - envs like `AWS_ACCESS_KEY_ID`\n // - files like `~/.aws/config`\n // disable_config_load: \"true\",\n\n // Disable load credential from ec2 metadata.\n //\n // This option is used to disable the default behavior of opendal\n // to load credential from ec2 metadata, a.k.a., IMDSv2\n // disable_ec2_metadata: \"true\",\n\n // Skip signature will skip loading credentials and signing requests.\n // skip_signature: \"true\",\n // --- Assume role ---\n // role_arn for this backend.\n //\n // If `role_arn` is set, we will use already known config as source\n // credential to assume role with `role_arn`.\n // role_arn: \"...\",\n\n // external_id for this backend.\n // external_id: \"...\",\n\n // role_session_name for this backend.\n // role_session_name: \"...\",\n\n // assume_role_duration_seconds for this backend.\n // assume_role_duration_seconds: \"1000\",\n\n // assume_role_session_tags for this backend.\n // assume_role_session_tags: \"...\",\n // --- Encryption ---\n // server_side_encryption for this backend.\n //\n // Available values: `AES256`, `aws:kms`.\n // server_side_encryption: \"...\",\n\n // server_side_encryption_aws_kms_key_id for this backend\n //\n // - If `server_side_encryption` set to `aws:kms`, and `server_side_encryption_aws_kms_key_id`\n // is not set, S3 will use aws managed kms key to encrypt data.\n // - If `server_side_encryption` set to `aws:kms`, and `server_side_encryption_aws_kms_key_id`\n // is a valid kms key id, S3 will use the provided kms key to encrypt data.\n // - If the `server_side_encryption_aws_kms_key_id` is invalid or not found, an error will be\n // returned.\n // - If `server_side_encryption` is not `aws:kms`, setting `server_side_encryption_aws_kms_key_id`\n // is a noop.\n // server_side_encryption_aws_kms_key_id: \"...\",\n\n // server_side_encryption_customer_algorithm for this backend.\n //\n // Available values: `AES256`.\n // server_side_encryption_customer_algorithm: \"...\",\n\n // server_side_encryption_customer_key for this backend.\n //\n // Value: BASE64-encoded key that matches algorithm specified in\n // `server_side_encryption_customer_algorithm`.\n // server_side_encryption_customer_key: \"...\",\n\n // Set server_side_encryption_customer_key_md5 for this backend.\n //\n // Value: MD5 digest of key specified in `server_side_encryption_customer_key`.\n // server_side_encryption_customer_key_md5: \"...\",\n // --- Behavior ---\n // default storage_class for this backend.\n //\n // Available values:\n // - `DEEP_ARCHIVE`\n // - `GLACIER`\n // - `GLACIER_IR`\n // - `INTELLIGENT_TIERING`\n // - `ONEZONE_IA`\n // - `EXPRESS_ONEZONE`\n // - `OUTPOSTS`\n // - `REDUCED_REDUNDANCY`\n // - `STANDARD`\n // - `STANDARD_IA`\n //\n // S3 compatible services don't support all of them\n // default_storage_class: \"...\",\n\n // Enable virtual host style so that opendal will send API requests\n // in virtual host style instead of path style.\n //\n // - By default, opendal will send API to `https://s3.us-east-1.amazonaws.com/bucket_name`\n // - Enabled, opendal will send API to `https://bucket_name.s3.us-east-1.amazonaws.com`\n // enable_virtual_host_style: \"true\",\n\n // Checksum Algorithm to use when sending checksums in HTTP headers.\n // This is necessary when writing to AWS S3 Buckets with Object Lock enabled for example.\n //\n // Available options:\n // - \"crc32c\"\n // - \"md5\"\n // checksum_algorithm: \"...\",\n\n // OpenDAL uses List Objects V2 by default to list objects.\n // However, some legacy services do not yet support V2.\n // This option allows users to switch back to the older List Objects V1.\n // disable_list_objects_v2: \"true\",\n\n // Indicates whether the client agrees to pay for the requests made to the S3 bucket.\n // enable_request_payer: \"true\",\n\n // Default ACL for new objects.\n // Note that some s3 services like minio do not support this option.\n // default_acl: \"...\",\n});"
},
{
"binding": "ruby",
"language": "ruby",
"minimal": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"s3\", {\n \"bucket\" => \"my-bucket\",\n})",
"full": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"s3\", {\n # --- General ---\n # root of this backend.\n #\n # All operations will happen under this root.\n #\n # default to `/` if not set.\n # \"root\" => \"/\",\n\n # bucket name of this backend.\n #\n # required.\n \"bucket\" => \"my-bucket\",\n\n # endpoint of this backend.\n #\n # Endpoint must be full uri, e.g.\n #\n # - AWS S3: `https://s3.amazonaws.com` or `https://s3.{region}.amazonaws.com`\n # - Cloudflare R2: `https://<ACCOUNT_ID>.r2.cloudflarestorage.com`\n # - Aliyun OSS: `https://{region}.aliyuncs.com`\n # - Tencent COS: `https://cos.{region}.myqcloud.com`\n # - Minio: `http://127.0.0.1:9000`\n #\n # If user inputs endpoint without scheme like \"s3.amazonaws.com\", we\n # will prepend \"https://\" before it.\n #\n # - If endpoint is set, we will take user's input first.\n # - If not, we will try to load it from environment.\n # - If still not set, default to `https://s3.amazonaws.com`.\n # \"endpoint\" => \"https://s3.amazonaws.com\",\n\n # Region represent the signing region of this endpoint. This is required\n # if you are using the default AWS S3 endpoint.\n #\n # If using a custom endpoint,\n # - If region is set, we will take user's input first.\n # - If not, we will try to load it from environment.\n # \"region\" => \"us-east-1\",\n # --- Credentials ---\n # access_key_id of this backend.\n #\n # - If access_key_id is set, we will take user's input first.\n # - If not, we will try to load it from environment.\n # \"access_key_id\" => \"...\",\n\n # secret_access_key of this backend.\n #\n # - If secret_access_key is set, we will take user's input first.\n # - If not, we will try to load it from environment.\n # \"secret_access_key\" => \"...\",\n\n # session_token (aka, security token) of this backend.\n #\n # This token will expire after sometime, it's recommended to set session_token\n # by hand.\n # \"session_token\" => \"...\",\n\n # Disable config load so that opendal will not load config from\n # environment.\n #\n # For examples:\n #\n # - envs like `AWS_ACCESS_KEY_ID`\n # - files like `~/.aws/config`\n # \"disable_config_load\" => \"true\",\n\n # Disable load credential from ec2 metadata.\n #\n # This option is used to disable the default behavior of opendal\n # to load credential from ec2 metadata, a.k.a., IMDSv2\n # \"disable_ec2_metadata\" => \"true\",\n\n # Skip signature will skip loading credentials and signing requests.\n # \"skip_signature\" => \"true\",\n # --- Assume role ---\n # role_arn for this backend.\n #\n # If `role_arn` is set, we will use already known config as source\n # credential to assume role with `role_arn`.\n # \"role_arn\" => \"...\",\n\n # external_id for this backend.\n # \"external_id\" => \"...\",\n\n # role_session_name for this backend.\n # \"role_session_name\" => \"...\",\n\n # assume_role_duration_seconds for this backend.\n # \"assume_role_duration_seconds\" => \"1000\",\n\n # assume_role_session_tags for this backend.\n # \"assume_role_session_tags\" => \"...\",\n # --- Encryption ---\n # server_side_encryption for this backend.\n #\n # Available values: `AES256`, `aws:kms`.\n # \"server_side_encryption\" => \"...\",\n\n # server_side_encryption_aws_kms_key_id for this backend\n #\n # - If `server_side_encryption` set to `aws:kms`, and `server_side_encryption_aws_kms_key_id`\n # is not set, S3 will use aws managed kms key to encrypt data.\n # - If `server_side_encryption` set to `aws:kms`, and `server_side_encryption_aws_kms_key_id`\n # is a valid kms key id, S3 will use the provided kms key to encrypt data.\n # - If the `server_side_encryption_aws_kms_key_id` is invalid or not found, an error will be\n # returned.\n # - If `server_side_encryption` is not `aws:kms`, setting `server_side_encryption_aws_kms_key_id`\n # is a noop.\n # \"server_side_encryption_aws_kms_key_id\" => \"...\",\n\n # server_side_encryption_customer_algorithm for this backend.\n #\n # Available values: `AES256`.\n # \"server_side_encryption_customer_algorithm\" => \"...\",\n\n # server_side_encryption_customer_key for this backend.\n #\n # Value: BASE64-encoded key that matches algorithm specified in\n # `server_side_encryption_customer_algorithm`.\n # \"server_side_encryption_customer_key\" => \"...\",\n\n # Set server_side_encryption_customer_key_md5 for this backend.\n #\n # Value: MD5 digest of key specified in `server_side_encryption_customer_key`.\n # \"server_side_encryption_customer_key_md5\" => \"...\",\n # --- Behavior ---\n # default storage_class for this backend.\n #\n # Available values:\n # - `DEEP_ARCHIVE`\n # - `GLACIER`\n # - `GLACIER_IR`\n # - `INTELLIGENT_TIERING`\n # - `ONEZONE_IA`\n # - `EXPRESS_ONEZONE`\n # - `OUTPOSTS`\n # - `REDUCED_REDUNDANCY`\n # - `STANDARD`\n # - `STANDARD_IA`\n #\n # S3 compatible services don't support all of them\n # \"default_storage_class\" => \"...\",\n\n # Enable virtual host style so that opendal will send API requests\n # in virtual host style instead of path style.\n #\n # - By default, opendal will send API to `https://s3.us-east-1.amazonaws.com/bucket_name`\n # - Enabled, opendal will send API to `https://bucket_name.s3.us-east-1.amazonaws.com`\n # \"enable_virtual_host_style\" => \"true\",\n\n # Checksum Algorithm to use when sending checksums in HTTP headers.\n # This is necessary when writing to AWS S3 Buckets with Object Lock enabled for example.\n #\n # Available options:\n # - \"crc32c\"\n # - \"md5\"\n # \"checksum_algorithm\" => \"...\",\n\n # OpenDAL uses List Objects V2 by default to list objects.\n # However, some legacy services do not yet support V2.\n # This option allows users to switch back to the older List Objects V1.\n # \"disable_list_objects_v2\" => \"true\",\n\n # Indicates whether the client agrees to pay for the requests made to the S3 bucket.\n # \"enable_request_payer\" => \"true\",\n\n # Default ACL for new objects.\n # Note that some s3 services like minio do not support this option.\n # \"default_acl\" => \"...\",\n})"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/s3\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(s3.Scheme, opendal.OperatorOptions{\n\t\"bucket\": \"my-bucket\",\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/s3\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(s3.Scheme, opendal.OperatorOptions{\n\t// --- General ---\n\t// root of this backend.\n\t//\n\t// All operations will happen under this root.\n\t//\n\t// default to `/` if not set.\n\t// \"root\": \"/\",\n\n\t// bucket name of this backend.\n\t//\n\t// required.\n\t\"bucket\": \"my-bucket\",\n\n\t// endpoint of this backend.\n\t//\n\t// Endpoint must be full uri, e.g.\n\t//\n\t// - AWS S3: `https://s3.amazonaws.com` or `https://s3.{region}.amazonaws.com`\n\t// - Cloudflare R2: `https://<ACCOUNT_ID>.r2.cloudflarestorage.com`\n\t// - Aliyun OSS: `https://{region}.aliyuncs.com`\n\t// - Tencent COS: `https://cos.{region}.myqcloud.com`\n\t// - Minio: `http://127.0.0.1:9000`\n\t//\n\t// If user inputs endpoint without scheme like \"s3.amazonaws.com\", we\n\t// will prepend \"https://\" before it.\n\t//\n\t// - If endpoint is set, we will take user's input first.\n\t// - If not, we will try to load it from environment.\n\t// - If still not set, default to `https://s3.amazonaws.com`.\n\t// \"endpoint\": \"https://s3.amazonaws.com\",\n\n\t// Region represent the signing region of this endpoint. This is required\n\t// if you are using the default AWS S3 endpoint.\n\t//\n\t// If using a custom endpoint,\n\t// - If region is set, we will take user's input first.\n\t// - If not, we will try to load it from environment.\n\t// \"region\": \"us-east-1\",\n\t// --- Credentials ---\n\t// access_key_id of this backend.\n\t//\n\t// - If access_key_id is set, we will take user's input first.\n\t// - If not, we will try to load it from environment.\n\t// \"access_key_id\": \"...\",\n\n\t// secret_access_key of this backend.\n\t//\n\t// - If secret_access_key is set, we will take user's input first.\n\t// - If not, we will try to load it from environment.\n\t// \"secret_access_key\": \"...\",\n\n\t// session_token (aka, security token) of this backend.\n\t//\n\t// This token will expire after sometime, it's recommended to set session_token\n\t// by hand.\n\t// \"session_token\": \"...\",\n\n\t// Disable config load so that opendal will not load config from\n\t// environment.\n\t//\n\t// For examples:\n\t//\n\t// - envs like `AWS_ACCESS_KEY_ID`\n\t// - files like `~/.aws/config`\n\t// \"disable_config_load\": \"true\",\n\n\t// Disable load credential from ec2 metadata.\n\t//\n\t// This option is used to disable the default behavior of opendal\n\t// to load credential from ec2 metadata, a.k.a., IMDSv2\n\t// \"disable_ec2_metadata\": \"true\",\n\n\t// Skip signature will skip loading credentials and signing requests.\n\t// \"skip_signature\": \"true\",\n\t// --- Assume role ---\n\t// role_arn for this backend.\n\t//\n\t// If `role_arn` is set, we will use already known config as source\n\t// credential to assume role with `role_arn`.\n\t// \"role_arn\": \"...\",\n\n\t// external_id for this backend.\n\t// \"external_id\": \"...\",\n\n\t// role_session_name for this backend.\n\t// \"role_session_name\": \"...\",\n\n\t// assume_role_duration_seconds for this backend.\n\t// \"assume_role_duration_seconds\": \"1000\",\n\n\t// assume_role_session_tags for this backend.\n\t// \"assume_role_session_tags\": \"...\",\n\t// --- Encryption ---\n\t// server_side_encryption for this backend.\n\t//\n\t// Available values: `AES256`, `aws:kms`.\n\t// \"server_side_encryption\": \"...\",\n\n\t// server_side_encryption_aws_kms_key_id for this backend\n\t//\n\t// - If `server_side_encryption` set to `aws:kms`, and `server_side_encryption_aws_kms_key_id`\n\t// is not set, S3 will use aws managed kms key to encrypt data.\n\t// - If `server_side_encryption` set to `aws:kms`, and `server_side_encryption_aws_kms_key_id`\n\t// is a valid kms key id, S3 will use the provided kms key to encrypt data.\n\t// - If the `server_side_encryption_aws_kms_key_id` is invalid or not found, an error will be\n\t// returned.\n\t// - If `server_side_encryption` is not `aws:kms`, setting `server_side_encryption_aws_kms_key_id`\n\t// is a noop.\n\t// \"server_side_encryption_aws_kms_key_id\": \"...\",\n\n\t// server_side_encryption_customer_algorithm for this backend.\n\t//\n\t// Available values: `AES256`.\n\t// \"server_side_encryption_customer_algorithm\": \"...\",\n\n\t// server_side_encryption_customer_key for this backend.\n\t//\n\t// Value: BASE64-encoded key that matches algorithm specified in\n\t// `server_side_encryption_customer_algorithm`.\n\t// \"server_side_encryption_customer_key\": \"...\",\n\n\t// Set server_side_encryption_customer_key_md5 for this backend.\n\t//\n\t// Value: MD5 digest of key specified in `server_side_encryption_customer_key`.\n\t// \"server_side_encryption_customer_key_md5\": \"...\",\n\t// --- Behavior ---\n\t// default storage_class for this backend.\n\t//\n\t// Available values:\n\t// - `DEEP_ARCHIVE`\n\t// - `GLACIER`\n\t// - `GLACIER_IR`\n\t// - `INTELLIGENT_TIERING`\n\t// - `ONEZONE_IA`\n\t// - `EXPRESS_ONEZONE`\n\t// - `OUTPOSTS`\n\t// - `REDUCED_REDUNDANCY`\n\t// - `STANDARD`\n\t// - `STANDARD_IA`\n\t//\n\t// S3 compatible services don't support all of them\n\t// \"default_storage_class\": \"...\",\n\n\t// Enable virtual host style so that opendal will send API requests\n\t// in virtual host style instead of path style.\n\t//\n\t// - By default, opendal will send API to `https://s3.us-east-1.amazonaws.com/bucket_name`\n\t// - Enabled, opendal will send API to `https://bucket_name.s3.us-east-1.amazonaws.com`\n\t// \"enable_virtual_host_style\": \"true\",\n\n\t// Checksum Algorithm to use when sending checksums in HTTP headers.\n\t// This is necessary when writing to AWS S3 Buckets with Object Lock enabled for example.\n\t//\n\t// Available options:\n\t// - \"crc32c\"\n\t// - \"md5\"\n\t// \"checksum_algorithm\": \"...\",\n\n\t// OpenDAL uses List Objects V2 by default to list objects.\n\t// However, some legacy services do not yet support V2.\n\t// This option allows users to switch back to the older List Objects V1.\n\t// \"disable_list_objects_v2\": \"true\",\n\n\t// Indicates whether the client agrees to pay for the requests made to the S3 bucket.\n\t// \"enable_request_payer\": \"true\",\n\n\t// Default ACL for new objects.\n\t// Note that some s3 services like minio do not support this option.\n\t// \"default_acl\": \"...\",\n})"
}
]
},
{
"name": "seafile",
"scheme": "seafile",
"groups": [
"General"
],
"configs": [
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "root of this backend.\n\nAll operations will happen under this root."
},
{
"name": "endpoint",
"type": "string",
"required": false,
"group": "General",
"comments": "endpoint address of this backend."
},
{
"name": "username",
"type": "string",
"required": false,
"group": "General",
"comments": "username of this backend."
},
{
"name": "password",
"type": "string",
"required": false,
"group": "General",
"comments": "password of this backend."
},
{
"name": "repo_name",
"type": "string",
"required": true,
"group": "General",
"comments": "repo_name of this backend.\n\nrequired."
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"seafile\", [\n (\"repo_name\".to_string(), \"...\".to_string()),\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"seafile\", [\n // root of this backend.\n //\n // All operations will happen under this root.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // endpoint address of this backend.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // username of this backend.\n // (\"username\".to_string(), \"...\".to_string()),\n\n // password of this backend.\n // (\"password\".to_string(), \"...\".to_string()),\n\n // repo_name of this backend.\n //\n // required.\n (\"repo_name\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nconfig.put(\"repo_name\", \"...\");\nOperator operator = Operator.of(\"seafile\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// root of this backend.\n//\n// All operations will happen under this root.\n// config.put(\"root\", \"...\");\n\n// endpoint address of this backend.\n// config.put(\"endpoint\", \"...\");\n\n// username of this backend.\n// config.put(\"username\", \"...\");\n\n// password of this backend.\n// config.put(\"password\", \"...\");\n\n// repo_name of this backend.\n//\n// required.\nconfig.put(\"repo_name\", \"...\");\nOperator operator = Operator.of(\"seafile\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"seafile\",\n repo_name=\"...\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"seafile\",\n # root of this backend.\n #\n # All operations will happen under this root.\n # root=\"...\",\n\n # endpoint address of this backend.\n # endpoint=\"...\",\n\n # username of this backend.\n # username=\"...\",\n\n # password of this backend.\n # password=\"...\",\n\n # repo_name of this backend.\n #\n # required.\n repo_name=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"seafile\", {\n repo_name: \"...\",\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"seafile\", {\n // root of this backend.\n //\n // All operations will happen under this root.\n // root: \"...\",\n\n // endpoint address of this backend.\n // endpoint: \"...\",\n\n // username of this backend.\n // username: \"...\",\n\n // password of this backend.\n // password: \"...\",\n\n // repo_name of this backend.\n //\n // required.\n repo_name: \"...\",\n});"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/seafile\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(seafile.Scheme, opendal.OperatorOptions{\n\t\"repo_name\": \"...\",\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/seafile\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(seafile.Scheme, opendal.OperatorOptions{\n\t// root of this backend.\n\t//\n\t// All operations will happen under this root.\n\t// \"root\": \"...\",\n\n\t// endpoint address of this backend.\n\t// \"endpoint\": \"...\",\n\n\t// username of this backend.\n\t// \"username\": \"...\",\n\n\t// password of this backend.\n\t// \"password\": \"...\",\n\n\t// repo_name of this backend.\n\t//\n\t// required.\n\t\"repo_name\": \"...\",\n})"
}
]
},
{
"name": "sftp",
"scheme": "sftp",
"groups": [
"General"
],
"configs": [
{
"name": "endpoint",
"type": "string",
"required": false,
"group": "General",
"comments": "endpoint of this backend"
},
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "root of this backend"
},
{
"name": "user",
"type": "string",
"required": false,
"group": "General",
"comments": "user of this backend"
},
{
"name": "key",
"type": "string",
"required": false,
"group": "General",
"comments": "key of this backend"
},
{
"name": "known_hosts_strategy",
"type": "string",
"required": false,
"group": "General",
"comments": "known_hosts_strategy of this backend"
},
{
"name": "enable_copy",
"type": "bool",
"required": false,
"group": "General",
"deprecated": {
"since": "0.57.0",
"note": "SFTP copy capability is enabled by default and this option is no longer needed."
},
"comments": "Deprecated: SFTP copy capability is enabled by default."
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"sftp\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"sftp\", [\n // endpoint of this backend\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // root of this backend\n // (\"root\".to_string(), \"...\".to_string()),\n\n // user of this backend\n // (\"user\".to_string(), \"...\".to_string()),\n\n // key of this backend\n // (\"key\".to_string(), \"...\".to_string()),\n\n // known_hosts_strategy of this backend\n // (\"known_hosts_strategy\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nOperator operator = Operator.of(\"sftp\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// endpoint of this backend\n// config.put(\"endpoint\", \"...\");\n\n// root of this backend\n// config.put(\"root\", \"...\");\n\n// user of this backend\n// config.put(\"user\", \"...\");\n\n// key of this backend\n// config.put(\"key\", \"...\");\n\n// known_hosts_strategy of this backend\n// config.put(\"known_hosts_strategy\", \"...\");\nOperator operator = Operator.of(\"sftp\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"sftp\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"sftp\",\n # endpoint of this backend\n # endpoint=\"...\",\n\n # root of this backend\n # root=\"...\",\n\n # user of this backend\n # user=\"...\",\n\n # key of this backend\n # key=\"...\",\n\n # known_hosts_strategy of this backend\n # known_hosts_strategy=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"sftp\", {\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"sftp\", {\n // endpoint of this backend\n // endpoint: \"...\",\n\n // root of this backend\n // root: \"...\",\n\n // user of this backend\n // user: \"...\",\n\n // key of this backend\n // key: \"...\",\n\n // known_hosts_strategy of this backend\n // known_hosts_strategy: \"...\",\n});"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/sftp\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(sftp.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/sftp\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(sftp.Scheme, opendal.OperatorOptions{\n\t// endpoint of this backend\n\t// \"endpoint\": \"...\",\n\n\t// root of this backend\n\t// \"root\": \"...\",\n\n\t// user of this backend\n\t// \"user\": \"...\",\n\n\t// key of this backend\n\t// \"key\": \"...\",\n\n\t// known_hosts_strategy of this backend\n\t// \"known_hosts_strategy\": \"...\",\n})"
}
]
},
{
"name": "sled",
"scheme": "sled",
"groups": [
"General"
],
"configs": [
{
"name": "datadir",
"type": "string",
"required": false,
"group": "General",
"comments": "That path to the sled data directory."
},
{
"name": "tree",
"type": "string",
"required": false,
"group": "General",
"comments": "The tree for sled."
},
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "The root for sled."
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"sled\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"sled\", [\n // That path to the sled data directory.\n // (\"datadir\".to_string(), \"...\".to_string()),\n\n // The tree for sled.\n // (\"tree\".to_string(), \"...\".to_string()),\n\n // The root for sled.\n // (\"root\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nOperator operator = Operator.of(\"sled\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// That path to the sled data directory.\n// config.put(\"datadir\", \"...\");\n\n// The tree for sled.\n// config.put(\"tree\", \"...\");\n\n// The root for sled.\n// config.put(\"root\", \"...\");\nOperator operator = Operator.of(\"sled\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"sled\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"sled\",\n # That path to the sled data directory.\n # datadir=\"...\",\n\n # The tree for sled.\n # tree=\"...\",\n\n # The root for sled.\n # root=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"sled\", {\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"sled\", {\n // That path to the sled data directory.\n // datadir: \"...\",\n\n // The tree for sled.\n // tree: \"...\",\n\n // The root for sled.\n // root: \"...\",\n});"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/sled\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(sled.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/sled\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(sled.Scheme, opendal.OperatorOptions{\n\t// That path to the sled data directory.\n\t// \"datadir\": \"...\",\n\n\t// The tree for sled.\n\t// \"tree\": \"...\",\n\n\t// The root for sled.\n\t// \"root\": \"...\",\n})"
}
]
},
{
"name": "sqlite",
"scheme": "sqlite",
"groups": [
"General"
],
"configs": [
{
"name": "connection_string",
"type": "string",
"required": false,
"group": "General",
"comments": "Set the connection_string of the sqlite service.\n\nThis connection string is used to connect to the sqlite service.\n\nThe format of connect string resembles the url format of the sqlite client:\n\n- `sqlite::memory:`\n- `sqlite:data.db`\n- `sqlite://data.db`\n\nFor more information, please visit <https://docs.rs/sqlx/latest/sqlx/sqlite/struct.SqliteConnectOptions.html>."
},
{
"name": "table",
"type": "string",
"required": false,
"group": "General",
"comments": "Set the table name of the sqlite service to read/write."
},
{
"name": "key_field",
"type": "string",
"required": false,
"group": "General",
"comments": "Set the key field name of the sqlite service to read/write.\n\nDefault to `key` if not specified."
},
{
"name": "value_field",
"type": "string",
"required": false,
"group": "General",
"comments": "Set the value field name of the sqlite service to read/write.\n\nDefault to `value` if not specified."
},
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "set the working directory, all operations will be performed under it.\n\ndefault: \"/\""
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"sqlite\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"sqlite\", [\n // Set the connection_string of the sqlite service.\n //\n // This connection string is used to connect to the sqlite service.\n //\n // The format of connect string resembles the url format of the sqlite client:\n //\n // - `sqlite::memory:`\n // - `sqlite:data.db`\n // - `sqlite://data.db`\n //\n // For more information, please visit <https://docs.rs/sqlx/latest/sqlx/sqlite/struct.SqliteConnectOptions.html>.\n // (\"connection_string\".to_string(), \"...\".to_string()),\n\n // Set the table name of the sqlite service to read/write.\n // (\"table\".to_string(), \"...\".to_string()),\n\n // Set the key field name of the sqlite service to read/write.\n //\n // Default to `key` if not specified.\n // (\"key_field\".to_string(), \"...\".to_string()),\n\n // Set the value field name of the sqlite service to read/write.\n //\n // Default to `value` if not specified.\n // (\"value_field\".to_string(), \"...\".to_string()),\n\n // set the working directory, all operations will be performed under it.\n //\n // default: \"/\"\n // (\"root\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nOperator operator = Operator.of(\"sqlite\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// Set the connection_string of the sqlite service.\n//\n// This connection string is used to connect to the sqlite service.\n//\n// The format of connect string resembles the url format of the sqlite client:\n//\n// - `sqlite::memory:`\n// - `sqlite:data.db`\n// - `sqlite://data.db`\n//\n// For more information, please visit <https://docs.rs/sqlx/latest/sqlx/sqlite/struct.SqliteConnectOptions.html>.\n// config.put(\"connection_string\", \"...\");\n\n// Set the table name of the sqlite service to read/write.\n// config.put(\"table\", \"...\");\n\n// Set the key field name of the sqlite service to read/write.\n//\n// Default to `key` if not specified.\n// config.put(\"key_field\", \"...\");\n\n// Set the value field name of the sqlite service to read/write.\n//\n// Default to `value` if not specified.\n// config.put(\"value_field\", \"...\");\n\n// set the working directory, all operations will be performed under it.\n//\n// default: \"/\"\n// config.put(\"root\", \"...\");\nOperator operator = Operator.of(\"sqlite\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"sqlite\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"sqlite\",\n # Set the connection_string of the sqlite service.\n #\n # This connection string is used to connect to the sqlite service.\n #\n # The format of connect string resembles the url format of the sqlite client:\n #\n # - `sqlite::memory:`\n # - `sqlite:data.db`\n # - `sqlite://data.db`\n #\n # For more information, please visit <https://docs.rs/sqlx/latest/sqlx/sqlite/struct.SqliteConnectOptions.html>.\n # connection_string=\"...\",\n\n # Set the table name of the sqlite service to read/write.\n # table=\"...\",\n\n # Set the key field name of the sqlite service to read/write.\n #\n # Default to `key` if not specified.\n # key_field=\"...\",\n\n # Set the value field name of the sqlite service to read/write.\n #\n # Default to `value` if not specified.\n # value_field=\"...\",\n\n # set the working directory, all operations will be performed under it.\n #\n # default: \"/\"\n # root=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"sqlite\", {\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"sqlite\", {\n // Set the connection_string of the sqlite service.\n //\n // This connection string is used to connect to the sqlite service.\n //\n // The format of connect string resembles the url format of the sqlite client:\n //\n // - `sqlite::memory:`\n // - `sqlite:data.db`\n // - `sqlite://data.db`\n //\n // For more information, please visit <https://docs.rs/sqlx/latest/sqlx/sqlite/struct.SqliteConnectOptions.html>.\n // connection_string: \"...\",\n\n // Set the table name of the sqlite service to read/write.\n // table: \"...\",\n\n // Set the key field name of the sqlite service to read/write.\n //\n // Default to `key` if not specified.\n // key_field: \"...\",\n\n // Set the value field name of the sqlite service to read/write.\n //\n // Default to `value` if not specified.\n // value_field: \"...\",\n\n // set the working directory, all operations will be performed under it.\n //\n // default: \"/\"\n // root: \"...\",\n});"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/sqlite\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(sqlite.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/sqlite\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(sqlite.Scheme, opendal.OperatorOptions{\n\t// Set the connection_string of the sqlite service.\n\t//\n\t// This connection string is used to connect to the sqlite service.\n\t//\n\t// The format of connect string resembles the url format of the sqlite client:\n\t//\n\t// - `sqlite::memory:`\n\t// - `sqlite:data.db`\n\t// - `sqlite://data.db`\n\t//\n\t// For more information, please visit <https://docs.rs/sqlx/latest/sqlx/sqlite/struct.SqliteConnectOptions.html>.\n\t// \"connection_string\": \"...\",\n\n\t// Set the table name of the sqlite service to read/write.\n\t// \"table\": \"...\",\n\n\t// Set the key field name of the sqlite service to read/write.\n\t//\n\t// Default to `key` if not specified.\n\t// \"key_field\": \"...\",\n\n\t// Set the value field name of the sqlite service to read/write.\n\t//\n\t// Default to `value` if not specified.\n\t// \"value_field\": \"...\",\n\n\t// set the working directory, all operations will be performed under it.\n\t//\n\t// default: \"/\"\n\t// \"root\": \"...\",\n})"
}
]
},
{
"name": "surrealdb",
"scheme": "surrealdb",
"groups": [
"General"
],
"configs": [
{
"name": "connection_string",
"type": "string",
"required": false,
"group": "General",
"comments": "The connection string for surrealdb."
},
{
"name": "username",
"type": "string",
"required": false,
"group": "General",
"comments": "The username for surrealdb."
},
{
"name": "password",
"type": "string",
"required": false,
"group": "General",
"comments": "The password for surrealdb."
},
{
"name": "namespace",
"type": "string",
"required": false,
"group": "General",
"comments": "The namespace for surrealdb."
},
{
"name": "database",
"type": "string",
"required": false,
"group": "General",
"comments": "The database for surrealdb."
},
{
"name": "table",
"type": "string",
"required": false,
"group": "General",
"comments": "The table for surrealdb."
},
{
"name": "key_field",
"type": "string",
"required": false,
"group": "General",
"comments": "The key field for surrealdb."
},
{
"name": "value_field",
"type": "string",
"required": false,
"group": "General",
"comments": "The value field for surrealdb."
},
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "The root for surrealdb."
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"surrealdb\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"surrealdb\", [\n // The connection string for surrealdb.\n // (\"connection_string\".to_string(), \"...\".to_string()),\n\n // The username for surrealdb.\n // (\"username\".to_string(), \"...\".to_string()),\n\n // The password for surrealdb.\n // (\"password\".to_string(), \"...\".to_string()),\n\n // The namespace for surrealdb.\n // (\"namespace\".to_string(), \"...\".to_string()),\n\n // The database for surrealdb.\n // (\"database\".to_string(), \"...\".to_string()),\n\n // The table for surrealdb.\n // (\"table\".to_string(), \"...\".to_string()),\n\n // The key field for surrealdb.\n // (\"key_field\".to_string(), \"...\".to_string()),\n\n // The value field for surrealdb.\n // (\"value_field\".to_string(), \"...\".to_string()),\n\n // The root for surrealdb.\n // (\"root\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"surrealdb\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"surrealdb\",\n # The connection string for surrealdb.\n # connection_string=\"...\",\n\n # The username for surrealdb.\n # username=\"...\",\n\n # The password for surrealdb.\n # password=\"...\",\n\n # The namespace for surrealdb.\n # namespace=\"...\",\n\n # The database for surrealdb.\n # database=\"...\",\n\n # The table for surrealdb.\n # table=\"...\",\n\n # The key field for surrealdb.\n # key_field=\"...\",\n\n # The value field for surrealdb.\n # value_field=\"...\",\n\n # The root for surrealdb.\n # root=\"...\",\n)"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/surrealdb\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(surrealdb.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/surrealdb\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(surrealdb.Scheme, opendal.OperatorOptions{\n\t// The connection string for surrealdb.\n\t// \"connection_string\": \"...\",\n\n\t// The username for surrealdb.\n\t// \"username\": \"...\",\n\n\t// The password for surrealdb.\n\t// \"password\": \"...\",\n\n\t// The namespace for surrealdb.\n\t// \"namespace\": \"...\",\n\n\t// The database for surrealdb.\n\t// \"database\": \"...\",\n\n\t// The table for surrealdb.\n\t// \"table\": \"...\",\n\n\t// The key field for surrealdb.\n\t// \"key_field\": \"...\",\n\n\t// The value field for surrealdb.\n\t// \"value_field\": \"...\",\n\n\t// The root for surrealdb.\n\t// \"root\": \"...\",\n})"
}
]
},
{
"name": "swift",
"scheme": "swift",
"groups": [
"General"
],
"configs": [
{
"name": "endpoint",
"type": "string",
"required": false,
"group": "General",
"comments": "The endpoint for Swift."
},
{
"name": "container",
"type": "string",
"required": false,
"group": "General",
"comments": "The container for Swift."
},
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "The root for Swift."
},
{
"name": "token",
"type": "string",
"required": false,
"group": "General",
"comments": "The token for Swift."
},
{
"name": "temp_url_key",
"type": "string",
"required": false,
"group": "General",
"comments": "The TempURL key for generating presigned URLs.\n\nThis corresponds to the `X-Account-Meta-Temp-URL-Key` or\n`X-Container-Meta-Temp-URL-Key` header value configured on the\nSwift account or container."
},
{
"name": "temp_url_hash_algorithm",
"type": "string",
"required": false,
"group": "General",
"comments": "The hash algorithm for TempURL signing.\n\nSupported values: `sha1`, `sha256`, `sha512`. Defaults to `sha256`.\nThe cluster must have the chosen algorithm in its\n`tempurl.allowed_digests` (check `GET /info`)."
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"swift\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"swift\", [\n // The endpoint for Swift.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // The container for Swift.\n // (\"container\".to_string(), \"...\".to_string()),\n\n // The root for Swift.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // The token for Swift.\n // (\"token\".to_string(), \"...\".to_string()),\n\n // The TempURL key for generating presigned URLs.\n //\n // This corresponds to the `X-Account-Meta-Temp-URL-Key` or\n // `X-Container-Meta-Temp-URL-Key` header value configured on the\n // Swift account or container.\n // (\"temp_url_key\".to_string(), \"...\".to_string()),\n\n // The hash algorithm for TempURL signing.\n //\n // Supported values: `sha1`, `sha256`, `sha512`. Defaults to `sha256`.\n // The cluster must have the chosen algorithm in its\n // `tempurl.allowed_digests` (check `GET /info`).\n // (\"temp_url_hash_algorithm\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nOperator operator = Operator.of(\"swift\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// The endpoint for Swift.\n// config.put(\"endpoint\", \"...\");\n\n// The container for Swift.\n// config.put(\"container\", \"...\");\n\n// The root for Swift.\n// config.put(\"root\", \"...\");\n\n// The token for Swift.\n// config.put(\"token\", \"...\");\n\n// The TempURL key for generating presigned URLs.\n//\n// This corresponds to the `X-Account-Meta-Temp-URL-Key` or\n// `X-Container-Meta-Temp-URL-Key` header value configured on the\n// Swift account or container.\n// config.put(\"temp_url_key\", \"...\");\n\n// The hash algorithm for TempURL signing.\n//\n// Supported values: `sha1`, `sha256`, `sha512`. Defaults to `sha256`.\n// The cluster must have the chosen algorithm in its\n// `tempurl.allowed_digests` (check `GET /info`).\n// config.put(\"temp_url_hash_algorithm\", \"...\");\nOperator operator = Operator.of(\"swift\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"swift\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"swift\",\n # The endpoint for Swift.\n # endpoint=\"...\",\n\n # The container for Swift.\n # container=\"...\",\n\n # The root for Swift.\n # root=\"...\",\n\n # The token for Swift.\n # token=\"...\",\n\n # The TempURL key for generating presigned URLs.\n #\n # This corresponds to the `X-Account-Meta-Temp-URL-Key` or\n # `X-Container-Meta-Temp-URL-Key` header value configured on the\n # Swift account or container.\n # temp_url_key=\"...\",\n\n # The hash algorithm for TempURL signing.\n #\n # Supported values: `sha1`, `sha256`, `sha512`. Defaults to `sha256`.\n # The cluster must have the chosen algorithm in its\n # `tempurl.allowed_digests` (check `GET /info`).\n # temp_url_hash_algorithm=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"swift\", {\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"swift\", {\n // The endpoint for Swift.\n // endpoint: \"...\",\n\n // The container for Swift.\n // container: \"...\",\n\n // The root for Swift.\n // root: \"...\",\n\n // The token for Swift.\n // token: \"...\",\n\n // The TempURL key for generating presigned URLs.\n //\n // This corresponds to the `X-Account-Meta-Temp-URL-Key` or\n // `X-Container-Meta-Temp-URL-Key` header value configured on the\n // Swift account or container.\n // temp_url_key: \"...\",\n\n // The hash algorithm for TempURL signing.\n //\n // Supported values: `sha1`, `sha256`, `sha512`. Defaults to `sha256`.\n // The cluster must have the chosen algorithm in its\n // `tempurl.allowed_digests` (check `GET /info`).\n // temp_url_hash_algorithm: \"...\",\n});"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/swift\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(swift.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/swift\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(swift.Scheme, opendal.OperatorOptions{\n\t// The endpoint for Swift.\n\t// \"endpoint\": \"...\",\n\n\t// The container for Swift.\n\t// \"container\": \"...\",\n\n\t// The root for Swift.\n\t// \"root\": \"...\",\n\n\t// The token for Swift.\n\t// \"token\": \"...\",\n\n\t// The TempURL key for generating presigned URLs.\n\t//\n\t// This corresponds to the `X-Account-Meta-Temp-URL-Key` or\n\t// `X-Container-Meta-Temp-URL-Key` header value configured on the\n\t// Swift account or container.\n\t// \"temp_url_key\": \"...\",\n\n\t// The hash algorithm for TempURL signing.\n\t//\n\t// Supported values: `sha1`, `sha256`, `sha512`. Defaults to `sha256`.\n\t// The cluster must have the chosen algorithm in its\n\t// `tempurl.allowed_digests` (check `GET /info`).\n\t// \"temp_url_hash_algorithm\": \"...\",\n})"
}
]
},
{
"name": "tikv",
"scheme": "tikv",
"groups": [
"General"
],
"configs": [
{
"name": "endpoints",
"type": "list",
"required": false,
"group": "General",
"comments": "network address of the TiKV service."
},
{
"name": "insecure",
"type": "bool",
"required": false,
"group": "General",
"comments": "whether using insecure connection to TiKV"
},
{
"name": "ca_path",
"type": "string",
"required": false,
"group": "General",
"comments": "certificate authority file path"
},
{
"name": "cert_path",
"type": "string",
"required": false,
"group": "General",
"comments": "cert path"
},
{
"name": "key_path",
"type": "string",
"required": false,
"group": "General",
"comments": "key path"
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"tikv\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"tikv\", [\n // network address of the TiKV service.\n // (\"endpoints\".to_string(), \"value1,value2\".to_string()),\n\n // whether using insecure connection to TiKV\n // (\"insecure\".to_string(), \"true\".to_string()),\n\n // certificate authority file path\n // (\"ca_path\".to_string(), \"...\".to_string()),\n\n // cert path\n // (\"cert_path\".to_string(), \"...\".to_string()),\n\n // key path\n // (\"key_path\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nOperator operator = Operator.of(\"tikv\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// network address of the TiKV service.\n// config.put(\"endpoints\", \"value1,value2\");\n\n// whether using insecure connection to TiKV\n// config.put(\"insecure\", \"true\");\n\n// certificate authority file path\n// config.put(\"ca_path\", \"...\");\n\n// cert path\n// config.put(\"cert_path\", \"...\");\n\n// key path\n// config.put(\"key_path\", \"...\");\nOperator operator = Operator.of(\"tikv\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"tikv\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"tikv\",\n # network address of the TiKV service.\n # endpoints=\"value1,value2\",\n\n # whether using insecure connection to TiKV\n # insecure=\"true\",\n\n # certificate authority file path\n # ca_path=\"...\",\n\n # cert path\n # cert_path=\"...\",\n\n # key path\n # key_path=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"tikv\", {\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"tikv\", {\n // network address of the TiKV service.\n // endpoints: \"value1,value2\",\n\n // whether using insecure connection to TiKV\n // insecure: \"true\",\n\n // certificate authority file path\n // ca_path: \"...\",\n\n // cert path\n // cert_path: \"...\",\n\n // key path\n // key_path: \"...\",\n});"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/tikv\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(tikv.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/tikv\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(tikv.Scheme, opendal.OperatorOptions{\n\t// network address of the TiKV service.\n\t// \"endpoints\": \"value1,value2\",\n\n\t// whether using insecure connection to TiKV\n\t// \"insecure\": \"true\",\n\n\t// certificate authority file path\n\t// \"ca_path\": \"...\",\n\n\t// cert path\n\t// \"cert_path\": \"...\",\n\n\t// key path\n\t// \"key_path\": \"...\",\n})"
}
]
},
{
"name": "tos",
"scheme": "tos",
"groups": [
"General"
],
"configs": [
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "root of this backend.\n\nAll operations will happen under this root.\n\ndefault to `/` if not set."
},
{
"name": "bucket",
"type": "string",
"required": true,
"group": "General",
"comments": "bucket name of this backend.\n\nrequired."
},
{
"name": "endpoint",
"type": "string",
"required": false,
"group": "General",
"comments": "endpoint of this backend.\n\nEndpoint must be full uri, e.g.\n- TOS: `https://tos-cn-beijing.volces.com`\n- TOS with region: `https://tos-{region}.volces.com`\n\nIf user inputs endpoint without scheme like \"tos-cn-beijing.volces.com\", we\nwill prepend \"https://\" before it."
},
{
"name": "region",
"type": "string",
"required": false,
"group": "General",
"comments": "Region represent the signing region of this endpoint.\n\nRequired if endpoint is not provided.\n\n- If region is set, we will take user's input first.\n- If not, we will try to load it from environment.\n- If still not set, default to `cn-beijing`."
},
{
"name": "access_key_id",
"type": "string",
"required": false,
"group": "General",
"comments": "access_key_id of this backend.\n\n- If access_key_id is set, we will take user's input first.\n- If not, we will try to load it from environment."
},
{
"name": "secret_access_key",
"type": "string",
"required": false,
"group": "General",
"comments": "secret_access_key of this backend.\n\n- If secret_access_key is set, we will take user's input first.\n- If not, we will try to load it from environment."
},
{
"name": "security_token",
"type": "string",
"required": false,
"group": "General",
"comments": "security_token of this backend.\n\nThis token will expire after sometime, it's recommended to set security_token\nby hand."
},
{
"name": "disable_config_load",
"type": "bool",
"required": false,
"group": "General",
"comments": "Disable config load so that opendal will not load config from\nenvironment.\n\nFor examples:\n- envs like `TOS_ACCESS_KEY_ID`"
},
{
"name": "skip_signature",
"type": "bool",
"required": false,
"group": "General",
"comments": "Skip signature will skip loading credentials and signing requests."
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"tos\", [\n (\"bucket\".to_string(), \"...\".to_string()),\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"tos\", [\n // root of this backend.\n //\n // All operations will happen under this root.\n //\n // default to `/` if not set.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // bucket name of this backend.\n //\n // required.\n (\"bucket\".to_string(), \"...\".to_string()),\n\n // endpoint of this backend.\n //\n // Endpoint must be full uri, e.g.\n // - TOS: `https://tos-cn-beijing.volces.com`\n // - TOS with region: `https://tos-{region}.volces.com`\n //\n // If user inputs endpoint without scheme like \"tos-cn-beijing.volces.com\", we\n // will prepend \"https://\" before it.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // Region represent the signing region of this endpoint.\n //\n // Required if endpoint is not provided.\n //\n // - If region is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // - If still not set, default to `cn-beijing`.\n // (\"region\".to_string(), \"...\".to_string()),\n\n // access_key_id of this backend.\n //\n // - If access_key_id is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // (\"access_key_id\".to_string(), \"...\".to_string()),\n\n // secret_access_key of this backend.\n //\n // - If secret_access_key is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // (\"secret_access_key\".to_string(), \"...\".to_string()),\n\n // security_token of this backend.\n //\n // This token will expire after sometime, it's recommended to set security_token\n // by hand.\n // (\"security_token\".to_string(), \"...\".to_string()),\n\n // Disable config load so that opendal will not load config from\n // environment.\n //\n // For examples:\n // - envs like `TOS_ACCESS_KEY_ID`\n // (\"disable_config_load\".to_string(), \"true\".to_string()),\n\n // Skip signature will skip loading credentials and signing requests.\n // (\"skip_signature\".to_string(), \"true\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nconfig.put(\"bucket\", \"...\");\nOperator operator = Operator.of(\"tos\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// root of this backend.\n//\n// All operations will happen under this root.\n//\n// default to `/` if not set.\n// config.put(\"root\", \"...\");\n\n// bucket name of this backend.\n//\n// required.\nconfig.put(\"bucket\", \"...\");\n\n// endpoint of this backend.\n//\n// Endpoint must be full uri, e.g.\n// - TOS: `https://tos-cn-beijing.volces.com`\n// - TOS with region: `https://tos-{region}.volces.com`\n//\n// If user inputs endpoint without scheme like \"tos-cn-beijing.volces.com\", we\n// will prepend \"https://\" before it.\n// config.put(\"endpoint\", \"...\");\n\n// Region represent the signing region of this endpoint.\n//\n// Required if endpoint is not provided.\n//\n// - If region is set, we will take user's input first.\n// - If not, we will try to load it from environment.\n// - If still not set, default to `cn-beijing`.\n// config.put(\"region\", \"...\");\n\n// access_key_id of this backend.\n//\n// - If access_key_id is set, we will take user's input first.\n// - If not, we will try to load it from environment.\n// config.put(\"access_key_id\", \"...\");\n\n// secret_access_key of this backend.\n//\n// - If secret_access_key is set, we will take user's input first.\n// - If not, we will try to load it from environment.\n// config.put(\"secret_access_key\", \"...\");\n\n// security_token of this backend.\n//\n// This token will expire after sometime, it's recommended to set security_token\n// by hand.\n// config.put(\"security_token\", \"...\");\n\n// Disable config load so that opendal will not load config from\n// environment.\n//\n// For examples:\n// - envs like `TOS_ACCESS_KEY_ID`\n// config.put(\"disable_config_load\", \"true\");\n\n// Skip signature will skip loading credentials and signing requests.\n// config.put(\"skip_signature\", \"true\");\nOperator operator = Operator.of(\"tos\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"tos\",\n bucket=\"...\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"tos\",\n # root of this backend.\n #\n # All operations will happen under this root.\n #\n # default to `/` if not set.\n # root=\"...\",\n\n # bucket name of this backend.\n #\n # required.\n bucket=\"...\",\n\n # endpoint of this backend.\n #\n # Endpoint must be full uri, e.g.\n # - TOS: `https://tos-cn-beijing.volces.com`\n # - TOS with region: `https://tos-{region}.volces.com`\n #\n # If user inputs endpoint without scheme like \"tos-cn-beijing.volces.com\", we\n # will prepend \"https://\" before it.\n # endpoint=\"...\",\n\n # Region represent the signing region of this endpoint.\n #\n # Required if endpoint is not provided.\n #\n # - If region is set, we will take user's input first.\n # - If not, we will try to load it from environment.\n # - If still not set, default to `cn-beijing`.\n # region=\"...\",\n\n # access_key_id of this backend.\n #\n # - If access_key_id is set, we will take user's input first.\n # - If not, we will try to load it from environment.\n # access_key_id=\"...\",\n\n # secret_access_key of this backend.\n #\n # - If secret_access_key is set, we will take user's input first.\n # - If not, we will try to load it from environment.\n # secret_access_key=\"...\",\n\n # security_token of this backend.\n #\n # This token will expire after sometime, it's recommended to set security_token\n # by hand.\n # security_token=\"...\",\n\n # Disable config load so that opendal will not load config from\n # environment.\n #\n # For examples:\n # - envs like `TOS_ACCESS_KEY_ID`\n # disable_config_load=\"true\",\n\n # Skip signature will skip loading credentials and signing requests.\n # skip_signature=\"true\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"tos\", {\n bucket: \"...\",\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"tos\", {\n // root of this backend.\n //\n // All operations will happen under this root.\n //\n // default to `/` if not set.\n // root: \"...\",\n\n // bucket name of this backend.\n //\n // required.\n bucket: \"...\",\n\n // endpoint of this backend.\n //\n // Endpoint must be full uri, e.g.\n // - TOS: `https://tos-cn-beijing.volces.com`\n // - TOS with region: `https://tos-{region}.volces.com`\n //\n // If user inputs endpoint without scheme like \"tos-cn-beijing.volces.com\", we\n // will prepend \"https://\" before it.\n // endpoint: \"...\",\n\n // Region represent the signing region of this endpoint.\n //\n // Required if endpoint is not provided.\n //\n // - If region is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // - If still not set, default to `cn-beijing`.\n // region: \"...\",\n\n // access_key_id of this backend.\n //\n // - If access_key_id is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // access_key_id: \"...\",\n\n // secret_access_key of this backend.\n //\n // - If secret_access_key is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // secret_access_key: \"...\",\n\n // security_token of this backend.\n //\n // This token will expire after sometime, it's recommended to set security_token\n // by hand.\n // security_token: \"...\",\n\n // Disable config load so that opendal will not load config from\n // environment.\n //\n // For examples:\n // - envs like `TOS_ACCESS_KEY_ID`\n // disable_config_load: \"true\",\n\n // Skip signature will skip loading credentials and signing requests.\n // skip_signature: \"true\",\n});"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/tos\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(tos.Scheme, opendal.OperatorOptions{\n\t\"bucket\": \"...\",\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/tos\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(tos.Scheme, opendal.OperatorOptions{\n\t// root of this backend.\n\t//\n\t// All operations will happen under this root.\n\t//\n\t// default to `/` if not set.\n\t// \"root\": \"...\",\n\n\t// bucket name of this backend.\n\t//\n\t// required.\n\t\"bucket\": \"...\",\n\n\t// endpoint of this backend.\n\t//\n\t// Endpoint must be full uri, e.g.\n\t// - TOS: `https://tos-cn-beijing.volces.com`\n\t// - TOS with region: `https://tos-{region}.volces.com`\n\t//\n\t// If user inputs endpoint without scheme like \"tos-cn-beijing.volces.com\", we\n\t// will prepend \"https://\" before it.\n\t// \"endpoint\": \"...\",\n\n\t// Region represent the signing region of this endpoint.\n\t//\n\t// Required if endpoint is not provided.\n\t//\n\t// - If region is set, we will take user's input first.\n\t// - If not, we will try to load it from environment.\n\t// - If still not set, default to `cn-beijing`.\n\t// \"region\": \"...\",\n\n\t// access_key_id of this backend.\n\t//\n\t// - If access_key_id is set, we will take user's input first.\n\t// - If not, we will try to load it from environment.\n\t// \"access_key_id\": \"...\",\n\n\t// secret_access_key of this backend.\n\t//\n\t// - If secret_access_key is set, we will take user's input first.\n\t// - If not, we will try to load it from environment.\n\t// \"secret_access_key\": \"...\",\n\n\t// security_token of this backend.\n\t//\n\t// This token will expire after sometime, it's recommended to set security_token\n\t// by hand.\n\t// \"security_token\": \"...\",\n\n\t// Disable config load so that opendal will not load config from\n\t// environment.\n\t//\n\t// For examples:\n\t// - envs like `TOS_ACCESS_KEY_ID`\n\t// \"disable_config_load\": \"true\",\n\n\t// Skip signature will skip loading credentials and signing requests.\n\t// \"skip_signature\": \"true\",\n})"
}
]
},
{
"name": "upyun",
"scheme": "upyun",
"groups": [
"General"
],
"configs": [
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "root of this backend.\n\nAll operations will happen under this root."
},
{
"name": "bucket",
"type": "string",
"required": true,
"group": "General",
"comments": "bucket address of this backend."
},
{
"name": "operator",
"type": "string",
"required": false,
"group": "General",
"comments": "username of this backend."
},
{
"name": "password",
"type": "string",
"required": false,
"group": "General",
"comments": "password of this backend."
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"upyun\", [\n (\"bucket\".to_string(), \"...\".to_string()),\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"upyun\", [\n // root of this backend.\n //\n // All operations will happen under this root.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // bucket address of this backend.\n (\"bucket\".to_string(), \"...\".to_string()),\n\n // username of this backend.\n // (\"operator\".to_string(), \"...\".to_string()),\n\n // password of this backend.\n // (\"password\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nconfig.put(\"bucket\", \"...\");\nOperator operator = Operator.of(\"upyun\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// root of this backend.\n//\n// All operations will happen under this root.\n// config.put(\"root\", \"...\");\n\n// bucket address of this backend.\nconfig.put(\"bucket\", \"...\");\n\n// username of this backend.\n// config.put(\"operator\", \"...\");\n\n// password of this backend.\n// config.put(\"password\", \"...\");\nOperator operator = Operator.of(\"upyun\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"upyun\",\n bucket=\"...\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"upyun\",\n # root of this backend.\n #\n # All operations will happen under this root.\n # root=\"...\",\n\n # bucket address of this backend.\n bucket=\"...\",\n\n # username of this backend.\n # operator=\"...\",\n\n # password of this backend.\n # password=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"upyun\", {\n bucket: \"...\",\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"upyun\", {\n // root of this backend.\n //\n // All operations will happen under this root.\n // root: \"...\",\n\n // bucket address of this backend.\n bucket: \"...\",\n\n // username of this backend.\n // operator: \"...\",\n\n // password of this backend.\n // password: \"...\",\n});"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/upyun\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(upyun.Scheme, opendal.OperatorOptions{\n\t\"bucket\": \"...\",\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/upyun\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(upyun.Scheme, opendal.OperatorOptions{\n\t// root of this backend.\n\t//\n\t// All operations will happen under this root.\n\t// \"root\": \"...\",\n\n\t// bucket address of this backend.\n\t\"bucket\": \"...\",\n\n\t// username of this backend.\n\t// \"operator\": \"...\",\n\n\t// password of this backend.\n\t// \"password\": \"...\",\n})"
}
]
},
{
"name": "vercel-artifacts",
"scheme": "vercel-artifacts",
"groups": [
"General"
],
"configs": [
{
"name": "access_token",
"type": "string",
"required": false,
"group": "General",
"comments": "The access token for Vercel."
},
{
"name": "endpoint",
"type": "string",
"required": false,
"group": "General",
"comments": "The endpoint for the Vercel artifacts API.\n\nDefaults to `https://api.vercel.com`."
},
{
"name": "team_id",
"type": "string",
"required": false,
"group": "General",
"comments": "The Vercel team ID. When set, the `teamId` query parameter\nis appended to all API requests."
},
{
"name": "team_slug",
"type": "string",
"required": false,
"group": "General",
"comments": "The Vercel team slug. When set, the `slug` query parameter\nis appended to all API requests."
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"vercel-artifacts\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"vercel-artifacts\", [\n // The access token for Vercel.\n // (\"access_token\".to_string(), \"...\".to_string()),\n\n // The endpoint for the Vercel artifacts API.\n //\n // Defaults to `https://api.vercel.com`.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // The Vercel team ID. When set, the `teamId` query parameter\n // is appended to all API requests.\n // (\"team_id\".to_string(), \"...\".to_string()),\n\n // The Vercel team slug. When set, the `slug` query parameter\n // is appended to all API requests.\n // (\"team_slug\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nOperator operator = Operator.of(\"vercel-artifacts\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// The access token for Vercel.\n// config.put(\"access_token\", \"...\");\n\n// The endpoint for the Vercel artifacts API.\n//\n// Defaults to `https://api.vercel.com`.\n// config.put(\"endpoint\", \"...\");\n\n// The Vercel team ID. When set, the `teamId` query parameter\n// is appended to all API requests.\n// config.put(\"team_id\", \"...\");\n\n// The Vercel team slug. When set, the `slug` query parameter\n// is appended to all API requests.\n// config.put(\"team_slug\", \"...\");\nOperator operator = Operator.of(\"vercel-artifacts\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"vercel-artifacts\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"vercel-artifacts\",\n # The access token for Vercel.\n # access_token=\"...\",\n\n # The endpoint for the Vercel artifacts API.\n #\n # Defaults to `https://api.vercel.com`.\n # endpoint=\"...\",\n\n # The Vercel team ID. When set, the `teamId` query parameter\n # is appended to all API requests.\n # team_id=\"...\",\n\n # The Vercel team slug. When set, the `slug` query parameter\n # is appended to all API requests.\n # team_slug=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"vercel-artifacts\", {\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"vercel-artifacts\", {\n // The access token for Vercel.\n // access_token: \"...\",\n\n // The endpoint for the Vercel artifacts API.\n //\n // Defaults to `https://api.vercel.com`.\n // endpoint: \"...\",\n\n // The Vercel team ID. When set, the `teamId` query parameter\n // is appended to all API requests.\n // team_id: \"...\",\n\n // The Vercel team slug. When set, the `slug` query parameter\n // is appended to all API requests.\n // team_slug: \"...\",\n});"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/vercel-artifacts\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(vercel-artifacts.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/vercel-artifacts\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(vercel-artifacts.Scheme, opendal.OperatorOptions{\n\t// The access token for Vercel.\n\t// \"access_token\": \"...\",\n\n\t// The endpoint for the Vercel artifacts API.\n\t//\n\t// Defaults to `https://api.vercel.com`.\n\t// \"endpoint\": \"...\",\n\n\t// The Vercel team ID. When set, the `teamId` query parameter\n\t// is appended to all API requests.\n\t// \"team_id\": \"...\",\n\n\t// The Vercel team slug. When set, the `slug` query parameter\n\t// is appended to all API requests.\n\t// \"team_slug\": \"...\",\n})"
}
]
},
{
"name": "vercel-blob",
"scheme": "vercel-blob",
"groups": [
"General"
],
"configs": [
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "root of this backend.\n\nAll operations will happen under this root."
},
{
"name": "token",
"type": "string",
"required": false,
"group": "General",
"comments": "vercel blob token."
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"vercel-blob\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"vercel-blob\", [\n // root of this backend.\n //\n // All operations will happen under this root.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // vercel blob token.\n // (\"token\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"vercel-blob\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"vercel-blob\",\n # root of this backend.\n #\n # All operations will happen under this root.\n # root=\"...\",\n\n # vercel blob token.\n # token=\"...\",\n)"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/vercel-blob\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(vercel-blob.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/vercel-blob\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(vercel-blob.Scheme, opendal.OperatorOptions{\n\t// root of this backend.\n\t//\n\t// All operations will happen under this root.\n\t// \"root\": \"...\",\n\n\t// vercel blob token.\n\t// \"token\": \"...\",\n})"
}
]
},
{
"name": "webdav",
"scheme": "webdav",
"groups": [
"General"
],
"configs": [
{
"name": "endpoint",
"type": "string",
"required": false,
"group": "General",
"comments": "endpoint of this backend"
},
{
"name": "username",
"type": "string",
"required": false,
"group": "General",
"comments": "username of this backend"
},
{
"name": "password",
"type": "string",
"required": false,
"group": "General",
"comments": "password of this backend"
},
{
"name": "token",
"type": "string",
"required": false,
"group": "General",
"comments": "token of this backend"
},
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "root of this backend"
},
{
"name": "disable_copy",
"type": "bool",
"required": false,
"group": "General",
"deprecated": {
"since": "0.57.0",
"note": "WebDAV copy capability is enabled by default and this option is no longer needed."
},
"comments": "Deprecated: WebDAV copy capability is enabled by default."
},
{
"name": "disable_create_dir",
"type": "bool",
"required": false,
"group": "General",
"comments": "Disable automatic parent directory creation before write operations.\n\nBy default, OpenDAL creates parent directories using MKCOL before writing files.\nThis requires PROPFIND support to check directory existence.\n\nSome WebDAV-compatible servers (e.g., bazel-remote) don't support PROPFIND\nor don't require explicit directory creation. Enable this option to skip\nthe MKCOL calls and write files directly.\n\nDefault: false"
},
{
"name": "enable_user_metadata",
"type": "bool",
"required": false,
"group": "General",
"deprecated": {
"since": "0.57.0",
"note": "WebDAV user metadata capability is enabled by default. Use CapabilityOverrideLayer to override write_with_user_metadata for endpoints without PROPPATCH support."
},
"comments": "Deprecated: WebDAV user metadata capability is enabled by default."
},
{
"name": "user_metadata_prefix",
"type": "string",
"required": false,
"group": "General",
"comments": "The XML namespace prefix for user metadata properties.\n\nThis prefix is used in PROPPATCH/PROPFIND XML requests.\nDifferent servers may require different prefixes.\n\nDefault: \"opendal\""
},
{
"name": "user_metadata_uri",
"type": "string",
"required": false,
"group": "General",
"comments": "The XML namespace URI for user metadata properties.\n\nThis URI uniquely identifies the namespace for custom properties.\nDifferent servers may require different namespace URIs.\nFor example, Nextcloud might work better with its own namespace.\n\nDefault: `https://opendal.apache.org/ns`"
},
{
"name": "enable_conditional_read",
"type": "bool",
"required": false,
"group": "General",
"comments": "Enable conditional read support.\n\nWhen enabled (the default), OpenDAL forwards the RFC 7232 headers\n`If-Match`, `If-None-Match`, `If-Modified-Since` and\n`If-Unmodified-Since` to the server when callers provide them.\n\nSome WebDAV-compatible servers (e.g., nginx-dav) don't return ETags\nin PROPFIND or don't honor these headers on GET. Setting this to\n`false` drops the four `read_with_if_*` capabilities, so calls like\n`reader_with(path).if_match(...)` return `ErrorKind::Unsupported`\nlocally instead of being silently ignored by the server.\n\nDefault: true"
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"webdav\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"webdav\", [\n // endpoint of this backend\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // username of this backend\n // (\"username\".to_string(), \"...\".to_string()),\n\n // password of this backend\n // (\"password\".to_string(), \"...\".to_string()),\n\n // token of this backend\n // (\"token\".to_string(), \"...\".to_string()),\n\n // root of this backend\n // (\"root\".to_string(), \"...\".to_string()),\n\n // Disable automatic parent directory creation before write operations.\n //\n // By default, OpenDAL creates parent directories using MKCOL before writing files.\n // This requires PROPFIND support to check directory existence.\n //\n // Some WebDAV-compatible servers (e.g., bazel-remote) don't support PROPFIND\n // or don't require explicit directory creation. Enable this option to skip\n // the MKCOL calls and write files directly.\n //\n // Default: false\n // (\"disable_create_dir\".to_string(), \"true\".to_string()),\n\n // The XML namespace prefix for user metadata properties.\n //\n // This prefix is used in PROPPATCH/PROPFIND XML requests.\n // Different servers may require different prefixes.\n //\n // Default: \"opendal\"\n // (\"user_metadata_prefix\".to_string(), \"...\".to_string()),\n\n // The XML namespace URI for user metadata properties.\n //\n // This URI uniquely identifies the namespace for custom properties.\n // Different servers may require different namespace URIs.\n // For example, Nextcloud might work better with its own namespace.\n //\n // Default: `https://opendal.apache.org/ns`\n // (\"user_metadata_uri\".to_string(), \"...\".to_string()),\n\n // Enable conditional read support.\n //\n // When enabled (the default), OpenDAL forwards the RFC 7232 headers\n // `If-Match`, `If-None-Match`, `If-Modified-Since` and\n // `If-Unmodified-Since` to the server when callers provide them.\n //\n // Some WebDAV-compatible servers (e.g., nginx-dav) don't return ETags\n // in PROPFIND or don't honor these headers on GET. Setting this to\n // `false` drops the four `read_with_if_*` capabilities, so calls like\n // `reader_with(path).if_match(...)` return `ErrorKind::Unsupported`\n // locally instead of being silently ignored by the server.\n //\n // Default: true\n // (\"enable_conditional_read\".to_string(), \"true\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nOperator operator = Operator.of(\"webdav\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// endpoint of this backend\n// config.put(\"endpoint\", \"...\");\n\n// username of this backend\n// config.put(\"username\", \"...\");\n\n// password of this backend\n// config.put(\"password\", \"...\");\n\n// token of this backend\n// config.put(\"token\", \"...\");\n\n// root of this backend\n// config.put(\"root\", \"...\");\n\n// Disable automatic parent directory creation before write operations.\n//\n// By default, OpenDAL creates parent directories using MKCOL before writing files.\n// This requires PROPFIND support to check directory existence.\n//\n// Some WebDAV-compatible servers (e.g., bazel-remote) don't support PROPFIND\n// or don't require explicit directory creation. Enable this option to skip\n// the MKCOL calls and write files directly.\n//\n// Default: false\n// config.put(\"disable_create_dir\", \"true\");\n\n// The XML namespace prefix for user metadata properties.\n//\n// This prefix is used in PROPPATCH/PROPFIND XML requests.\n// Different servers may require different prefixes.\n//\n// Default: \"opendal\"\n// config.put(\"user_metadata_prefix\", \"...\");\n\n// The XML namespace URI for user metadata properties.\n//\n// This URI uniquely identifies the namespace for custom properties.\n// Different servers may require different namespace URIs.\n// For example, Nextcloud might work better with its own namespace.\n//\n// Default: `https://opendal.apache.org/ns`\n// config.put(\"user_metadata_uri\", \"...\");\n\n// Enable conditional read support.\n//\n// When enabled (the default), OpenDAL forwards the RFC 7232 headers\n// `If-Match`, `If-None-Match`, `If-Modified-Since` and\n// `If-Unmodified-Since` to the server when callers provide them.\n//\n// Some WebDAV-compatible servers (e.g., nginx-dav) don't return ETags\n// in PROPFIND or don't honor these headers on GET. Setting this to\n// `false` drops the four `read_with_if_*` capabilities, so calls like\n// `reader_with(path).if_match(...)` return `ErrorKind::Unsupported`\n// locally instead of being silently ignored by the server.\n//\n// Default: true\n// config.put(\"enable_conditional_read\", \"true\");\nOperator operator = Operator.of(\"webdav\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"webdav\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"webdav\",\n # endpoint of this backend\n # endpoint=\"...\",\n\n # username of this backend\n # username=\"...\",\n\n # password of this backend\n # password=\"...\",\n\n # token of this backend\n # token=\"...\",\n\n # root of this backend\n # root=\"...\",\n\n # Disable automatic parent directory creation before write operations.\n #\n # By default, OpenDAL creates parent directories using MKCOL before writing files.\n # This requires PROPFIND support to check directory existence.\n #\n # Some WebDAV-compatible servers (e.g., bazel-remote) don't support PROPFIND\n # or don't require explicit directory creation. Enable this option to skip\n # the MKCOL calls and write files directly.\n #\n # Default: false\n # disable_create_dir=\"true\",\n\n # The XML namespace prefix for user metadata properties.\n #\n # This prefix is used in PROPPATCH/PROPFIND XML requests.\n # Different servers may require different prefixes.\n #\n # Default: \"opendal\"\n # user_metadata_prefix=\"...\",\n\n # The XML namespace URI for user metadata properties.\n #\n # This URI uniquely identifies the namespace for custom properties.\n # Different servers may require different namespace URIs.\n # For example, Nextcloud might work better with its own namespace.\n #\n # Default: `https://opendal.apache.org/ns`\n # user_metadata_uri=\"...\",\n\n # Enable conditional read support.\n #\n # When enabled (the default), OpenDAL forwards the RFC 7232 headers\n # `If-Match`, `If-None-Match`, `If-Modified-Since` and\n # `If-Unmodified-Since` to the server when callers provide them.\n #\n # Some WebDAV-compatible servers (e.g., nginx-dav) don't return ETags\n # in PROPFIND or don't honor these headers on GET. Setting this to\n # `false` drops the four `read_with_if_*` capabilities, so calls like\n # `reader_with(path).if_match(...)` return `ErrorKind::Unsupported`\n # locally instead of being silently ignored by the server.\n #\n # Default: true\n # enable_conditional_read=\"true\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"webdav\", {\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"webdav\", {\n // endpoint of this backend\n // endpoint: \"...\",\n\n // username of this backend\n // username: \"...\",\n\n // password of this backend\n // password: \"...\",\n\n // token of this backend\n // token: \"...\",\n\n // root of this backend\n // root: \"...\",\n\n // Disable automatic parent directory creation before write operations.\n //\n // By default, OpenDAL creates parent directories using MKCOL before writing files.\n // This requires PROPFIND support to check directory existence.\n //\n // Some WebDAV-compatible servers (e.g., bazel-remote) don't support PROPFIND\n // or don't require explicit directory creation. Enable this option to skip\n // the MKCOL calls and write files directly.\n //\n // Default: false\n // disable_create_dir: \"true\",\n\n // The XML namespace prefix for user metadata properties.\n //\n // This prefix is used in PROPPATCH/PROPFIND XML requests.\n // Different servers may require different prefixes.\n //\n // Default: \"opendal\"\n // user_metadata_prefix: \"...\",\n\n // The XML namespace URI for user metadata properties.\n //\n // This URI uniquely identifies the namespace for custom properties.\n // Different servers may require different namespace URIs.\n // For example, Nextcloud might work better with its own namespace.\n //\n // Default: `https://opendal.apache.org/ns`\n // user_metadata_uri: \"...\",\n\n // Enable conditional read support.\n //\n // When enabled (the default), OpenDAL forwards the RFC 7232 headers\n // `If-Match`, `If-None-Match`, `If-Modified-Since` and\n // `If-Unmodified-Since` to the server when callers provide them.\n //\n // Some WebDAV-compatible servers (e.g., nginx-dav) don't return ETags\n // in PROPFIND or don't honor these headers on GET. Setting this to\n // `false` drops the four `read_with_if_*` capabilities, so calls like\n // `reader_with(path).if_match(...)` return `ErrorKind::Unsupported`\n // locally instead of being silently ignored by the server.\n //\n // Default: true\n // enable_conditional_read: \"true\",\n});"
},
{
"binding": "ruby",
"language": "ruby",
"minimal": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"webdav\", {\n})",
"full": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"webdav\", {\n # endpoint of this backend\n # \"endpoint\" => \"...\",\n\n # username of this backend\n # \"username\" => \"...\",\n\n # password of this backend\n # \"password\" => \"...\",\n\n # token of this backend\n # \"token\" => \"...\",\n\n # root of this backend\n # \"root\" => \"...\",\n\n # Disable automatic parent directory creation before write operations.\n #\n # By default, OpenDAL creates parent directories using MKCOL before writing files.\n # This requires PROPFIND support to check directory existence.\n #\n # Some WebDAV-compatible servers (e.g., bazel-remote) don't support PROPFIND\n # or don't require explicit directory creation. Enable this option to skip\n # the MKCOL calls and write files directly.\n #\n # Default: false\n # \"disable_create_dir\" => \"true\",\n\n # The XML namespace prefix for user metadata properties.\n #\n # This prefix is used in PROPPATCH/PROPFIND XML requests.\n # Different servers may require different prefixes.\n #\n # Default: \"opendal\"\n # \"user_metadata_prefix\" => \"...\",\n\n # The XML namespace URI for user metadata properties.\n #\n # This URI uniquely identifies the namespace for custom properties.\n # Different servers may require different namespace URIs.\n # For example, Nextcloud might work better with its own namespace.\n #\n # Default: `https://opendal.apache.org/ns`\n # \"user_metadata_uri\" => \"...\",\n\n # Enable conditional read support.\n #\n # When enabled (the default), OpenDAL forwards the RFC 7232 headers\n # `If-Match`, `If-None-Match`, `If-Modified-Since` and\n # `If-Unmodified-Since` to the server when callers provide them.\n #\n # Some WebDAV-compatible servers (e.g., nginx-dav) don't return ETags\n # in PROPFIND or don't honor these headers on GET. Setting this to\n # `false` drops the four `read_with_if_*` capabilities, so calls like\n # `reader_with(path).if_match(...)` return `ErrorKind::Unsupported`\n # locally instead of being silently ignored by the server.\n #\n # Default: true\n # \"enable_conditional_read\" => \"true\",\n})"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/webdav\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(webdav.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/webdav\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(webdav.Scheme, opendal.OperatorOptions{\n\t// endpoint of this backend\n\t// \"endpoint\": \"...\",\n\n\t// username of this backend\n\t// \"username\": \"...\",\n\n\t// password of this backend\n\t// \"password\": \"...\",\n\n\t// token of this backend\n\t// \"token\": \"...\",\n\n\t// root of this backend\n\t// \"root\": \"...\",\n\n\t// Disable automatic parent directory creation before write operations.\n\t//\n\t// By default, OpenDAL creates parent directories using MKCOL before writing files.\n\t// This requires PROPFIND support to check directory existence.\n\t//\n\t// Some WebDAV-compatible servers (e.g., bazel-remote) don't support PROPFIND\n\t// or don't require explicit directory creation. Enable this option to skip\n\t// the MKCOL calls and write files directly.\n\t//\n\t// Default: false\n\t// \"disable_create_dir\": \"true\",\n\n\t// The XML namespace prefix for user metadata properties.\n\t//\n\t// This prefix is used in PROPPATCH/PROPFIND XML requests.\n\t// Different servers may require different prefixes.\n\t//\n\t// Default: \"opendal\"\n\t// \"user_metadata_prefix\": \"...\",\n\n\t// The XML namespace URI for user metadata properties.\n\t//\n\t// This URI uniquely identifies the namespace for custom properties.\n\t// Different servers may require different namespace URIs.\n\t// For example, Nextcloud might work better with its own namespace.\n\t//\n\t// Default: `https://opendal.apache.org/ns`\n\t// \"user_metadata_uri\": \"...\",\n\n\t// Enable conditional read support.\n\t//\n\t// When enabled (the default), OpenDAL forwards the RFC 7232 headers\n\t// `If-Match`, `If-None-Match`, `If-Modified-Since` and\n\t// `If-Unmodified-Since` to the server when callers provide them.\n\t//\n\t// Some WebDAV-compatible servers (e.g., nginx-dav) don't return ETags\n\t// in PROPFIND or don't honor these headers on GET. Setting this to\n\t// `false` drops the four `read_with_if_*` capabilities, so calls like\n\t// `reader_with(path).if_match(...)` return `ErrorKind::Unsupported`\n\t// locally instead of being silently ignored by the server.\n\t//\n\t// Default: true\n\t// \"enable_conditional_read\": \"true\",\n})"
}
]
},
{
"name": "webhdfs",
"scheme": "webhdfs",
"groups": [
"General"
],
"configs": [
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "Root for webhdfs."
},
{
"name": "endpoint",
"type": "string",
"required": false,
"group": "General",
"comments": "Endpoint for webhdfs."
},
{
"name": "user_name",
"type": "string",
"required": false,
"group": "General",
"comments": "Name of the user for webhdfs."
},
{
"name": "delegation",
"type": "string",
"required": false,
"group": "General",
"comments": "Delegation token for webhdfs."
},
{
"name": "disable_list_batch",
"type": "bool",
"required": false,
"group": "General",
"comments": "Disable batch listing"
},
{
"name": "atomic_write_dir",
"type": "string",
"required": false,
"group": "General",
"comments": "atomic_write_dir of this backend"
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"webhdfs\", [\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"webhdfs\", [\n // Root for webhdfs.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // Endpoint for webhdfs.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // Name of the user for webhdfs.\n // (\"user_name\".to_string(), \"...\".to_string()),\n\n // Delegation token for webhdfs.\n // (\"delegation\".to_string(), \"...\".to_string()),\n\n // Disable batch listing\n // (\"disable_list_batch\".to_string(), \"true\".to_string()),\n\n // atomic_write_dir of this backend\n // (\"atomic_write_dir\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nOperator operator = Operator.of(\"webhdfs\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// Root for webhdfs.\n// config.put(\"root\", \"...\");\n\n// Endpoint for webhdfs.\n// config.put(\"endpoint\", \"...\");\n\n// Name of the user for webhdfs.\n// config.put(\"user_name\", \"...\");\n\n// Delegation token for webhdfs.\n// config.put(\"delegation\", \"...\");\n\n// Disable batch listing\n// config.put(\"disable_list_batch\", \"true\");\n\n// atomic_write_dir of this backend\n// config.put(\"atomic_write_dir\", \"...\");\nOperator operator = Operator.of(\"webhdfs\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"webhdfs\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"webhdfs\",\n # Root for webhdfs.\n # root=\"...\",\n\n # Endpoint for webhdfs.\n # endpoint=\"...\",\n\n # Name of the user for webhdfs.\n # user_name=\"...\",\n\n # Delegation token for webhdfs.\n # delegation=\"...\",\n\n # Disable batch listing\n # disable_list_batch=\"true\",\n\n # atomic_write_dir of this backend\n # atomic_write_dir=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"webhdfs\", {\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"webhdfs\", {\n // Root for webhdfs.\n // root: \"...\",\n\n // Endpoint for webhdfs.\n // endpoint: \"...\",\n\n // Name of the user for webhdfs.\n // user_name: \"...\",\n\n // Delegation token for webhdfs.\n // delegation: \"...\",\n\n // Disable batch listing\n // disable_list_batch: \"true\",\n\n // atomic_write_dir of this backend\n // atomic_write_dir: \"...\",\n});"
},
{
"binding": "ruby",
"language": "ruby",
"minimal": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"webhdfs\", {\n})",
"full": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"webhdfs\", {\n # Root for webhdfs.\n # \"root\" => \"...\",\n\n # Endpoint for webhdfs.\n # \"endpoint\" => \"...\",\n\n # Name of the user for webhdfs.\n # \"user_name\" => \"...\",\n\n # Delegation token for webhdfs.\n # \"delegation\" => \"...\",\n\n # Disable batch listing\n # \"disable_list_batch\" => \"true\",\n\n # atomic_write_dir of this backend\n # \"atomic_write_dir\" => \"...\",\n})"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/webhdfs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(webhdfs.Scheme, opendal.OperatorOptions{\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/webhdfs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(webhdfs.Scheme, opendal.OperatorOptions{\n\t// Root for webhdfs.\n\t// \"root\": \"...\",\n\n\t// Endpoint for webhdfs.\n\t// \"endpoint\": \"...\",\n\n\t// Name of the user for webhdfs.\n\t// \"user_name\": \"...\",\n\n\t// Delegation token for webhdfs.\n\t// \"delegation\": \"...\",\n\n\t// Disable batch listing\n\t// \"disable_list_batch\": \"true\",\n\n\t// atomic_write_dir of this backend\n\t// \"atomic_write_dir\": \"...\",\n})"
}
]
},
{
"name": "yandex-disk",
"scheme": "yandex-disk",
"groups": [
"General"
],
"configs": [
{
"name": "root",
"type": "string",
"required": false,
"group": "General",
"comments": "root of this backend.\n\nAll operations will happen under this root."
},
{
"name": "access_token",
"type": "string",
"required": true,
"group": "General",
"comments": "yandex disk oauth access_token."
}
],
"examples": [
{
"binding": "rust",
"language": "rust",
"minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"yandex-disk\", [\n (\"access_token\".to_string(), \"...\".to_string()),\n])?;",
"full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"yandex-disk\", [\n // root of this backend.\n //\n // All operations will happen under this root.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // yandex disk oauth access_token.\n (\"access_token\".to_string(), \"...\".to_string()),\n])?;"
},
{
"binding": "java",
"language": "java",
"minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\nconfig.put(\"access_token\", \"...\");\nOperator operator = Operator.of(\"yandex-disk\", config);",
"full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap<String, String> config = new HashMap<>();\n// root of this backend.\n//\n// All operations will happen under this root.\n// config.put(\"root\", \"...\");\n\n// yandex disk oauth access_token.\nconfig.put(\"access_token\", \"...\");\nOperator operator = Operator.of(\"yandex-disk\", config);"
},
{
"binding": "python",
"language": "python",
"minimal": "import opendal\n\noperator = opendal.Operator(\n \"yandex-disk\",\n access_token=\"...\",\n)",
"full": "import opendal\n\noperator = opendal.Operator(\n \"yandex-disk\",\n # root of this backend.\n #\n # All operations will happen under this root.\n # root=\"...\",\n\n # yandex disk oauth access_token.\n access_token=\"...\",\n)"
},
{
"binding": "nodejs",
"language": "javascript",
"minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"yandex-disk\", {\n access_token: \"...\",\n});",
"full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"yandex-disk\", {\n // root of this backend.\n //\n // All operations will happen under this root.\n // root: \"...\",\n\n // yandex disk oauth access_token.\n access_token: \"...\",\n});"
},
{
"binding": "go",
"language": "go",
"minimal": "import (\n\t\"github.com/apache/opendal-go-services/yandex-disk\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(yandex-disk.Scheme, opendal.OperatorOptions{\n\t\"access_token\": \"...\",\n})",
"full": "import (\n\t\"github.com/apache/opendal-go-services/yandex-disk\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(yandex-disk.Scheme, opendal.OperatorOptions{\n\t// root of this backend.\n\t//\n\t// All operations will happen under this root.\n\t// \"root\": \"...\",\n\n\t// yandex disk oauth access_token.\n\t\"access_token\": \"...\",\n})"
}
]
}
]
}