{"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.loadbalancer.Loadbalancer":{"type":"object","description":"A Public Cloud load balancer","properties":{"checksum":{"type":"string","description":"Computed hash representing the current target specification value","readOnly":true},"createdAt":{"type":"string","description":"Creation date of the load balancer","format":"date-time","readOnly":true},"currentState":{"allOf":[{"$ref":"#/components/schemas/publicCloud.loadbalancer.LoadbalancerCurrentState"}],"description":"Current state of the load balancer","nullable":true,"readOnly":true},"currentTasks":{"type":"array","description":"Ongoing asynchronous tasks related to the load balancer","nullable":true,"items":{"$ref":"#/components/schemas/common.CurrentTask"},"readOnly":true},"id":{"type":"string","description":"Unique identifier of the load balancer","format":"uuid","readOnly":true},"resourceStatus":{"allOf":[{"$ref":"#/components/schemas/common.ResourceStatusEnum"}],"description":"Load balancer readiness in the system","readOnly":true},"targetSpec":{"allOf":[{"$ref":"#/components/schemas/publicCloud.loadbalancer.LoadbalancerTargetSpec"}],"description":"Last target specification of the load balancer","readOnly":true},"updatedAt":{"type":"string","description":"Last update date of the load balancer","format":"date-time","readOnly":true}}},"publicCloud.loadbalancer.LoadbalancerCreation":{"type":"object","description":"Payload to create a Public Cloud load balancer","properties":{"targetSpec":{"allOf":[{"$ref":"#/components/schemas/publicCloud.loadbalancer.LoadbalancerTargetSpec"}],"description":"Desired target specification for the load balancer to create"}},"required":["targetSpec"]},"publicCloud.loadbalancer.LoadbalancerCurrentState":{"type":"object","description":"Current state of a load balancer from OpenStack","properties":{"description":{"type":"string","description":"Load balancer description","readOnly":true},"flavor":{"allOf":[{"$ref":"#/components/schemas/publicCloud.loadbalancer.LoadbalancerFlavorRef"}],"description":"Octavia flavor","readOnly":true},"location":{"allOf":[{"$ref":"#/components/schemas/publicCloud.common.Location"}],"description":"Location details","readOnly":true},"name":{"type":"string","description":"Load balancer name","readOnly":true},"network":{"allOf":[{"$ref":"#/components/schemas/publicCloud.loadbalancer.LoadbalancerNetwork"}],"description":"Frontend network the virtual IP port lives in, with every address the VIP is reachable at reported through its addresses list. The FIXED address of the port, plus a FLOATING entry when a floating IP is associated with it.","readOnly":true},"operatingStatus":{"allOf":[{"$ref":"#/components/schemas/publicCloud.loadbalancer.LoadbalancerOperatingStatusEnum"}],"description":"Whether the load balancer is currently serving traffic, as observed on the platform. This is distinct from its provisioning status, which tracks whether your configuration has been applied.","readOnly":true},"provisioningStatus":{"allOf":[{"$ref":"#/components/schemas/publicCloud.loadbalancer.LoadbalancerProvisioningStatusEnum"}],"description":"Provisioning status in OpenStack","readOnly":true}}},"publicCloud.loadbalancer.LoadbalancerFlavorNameEnum":{"type":"string","description":"Available Octavia load balancer flavor names","enum":["LARGE","MEDIUM","SMALL","XL"]},"publicCloud.loadbalancer.LoadbalancerFlavorRef":{"type":"object","description":"Reference to an Octavia flavor by name","properties":{"name":{"allOf":[{"$ref":"#/components/schemas/publicCloud.loadbalancer.LoadbalancerFlavorNameEnum"}],"description":"Octavia flavor name"}},"required":["name"]},"publicCloud.loadbalancer.LoadbalancerNetwork":{"type":"object","description":"Load balancer VIP network (observed). The frontend network the load balancer virtual IP port lives in, as reported by the backend, together with every address through which the VIP is reachable. Unlike the desired specification there is no scalar ip: all addresses, pinned or IPAM-assigned fixed address as well as an associated floating IP, are reported through the addresses list, each carrying its own type.","properties":{"addresses":{"type":"array","description":"Addresses through which the virtual IP is reachable. Always contains the FIXED address of the VIP port, plus a FLOATING entry when a floating IP is associated with that port.","items":{"$ref":"#/components/schemas/publicCloud.loadbalancer.LoadbalancerNetworkAddress"},"readOnly":true},"id":{"type":"string","description":"Identifier of the private network the VIP port lives in","format":"uuid","readOnly":true},"subnetId":{"type":"string","description":"Identifier of the subnet the VIP port draws its fixed address from","format":"uuid","readOnly":true}}},"publicCloud.loadbalancer.LoadbalancerNetworkAddress":{"type":"object","description":"Load balancer VIP network address. A single IP address through which the load balancer virtual IP is reachable, with the type telling how that address reaches the VIP port.","properties":{"ip":{"allOf":[{"$ref":"#/components/schemas/ip"}],"description":"IP address the virtual IP is reachable at","readOnly":true},"type":{"allOf":[{"$ref":"#/components/schemas/publicCloud.loadbalancer.LoadbalancerNetworkAddressTypeEnum"}],"description":"Address type. How this address reaches the VIP port: FIXED for the address configured on the port itself, FLOATING for a floating IP NAT'd onto it. See LoadbalancerNetworkAddressTypeEnum.","readOnly":true}}},"publicCloud.loadbalancer.LoadbalancerNetworkAddressTypeEnum":{"type":"string","description":"Load balancer VIP network address type. Nature of an IP address observed on the load balancer virtual IP port, telling how the address reaches the VIP. `FIXED`: The address configured on the VIP port itself, whether assigned by IPAM or pinned at creation. `FLOATING`: A floating IP associated with the VIP port: the address is not configured on the port, the network translates it to the port fixed address.","enum":["FIXED","FLOATING"]},"publicCloud.loadbalancer.LoadbalancerNetworkRef":{"type":"object","description":"Load balancer VIP network reference (desired). User-controlled declaration of the load balancer frontend network: the private network and subnet the virtual IP (VIP) port is created in, and therefore the network the listeners are reachable from. subnetId is mandatory. id is optional: when omitted, the network of the subnet is used, and when given, the subnet must belong to it. The optional IP refines how the VIP is addressed: * omitted. The fixed VIP address is assigned by IPAM inside the subnet. * an address inside the subnet CIDR. Pins the fixed VIP address to that value. * an address outside the subnet CIDR. Designates an EXISTING floating IP to associate with the VIP port. No address is ever allocated on your behalf. The VIP network is set at creation and is IMMUTABLE afterward: it is not part of the update target spec, and neither the network, the subnet, nor the IP can be changed on a load balancer that already exists.","properties":{"id":{"type":"string","description":"Identifier of the private network the VIP port is created in. This is the load balancer frontend network, from which its listeners are reachable. When omitted, the network of subnetId is used. Immutable after creation.","nullable":true,"format":"uuid"},"ip":{"allOf":[{"$ref":"#/components/schemas/ip"}],"description":"Address of the virtual IP, whose meaning depends on where it falls relative to the subnet CIDR. Inside the subnet CIDR: pins the fixed VIP address instead of letting IPAM assign it. The address must lie in the subnet allocation pool, must not be the subnet gateway address, and must not already be held by another port. Outside the subnet CIDR: designates an EXISTING floating IP of the project to associate with the VIP port. The floating IP is never created for you, must not already be associated with another port, and the subnet must be attached to a router with an external gateway. A public address requires the optional loadbalancer/usePublicIP IAM action. When omitted, the fixed VIP address is assigned by IPAM. Immutable after creation.","nullable":true},"subnetId":{"type":"string","description":"Identifier of the subnet the VIP port draws its fixed address from. When id is given, the subnet must belong to that network. Immutable after creation.","format":"uuid"}},"required":["subnetId"]},"publicCloud.loadbalancer.LoadbalancerOperatingStatusEnum":{"type":"string","description":"Operating status of a load balancer","enum":["DEGRADED","DRAINING","ERROR","NO_MONITOR","OFFLINE","ONLINE"]},"publicCloud.loadbalancer.LoadbalancerProvisioningStatusEnum":{"type":"string","description":"Provisioning status of a load balancer in OpenStack","enum":["ACTIVE","DELETED","ERROR","PENDING_CREATE","PENDING_DELETE","PENDING_UPDATE"]},"publicCloud.loadbalancer.LoadbalancerPutTargetSpec":{"type":"object","description":"Desired specification for updating a load balancer (excludes immutable fields)","properties":{"description":{"type":"string","description":"Load balancer description","nullable":true},"flavor":{"allOf":[{"$ref":"#/components/schemas/publicCloud.loadbalancer.LoadbalancerFlavorRef"}],"description":"Octavia flavor reference. Size of the load balancer. When it differs from the current flavor, the load balancer is resized: Octavia fails it over onto amphorae of the new flavor, which can briefly interrupt traffic. When omitted, the current flavor is kept.","nullable":true},"name":{"type":"string","description":"Load balancer name"}},"required":["name"]},"publicCloud.loadbalancer.LoadbalancerTargetSpec":{"type":"object","description":"Desired specification for a load balancer","properties":{"description":{"type":"string","description":"Load balancer description","nullable":true},"flavor":{"allOf":[{"$ref":"#/components/schemas/publicCloud.loadbalancer.LoadbalancerFlavorRef"}],"description":"Octavia flavor reference"},"location":{"allOf":[{"$ref":"#/components/schemas/publicCloud.common.Location"}],"description":"Target location"},"name":{"type":"string","description":"Load balancer name"},"network":{"allOf":[{"$ref":"#/components/schemas/publicCloud.loadbalancer.LoadbalancerNetworkRef"}],"description":"Frontend network of the load balancer: the private network and subnet the virtual IP port is created in, and therefore the network its listeners are reachable from. The optional IP either pins the fixed VIP address (address inside the subnet CIDR) or designates an EXISTING floating IP to associate with the VIP port (address outside it). A public address requires the optional loadbalancer/usePublicIP IAM action. Immutable after creation."}},"required":["flavor","location","name","network"]},"publicCloud.loadbalancer.LoadbalancerUpdate":{"type":"object","description":"Payload to update a Public Cloud load balancer","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.loadbalancer.LoadbalancerPutTargetSpec"}],"description":"Desired target specification for the load balancer"}},"required":["targetSpec"]},"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}/loadbalancer":{"get":{"operationId":"getLoadBalancers","summary":"List load balancers","description":"Returns the load balancers of the project.\n\n### Filters\nThe optional `name`, `flavor` and `region` query parameters narrow the list. Each one can be repeated (for example `?flavor=SMALL&flavor=MEDIUM`): repeated values of the same parameter are combined with OR, and different parameters are combined with AND. An unknown `flavor` value, or an unavailable `region`, is rejected with a `400 InvalidParameter`. The `resourceStatus` is computed from the live state of each resource, so it is not a filter: a `status` query parameter is rejected with a `400 InvalidParameter`.","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":"query","name":"flavor","description":"Filter by load balancer flavor name. Repeatable.","schema":{"type":"array","items":{"$ref":"#/components/schemas/publicCloud.loadbalancer.LoadbalancerFlavorNameEnum"}}},{"in":"query","name":"name","description":"Filter by load balancer name (case-insensitive substring match). Repeatable.","schema":{"type":"array","items":{"type":"string"}}},{"in":"path","name":"projectId","description":"Project ID","required":true,"schema":{"type":"string"}},{"in":"query","name":"region","description":"Filter by load balancer region. An unavailable region is rejected. Repeatable.","schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/publicCloud.loadbalancer.Loadbalancer"}}}}},"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"}}}}}}},"tags":["Loadbalancer"],"x-developer-hub-navigation":[["Public Cloud","Network","Load Balancer@@@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}/loadbalancer\")\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}/loadbalancer\");\n\nprint_r($result);\n?>"}],"x-iam-actions":[{"name":"publicCloudProject:apiovh:loadbalancer/get","required":true}],"x-response-identifier":"id","x-expanded-response":"PublicCloudLoadbalancerLoadbalancer"},"post":{"operationId":"createLoadBalancer","summary":"Create a load balancer","description":"Creates a load balancer with the given Octavia flavor, attaching its virtual IP to a private network and subnet.","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.loadbalancer.LoadbalancerCreation"}}}},"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/publicCloud.loadbalancer.Loadbalancer"}}}},"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::FlavorDoesNotExist":{"value":{"class":"Client::NotFound::FlavorDoesNotExist","message":"Flavor 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"}}}}}}},"tags":["Loadbalancer"],"x-developer-hub-navigation":[["Public Cloud","Network","Load Balancer@@@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.loadbalancer.LoadbalancerCreation\nresult = client.post(\"/v2/publicCloud/project/{projectId}/loadbalancer\",\n\ttargetSpec = None, # Desired target specification for the load balancer to create (type: publicCloud.loadbalancer.LoadbalancerTargetSpec)\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.loadbalancer.LoadbalancerCreation\n$result = $ovh->post(\"/v2/publicCloud/project/{projectId}/loadbalancer\", array(\n\ttargetSpec => null, // Desired target specification for the load balancer to create (type: publicCloud.loadbalancer.LoadbalancerTargetSpec)\n));\n\nprint_r($result);\n?>"}],"x-iam-actions":[{"name":"publicCloudProject:apiovh:loadbalancer/create","required":true},{"name":"publicCloudProject:apiovh:loadbalancer/usePublicIP","description":"Required when network carries an IP outside the subnet CIDR, which designates an existing floating IP to associate with the VIP port","required":false}]}},"/publicCloud/project/{projectId}/loadbalancer/{loadbalancerId}":{"delete":{"operationId":"deleteLoadBalancer","summary":"Delete a load balancer","description":"Deletes the load balancer.","security":[{"oAuth2AuthCode":[]}],"parameters":[{"in":"path","name":"loadbalancerId","description":"Loadbalancer 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.loadbalancer.Loadbalancer"}}}},"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::LoadBalancerDoesNotExist":{"value":{"class":"Client::NotFound::LoadBalancerDoesNotExist","message":"Load balancer 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":["Loadbalancer"],"x-developer-hub-navigation":[["Public Cloud","Network","Load Balancer@@@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}/loadbalancer/{loadbalancerId}\")\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}/loadbalancer/{loadbalancerId}\");\n\nprint_r($result);\n?>"}],"x-iam-actions":[{"name":"publicCloudProject:apiovh:loadbalancer/delete","required":true}]},"get":{"operationId":"getLoadBalancer","summary":"Get a load balancer","description":"Returns the load balancer, including its VIP network and operating status.","security":[{"oAuth2AuthCode":[]}],"parameters":[{"in":"path","name":"loadbalancerId","description":"Loadbalancer 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.loadbalancer.Loadbalancer"}}}},"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::LoadBalancerDoesNotExist":{"value":{"class":"Client::NotFound::LoadBalancerDoesNotExist","message":"Load balancer not found"}}}}}}},"tags":["Loadbalancer"],"x-developer-hub-navigation":[["Public Cloud","Network","Load Balancer@@@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}/loadbalancer/{loadbalancerId}\")\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}/loadbalancer/{loadbalancerId}\");\n\nprint_r($result);\n?>"}],"x-iam-actions":[{"name":"publicCloudProject:apiovh:loadbalancer/get","required":true}],"x-response-identifier":"id"},"put":{"operationId":"editLoadBalancer","summary":"Update a load balancer","description":"Updates the load balancer's name, description or flavor. A flavor other than the current one resizes the load balancer in place: it is failed over onto amphorae of the new flavor, which takes several minutes and can briefly interrupt traffic. The VIP network is immutable after creation.","security":[{"oAuth2AuthCode":[]}],"parameters":[{"in":"path","name":"loadbalancerId","description":"Loadbalancer 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.loadbalancer.LoadbalancerUpdate"}}}},"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/publicCloud.loadbalancer.Loadbalancer"}}}},"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::LoadBalancerDoesNotExist":{"value":{"class":"Client::NotFound::LoadBalancerDoesNotExist","message":"Load balancer 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":["Loadbalancer"],"x-developer-hub-navigation":[["Public Cloud","Network","Load Balancer@@@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.loadbalancer.LoadbalancerUpdate\nresult = client.put(\"/v2/publicCloud/project/{projectId}/loadbalancer/{loadbalancerId}\",\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 load balancer (type: publicCloud.loadbalancer.LoadbalancerPutTargetSpec)\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.loadbalancer.LoadbalancerUpdate\n$result = $ovh->put(\"/v2/publicCloud/project/{projectId}/loadbalancer/{loadbalancerId}\", 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 load balancer (type: publicCloud.loadbalancer.LoadbalancerPutTargetSpec)\n));\n\nprint_r($result);\n?>"}],"x-iam-actions":[{"name":"publicCloudProject:apiovh:loadbalancer/edit","required":true}]}}},"tags":[{"name":"Loadbalancer","x-tag-expanded":false,"description":"Missing description"}]}
