@startuml

title API Service Class Diagram

class wsgi.Controller{

}


class ProvidersController extends wsgi.Controller{
  +index(self, req):[]Provider
  +show(self, req, provider_id:String):Provider
}

class CheckpointsController extends wsgi.Controller{
  +index(self, req, provider_id:String):[]Checkpoint
  +create(self, req, body:JSON, provider_id:String):Checkpoint
  +show(self, req, provider_id:String, checkpoint_id:String):):Checkpoint
  +delete(self, req, provider_id:String, checkpoint_id:String):):void
}

class ProtectablesController extends wsgi.Controller{
  +index(self, req):[]Protectable
  +show(self, req, protectable_type:String):[]Protectable
  +index_instances(self, req, protectable_type:String):[]Resource
}

class PlansController extends wsgi.Controller{
  +create(self, req, body:JSON):Plan
  +index(self, req):[]Plan
  +show(self, req, id:String):Plan
  +update(self, req, id:String):Plan
  +delete(self, req, id:String):void
}

class ScheduledOperationsController extends wsgi.Controller{
  +create(self, req, body:JSON):ScheduledOperation
  +index(self, req):[]ScheduledOperation
  +show(self, req, id:String):ScheduledOperation
  +delete(self, req, id:String):void
}


class RestorationsController extends wsgi.Controller{
  +create(self, req, body:JSON):Restoration
  +index(self, req):[]Restoration
  +show(self, req, id:String):Restoration
}

class TriggersController extends wsgi.Controller{
  +create(self, req, body:JSON):Trigger
  +index(self, req):[]Trigger
  +show(self, req, id:String):Trigger
  +delete(self, req, id:String):void
}

@enduml
