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