2025-02-24 15:03:32 +01:00
< ? php
/**
* CreateSnapshotRequest
*
* PHP version 7.4
*
* @ category Class
* @ package OpenAPI\Client
* @ author OpenAPI Generator team
* @ link https :// openapi - generator . tech
*/
/**
* Instance API
*
* Scaleway Instances are virtual machines in the cloud . Different [ Instance types ]( https :// www . scaleway . com / en / docs / compute / instances / reference - content / choosing - instance - type / ) offer different technical specifications in terms of vCPU , RAM , bandwidth and storage . Once you have created your Instance and installed your image of choice ( e . g . an operating system ), you can [ connect to your Instance via SSH ]( https :// www . scaleway . com / en / docs / compute / instances / how - to / connect - to - instance / ) to use it as you wish . When you are done using the Instance , you can delete it from your account . ( switchcolumn ) < Message type = \ " tip \" > To retrieve information about the different [images](#path-images) available to install on Scaleway Instances, check out our [Marketplace API](https://www.scaleway.com/en/developers/api/marketplace). </Message> (switchcolumn) ## Concepts Refer to our [dedicated concepts page](https://www.scaleway.com/en/docs/compute/instances/concepts/) to find definitions of all concepts and terminology related to Instances. (switchcolumn) (switchcolumn) ## Quickstart 1. Configure your environment variables <Message type= \" note \" > This is an optional step that seeks to simplify your usage of the Instances API. See [Availability Zones](#availability-zones) below for help choosing an Availability Zone. You can find your Project ID in the [Scaleway console](https://console.scaleway.com/project/settings). </Message> ```bash export SCW_SECRET_KEY= \" <API secret key> \" export SCW_DEFAULT_ZONE= \" <Scaleway Availability Zone> \" export SCW_PROJECT_ID= \" <Scaleway Project ID> \" ``` 2. **Create an Instance**: Run the following command to create an Instance. You can customize the details in the payload (name, description, type, tags etc) to your needs: use the information below to adjust the payload as necessary. ```bash curl -X POST \\ -H \" X-Auth-Token: $SCW_SECRET_KEY\ " \\ - H \ " Content-Type: application/json \" \\ \" https://api.scaleway.com/instance/v1/zones/ $SCW_DEFAULT_ZONE /servers \" \\ -d ' { \" name \" : \" my-new-instance \" , \" project \" : \" ' \" $SCW_PROJECT_ID\ " '\", \"commercial_type\": \"GP1-S\", \"image\": \"ubuntu_noble\", \"enable_ipv6\": true, \"volumes\": { \"0\":{ \"size\": 300000000000, \"volume_type\": \"l_ssd\" } } }' `` ` | Parameter | Description | Valid values | | --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ` name ` | A name of your choice for the Instance ( string )
*
* The version of the OpenAPI document : v1
* Generated by : https :// openapi - generator . tech
* Generator version : 7.11 . 0
*/
/**
* NOTE : This class is auto generated by OpenAPI Generator ( https :// openapi - generator . tech ) .
* https :// openapi - generator . tech
* Do not edit the class manually .
*/
namespace OpenAPI\Client\Model ;
use \ArrayAccess ;
use \OpenAPI\Client\ObjectSerializer ;
/**
* CreateSnapshotRequest Class Doc Comment
*
* @ category Class
* @ package OpenAPI\Client
* @ author OpenAPI Generator team
* @ link https :// openapi - generator . tech
* @ implements \ArrayAccess < string , mixed >
*/
class CreateSnapshotRequest implements ModelInterface , ArrayAccess , \JsonSerializable
{
public const DISCRIMINATOR = null ;
/**
* The original name of the model .
*
* @ var string
*/
protected static $openAPIModelName = 'CreateSnapshot_request' ;
/**
* Array of property to type mappings . Used for ( de ) serialization
*
* @ var string []
*/
protected static $openAPITypes = [
'name' => 'string' ,
'volume_id' => 'string' ,
'tags' => 'string[]' ,
'organization' => 'string' ,
'project' => 'string' ,
'volume_type' => 'string' ,
'bucket' => 'string' ,
'key' => 'string' ,
'size' => 'int'
];
/**
* Array of property to format mappings . Used for ( de ) serialization
*
* @ var string []
* @ phpstan - var array < string , string | null >
* @ psalm - var array < string , string | null >
*/
protected static $openAPIFormats = [
'name' => null ,
'volume_id' => null ,
'tags' => null ,
'organization' => null ,
'project' => null ,
'volume_type' => null ,
'bucket' => null ,
'key' => null ,
'size' => 'uint64'
];
/**
* Array of nullable properties . Used for ( de ) serialization
*
* @ var boolean []
*/
protected static array $openAPINullables = [
'name' => false ,
'volume_id' => true ,
'tags' => true ,
'organization' => true ,
'project' => true ,
'volume_type' => false ,
'bucket' => true ,
'key' => true ,
'size' => true
];
/**
* If a nullable field gets set to null , insert it here
*
* @ var boolean []
*/
protected array $openAPINullablesSetToNull = [];
/**
* Array of property to type mappings . Used for ( de ) serialization
*
* @ return array
*/
public static function openAPITypes ()
{
return self :: $openAPITypes ;
}
/**
* Array of property to format mappings . Used for ( de ) serialization
*
* @ return array
*/
public static function openAPIFormats ()
{
return self :: $openAPIFormats ;
}
/**
* Array of nullable properties
*
* @ return array
*/
protected static function openAPINullables () : array
{
return self :: $openAPINullables ;
}
/**
* Array of nullable field names deliberately set to null
*
* @ return boolean []
*/
private function getOpenAPINullablesSetToNull () : array
{
return $this -> openAPINullablesSetToNull ;
}
/**
* Setter - Array of nullable field names deliberately set to null
*
* @ param boolean [] $openAPINullablesSetToNull
*/
private function setOpenAPINullablesSetToNull ( array $openAPINullablesSetToNull ) : void
{
$this -> openAPINullablesSetToNull = $openAPINullablesSetToNull ;
}
/**
* Checks if a property is nullable
*
* @ param string $property
* @ return bool
*/
public static function isNullable ( string $property ) : bool
{
return self :: openAPINullables ()[ $property ] ? ? false ;
}
/**
* Checks if a nullable property is set to null .
*
* @ param string $property
* @ return bool
*/
public function isNullableSetToNull ( string $property ) : bool
{
return in_array ( $property , $this -> getOpenAPINullablesSetToNull (), true );
}
/**
* Array of attributes where the key is the local name ,
* and the value is the original name
*
* @ var string []
*/
protected static $attributeMap = [
'name' => 'name' ,
'volume_id' => 'volume_id' ,
'tags' => 'tags' ,
'organization' => 'organization' ,
2025-03-26 11:06:58 +01:00
'project' => 'project_id' ,
2025-02-24 15:03:32 +01:00
'volume_type' => 'volume_type' ,
'bucket' => 'bucket' ,
'key' => 'key' ,
'size' => 'size'
];
/**
* Array of attributes to setter functions ( for deserialization of responses )
*
* @ var string []
*/
protected static $setters = [
'name' => 'setName' ,
'volume_id' => 'setVolumeId' ,
'tags' => 'setTags' ,
'organization' => 'setOrganization' ,
'project' => 'setProject' ,
'volume_type' => 'setVolumeType' ,
'bucket' => 'setBucket' ,
'key' => 'setKey' ,
'size' => 'setSize'
];
/**
* Array of attributes to getter functions ( for serialization of requests )
*
* @ var string []
*/
protected static $getters = [
'name' => 'getName' ,
'volume_id' => 'getVolumeId' ,
'tags' => 'getTags' ,
'organization' => 'getOrganization' ,
'project' => 'getProject' ,
'volume_type' => 'getVolumeType' ,
'bucket' => 'getBucket' ,
'key' => 'getKey' ,
'size' => 'getSize'
];
/**
* Array of attributes where the key is the local name ,
* and the value is the original name
*
* @ return array
*/
public static function attributeMap ()
{
return self :: $attributeMap ;
}
/**
* Array of attributes to setter functions ( for deserialization of responses )
*
* @ return array
*/
public static function setters ()
{
return self :: $setters ;
}
/**
* Array of attributes to getter functions ( for serialization of requests )
*
* @ return array
*/
public static function getters ()
{
return self :: $getters ;
}
/**
* The original name of the model .
*
* @ return string
*/
public function getModelName ()
{
return self :: $openAPIModelName ;
}
public const VOLUME_TYPE_UNKNOWN_VOLUME_TYPE = 'unknown_volume_type' ;
public const VOLUME_TYPE_L_SSD = 'l_ssd' ;
public const VOLUME_TYPE_B_SSD = 'b_ssd' ;
public const VOLUME_TYPE_UNIFIED = 'unified' ;
/**
* Gets allowable values of the enum
*
* @ return string []
*/
public function getVolumeTypeAllowableValues ()
{
return [
self :: VOLUME_TYPE_UNKNOWN_VOLUME_TYPE ,
self :: VOLUME_TYPE_L_SSD ,
self :: VOLUME_TYPE_B_SSD ,
self :: VOLUME_TYPE_UNIFIED ,
];
}
/**
* Associative array for storing property values
*
* @ var mixed []
*/
protected $container = [];
/**
* Constructor
*
* @ param mixed [] | null $data Associated array of property values
* initializing the model
*/
public function __construct ( ? array $data = null )
{
$this -> setIfExists ( 'name' , $data ? ? [], null );
$this -> setIfExists ( 'volume_id' , $data ? ? [], null );
$this -> setIfExists ( 'tags' , $data ? ? [], null );
$this -> setIfExists ( 'organization' , $data ? ? [], null );
$this -> setIfExists ( 'project' , $data ? ? [], null );
$this -> setIfExists ( 'volume_type' , $data ? ? [], 'unknown_volume_type' );
$this -> setIfExists ( 'bucket' , $data ? ? [], null );
$this -> setIfExists ( 'key' , $data ? ? [], null );
$this -> setIfExists ( 'size' , $data ? ? [], null );
}
/**
* Sets $this -> container [ $variableName ] to the given data or to the given default Value ; if $variableName
* is nullable and its value is set to null in the $fields array , then mark it as " set to null " in the
* $this -> openAPINullablesSetToNull array
*
* @ param string $variableName
* @ param array $fields
* @ param mixed $defaultValue
*/
private function setIfExists ( string $variableName , array $fields , $defaultValue ) : void
{
if ( self :: isNullable ( $variableName ) && array_key_exists ( $variableName , $fields ) && is_null ( $fields [ $variableName ])) {
$this -> openAPINullablesSetToNull [] = $variableName ;
}
$this -> container [ $variableName ] = $fields [ $variableName ] ? ? $defaultValue ;
}
/**
* Show all the invalid properties with reasons .
*
* @ return array invalid properties with reasons
*/
public function listInvalidProperties ()
{
$invalidProperties = [];
$allowedValues = $this -> getVolumeTypeAllowableValues ();
if ( ! is_null ( $this -> container [ 'volume_type' ]) && ! in_array ( $this -> container [ 'volume_type' ], $allowedValues , true )) {
$invalidProperties [] = sprintf (
" invalid value '%s' for 'volume_type', must be one of '%s' " ,
$this -> container [ 'volume_type' ],
implode ( " ', ' " , $allowedValues )
);
}
return $invalidProperties ;
}
/**
* Validate all the properties in the model
* return true if all passed
*
* @ return bool True if all properties are valid
*/
public function valid ()
{
return count ( $this -> listInvalidProperties ()) === 0 ;
}
/**
* Gets name
*
* @ return string | null
*/
public function getName ()
{
return $this -> container [ 'name' ];
}
/**
* Sets name
*
* @ param string | null $name Name of the snapshot .
*
* @ return self
*/
public function setName ( $name )
{
if ( is_null ( $name )) {
throw new \InvalidArgumentException ( 'non-nullable name cannot be null' );
}
$this -> container [ 'name' ] = $name ;
return $this ;
}
/**
* Gets volume_id
*
* @ return string | null
*/
public function getVolumeId ()
{
return $this -> container [ 'volume_id' ];
}
/**
* Sets volume_id
*
* @ param string | null $volume_id UUID of the volume .
*
* @ return self
*/
public function setVolumeId ( $volume_id )
{
if ( is_null ( $volume_id )) {
array_push ( $this -> openAPINullablesSetToNull , 'volume_id' );
} else {
$nullablesSetToNull = $this -> getOpenAPINullablesSetToNull ();
$index = array_search ( 'volume_id' , $nullablesSetToNull );
if ( $index !== FALSE ) {
unset ( $nullablesSetToNull [ $index ]);
$this -> setOpenAPINullablesSetToNull ( $nullablesSetToNull );
}
}
$this -> container [ 'volume_id' ] = $volume_id ;
return $this ;
}
/**
* Gets tags
*
* @ return string [] | null
*/
public function getTags ()
{
return $this -> container [ 'tags' ];
}
/**
* Sets tags
*
* @ param string [] | null $tags Tags of the snapshot .
*
* @ return self
*/
public function setTags ( $tags )
{
if ( is_null ( $tags )) {
array_push ( $this -> openAPINullablesSetToNull , 'tags' );
} else {
$nullablesSetToNull = $this -> getOpenAPINullablesSetToNull ();
$index = array_search ( 'tags' , $nullablesSetToNull );
if ( $index !== FALSE ) {
unset ( $nullablesSetToNull [ $index ]);
$this -> setOpenAPINullablesSetToNull ( $nullablesSetToNull );
}
}
$this -> container [ 'tags' ] = $tags ;
return $this ;
}
/**
* Gets organization
*
* @ return string | null
* @ deprecated
*/
public function getOrganization ()
{
return $this -> container [ 'organization' ];
}
/**
* Sets organization
*
* @ param string | null $organization Organization ID of the snapshot .
*
* @ return self
* @ deprecated
*/
public function setOrganization ( $organization )
{
if ( is_null ( $organization )) {
array_push ( $this -> openAPINullablesSetToNull , 'organization' );
} else {
$nullablesSetToNull = $this -> getOpenAPINullablesSetToNull ();
$index = array_search ( 'organization' , $nullablesSetToNull );
if ( $index !== FALSE ) {
unset ( $nullablesSetToNull [ $index ]);
$this -> setOpenAPINullablesSetToNull ( $nullablesSetToNull );
}
}
$this -> container [ 'organization' ] = $organization ;
return $this ;
}
/**
* Gets project
*
* @ return string | null
*/
public function getProject ()
{
return $this -> container [ 'project' ];
}
/**
* Sets project
*
* @ param string | null $project Project ID of the snapshot .
*
* @ return self
*/
public function setProject ( $project )
{
if ( is_null ( $project )) {
array_push ( $this -> openAPINullablesSetToNull , 'project' );
} else {
$nullablesSetToNull = $this -> getOpenAPINullablesSetToNull ();
$index = array_search ( 'project' , $nullablesSetToNull );
if ( $index !== FALSE ) {
unset ( $nullablesSetToNull [ $index ]);
$this -> setOpenAPINullablesSetToNull ( $nullablesSetToNull );
}
}
$this -> container [ 'project' ] = $project ;
return $this ;
}
/**
* Gets volume_type
*
* @ return string | null
*/
public function getVolumeType ()
{
return $this -> container [ 'volume_type' ];
}
/**
* Sets volume_type
*
* @ param string | null $volume_type Volume type of the snapshot . Overrides the volume_type of the snapshot . If omitted , the volume type of the original volume will be used .
*
* @ return self
*/
public function setVolumeType ( $volume_type )
{
if ( is_null ( $volume_type )) {
throw new \InvalidArgumentException ( 'non-nullable volume_type cannot be null' );
}
$allowedValues = $this -> getVolumeTypeAllowableValues ();
if ( ! in_array ( $volume_type , $allowedValues , true )) {
throw new \InvalidArgumentException (
sprintf (
" Invalid value '%s' for 'volume_type', must be one of '%s' " ,
$volume_type ,
implode ( " ', ' " , $allowedValues )
)
);
}
$this -> container [ 'volume_type' ] = $volume_type ;
return $this ;
}
/**
* Gets bucket
*
* @ return string | null
*/
public function getBucket ()
{
return $this -> container [ 'bucket' ];
}
/**
* Sets bucket
*
* @ param string | null $bucket Bucket name for snapshot imports .
*
* @ return self
*/
public function setBucket ( $bucket )
{
if ( is_null ( $bucket )) {
array_push ( $this -> openAPINullablesSetToNull , 'bucket' );
} else {
$nullablesSetToNull = $this -> getOpenAPINullablesSetToNull ();
$index = array_search ( 'bucket' , $nullablesSetToNull );
if ( $index !== FALSE ) {
unset ( $nullablesSetToNull [ $index ]);
$this -> setOpenAPINullablesSetToNull ( $nullablesSetToNull );
}
}
$this -> container [ 'bucket' ] = $bucket ;
return $this ;
}
/**
* Gets key
*
* @ return string | null
*/
public function getKey ()
{
return $this -> container [ 'key' ];
}
/**
* Sets key
*
* @ param string | null $key Object key for snapshot imports .
*
* @ return self
*/
public function setKey ( $key )
{
if ( is_null ( $key )) {
array_push ( $this -> openAPINullablesSetToNull , 'key' );
} else {
$nullablesSetToNull = $this -> getOpenAPINullablesSetToNull ();
$index = array_search ( 'key' , $nullablesSetToNull );
if ( $index !== FALSE ) {
unset ( $nullablesSetToNull [ $index ]);
$this -> setOpenAPINullablesSetToNull ( $nullablesSetToNull );
}
}
$this -> container [ 'key' ] = $key ;
return $this ;
}
/**
* Gets size
*
* @ return int | null
*/
public function getSize ()
{
return $this -> container [ 'size' ];
}
/**
* Sets size
*
* @ param int | null $size Imported snapshot size , must be a multiple of 512. ( in bytes )
*
* @ return self
*/
public function setSize ( $size )
{
if ( is_null ( $size )) {
array_push ( $this -> openAPINullablesSetToNull , 'size' );
} else {
$nullablesSetToNull = $this -> getOpenAPINullablesSetToNull ();
$index = array_search ( 'size' , $nullablesSetToNull );
if ( $index !== FALSE ) {
unset ( $nullablesSetToNull [ $index ]);
$this -> setOpenAPINullablesSetToNull ( $nullablesSetToNull );
}
}
$this -> container [ 'size' ] = $size ;
return $this ;
}
/**
* Returns true if offset exists . False otherwise .
*
* @ param integer $offset Offset
*
* @ return boolean
*/
public function offsetExists ( $offset ) : bool
{
return isset ( $this -> container [ $offset ]);
}
/**
* Gets offset .
*
* @ param integer $offset Offset
*
* @ return mixed | null
*/
#[\ReturnTypeWillChange]
public function offsetGet ( $offset )
{
return $this -> container [ $offset ] ? ? null ;
}
/**
* Sets value based on offset .
*
* @ param int | null $offset Offset
* @ param mixed $value Value to be set
*
* @ return void
*/
public function offsetSet ( $offset , $value ) : void
{
if ( is_null ( $offset )) {
$this -> container [] = $value ;
} else {
$this -> container [ $offset ] = $value ;
}
}
/**
* Unsets offset .
*
* @ param integer $offset Offset
*
* @ return void
*/
public function offsetUnset ( $offset ) : void
{
unset ( $this -> container [ $offset ]);
}
/**
* Serializes the object to a value that can be serialized natively by json_encode () .
* @ link https :// www . php . net / manual / en / jsonserializable . jsonserialize . php
*
* @ return mixed Returns data which can be serialized by json_encode (), which is a value
* of any type other than a resource .
*/
#[\ReturnTypeWillChange]
public function jsonSerialize ()
{
return ObjectSerializer :: sanitizeForSerialization ( $this );
}
/**
* Gets the string presentation of the object
*
* @ return string
*/
public function __toString ()
{
return json_encode (
ObjectSerializer :: sanitizeForSerialization ( $this ),
JSON_PRETTY_PRINT
);
}
/**
* Gets a header - safe presentation of the object
*
* @ return string
*/
public function toHeaderValue ()
{
return json_encode ( ObjectSerializer :: sanitizeForSerialization ( $this ));
}
}