Can page statuses vary per user role

Our site has multiple user roles.

Is it possible to only show Draft and Unlisted statuses to one specific user role and all options to the other roles?

Can this be done using this below, or is this something that requires some sort of code?

status:
draft: true
unlisted: false
listed: true

No, this can’t be set in a blueprint. You would either have to use different blueprints per user role or use page models to limit access to certain pages in the Panel.

Is this something you need for all page types and many user roles? Could you provide a bit more information about your intended setup?

class NotePage extends Page
{
    public function isReadable(): bool
    {
        static $readable = [];
        $template = $this->intendedTemplate()->name();
        ​
        if (isset($readable[$template]) === true) {
            return $readable[$template];
        }
        ​
        if ($this->author()->toUser()->is($this->kirby()->user()) ||
            $this->kirby()->user()->isAdmin()) {
            return $readable[$template] = true;
        }​
        return $readable[$template] = false;
    }
}

Thank you for your feedback.

The client has editors and reviewers, and editors can only submit content for review, and reviewers can publish or decline the changes.

I was considering limiting access to the statuses for each user role. I different blueprint for reviewers is something I will consider as well as the code sample that has been provided.

Oh, this is all about allowing users to change the status of pages once they are created, not viewing page statuses? But that can indeed be done via the blueprints, see https://getkirby.com/docs/guide/users/permissions#specific-permissions-in-page-file-user-or-site-options__page-options.

The option to use here would be changeStatus:

options: 
  changeStatus: 
    editors: false
    reviewers: true