[ https://issues.apache.org/jira/browse/METRON-503?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15801365#comment-15801365 ]
ASF GitHub Bot commented on METRON-503: --------------------------------------- Github user jjmeyer0 commented on the issue: https://github.com/apache/incubator-metron/pull/316 **Project Structure:** Personally I think the module, `metron-interface`, should be split up into more modules. I think there should be `metron-rest` and `metron-rest-client`. The idea would be to move the models into the client module. Specifically the models returned by the endpoints and are used when making requests. I personally like to to do this because it allows a user to use the client without having to bring a ton of dependencies onto their classpath. This is assuming there will eventually be a client module. Does this make sense? Think it is worth doing now? **Response Behavior:** I think we should also decide how Metron's APIs handle errors. In the past I have defined an error response type that was used by all endpoints. It could potentially look something like: { "responseCode" : 404, "message" : "Could not find parser config.", 'fullMessage" : "Could not find parser config with the name: [some name]" } Also, I personally do not like to throw exceptions of type `Exception`. I think we could do a couple things. We could create a MetronRestException that gets mapped to an error response. We could also have the service layer use an `Either` type which would either return the response entity or a set of error responses. Do you all think this is worth talking about now? I think this is always one of those things that's tough to decide, but should be standard across the API. **API Documentation:** I think it is worth documenting all the different response types for each endpoint. For example, the endpoint `/api/v1/sensorParserConfigHistory` only describes the response for a 200 code, but there is also a 404. This can be done by using Swagger's `ApiResponses` annotation. **API Structure:** As for API structure there were a few that I thought could potentially be changed. Below are a few examples. To me it may make sense at some point to have a sensor endpoint. IMO breaking it up as I did below groups them a bit more nicely (isn't an exhaustive list). What do you think? /api/v1/globalConfig -> /api/v1/global/config /api/v1/sensorEnrichmentConfig -> /api/v1/sensor/enrichment/config /api/v1/sensorParserConfig -> /api/v1/sensor/parser/config /api/v1/sensorParserConfigHistory -> /api/v1/sensor/parser/config/history > Metron REST API > --------------- > > Key: METRON-503 > URL: https://issues.apache.org/jira/browse/METRON-503 > Project: Metron > Issue Type: New Feature > Reporter: Ryan Merriman > Assignee: Ryan Merriman > Attachments: Metron REST API.docx > > > As discussed on the dev list ([DISCUSS] Metron REST API Requirements), this > Jira includes adding a REST API to Metron. -- This message was sent by Atlassian JIRA (v6.3.4#6332)