{"openapi":"3.0.0","info":{"title":"OVHcloud API specification","description":"Specification for OVHcloud API","version":"1.0","contact":{"name":"OVH","email":"api@ml.ovh.net"}},"servers":[{"url":"https://api.eu.ovhcloud.com/v2"}],"components":{"schemas":{"any":{"description":"Can be anything (text, int, bool, json, html, etc.)","example":"This is a content of any type !"},"common.CurrentTask":{"type":"object","description":"Asynchronous operation currently running","properties":{"errors":{"type":"array","description":"Errors that occurred on the task","nullable":true,"items":{"$ref":"#/components/schemas/common.TaskError"},"readOnly":true},"id":{"type":"string","description":"Identifier of the current task","format":"uuid","readOnly":true},"link":{"type":"string","description":"Link to the task details","readOnly":true},"status":{"allOf":[{"$ref":"#/components/schemas/common.CurrentTaskStatusEnum"}],"description":"Current global status of the current task","nullable":true,"readOnly":true},"type":{"type":"string","description":"Type of the current task","readOnly":true}}},"common.CurrentTaskStatusEnum":{"type":"string","description":"Current status of a task. A task in ERROR cannot be retried without your inputs. PENDING tasks will be executed as soon as possible. A RUNNING task is currently executing your original request. SCHEDULED is used for tasks that will be executed in the future.","enum":["ERROR","PENDING","RUNNING","SCHEDULED","WAITING_USER_INPUT"]},"common.ResourceStatusEnum":{"type":"string","description":"Current status of a resource","enum":["CREATING","CREATION_PLANNED","DELETING","ERROR","OUT_OF_SYNC","READY","SUSPENDED","UNKNOWN","UPDATING"]},"common.TaskError":{"type":"object","description":"Errors that occurred on the task","properties":{"message":{"type":"string","description":"Error description","readOnly":true}}},"duration":{"type":"string","description":"Duration (e.g., P1Y2M3DT4H6M9S)","example":"P1Y2M3DT4H6M9S"},"email":{"type":"string","description":"Email address (e.g., api@ml.ovh.net)","format":"email","example":"api@ml.ovh.net"},"internationalPhoneNumber":{"type":"string","description":"International phone number","format":"phone-number"},"ip":{"type":"string","description":"IP address (e.g., 192.0.2.0)","format":"ipv4","example":"192.0.2.0"},"ipBlock":{"type":"string","description":"IP (v4 or v6) CIDR notation (e.g., 192.0.2.0/24)","format":"ip-block","example":"192.0.2.0/24"},"ipInterface":{"type":"string","description":"IP address (e.g., 192.0.2.0)","format":"ipv4","example":"192.0.2.0"},"ipv4":{"type":"string","description":"IPv4 address (e.g., 192.0.2.0)","format":"ipv4","example":"192.0.2.0"},"ipv4Block":{"type":"string","description":"IPv4 CIDR notation (e.g., 192.0.2.0/24)","format":"ipv4-block","example":"192.0.2.0/24"},"ipv6":{"type":"string","description":"IPv6 address (e.g., 2001:41d0:1:1994::1)","format":"ipv6","example":"2001:41d0:1:1994::1"},"ipv6Block":{"type":"string","description":"IPv6 CIDR notation (e.g., 2001:41d0::/128)","format":"ipv6-block","example":"2001:41d0::/128"},"macAddress":{"type":"string","description":"MAC address (e.g., 00:00:5e:00:53:01)","format":"mac-address","example":"00:00:5e:00:53:01"},"phoneNumber":{"type":"string","description":"Phone number","format":"phone-number"},"publicCloud.common.Location":{"type":"object","description":"Resource location","properties":{"availabilityZone":{"type":"string","description":"Availability zone within the region","nullable":true},"region":{"type":"string","description":"Region code"}},"required":["region"]},"publicCloud.storage.file.FileStorage":{"type":"object","description":"A Public Cloud file storage (NFS share)","properties":{"checksum":{"type":"string","description":"Computed hash representing the current target specification value","readOnly":true},"createdAt":{"type":"string","description":"Creation date of the file storage","format":"date-time","readOnly":true},"currentState":{"allOf":[{"$ref":"#/components/schemas/publicCloud.storage.file.FileStorageCurrentState"}],"description":"Current observed state of the file storage from the infrastructure","nullable":true,"readOnly":true},"currentTasks":{"type":"array","description":"Ongoing asynchronous tasks related to the file storage","nullable":true,"items":{"$ref":"#/components/schemas/common.CurrentTask"},"readOnly":true},"id":{"type":"string","description":"Unique identifier of the file storage","format":"uuid","readOnly":true},"resourceStatus":{"allOf":[{"$ref":"#/components/schemas/common.ResourceStatusEnum"}],"description":"File storage readiness in the system","readOnly":true},"targetSpec":{"allOf":[{"$ref":"#/components/schemas/publicCloud.storage.file.FileStorageTargetSpec"}],"description":"Last target specification of the file storage","readOnly":true},"updatedAt":{"type":"string","description":"Last update date of the file storage","format":"date-time","readOnly":true}}},"publicCloud.storage.file.FileStorageCapability":{"type":"object","description":"An action availability flag for a file storage, derived from its current status","properties":{"enabled":{"type":"boolean","description":"Whether the action is currently available on the file storage","readOnly":true},"name":{"allOf":[{"$ref":"#/components/schemas/publicCloud.storage.file.FileStorageCapabilityEnum"}],"description":"The action the flag refers to","readOnly":true},"reason":{"allOf":[{"$ref":"#/components/schemas/publicCloud.storage.file.FileStorageCapabilityReasonEnum"}],"description":"Why the action is unavailable. Set only when enabled is false.","nullable":true,"readOnly":true}}},"publicCloud.storage.file.FileStorageCapabilityEnum":{"type":"string","description":"Action availability flags computed from the file storage status","enum":["ACL_MANAGEMENT","DELETE","EDIT","REVERT_FROM_SNAPSHOT","SNAPSHOT_MANAGEMENT","UPDATE_SIZE"]},"publicCloud.storage.file.FileStorageCapabilityReasonEnum":{"type":"string","description":"Reason a file storage action is currently disabled","enum":["HAS_DEPENDENT_SNAPSHOTS","INVALID_STATUS"]},"publicCloud.storage.file.FileStorageCreateFrom":{"type":"object","description":"Source to create a file storage from","properties":{"snapshotId":{"type":"string","description":"Identifier of a file storage snapshot of the same project to create the file storage from. The snapshot must be available, otherwise the request is rejected with a 409, and must be in the region set in `location.region`. The file storage type and encryption are taken from the snapshot's source file storage.","format":"uuid"}},"required":["snapshotId"]},"publicCloud.storage.file.FileStorageCreation":{"type":"object","description":"Payload to create a Public Cloud file storage","properties":{"targetSpec":{"allOf":[{"$ref":"#/components/schemas/publicCloud.storage.file.FileStorageTargetSpec"}],"description":"Desired target specification for the file storage"}},"required":["targetSpec"]},"publicCloud.storage.file.FileStorageCurrentState":{"type":"object","description":"Current state of a file storage as observed from the infrastructure","properties":{"capabilities":{"type":"array","description":"Action availability flags derived from the file storage status","nullable":true,"items":{"$ref":"#/components/schemas/publicCloud.storage.file.FileStorageCapability"},"readOnly":true},"description":{"type":"string","description":"File storage description","nullable":true,"readOnly":true},"encryption":{"allOf":[{"$ref":"#/components/schemas/publicCloud.storage.file.FileStorageEncryption"}],"description":"Encryption configuration of the file storage","readOnly":true},"exportLocations":{"type":"array","description":"NFS export paths for mounting the file storage","nullable":true,"items":{"$ref":"#/components/schemas/publicCloud.storage.file.FileStorageExportLocation"},"readOnly":true},"location":{"allOf":[{"$ref":"#/components/schemas/publicCloud.common.Location"}],"description":"Current resource location","readOnly":true},"name":{"type":"string","description":"Current file storage name","readOnly":true},"protocol":{"allOf":[{"$ref":"#/components/schemas/publicCloud.storage.file.FileStorageProtocolEnum"}],"description":"File sharing protocol","readOnly":true},"shareNetwork":{"allOf":[{"$ref":"#/components/schemas/publicCloud.storage.file.FileStorageShareNetworkRef"}],"description":"Reference to the share network the file storage is attached to","readOnly":true},"shareType":{"allOf":[{"$ref":"#/components/schemas/publicCloud.storage.file.FileStorageTypeEnum"}],"description":"File storage type (performance tier)","readOnly":true},"size":{"type":"integer","description":"Current size of the file storage in GB","readOnly":true}}},"publicCloud.storage.file.FileStorageEncryption":{"type":"object","description":"Encryption configuration for a file storage","properties":{"enabled":{"type":"boolean","description":"Whether the file storage is encrypted at rest with LUKS"}},"required":["enabled"]},"publicCloud.storage.file.FileStorageExportLocation":{"type":"object","description":"An NFS export path for a file storage","properties":{"path":{"type":"string","description":"NFS export path for mounting","readOnly":true},"preferred":{"type":"boolean","description":"Whether this is the preferred export location","readOnly":true}}},"publicCloud.storage.file.FileStorageProtocolEnum":{"type":"string","description":"Supported file sharing protocols","enum":["NFS"]},"publicCloud.storage.file.FileStorageShareNetworkRef":{"type":"object","description":"Reference to a pre-existing file storage share network","properties":{"id":{"type":"string","description":"Identifier of the share network to attach the file storage to","format":"uuid"}},"required":["id"]},"publicCloud.storage.file.FileStorageTargetSpec":{"type":"object","description":"Target specification for a file storage","properties":{"createFrom":{"allOf":[{"$ref":"#/components/schemas/publicCloud.storage.file.FileStorageCreateFrom"}],"description":"Optional source to create the file storage from. Immutable after creation. When omitted, an empty file storage is created.","nullable":true},"description":{"type":"string","description":"Description of the file storage","nullable":true},"encryption":{"allOf":[{"$ref":"#/components/schemas/publicCloud.storage.file.FileStorageEncryption"}],"description":"Encryption configuration for the file storage. Immutable after creation. When `createFrom` is set, the encryption of the snapshot's source file storage is used and returned here: requesting `enabled` true from a snapshot of an unencrypted file storage is rejected as an invalid parameter, and requesting `enabled` false from a snapshot of an encrypted file storage is ignored, so the new file storage is encrypted.","nullable":true},"location":{"allOf":[{"$ref":"#/components/schemas/publicCloud.common.Location"}],"description":"Desired resource location. When `createFrom` is set, `region` must be the region of the snapshot."},"name":{"type":"string","description":"Desired file storage name"},"protocol":{"allOf":[{"$ref":"#/components/schemas/publicCloud.storage.file.FileStorageProtocolEnum"}],"description":"File sharing protocol"},"shareNetwork":{"allOf":[{"$ref":"#/components/schemas/publicCloud.storage.file.FileStorageShareNetworkRef"}],"description":"Reference to a pre-existing share network to attach the file storage to. Required when `createFrom` is not set. When `createFrom` is set, it is optional: when omitted, the share network of the snapshot's source file storage is used and returned here. When sent, it must be that same share network, otherwise the request is rejected as an invalid parameter.","nullable":true},"shareType":{"allOf":[{"$ref":"#/components/schemas/publicCloud.storage.file.FileStorageTypeEnum"}],"description":"File storage type (performance tier). Required when `createFrom` is not set. When `createFrom` is set, it is optional: the type of the snapshot's source file storage is used and returned here.","nullable":true},"size":{"type":"integer","description":"Size of the file storage in GB. Required when `createFrom` is not set. When `createFrom` is set, it is optional: when omitted, the size of the snapshot is used and returned here. A size smaller than the snapshot's size is rejected as an invalid parameter.","nullable":true}},"required":["location","name","protocol"]},"publicCloud.storage.file.FileStorageTypeEnum":{"type":"string","description":"Supported file storage types (performance tiers)","enum":["STANDARD_1AZ"]},"publicCloud.storage.file.FileStorageUpdate":{"type":"object","description":"Payload to update a Public Cloud file storage","properties":{"checksum":{"type":"string","description":"Optional concurrency-control checksum. When supplied, it must match the resource's current checksum or the request is rejected with a 409 checksum-mismatch conflict. When omitted or empty, the concurrency check is skipped and the write is forced (last-write-wins).","nullable":true},"targetSpec":{"allOf":[{"$ref":"#/components/schemas/publicCloud.storage.file.FileStorageUpdateTargetSpec"}],"description":"Desired target specification for the file storage"}},"required":["targetSpec"]},"publicCloud.storage.file.FileStorageUpdateTargetSpec":{"type":"object","description":"Target specification for updating a file storage. This body is the complete desired specification: every field below is replaced by what the request carries, and a field left out is cleared rather than carried over from the stored specification, so read the file storage first and restate every value you want to keep. The create-only fields protocol, shareType, shareNetwork, location, encryption and createFrom cannot be changed once the file storage exists. They are deliberately absent from this model and sending one is rejected as an unknown field.","properties":{"description":{"type":"string","description":"Description of the file storage","nullable":true},"name":{"type":"string","description":"Desired file storage name"},"size":{"type":"integer","description":"Size of the file storage in GB. The size can only be increased (extend). Shrinking a file storage is not supported."}},"required":["name","size"]},"time":{"type":"string","description":"Time (e.g., 15:04:05)","format":"time","example":"15:04:05"}},"securitySchemes":{"oAuth2AuthCode":{"type":"oauth2","description":"Oauth2","x-client-id":"1bb9c7df371741c0","x-client-secret":"a5b4de870aca620d10fbf63cd18d205b","flows":{"authorizationCode":{"authorizationUrl":"https://auth.eu.ovhcloud.com/oauth2/authorize","tokenUrl":"https://auth.eu.ovhcloud.com/oauth2/token","scopes":{"account/all":"Manage your account","all":"Manage your whole account and all your services","services/all":"Manage your services lifecycle and billing"}}}}}},"paths":{"/publicCloud/project/{projectId}/storage/file/share":{"get":{"operationId":"getShares","summary":"List file storages","description":"Returns the file storages of the project.","security":[{"oAuth2AuthCode":[]}],"parameters":[{"in":"header","name":"X-Pagination-Cursor","description":"Pagination cursor","schema":{"type":"string"}},{"in":"header","name":"X-Pagination-Size","description":"Pagination size","schema":{"type":"integer"}},{"in":"path","name":"projectId","description":"Project ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/publicCloud.storage.file.FileStorage"}}}}}},"tags":["Storage","File"],"x-developer-hub-navigation":[["Public Cloud","Storage","File Storage@@@10"]],"x-badges":[{"color":"green","label":"Stable production version"}],"x-code-samples":[{"lang":"python","label":"Python","source":"'''\nFirst, install the latest release of Python wrapper: $ pip install ovh\n'''\nimport json\nimport ovh\n\n# Instantiate an OVH Client.\n# You can generate new credentials with full access to your account on\n# the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)\nclient = ovh.Client(\n\tendpoint='ovh-eu',               # Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)\n\tapplication_key='xxxxxxxxxx',    # Application Key\n\tapplication_secret='xxxxxxxxxx', # Application Secret\n\tconsumer_key='xxxxxxxxxx',       # Consumer Key\n)\n\nresult = client.get(\"/v2/publicCloud/project/{projectId}/storage/file/share\")\n\n# Pretty print\nprint(json.dumps(result, indent=4))"},{"lang":"php","label":"PHP","source":"<?php\n/**\n * First, download the latest release of PHP wrapper on github\n * And include this script into the folder with extracted files\n */\nrequire __DIR__ . '/vendor/autoload.php';\nuse \\Ovh\\Api;\n\n/**\n * Instantiate an OVH Client.\n * You can generate new credentials with full access to your account on\n * the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)\n */\n$ovh = new Api('xxxxxxxxxx',  // Application Key\n               'xxxxxxxxxx',  // Application Secret\n               'ovh-eu',      // Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)\n               'xxxxxxxxxx'); // Consumer Key\n\n$result = $ovh->get(\"/v2/publicCloud/project/{projectId}/storage/file/share\");\n\nprint_r($result);\n?>"}],"x-iam-actions":[{"name":"publicCloudProject:apiovh:share/get","required":true}],"x-response-identifier":"id","x-expanded-response":"PublicCloudStorageFileFileStorage"},"post":{"operationId":"createShare","summary":"Create a file storage","description":"Creates a file storage, either empty or from a snapshot.\n\nWithout `createFrom`, `shareType`, `shareNetwork` and `size` are required.\n\nWith `createFrom.snapshotId`, the file storage is created from that snapshot, which must belong to the same project and be in the region set in `location.region`. An unknown snapshot is rejected with a 404. The snapshot must be available: a snapshot in any other status is rejected with a 409. `shareType` and `encryption` are the values of the snapshot's source file storage and are returned in `targetSpec`: requesting `encryption.enabled` true from a snapshot of an unencrypted file storage is rejected as an invalid parameter, and requesting `encryption.enabled` false from a snapshot of an encrypted file storage is ignored. `size` is optional: when omitted, the snapshot's size is used and returned in `targetSpec`, and a size smaller than the snapshot's size is rejected. `shareNetwork` is optional: when omitted, the share network of the snapshot's source file storage is used and returned in `targetSpec`, and a different share network is rejected.\n\n`createFrom` is set at creation only and cannot be changed afterward.","security":[{"oAuth2AuthCode":[]}],"parameters":[{"in":"path","name":"projectId","description":"Project ID","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/publicCloud.storage.file.FileStorageCreation"},"examples":{"Create file storage":{"value":{"targetSpec":{"description":"Production data share","location":{"region":"GRA1"},"name":"my-share","protocol":"NFS","shareNetwork":{"id":"b2c3d4e5-f6a7-8901-bcde-f12345678901"},"shareType":"STANDARD_1AZ","size":100}},"summary":"Create an NFS file storage"},"Create file storage from snapshot":{"value":{"targetSpec":{"createFrom":{"snapshotId":"361f9a44-c838-448e-b9ea-cdf7a7776b88"},"description":"Restored production data","location":{"region":"GRA1"},"name":"my-share-restored","protocol":"NFS"}},"summary":"Create an NFS file storage from a file storage snapshot. The file storage type, encryption, size and share network are taken from the snapshot and its source file storage"}}}}},"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/publicCloud.storage.file.FileStorage"}}}},"400":{"description":"Error 400 response","content":{"application/json":{"schema":{"type":"object","description":"Common error model","properties":{"class":{"type":"string","description":"Class of the error"},"message":{"type":"string","description":"Error message"}}},"examples":{"Client::BadRequest::InvalidParameter":{"value":{"class":"Client::BadRequest::InvalidParameter","message":"Invalid parameter in the request"}},"Client::BadRequest::ServiceNotAvailableInRegion":{"value":{"class":"Client::BadRequest::ServiceNotAvailableInRegion","message":"This service is not available in the selected region"}}}}}},"404":{"description":"Error 404 response","content":{"application/json":{"schema":{"type":"object","description":"Common error model","properties":{"class":{"type":"string","description":"Class of the error"},"message":{"type":"string","description":"Error message"}}},"examples":{"Client::NotFound::SnapshotDoesNotExist":{"value":{"class":"Client::NotFound::SnapshotDoesNotExist","message":"Snapshot not found"}}}}}},"409":{"description":"Error 409 response","content":{"application/json":{"schema":{"type":"object","description":"Common error model","properties":{"class":{"type":"string","description":"Class of the error"},"message":{"type":"string","description":"Error message"}}},"examples":{"Client::Conflict::RegionInMaintenance":{"value":{"class":"Client::Conflict::RegionInMaintenance","message":"This region is currently in maintenance"}},"Client::Conflict::ResourceInInvalidState":{"value":{"class":"Client::Conflict::ResourceInInvalidState","message":"Resource cannot be modified in its current state"}}}}}}},"tags":["Storage","File"],"x-developer-hub-navigation":[["Public Cloud","Storage","File Storage@@@30"]],"x-badges":[{"color":"green","label":"Stable production version"}],"x-code-samples":[{"lang":"python","label":"Python","source":"'''\nFirst, install the latest release of Python wrapper: $ pip install ovh\n'''\nimport json\nimport ovh\n\n# Instantiate an OVH Client.\n# You can generate new credentials with full access to your account on\n# the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)\nclient = ovh.Client(\n\tendpoint='ovh-eu',               # Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)\n\tapplication_key='xxxxxxxxxx',    # Application Key\n\tapplication_secret='xxxxxxxxxx', # Application Secret\n\tconsumer_key='xxxxxxxxxx',       # Consumer Key\n)\n\n# Request body type: publicCloud.storage.file.FileStorageCreation\nresult = client.post(\"/v2/publicCloud/project/{projectId}/storage/file/share\",\n\ttargetSpec = None, # Desired target specification for the file storage (type: publicCloud.storage.file.FileStorageTargetSpec)\n)\n\n# Pretty print\nprint(json.dumps(result, indent=4))"},{"lang":"php","label":"PHP","source":"<?php\n/**\n * First, download the latest release of PHP wrapper on github\n * And include this script into the folder with extracted files\n */\nrequire __DIR__ . '/vendor/autoload.php';\nuse \\Ovh\\Api;\n\n/**\n * Instantiate an OVH Client.\n * You can generate new credentials with full access to your account on\n * the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)\n */\n$ovh = new Api('xxxxxxxxxx',  // Application Key\n               'xxxxxxxxxx',  // Application Secret\n               'ovh-eu',      // Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)\n               'xxxxxxxxxx'); // Consumer Key\n\n// Request body type: publicCloud.storage.file.FileStorageCreation\n$result = $ovh->post(\"/v2/publicCloud/project/{projectId}/storage/file/share\", array(\n\ttargetSpec => null, // Desired target specification for the file storage (type: publicCloud.storage.file.FileStorageTargetSpec)\n));\n\nprint_r($result);\n?>"}],"x-iam-actions":[{"name":"publicCloudProject:apiovh:share/create","required":true}]}},"/publicCloud/project/{projectId}/storage/file/share/{fileStorageId}":{"delete":{"operationId":"deleteShare","summary":"Delete a file storage","description":"Deletes the file storage. A file storage that still has snapshots cannot be deleted: delete them first.","security":[{"oAuth2AuthCode":[]}],"parameters":[{"in":"path","name":"fileStorageId","description":"File storage ID","required":true,"schema":{"type":"string","format":"uuid"}},{"in":"path","name":"projectId","description":"Project ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/publicCloud.storage.file.FileStorage"}}}},"404":{"description":"Error 404 response","content":{"application/json":{"schema":{"type":"object","description":"Common error model","properties":{"class":{"type":"string","description":"Class of the error"},"message":{"type":"string","description":"Error message"}}},"examples":{"Client::NotFound::ShareDoesNotExist":{"value":{"class":"Client::NotFound::ShareDoesNotExist","message":"File share not found"}}}}}},"409":{"description":"Error 409 response","content":{"application/json":{"schema":{"type":"object","description":"Common error model","properties":{"class":{"type":"string","description":"Class of the error"},"message":{"type":"string","description":"Error message"}}},"examples":{"Client::Conflict::ResourceAlreadyBeingDeleted":{"value":{"class":"Client::Conflict::ResourceAlreadyBeingDeleted","message":"Resource is already being deleted"}},"Client::Conflict::ResourceInInvalidState":{"value":{"class":"Client::Conflict::ResourceInInvalidState","message":"Resource cannot be modified in its current state"}}}}}}},"tags":["Storage","File"],"x-developer-hub-navigation":[["Public Cloud","Storage","File Storage@@@40"]],"x-badges":[{"color":"green","label":"Stable production version"}],"x-code-samples":[{"lang":"python","label":"Python","source":"'''\nFirst, install the latest release of Python wrapper: $ pip install ovh\n'''\nimport json\nimport ovh\n\n# Instantiate an OVH Client.\n# You can generate new credentials with full access to your account on\n# the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)\nclient = ovh.Client(\n\tendpoint='ovh-eu',               # Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)\n\tapplication_key='xxxxxxxxxx',    # Application Key\n\tapplication_secret='xxxxxxxxxx', # Application Secret\n\tconsumer_key='xxxxxxxxxx',       # Consumer Key\n)\n\nresult = client.delete(\"/v2/publicCloud/project/{projectId}/storage/file/share/{fileStorageId}\")\n\n# Pretty print\nprint(json.dumps(result, indent=4))"},{"lang":"php","label":"PHP","source":"<?php\n/**\n * First, download the latest release of PHP wrapper on github\n * And include this script into the folder with extracted files\n */\nrequire __DIR__ . '/vendor/autoload.php';\nuse \\Ovh\\Api;\n\n/**\n * Instantiate an OVH Client.\n * You can generate new credentials with full access to your account on\n * the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)\n */\n$ovh = new Api('xxxxxxxxxx',  // Application Key\n               'xxxxxxxxxx',  // Application Secret\n               'ovh-eu',      // Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)\n               'xxxxxxxxxx'); // Consumer Key\n\n$result = $ovh->delete(\"/v2/publicCloud/project/{projectId}/storage/file/share/{fileStorageId}\");\n\nprint_r($result);\n?>"}],"x-iam-actions":[{"name":"publicCloudProject:apiovh:share/delete","required":true}]},"get":{"operationId":"getShare","summary":"Get a file storage","description":"Returns the file storage configuration and its current state, including the NFS export paths to mount it.","security":[{"oAuth2AuthCode":[]}],"parameters":[{"in":"path","name":"fileStorageId","description":"File storage ID","required":true,"schema":{"type":"string","format":"uuid"}},{"in":"path","name":"projectId","description":"Project ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/publicCloud.storage.file.FileStorage"},"examples":{"Example":{"value":{"checksum":"a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6","createdAt":"2026-02-10T14:30:00Z","currentState":{"description":"Production data share","encryption":{"enabled":false},"exportLocations":[{"path":"10.0.0.1:/shares/share-abc123","preferred":true}],"location":{"region":"GRA1"},"name":"my-share","protocol":"NFS","shareNetwork":{"id":"b2c3d4e5-f6a7-8901-bcde-f12345678901"},"shareType":"STANDARD_1AZ","size":100},"currentTasks":null,"id":"d4e5f6a7-b890-1234-cdef-567890abcdef","resourceStatus":"READY","targetSpec":{"createFrom":null,"description":"Production data share","encryption":{"enabled":false},"location":{"region":"GRA1"},"name":"my-share","protocol":"NFS","shareNetwork":{"id":"b2c3d4e5-f6a7-8901-bcde-f12345678901"},"shareType":"STANDARD_1AZ","size":100},"updatedAt":"2026-02-10T14:35:00Z"},"summary":"Example"}}}}},"404":{"description":"Error 404 response","content":{"application/json":{"schema":{"type":"object","description":"Common error model","properties":{"class":{"type":"string","description":"Class of the error"},"message":{"type":"string","description":"Error message"}}},"examples":{"Client::NotFound::ShareDoesNotExist":{"value":{"class":"Client::NotFound::ShareDoesNotExist","message":"File share not found"}}}}}}},"tags":["Storage","File"],"x-developer-hub-navigation":[["Public Cloud","Storage","File Storage@@@20"]],"x-badges":[{"color":"green","label":"Stable production version"}],"x-code-samples":[{"lang":"python","label":"Python","source":"'''\nFirst, install the latest release of Python wrapper: $ pip install ovh\n'''\nimport json\nimport ovh\n\n# Instantiate an OVH Client.\n# You can generate new credentials with full access to your account on\n# the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)\nclient = ovh.Client(\n\tendpoint='ovh-eu',               # Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)\n\tapplication_key='xxxxxxxxxx',    # Application Key\n\tapplication_secret='xxxxxxxxxx', # Application Secret\n\tconsumer_key='xxxxxxxxxx',       # Consumer Key\n)\n\nresult = client.get(\"/v2/publicCloud/project/{projectId}/storage/file/share/{fileStorageId}\")\n\n# Pretty print\nprint(json.dumps(result, indent=4))"},{"lang":"php","label":"PHP","source":"<?php\n/**\n * First, download the latest release of PHP wrapper on github\n * And include this script into the folder with extracted files\n */\nrequire __DIR__ . '/vendor/autoload.php';\nuse \\Ovh\\Api;\n\n/**\n * Instantiate an OVH Client.\n * You can generate new credentials with full access to your account on\n * the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)\n */\n$ovh = new Api('xxxxxxxxxx',  // Application Key\n               'xxxxxxxxxx',  // Application Secret\n               'ovh-eu',      // Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)\n               'xxxxxxxxxx'); // Consumer Key\n\n$result = $ovh->get(\"/v2/publicCloud/project/{projectId}/storage/file/share/{fileStorageId}\");\n\nprint_r($result);\n?>"}],"x-iam-actions":[{"name":"publicCloudProject:apiovh:share/get","required":true}],"x-response-identifier":"id"},"put":{"operationId":"editShare","summary":"Update a file storage","description":"Replaces the file storage's target specification as a whole. The body carries the complete desired state of every field `publicCloud.storage.file.FileStorageUpdateTargetSpec` exposes (`description`, `name` and `size`), so read the file storage first and restate every value you want to keep: a field left out of `targetSpec` is cleared, not carried over from the stored specification. Leaving `description` out clears the description.\n\nThe create-only fields `protocol`, `shareType`, `shareNetwork`, `location`, `encryption` and `createFrom` cannot be changed once the file storage exists. They are deliberately absent from the update model, and sending one is rejected with a 400.\n\n`name` and `size` are both required. `size` can only grow: restate the current size to keep it, or send a larger value to extend the file storage, because shrinking one is not supported.\n\nThe optional `checksum` guards against a lost update: when supplied it must match the file storage's current checksum or the request is rejected with a 409 checksum mismatch. Omitting it skips the check and forces the write (last-write-wins).","security":[{"oAuth2AuthCode":[]}],"parameters":[{"in":"path","name":"fileStorageId","description":"File storage ID","required":true,"schema":{"type":"string","format":"uuid"}},{"in":"path","name":"projectId","description":"Project ID","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/publicCloud.storage.file.FileStorageUpdate"},"examples":{"Update file storage":{"value":{"checksum":"a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6","targetSpec":{"description":"Production data share","name":"my-share-renamed","size":200}},"summary":"Rename the file storage and extend it from 100 GB to 200 GB. The body is the complete target spec: description is restated so it is not cleared"}}}}},"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/publicCloud.storage.file.FileStorage"}}}},"400":{"description":"Error 400 response","content":{"application/json":{"schema":{"type":"object","description":"Common error model","properties":{"class":{"type":"string","description":"Class of the error"},"message":{"type":"string","description":"Error message"}}},"examples":{"Client::BadRequest::InvalidParameter":{"value":{"class":"Client::BadRequest::InvalidParameter","message":"Invalid parameter in the request"}}}}}},"404":{"description":"Error 404 response","content":{"application/json":{"schema":{"type":"object","description":"Common error model","properties":{"class":{"type":"string","description":"Class of the error"},"message":{"type":"string","description":"Error message"}}},"examples":{"Client::NotFound::ShareDoesNotExist":{"value":{"class":"Client::NotFound::ShareDoesNotExist","message":"File share not found"}}}}}},"409":{"description":"Error 409 response","content":{"application/json":{"schema":{"type":"object","description":"Common error model","properties":{"class":{"type":"string","description":"Class of the error"},"message":{"type":"string","description":"Error message"}}},"examples":{"Client::Conflict::ChecksumMismatch":{"value":{"class":"Client::Conflict::ChecksumMismatch","message":"Checksum mismatch — a concurrent update was detected. Refresh the resource and retry"}},"Client::Conflict::ResourceInInvalidState":{"value":{"class":"Client::Conflict::ResourceInInvalidState","message":"Resource cannot be modified in its current state"}}}}}}},"tags":["Storage","File"],"x-developer-hub-navigation":[["Public Cloud","Storage","File Storage@@@50"]],"x-badges":[{"color":"green","label":"Stable production version"}],"x-code-samples":[{"lang":"python","label":"Python","source":"'''\nFirst, install the latest release of Python wrapper: $ pip install ovh\n'''\nimport json\nimport ovh\n\n# Instantiate an OVH Client.\n# You can generate new credentials with full access to your account on\n# the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)\nclient = ovh.Client(\n\tendpoint='ovh-eu',               # Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)\n\tapplication_key='xxxxxxxxxx',    # Application Key\n\tapplication_secret='xxxxxxxxxx', # Application Secret\n\tconsumer_key='xxxxxxxxxx',       # Consumer Key\n)\n\n# Request body type: publicCloud.storage.file.FileStorageUpdate\nresult = client.put(\"/v2/publicCloud/project/{projectId}/storage/file/share/{fileStorageId}\",\n\tchecksum = None, # Optional concurrency-control checksum. When supplied, it must match the resource's current checksum or the request is rejected with a 409 checksum-mismatch conflict. When omitted or empty, the concurrency check is skipped and the write is forced (last-write-wins). (type: string, nullable)\n\ttargetSpec = None, # Desired target specification for the file storage (type: publicCloud.storage.file.FileStorageUpdateTargetSpec)\n)\n\n# Pretty print\nprint(json.dumps(result, indent=4))"},{"lang":"php","label":"PHP","source":"<?php\n/**\n * First, download the latest release of PHP wrapper on github\n * And include this script into the folder with extracted files\n */\nrequire __DIR__ . '/vendor/autoload.php';\nuse \\Ovh\\Api;\n\n/**\n * Instantiate an OVH Client.\n * You can generate new credentials with full access to your account on\n * the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)\n */\n$ovh = new Api('xxxxxxxxxx',  // Application Key\n               'xxxxxxxxxx',  // Application Secret\n               'ovh-eu',      // Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)\n               'xxxxxxxxxx'); // Consumer Key\n\n// Request body type: publicCloud.storage.file.FileStorageUpdate\n$result = $ovh->put(\"/v2/publicCloud/project/{projectId}/storage/file/share/{fileStorageId}\", array(\n\tchecksum => null, // Optional concurrency-control checksum. When supplied, it must match the resource's current checksum or the request is rejected with a 409 checksum-mismatch conflict. When omitted or empty, the concurrency check is skipped and the write is forced (last-write-wins). (type: string, nullable)\n\ttargetSpec => null, // Desired target specification for the file storage (type: publicCloud.storage.file.FileStorageUpdateTargetSpec)\n));\n\nprint_r($result);\n?>"}],"x-iam-actions":[{"name":"publicCloudProject:apiovh:share/edit","required":true}]}}},"tags":[{"name":"Storage","x-tag-expanded":false,"description":"Missing description"},{"name":"File","x-tag-expanded":false,"description":"Missing description"}]}
