ForemanPuppet::Engine.routes.draw do namespace :api, defaults: { format: 'json' } do scope '(:apiv)', module: :v2, defaults: { apiv: 'v2' }, apiv: /v1|v2/, constraints: ApiConstraints.new(version: 2, default: true) do constraints(id: %r{[^/]+}) do resources :config_groups, except: %i[new edit] resources :hosts, only: [] do resources :puppetclasses, except: %i[new edit] resources :smart_class_parameters, except: %i[new edit create] do resources :override_values, except: %i[new edit] end resources :host_classes, path: :puppetclass_ids, only: %i[index create destroy] end resources :hostgroups, only: [] do resources :puppetclasses, except: %i[new edit] resources :smart_class_parameters, except: %i[new edit create] do resources :override_values, except: %i[new edit] end resources :hostgroup_classes, path: :puppetclass_ids, only: %i[index create destroy] end resources :environments, except: %i[new edit] do resources :locations, only: %i[index show], controller: '/api/v2/locations' resources :organizations, only: %i[index show], controller: '/api/v2/organizations' resources :smart_class_parameters, except: %i[new edit create] do resources :override_values, except: %i[new edit] end resources :puppetclasses, except: %i[new edit] do resources :smart_class_parameters, except: %i[new edit create] do resources :override_values, except: %i[new edit destroy] end end resources :hosts, only: %i[index show], controller: '/api/v2/hosts' resources :template_combinations, only: %i[index show create update], controller: '/api/v2/template_combinations' end resources :puppetclasses, except: %i[new edit] do resources :smart_class_parameters, except: %i[new edit create] do resources :override_values, except: %i[new edit] end resources :environments, only: %i[index show] do resources :smart_class_parameters, except: %i[new edit create] do resources :override_values, except: %i[new edit] end end end resources :smart_class_parameters, except: %i[new edit create destroy] do resources :override_values, except: %i[new edit] end resources :override_values, only: %i[update destroy] resources :locations, only: [] do resources :environments, only: %i[index show] resources :organizations, only: [] do resources :environments, only: %i[index show] end end resources :organizations, only: [] do resources :environments, only: %i[index show] resources :locations, only: [] do resources :environments, only: %i[index show] end end end end end end