camaraproject / DeviceStatus

Repository to describe, develop, document and test the Device Status API family
Apache License 2.0
11 stars 31 forks source link

Separate endpoints into different APIs #125

Closed NoelWirzius closed 2 weeks ago

NoelWirzius commented 3 months ago

In this issue the topic of separating the different endpoints into separate APIs should be covered. The split makes sense to be aligned with the other Camara Subprojects like "Device Location". On the other hand this will also helps the productization of the APIs and a clear offering from the telco industries.

Suggestion:

jgarciahospital commented 3 months ago

Thanks Noel for opening back this discussion. We totally support this approach based on this rationale:

Based on this, Telefonica proposes to follow the same strategy as other APIs (like location, SIM Swap...), separating features and use cases in separated atomic APIs:

  1. Device Status (roaming)
  2. Device Status (connectivity)
  3. Device Status (roaming) subscription
  4. Device Status (connectivity) subscription
JoachimDahlgren commented 3 months ago

This is opening up the discussion from last summer #https://github.com/camaraproject/DeviceStatus/discussions/55. Is there anything that has changed since then? At that time there was a summary written in #https://github.com/camaraproject/DeviceStatus/blob/main/documentation/SupportingDocuments/decision-support-1-or-2-apis.md

bigludo7 commented 3 months ago

Hello Totally support also from my side as well to have 4 APIs like suggested by @jgarciahospital.

@JoachimDahlgren - since we discussed months ago we coded/implemented this APIs and this effort changed our perspective on this. We shared the rationales listed by Jorge.

I believe that the "All or Nothing" approach for an API implementation is a key to adoption and partial implementation is not manageable for our consumer.

NoelWirzius commented 3 months ago

@bigludo7 @jgarciahospital from dt side we also supporting the approach with 4 APIs and will commit to this.

We need to check if it makes sense to have the API-Name in the event or coming here more from the functional side.

sachinvodafone commented 3 months ago

I believe this is a common issue across all APIs, with each API handling these issues differently. To address this, I've initiated a discussion focusing on commonalities to establish a design pattern for addressing these issues, which can then be referenced by other APIs.

bigludo7 commented 3 months ago

Any update on this one?

I saw support from DT (@NoelWirzius ), Telefonica (@jgarciahospital ) & Orange. @sachinvodafone and @JoachimDahlgren as steady attendees to this WG do you have any blocking points to split the API?

As we have preparing the September release better to tackle this point soon. Thanks

akoshunyadi commented 3 months ago

We could do the split after v0.6.0.

But we should first agree on the API names, do we want to have them so long, like this?

sachinvodafone commented 3 months ago

I support the idea of having four separate YAML files to address separation of concerns. However, without clear API design rules for our Camara project, different teams might opt for different approaches (such as separate endpoints versus separate YAML files)when dealing with the same design problem.

bigludo7 commented 2 months ago

@akoshunyadi looking of what we add for Device Location project (here) we can probably remove device-status in the name. What about

The interesting point raised by @shilpa-padgaonkar here make me like simple api name :)

jgarciahospital commented 2 months ago

LGTM

shilpa-padgaonkar commented 2 months ago

@akoshunyadi @bigludo7 @jgarciahospital @NoelWirzius

I am bit concerned that the names connectivity and connectivity-insights (API in https://github.com/camaraproject/ConnectivityInsights/ ) seem almost similar.

How do we differentiate the 2?

jgarciahospital commented 2 months ago

Reachability sounds good:

  • roaming.yaml
  • reachability.yaml
  • roaming-subscriptions.yaml
  • reachability-subscriptions.yaml
akoshunyadi commented 2 months ago

We could introduce product categories in Camara, like device, home, network, etc...
So the api name would be prefixed like \<product category>-\<feature>.yaml: device-roaming.yaml device-connectivity.yaml device-roaming-subscriptions.yaml device-connectivity-subscriptions.yaml

the same for location

so we only have to have a unique feature name within the category

bigludo7 commented 2 months ago

Good point @shilpa-padgaonkar I'm fine with @jgarciahospital proposal for reachability

@akoshunyadi as it will impact other API isn't a topic for commonalities? I tend to prefer simplicity but get your point. Perhaps we can explore other means to categorize the API? in meta release description for example or on a CAMARA page...

akoshunyadi commented 2 months ago

I think we should use now the chance with the new names to enhance the structure/organization of our APIs. Sure, I'll create an issue in Commonalities.

akoshunyadi commented 2 months ago

https://github.com/camaraproject/Commonalities/issues/178

fernandopradocabrillo commented 2 months ago

From TEF we are hoping to be able to bring this change into v0.6.0 since we all already agreed to apply it. In the last meeting minutes I can see that it is marked for v0.6.0 alpha2, but I'm not quite sure which moment is that. can you clarify @akoshunyadi ?

image

akoshunyadi commented 2 months ago

@fernandopradocabrillo yes, the splitting issue will be a part of 0.6.0. With the alpha1 we'd just like to bring some more quality into 0.6.0, so that we receive some developer feedback to all those other changes.

maxl2287 commented 3 weeks ago

@akoshunyadi shell the version be:

bigludo7 commented 3 weeks ago

Following discussion with @fernandopradocabrillo on the PR #152, here a proposal for the API naming:

API to retrieve 'on the fly' reachability status. Name: reachability-status endpoint: /retrieve API to retrieve 'on the fly ' roaming status. Name: roaming-status endpoint: /retrieve API to subscribe to reachability notification. Name: reachability-status-subscriptions (the endpoint is /subscriptions) API to subscribe to roaming notification. Name: roaming-status-subscriptions

Looking for team feedback to close this work.

akoshunyadi commented 3 weeks ago

@akoshunyadi shell the version be:

* `version: 0.6.0-alpha.2`

* `url: "{apiRoot}/<...>/v0.6alpha2"`

?

@maxl2287 it should be wip for now, and the release-preparation PR will set the correct ones

akoshunyadi commented 3 weeks ago

Following discussion with @fernandopradocabrillo on the PR #152, here a proposal for the API naming:

API to retrieve 'on the fly' reachability status. Name: reachability-status endpoint: /retrieve API to retrieve 'on the fly ' roaming status. Name: roaming-status endpoint: /retrieve API to subscribe to reachability notification. Name: reachability-status-subscriptions (the endpoint is /subscriptions) API to subscribe to roaming notification. Name: roaming-status-subscriptions

Looking for team feedback to close this work.

Fine for me, but now all 4 APIs proposed start with "device- ". We can take those one too, with device as a context. Or are they too long?

bigludo7 commented 3 weeks ago

@akoshunyadi I removed device to be aligned with device location. For me it depends also the name of the subprojet. If we keep Device Status as the API family name we can avoid the word device in the api-name.

On this topic we probably need to review @hdamker proposal here https://github.com/camaraproject/Governance/issues/142 as I guess we need one lead repository for Device Status (without API directly described in it) and 4 child repo for our 4 APIs.... but this is not exactly what Herbert is describing.