Every resource (file, user, service, package, and so on) is associated with a resource type within the Puppet language.
The resource type defines the kind of configuration it manages.
It has many built-in resource types, like files, cron jobs, services, etc.
Custom resource types are written in Ruby, and have access to the same capabilities as Puppet’s built-in types.
For an in-depth reference about the resource types of puppet do have a look:
https://puppet.com/docs/puppet/6.7/resource_types.html