erasmus-without-paper / ewp-specs-api-iias

Specifications of EWP's Interinstitutional Agreements API.
MIT License
4 stars 13 forks source link

Do we need to implement IIA 6.3 before IIA 7.0 ? #132

Closed anantqs closed 12 months ago

anantqs commented 1 year ago

Can someone please help me understand what are the changes in IIA 6.3 which we need to implement. I see in IIA 6.3 its mentioned about delete feature which is needed to be implemented. But what should be the response if Partner request the deleted get IIA.

janinamincer-daszkiewicz commented 1 year ago

In this document you will find a detailed description of all changes which constitute IIAs in version 6.3.0 and in version 7.0.0: https://owncloud.erasmuswithoutpaper.eu/index.php/s/zyNXSfU78NMtULf?path=%2F2023-08-01_Family_of_IIAs_7_0_0#pdfviewer

But what should be the response if Partner request the deleted get IIA.

The response should be exactly the same as in the case when the partner asks about the nonexistent object. See https://github.com/erasmus-without-paper/ewp-specs-api-iias/blob/stable-v7/endpoints/get.md#handling-of-invalid-parameters.

demilatof commented 1 year ago

How can we implement both IIA 6.3 and 7.0 given that it's forbidden to have more than a version of the same API in the same environment?

janinamincer-daszkiewicz commented 1 year ago

We can implement and deploy in DEV 6.3.0, test it, than implemenent and deploy 7.0.0. If somebody does not want to test 6.3.0 separately, can go straight to 7.0.0. Yes, it is possible that there will be installations in DEV with 6.2.0 and the others with 6.3.0 or even 7.0.0. But to avoid problems we should not mix them in testing.

demilatof commented 1 year ago

We can implement and deploy in DEV 6.3.0, test it, than implemenent and deploy 7.0.0. If somebody does not want to test 6.3.0 separately, can go straight to 7.0.0. Yes, it is possible that there will be installations in DEV with 6.2.0 and the others with 6.3.0 or even 7.0.0. But to avoid problems we should not mix them in testing.

Do you realize that this means that as soon as we start implementing 7.0.0 we have to dismiss any support to 6.x because we cannot anymore test any correction in DEV before upgrading in PROD? We will have a period of about six months without the possibility to solve any problem, little or huge, doesn't matter.

janinamincer-daszkiewicz commented 1 year ago

6.3.0 is part of 7.0.0.

demilatof commented 1 year ago

6.3.0 is part of 7.0.0.

Could you kindly explain? In DEV and/or in PROD I can have 6.3.0 and 7.0.0 at the same time, but not 6.2.0 and 7.0.0. Do you mean this?

janinamincer-daszkiewicz commented 1 year ago

We are talking about DEV. In DEV you can have and test whatever you want. Knowing which tests make sense.

demilatof commented 1 year ago

We are talking about DEV. In DEV you can have and test whatever you want. Knowing which tests make sense.

Ok, so in DEV we can have multiple versions at the same time and the registry MUST be able to support more than one version in dev. This means that isn't completely true that we must have only a version, but that in PROD we will have to expose only one at the same time. This is a huge difference that wasn't pointed out

janinamincer-daszkiewicz commented 1 year ago

Ok, so in DEV we can have multiple versions at the same time and the registry MUST be able to support more than one version in dev.

Number of versions does not matter for the registry.

This means that isn't completely true that we must have only a version, but that in PROD we will have to expose only one at the same time.

To avoid problems with partners trying to invoke incorrect versions in PROD we do not want to have many different versions in PROD at the same time.

anantqs commented 1 year ago

In 6.3 specs, why its not mentioned empty response with 200 is considered as IIA deleted.

janinamincer-daszkiewicz commented 1 year ago

In 6.3 specs, why its not mentioned empty response with 200 is considered as IIA deleted.

Because deleted object is the same as nonexisting object so the normal error handling rules apply.

demilatof commented 1 year ago

Because deleted object is the same as nonexisting object so the normal error handling rules apply.

And this erases month of discussions, when me and others were saying that there is no necessity to communicate that an IIA has been deleted...

janinamincer-daszkiewicz commented 1 year ago

You have to send CNR when you delete the object. That was agreed long time ago.

umesh-qs commented 1 year ago

Because deleted object is the same as nonexisting object so the normal error handling rules apply.

And this erases month of discussions, when me and others were saying that there is no necessity to communicate that an IIA has been deleted...

Exactly. Someone wanted say DELETE, to prove a point. And now the specs don't even clearly say what DELETE is. Which means each provider is able to interpret in whatever way they want to. I just feel so stupid :)

demilatof commented 1 year ago

You have to send CNR when you delete the object. That was agreed long time ago.

Of course, but as you have just stated, "deleted object is the same as nonexisting object so the normal error handling rules apply." Let's think that I send a CNR, but you loss it. Don't you implement a way to manage the nonexistent object and you keep on considering it as existing? And once you have implemented a way to detect that it is no more existent, do you still need my CNR?

Anyway, I will send a CNR in this case, but it's just to waste some lines of code

janinamincer-daszkiewicz commented 1 year ago

Anyway, I will send a CNR in this case, but it's just to waste some lines of code

I would not call it a waste, majority of CNRs reach the target and allow your partners to get this information faster.

demilatof commented 1 year ago

Anyway, I will send a CNR in this case, but it's just to waste some lines of code

I would not call it a waste, majority of CNRs reach the target and allow your partners to get this information faster.

And if they don't, what do you do? Just complain for the unlucky event or do you implement something to manage this case?

janinamincer-daszkiewicz commented 1 year ago

If at any time I need to get access to this object I will call get and will find out that the object does not exist.

demilatof commented 1 year ago

If at any time I need to get access to this object I will call get and will find out that the object does not exist.

So, exactly, once you have implemented this, what do you need CNR for? To save a second now and then?

janinamincer-daszkiewicz commented 1 year ago

So, exactly, once you have implemented this, what do you need CNR for? To save a second now and then?

Yes. I want to base my implementation on CNRs. Yes, I will always have some workaround. Is this something new? This is a general approach in EWP.

demilatof commented 1 year ago

Yes. I want to base my implementation on CNRs. Yes, I will always have some workaround. Is this something new? This is a general approach in EWP.

If you like to duplicate code... If I have a valid method to manage a case, I use only this method avoiding to have different breaking point in my code. The CNR is useful when there may be the necessity for a prompt response, this is not the case for a removed object.

janinamincer-daszkiewicz commented 1 year ago

The CNR is useful when there may be the necessity for a prompt response, this is not the case for a removed object.

You don't know for sure. Anyway, to some extent your implementation is your business. But sending CNR when you delete the object is a must.

Anybody who wants to discuss details of implementation is welcome to the technical workshop to be held in Warsaw 3-4 of October. The information will be sent soon.

demilatof commented 1 year ago

But sending CNR when you delete the object is a must

Of course. As a matter of fact, in this case my workaround consists in deleting nothing, leaving the unnecessary IIAs hanged on the network. May be, before or later, we will decide to use them