public function update(): self
    {
        /** @var self $data */
        $data = $this;

        if(!$this->validate("patch", $missing))
        {
            throw new \Exception("[MVQN\REST\Endpoints\Endpoint] Annotations for the '".get_class($this)."' class require valid values be set ".
                "on all of the following properties before attempting an update():\n> ".implode("\n> ", $missing)."\n");
        }

        /** @var self $endpoint */
        $endpoint = self::patch($data, [ "id" => $this->getId() ]);

        return $endpoint;
    }