class ServiceID(str):
    """The specifier of the service to get"""
    pass class ServiceListID(str):
    """Identification string of service list to get"""
    pass class Start(str):
    """Only show events which started after this date, inclusive.
    Suggested format  RFC 2822 or RFC 1123"""
    pass class End(str):
    """Only show events which started before this date, inclusive.
    Suggested format  RFC 2822 or RFC 1123"""
    pass class EventSid(str):
    """The SID of the event to get"""
    pass class StatusID(str):
    """The ID of the status to get"""
    pass class EndPoint(object):
    """Base object representation of an endpoint"""

    # Default host to use unless otherwise specified by a derived class
    host = 'REST'

    # Path needs to be a Path object
    path = ()

    # the HTTP verb to use for this endpoint
    method = ''

    # description of endpoint
    description = ''

    # parameters required to send to endpoint
    parameters = {}

    # valid responses
    responses = {}

    # error msgs'
    error = ()

    # json format the data body as per the response_schema below
    request_schema = {} PATH = 'path' QUERY = 'query' HEALTH = 'HEALTH'
from .annotations import ServiceID, ServiceListID, Start, End, EventSid, StatusID
from ..definitions.health_types import *
from ..endpoints.base import EndPoint, PATH, QUERY, HEALTH
class GETService(EndPoint):
    host = HEALTH

    # the HTTP verb to use for this endpoint
    method = 'GET'

    # path to endpoint
    path = ('/api/v1/services/', ServiceID)

    parameters = {ServiceID: (PATH, 'service-id')}

    # valid responses
    responses = {200: Service}

    # error msgs'
    error = (404,)

class GETServiceLists(EndPoint):
    host = HEALTH

    # the HTTP verb to use for this endpoint
    method = 'GET'

    # path to endpoint
    path = ('/api/v1/service-lists',)

    # valid responses
    responses = {200: {'lists': ArrayServiceList}}

    # error msgs'
    error = (404,)

class GETServiceList(EndPoint):
    host = HEALTH

    # the HTTP verb to use for this endpoint
    method = 'GET'

    # path to endpoint
    path = ('/api/v1/service-lists/', ServiceListID)

    parameters = {ServiceListID: (PATH, 'service_list_id')}

    # valid responses
    responses = {200: {'lists': ServiceList}}

    # error msgs'
    error = (404,)

class GETEvents(EndPoint):
    host = HEALTH

    # the HTTP verb to use for this endpoint
    method = 'GET'

    # path to endpoint
    path = ('/api/v1/services/', ServiceID, '/events')

    # parameters required to send to endpoint
    parameters = {ServiceID: (PATH, 'service-id'), Start: (QUERY, 'start'), End: (QUERY, 'end')}

    # valid responses
    responses = {200: {'events': ArrayEvent}}

    # error msgs'
    error = (404,)

class GETCurrentEvent(EndPoint):
    host = HEALTH

    # the HTTP verb to use for this endpoint
    method = 'GET'

    # path to endpoint
    path = ('/api/v1/services/', ServiceID, '/events/current')

    # parameters required to send to endpoint
    parameters = {ServiceID: (PATH, 'service-id')}

    # valid responses
    responses = {200: Event}

    # error msgs'
    error = (404,)

class GETEvent(EndPoint):
    host = HEALTH

    # the HTTP verb to use for this endpoint
    method = 'GET'

    # path to endpoint
    path = ('/api/v1/services/', ServiceID, '/events/', EventSid)

    # parameters required to send to endpoint
    parameters = {ServiceID: (PATH, 'service-id'),
                  EventSid: (PATH, 'event-sid')}

    # valid responses
    responses = {200: Event}

    # error msgs'
    error = (404,)

class GETStatuses(EndPoint):
    host = HEALTH

    # the HTTP verb to use for this endpoint
    method = 'GET'

    # path to endpoint
    path = ('/api/v1/statuses',)

    # valid responses
    responses = {200: {'statuses': ArrayStatus}}

    # error msgs'
    error = (404,)

class GETStatus(EndPoint):

    host = HEALTH