<?php

namespace DigiComp\HetznerDnsApi\Model;

class Record
{
    /**
     * ID of record
     *
     * @var string|null
     */
    protected $id;
    /**
     * Time record was created
     *
     * @var \DateTime|null
     */
    protected $created;
    /**
     * Time record was last updated
     *
     * @var \DateTime|null
     */
    protected $modified;
    /**
     * ID of zone this record is associated with
     *
     * @var string|null
     */
    protected $zoneId;
    /**
     * Type of the record
     *
     * @var string|null
     */
    protected $type;
    /**
     * Name of record
     *
     * @var string|null
     */
    protected $name;
    /**
     * Value of record (e.g. 127.0.0.1, 1.1.1.1)
     *
     * @var string|null
     */
    protected $value;
    /**
     * TTL of record
     *
     * @var int|null
     */
    protected $ttl;
    /**
     * ID of record
     *
     * @return string|null
     */
    public function getId() : ?string
    {
        return $this->id;
    }
    /**
     * ID of record
     *
     * @param string|null $id
     *
     * @return self
     */
    public function setId(?string $id) : self
    {
        $this->id = $id;
        return $this;
    }
    /**
     * Time record was created
     *
     * @return \DateTime|null
     */
    public function getCreated() : ?\DateTime
    {
        return $this->created;
    }
    /**
     * Time record was created
     *
     * @param \DateTime|null $created
     *
     * @return self
     */
    public function setCreated(?\DateTime $created) : self
    {
        $this->created = $created;
        return $this;
    }
    /**
     * Time record was last updated
     *
     * @return \DateTime|null
     */
    public function getModified() : ?\DateTime
    {
        return $this->modified;
    }
    /**
     * Time record was last updated
     *
     * @param \DateTime|null $modified
     *
     * @return self
     */
    public function setModified(?\DateTime $modified) : self
    {
        $this->modified = $modified;
        return $this;
    }
    /**
     * ID of zone this record is associated with
     *
     * @return string|null
     */
    public function getZoneId() : ?string
    {
        return $this->zoneId;
    }
    /**
     * ID of zone this record is associated with
     *
     * @param string|null $zoneId
     *
     * @return self
     */
    public function setZoneId(?string $zoneId) : self
    {
        $this->zoneId = $zoneId;
        return $this;
    }
    /**
     * Type of the record
     *
     * @return string|null
     */
    public function getType() : ?string
    {
        return $this->type;
    }
    /**
     * Type of the record
     *
     * @param string|null $type
     *
     * @return self
     */
    public function setType(?string $type) : self
    {
        $this->type = $type;
        return $this;
    }
    /**
     * Name of record
     *
     * @return string|null
     */
    public function getName() : ?string
    {
        return $this->name;
    }
    /**
     * Name of record
     *
     * @param string|null $name
     *
     * @return self
     */
    public function setName(?string $name) : self
    {
        $this->name = $name;
        return $this;
    }
    /**
     * Value of record (e.g. 127.0.0.1, 1.1.1.1)
     *
     * @return string|null
     */
    public function getValue() : ?string
    {
        return $this->value;
    }
    /**
     * Value of record (e.g. 127.0.0.1, 1.1.1.1)
     *
     * @param string|null $value
     *
     * @return self
     */
    public function setValue(?string $value) : self
    {
        $this->value = $value;
        return $this;
    }
    /**
     * TTL of record
     *
     * @return int|null
     */
    public function getTtl() : ?int
    {
        return $this->ttl;
    }
    /**
     * TTL of record
     *
     * @param int|null $ttl
     *
     * @return self
     */
    public function setTtl(?int $ttl) : self
    {
        $this->ttl = $ttl;
        return $this;
    }
}