Postgres Access Roles
You don't need to GRANT only on a schema. You can get more specific and GRANT specifically to a table, like this:

GRANT ALL ON TABLE xyz.items TO admin_role;


but note that GRANT ALL and REVOKE ALL are very large sledgehammers for building very small spice racks.

Consider reviewing the excellent GRANT documentation which covers this in detail.

For your specific case, you could do something as simple as:

REVOKE CREATE ON SCHEMA public FROM admin_role;


which would remove the right to create new objects in the schema.