# Streetlity APIs # Services ## Common There APIs are applied to all services ### Create Service Create new service, the creating service must not existed. Created service will be counted as an unconfirmed service and need to be upvoted to become an offical service. **Path**: `/service/$service_name/create` **Method**: `POST` **Param**: <pre> - location (array): include latitude and longitude in location[0] and location[1] perspective. - address: address of the service, for later using instead of use google api - note: note about the service - images (array): path to the driver of the image - contributor: username of the contributor </pre> ### Service in range Get services that are in a specific area **Path**: `/service/$sevice_name/range` **Method**: `GET` **Param**: <pre> - location (array): include latitude and longitude in location[0] and location[1] perspective. - range: radius to find the service </pre> ### Get a specified service Get a specified service by providing id of the service **Path**: `/service/$service_name/` **Method**: `GET` **Param**: <pre> - id </pre> ### Get specified service Get a specified service by the case: - By id of the service - By location of the service (lat, lon) - By address of the service Case is depend on the input params and have the priority if all params are satisfied: id > location > address **Path**: `service/$service_name/` **Method**: `GET` **Param**: <pre> - id (optional) (1): id of the service - lat (optional) (2): latitude of the service - lon (optional) (2): lontitude of the service - address (optional) (3): address of the service </pre> ## Unconfirmed Service ### Get a specified unconfirmed service Same as [Service](#get-specified-service), we can get unconfirmed service in the same way **Path**: `service/$service_name_ucf/` **Method**: `GET` **Param**: <pre> Same as service </pre> ### Get mutiples unconfirmed services **Path**: `service/$service_name_ucf/s` **Method**: `GET` **Param**: <pre> address: address of the related services </pre> **Return**: <pre> - Services </pre> ### Get all unconfirmed service Get list of unconfirmed services **Path**: `service/$service_name_ucf/all` **Method**: `GET` **Return**: <pre> - Services </pre> ### Get unconfirmed service in range Get list of unconfirmed services that in a specified radius **Path**: `service/$service_name_ucf/range` **Method**: `GET` **Param**: <pre> - location (array): include latitude and longitude in location[0] and location[1] perspective. - range: radius to find the service </pre> ### Update service Update information of a specified service by their own field **Path**: `service/$service_name/update` **Method**: `POST` **Param**: <pre> - note (optional) - </pre> ### Upvote service Upvote an unconfirmed service. When the service reached enough upvote, it will become an offical service. **Path**: `/service/$service_name_ucf/upvote` **Method**: `POST` **Param**: <pre> - id: id of the unconfirmed service - upvote_type (optional): set to "Immediately" to upvote the service immeditately </pre> ### Downvote service Downvote an service. When the service become lower than the confident, it will be come an unconfirmed service. **Path**: `service/$service_name_ucf/downvote` **Method**: `POST` **Param**: <pre> - id: id of the service </pre> ### Get Review Get a specified review **Path**: `/service/$service_name/review` **Method**: `GET` **Param**: <pre> - review_id: id of the review </pre> ### Create Review Create a review for a specified service **Path**: `/service/$service_name/review/create` **Method**: `POST` **Param**: <pre> - service_id: id of the reviewing service - reviewer: user id of the reviewer - score: the ratio of the review - body: content of the review </pre> ### Delete Review Delete a review by specified id **Path**: `/service/$service_name/review` **Method**: `DELETE` **Param**: <pre> - review_id: id of the review </pre> ### Update Review Update body of a specified id **Path**: `/service/$service_name/review` **Method**: `POST` **Param**: <pre> - review_id: id of the review - new_body: content that need to be updated </pre> ### Query Review Query the review from a specified order **Path**: `/service/$service_name/review/query` **Method**: `GET` **Param**: <pre> - service_id: id of the service - order </pre> ## Maintenance History Maintenance history provide methods to get histories which matched with a specified condition ### Get history by id Return a history by a specified id **Path**: `/service/maintenance/history/` **Method**: `GET` **Param**: <pre> - id: id of the history </pre> **Return**: <pre> - History </pre> ### Get histories related to a common user Return histories that related to a specififed common user **Path**: `/service/maintenance/history/c` **Method**: `GET` **Param**: <pre> - common_user: name of the common user </pre> **Return**: <pre> - Histories </pre> ### Get histories related to a maintenance user Return histories that related to a specified maintenance user **Path**: `/service/maintenance/history/m` **Method**: `GET` **Param**: <pre> - maintenance_user: name of the maintenance user </pre> **Return**: <pre> - Histories </pre>