Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature] We need API version for endpoints #2066

Open
usta opened this issue Dec 16, 2022 · 5 comments
Open

[Feature] We need API version for endpoints #2066

usta opened this issue Dec 16, 2022 · 5 comments
Labels
api Changes that relates to API enhancement New feature or request

Comments

@usta
Copy link
Member

usta commented Dec 16, 2022

Even we are now in alpha phase for our API , I still think we need a version in endpoints.
This will let us break api whenever we need to change structure without breaking userspace.

For example
right now we are using https://endoflife.date/api/{product}.json endpoint
my suggestion is adding version part in this endpoint such as
https://endoflife.date/api/ v1 /{product}.json

To keep it backward compatibility we can use redirection for a while
https://endoflife.date/api/{product}.json -> https://endoflife.date/api/v1/{product}.json

And whenever we need a break in api we just put new to v2 so v1 users still can continue to get values
with a warning that v1 is deprecated and will be removed

@usta usta added the enhancement New feature or request label Dec 16, 2022
@usta
Copy link
Member Author

usta commented Dec 16, 2022

@usta
Copy link
Member Author

usta commented Dec 16, 2022

@hugovk

@captn3m0
Copy link
Member

There's a lot of maintenance burden maintaining old versions of the API, so we'll need some way to avoid that as well. I think just establishing a changelog + announcement process for any API changes should be good enough for now, with current URL redirects to /v1/.

Long-term:

  • Alpha: API breaks whenever, no guarantees (We're here now)
  • Beta: API schema is stable. We'll announce any changes, breaking or otherwise in advance. Breaking changes will be avoided, as much as possible. Field additions are still possible. Bug fixes are still allowed (such as fixing templates).
  • Stable: Any breaking changes will be implemented via a separate version endpoint. Old endpoints will stay functional for [X] months, and default endpoint (without a version) will upgrade to new version after [Y] months.

Does this mean we'll need to add endoflife.date as a product on the site 😏 ?

@adriens
Copy link
Contributor

adriens commented Dec 17, 2022

Does this mean we'll need to add endoflife.date as a product on the site smirk ?

🤔 about recursivity ♾️

@adriens
Copy link
Contributor

adriens commented Dec 17, 2022

Does it mean you'll have to maintain old APIs for retro-compat changes ?...

marcwrobel added a commit that referenced this issue Dec 20, 2022
Compared the the old v0 API :

- v1 API is now generated using a Jekyll Generator (see https://jekyllrb.com/docs/plugins/generators/).
- JSON files has been moved to the v1 subdirectory (#2066). This makes it easier to implement non-backward-compatible changes in API.
- The all.json, that returned a simple array of product names in v0, now returns a JSON document in v1. The array of products can be found under the 'products' key. This enables us to add endoflife.date-level data (such as the number of products).
- The "products" array in all.json now also contains JSON document instead of simple strings. This will make it easier in the future to expose new data (such as tags for products).
- Product level information are now exposed in the API (#2062) at the "product" endpoint. Instead of a JSON array in v0, v1 returns a JSON document. The release cycles array can be found under the 'releases' key.
- Cycles data now always contains all the release cycles key, even if they are null.
- Individual cycles JSON files has been removed (we thought it was not used/useful enough to be kept).
marcwrobel added a commit that referenced this issue Dec 22, 2022
Compared the the old v0 API :

- v1 API is now generated using a Jekyll Generator (see https://jekyllrb.com/docs/plugins/generators/).
- JSON files has been moved to the v1 subdirectory (#2066). This makes it easier to implement non-backward-compatible changes in API.
- The all.json, that returned a simple array of product names in v0, now returns a JSON document in v1. The array of products can be found under the 'products' key. This enables us to add endoflife.date-level data (such as the number of products).
- The "products" array in all.json now also contains JSON document instead of simple strings. This will make it easier in the future to expose new data (such as tags for products).
- Product level information are now exposed in the API (#2062) at the "product" endpoint. Instead of a JSON array in v0, v1 returns a JSON document. The release cycles array can be found under the 'releases' key.
- Cycles data now always contains all the release cycles key, even if they are null.
- Individual cycles JSON files has been removed (we thought it was not used/useful enough to be kept).
marcwrobel added a commit that referenced this issue Dec 31, 2022
Compared the the old v0 API :

- v1 API is now generated using a Jekyll Generator (see https://jekyllrb.com/docs/plugins/generators/).
- JSON files has been moved to the v1 subdirectory (#2066). This makes it easier to implement non-backward-compatible changes in API.
- The all.json, that returned a simple array of product names in v0, now returns a JSON document in v1. The array of products can be found under the 'products' key. This enables us to add endoflife.date-level data (such as the number of products).
- The "products" array in all.json now also contains JSON document instead of simple strings. This will make it easier in the future to expose new data (such as tags for products).
- Product level information are now exposed in the API (#2062) at the "product" endpoint. Instead of a JSON array in v0, v1 returns a JSON document. The release cycles array can be found under the 'releases' key.
- Cycles data now always contains all the release cycles key, even if they are null.
- Individual cycles JSON files has been removed (we thought it was not used/useful enough to be kept).
marcwrobel added a commit that referenced this issue Jan 2, 2023
Compared the the old v0 API :

- v1 API is now generated using a Jekyll Generator (see https://jekyllrb.com/docs/plugins/generators/).
- JSON files has been moved to the v1 subdirectory (#2066). This makes it easier to implement non-backward-compatible changes in API.
- The all.json, that returned a simple array of product names in v0, now returns a JSON document in v1. The array of products can be found under the 'products' key. This enables us to add endoflife.date-level data (such as the number of products).
- The "products" array in all.json now also contains JSON document instead of simple strings. This will make it easier in the future to expose new data (such as tags for products).
- Product level information are now exposed in the API (#2062) at the "product" endpoint. Instead of a JSON array in v0, v1 returns a JSON document. The release cycles array can be found under the 'releases' key.
- Cycles data now always contains all the release cycles key, even if they are null.
- Individual cycles JSON files has been removed (we thought it was not used/useful enough to be kept).
marcwrobel added a commit that referenced this issue Jan 3, 2023
Compared the the old v0 API :

- v1 API is now generated using a Jekyll Generator (see https://jekyllrb.com/docs/plugins/generators/).
- JSON files has been moved to the v1 subdirectory (#2066). This makes it easier to implement non-backward-compatible changes in API.
- The all.json, that returned a simple array of product names in v0, now returns a JSON document in v1. The array of products can be found under the 'products' key. This enables us to add endoflife.date-level data (such as the number of products).
- The "products" array in all.json now also contains JSON document instead of simple strings. This will make it easier in the future to expose new data (such as tags for products).
- Product level information are now exposed in the API (#2062) at the "product" endpoint. Instead of a JSON array in v0, v1 returns a JSON document. The release cycles array can be found under the 'releases' key.
- Cycles data now always contains all the release cycles key, even if they are null.
- Individual cycles JSON files has been removed (we thought it was not used/useful enough to be kept).
marcwrobel added a commit that referenced this issue Jan 4, 2023
This is a major rework of the API with a lot of breaking changes. Compared the the old API v0, API v1:

- is generated using a Jekyll Generator (see https://jekyllrb.com/docs/plugins/generators/),
- is versioned using the api/v1 prefix (#2066). This will make it easier to implement non-backward-compatible changes in API,
- feels more "Restful".

The API v0 is still generated to give time to users to migrate to API v1.

Changes in the "All products" endpoint:

- Path has been changed from api/all.json to api/v1/products/
- Response has been changed from a simple array to a JSON document. This made it possible to add endoflife-level data, such as the number of products.
- Array elements have been changed from a simple string to a full JSON document. This made it possible to expose new data, such as product category and tags (#2062).

Changes in the "Product" endpoint:

- Path has been changed from api/<product>.json to api/v1/products/<product>/.
- Response has been changed from a simple array to a JSON document. This made it possible to expose product-level data, such as product category and tags (#2062).
- Cycles data now always contain all the release cycles properties, even if they are null (example: discontinued, latest, latestReleaseDate, support...).

Changes in the "Cycle" endpoint:

- Path has been changed from api/<product>/<cycle>.json to api/v1/products/<product>/cycles/<cycle>/.
- Cycles data now always contain all the release cycles properties, even if they are null (example: discontinued, latest, latestReleaseDate, support...).
- A special /api/v1/products/<product>/cycles/latest/ cycle, containing the same data as the latest cycle, has been added (#2078).

New endpoints :

- /api/v1/categories/ - list categories used on endoflife.date
- /api/v1/tags/<tag> - list products having the given category
- /api/v1/tags/ - list tags used on endoflife.date
- /api/v1/tags/<tag> - list products having the given tag

Note that we thought of disabling API generation in development (using JEKYLL_ENV like the Jekyll Feed plugin - see https://github.com/jekyll/jekyll-feed/blob/master/lib/jekyll-feed/generator.rb#L145), but it was finally reverted. It does not work well with netlify preview, and generate production URL (i.e. https://endoflife.date URLs) in development which makes it difficult to use.
marcwrobel added a commit that referenced this issue Jan 4, 2023
This is a major rework of the API with a lot of breaking changes. Compared the the old API v0, API v1:

- is generated using a Jekyll Generator (see https://jekyllrb.com/docs/plugins/generators/),
- is versioned using the api/v1 prefix (#2066). This will make it easier to implement non-backward-compatible changes in API,
- feels more "Restful".

The API v0 is still generated to give time to users to migrate to API v1.

Changes in the "All products" endpoint:

- Path has been changed from api/all.json to api/v1/products/
- Response has been changed from a simple array to a JSON document. This made it possible to add endoflife-level data, such as the number of products.
- Array elements have been changed from a simple string to a full JSON document. This made it possible to expose new data, such as product category and tags (#2062).

Changes in the "Product" endpoint:

- Path has been changed from api/<product>.json to api/v1/products/<product>/.
- Response has been changed from a simple array to a JSON document. This made it possible to expose product-level data, such as product category and tags (#2062).
- Cycles data now always contain all the release cycles properties, even if they are null (example: discontinued, latest, latestReleaseDate, support...).

Changes in the "Cycle" endpoint:

- Path has been changed from api/<product>/<cycle>.json to api/v1/products/<product>/cycles/<cycle>/.
- Cycles data now always contain all the release cycles properties, even if they are null (example: discontinued, latest, latestReleaseDate, support...).
- A special /api/v1/products/<product>/cycles/latest/ cycle, containing the same data as the latest cycle, has been added (#2078).

New endpoints :

- /api/v1/categories/ - list categories used on endoflife.date
- /api/v1/categories/<category> - list products having the given category
- /api/v1/tags/ - list tags used on endoflife.date
- /api/v1/tags/<tag> - list products having the given tag

Note that we thought of disabling API generation in development (using JEKYLL_ENV like the Jekyll Feed plugin - see https://github.com/jekyll/jekyll-feed/blob/master/lib/jekyll-feed/generator.rb#L145), but it was finally reverted. It does not work well with Netlify preview, and generate production URL (i.e. https://endoflife.date URLs) in development which makes it difficult to use.
marcwrobel added a commit that referenced this issue Jan 4, 2023
This is a major rework of the API with a lot of breaking changes. Compared the the old API v0, API v1:

- is generated using a Jekyll Generator (see https://jekyllrb.com/docs/plugins/generators/),
- is versioned using the api/v1 prefix (#2066). This will make it easier to implement non-backward-compatible changes in API,
- feels more "Restful".

The API v0 is still generated to give time to users to migrate to API v1.

Changes in the "All products" endpoint:

- Path has been changed from api/all.json to api/v1/products/
- Response has been changed from a simple array to a JSON document. This made it possible to add endoflife-level data, such as the number of products.
- Array elements have been changed from a simple string to a full JSON document. This made it possible to expose new data, such as product category and tags (#2062).

Changes in the "Product" endpoint:

- Path has been changed from api/<product>.json to api/v1/products/<product>/.
- Response has been changed from a simple array to a JSON document. This made it possible to expose product-level data, such as product category and tags (#2062).
- Cycles data now always contain all the release cycles properties, even if they are null (example: discontinued, latest, latestReleaseDate, support...).

Changes in the "Cycle" endpoint:

- Path has been changed from api/<product>/<cycle>.json to api/v1/products/<product>/cycles/<cycle>/.
- Cycles data now always contain all the release cycles properties, even if they are null (example: discontinued, latest, latestReleaseDate, support...).
- A special /api/v1/products/<product>/cycles/latest/ cycle, containing the same data as the latest cycle, has been added (#2078).

New endpoints :

- /api/v1/categories/ - list categories used on endoflife.date
- /api/v1/categories/<category> - list products having the given category
- /api/v1/tags/ - list tags used on endoflife.date
- /api/v1/tags/<tag> - list products having the given tag

Note that we thought of disabling API generation in development (using JEKYLL_ENV like the Jekyll Feed plugin - see https://github.com/jekyll/jekyll-feed/blob/master/lib/jekyll-feed/generator.rb#L145), but it was finally reverted. It does not work well with Netlify preview, and generate production URL (i.e. https://endoflife.date URLs) in development which makes it difficult to use.
marcwrobel added a commit that referenced this issue Jan 6, 2023
This is a major rework of the API with a lot of breaking changes. Compared the the old API v0, API v1:

- is generated using a Jekyll Generator (see https://jekyllrb.com/docs/plugins/generators/),
- is versioned using the api/v1 prefix (#2066). This will make it easier to implement non-backward-compatible changes in API,
- feels more "Restful".

The API v0 is still generated to give time to users to migrate to API v1.

Changes in the "All products" endpoint:

- Path has been changed from api/all.json to api/v1/products/
- Response has been changed from a simple array to a JSON document. This made it possible to add endoflife-level data, such as the number of products.
- Array elements have been changed from a simple string to a full JSON document. This made it possible to expose new data, such as product category and tags (#2062).

Changes in the "Product" endpoint:

- Path has been changed from api/<product>.json to api/v1/products/<product>/.
- Response has been changed from a simple array to a JSON document. This made it possible to expose product-level data, such as product category and tags (#2062).
- Cycles data now always contain all the release cycles properties, even if they are null (example: discontinued, latest, latestReleaseDate, support...).

Changes in the "Cycle" endpoint:

- Path has been changed from api/<product>/<cycle>.json to api/v1/products/<product>/cycles/<cycle>/.
- Cycles data now always contain all the release cycles properties, even if they are null (example: discontinued, latest, latestReleaseDate, support...).
- A special /api/v1/products/<product>/cycles/latest/ cycle, containing the same data as the latest cycle, has been added (#2078).

New endpoints :

- /api/v1/categories/ - list categories used on endoflife.date
- /api/v1/categories/<category> - list products having the given category
- /api/v1/tags/ - list tags used on endoflife.date
- /api/v1/tags/<tag> - list products having the given tag

Note that we thought of disabling API generation in development (using JEKYLL_ENV like the Jekyll Feed plugin - see https://github.com/jekyll/jekyll-feed/blob/master/lib/jekyll-feed/generator.rb#L145), but it was finally reverted. It does not work well with Netlify preview, and generate production URL (i.e. https://endoflife.date URLs) in development which makes it difficult to use.
marcwrobel added a commit that referenced this issue Jan 12, 2023
This is a major rework of the API with a lot of breaking changes. Compared the the old API v0, API v1:

- is generated using a Jekyll Generator (see https://jekyllrb.com/docs/plugins/generators/),
- is versioned using the api/v1 prefix (#2066). This will make it easier to implement non-backward-compatible changes in API,
- feels more "Restful".

The API v0 is still generated to give time to users to migrate to API v1.

Changes in the "All products" endpoint:

- Path has been changed from api/all.json to api/v1/products/
- Response has been changed from a simple array to a JSON document. This made it possible to add endoflife-level data, such as the number of products.
- Array elements have been changed from a simple string to a full JSON document. This made it possible to expose new data, such as product category and tags (#2062).

Changes in the "Product" endpoint:

- Path has been changed from api/<product>.json to api/v1/products/<product>/.
- Response has been changed from a simple array to a JSON document. This made it possible to expose product-level data, such as product category and tags (#2062).
- Cycles data now always contain all the release cycles properties, even if they are null (example: discontinued, latest, latestReleaseDate, support...).

Changes in the "Cycle" endpoint:

- Path has been changed from api/<product>/<cycle>.json to api/v1/products/<product>/cycles/<cycle>/.
- Cycles data now always contain all the release cycles properties, even if they are null (example: discontinued, latest, latestReleaseDate, support...).
- A special /api/v1/products/<product>/cycles/latest/ cycle, containing the same data as the latest cycle, has been added (#2078).

New endpoints :

- /api/v1/categories/ - list categories used on endoflife.date
- /api/v1/categories/<category> - list products having the given category
- /api/v1/tags/ - list tags used on endoflife.date
- /api/v1/tags/<tag> - list products having the given tag

Note that we thought of disabling API generation in development (using JEKYLL_ENV like the Jekyll Feed plugin - see https://github.com/jekyll/jekyll-feed/blob/master/lib/jekyll-feed/generator.rb#L145), but it was finally reverted. It does not work well with Netlify preview, and generate production URL (i.e. https://endoflife.date URLs) in development which makes it difficult to use.
marcwrobel added a commit that referenced this issue Jan 22, 2023
This is a major rework of the API with a lot of breaking changes. Compared the the old API v0, API v1:

- is generated using a Jekyll Generator (see https://jekyllrb.com/docs/plugins/generators/),
- is versioned using the api/v1 prefix (#2066). This will make it easier to implement non-backward-compatible changes in API,
- feels more "Restful".

The API v0 is still generated to give time to users to migrate to API v1.

Changes in the "All products" endpoint:

- Path has been changed from api/all.json to api/v1/products/
- Response has been changed from a simple array to a JSON document. This made it possible to add endoflife-level data, such as the number of products.
- Array elements have been changed from a simple string to a full JSON document. This made it possible to expose new data, such as product category and tags (#2062).

Changes in the "Product" endpoint:

- Path has been changed from api/<product>.json to api/v1/products/<product>/.
- Response has been changed from a simple array to a JSON document. This made it possible to expose product-level data, such as product category and tags (#2062).
- Cycles data now always contain all the release cycles properties, even if they are null (example: discontinued, latest, latestReleaseDate, support...).

Changes in the "Cycle" endpoint:

- Path has been changed from api/<product>/<cycle>.json to api/v1/products/<product>/cycles/<cycle>/.
- Cycles data now always contain all the release cycles properties, even if they are null (example: discontinued, latest, latestReleaseDate, support...).
- A special /api/v1/products/<product>/cycles/latest/ cycle, containing the same data as the latest cycle, has been added (#2078).

New endpoints :

- /api/v1/categories/ - list categories used on endoflife.date
- /api/v1/categories/<category> - list products having the given category
- /api/v1/tags/ - list tags used on endoflife.date
- /api/v1/tags/<tag> - list products having the given tag

Note that we thought of disabling API generation in development (using JEKYLL_ENV like the Jekyll Feed plugin - see https://github.com/jekyll/jekyll-feed/blob/master/lib/jekyll-feed/generator.rb#L145), but it was finally reverted. It does not work well with Netlify preview, and generate production URL (i.e. https://endoflife.date URLs) in development which makes it difficult to use.
marcwrobel added a commit that referenced this issue Feb 21, 2023
This is a major rework of the API with a lot of breaking changes. Compared the the old API v0, API v1:

- is generated using a Jekyll Generator (see https://jekyllrb.com/docs/plugins/generators/),
- is versioned using the api/v1 prefix (#2066). This will make it easier to implement non-backward-compatible changes in API,
- feels more "Restful".

The API v0 is still generated to give time to users to migrate to API v1.

Changes in the "All products" endpoint:

- Path has been changed from api/all.json to api/v1/products/
- Response has been changed from a simple array to a JSON document. This made it possible to add endoflife-level data, such as the number of products.
- Array elements have been changed from a simple string to a full JSON document. This made it possible to expose new data, such as product category and tags (#2062).

Changes in the "Product" endpoint:

- Path has been changed from api/<product>.json to api/v1/products/<product>/.
- Response has been changed from a simple array to a JSON document. This made it possible to expose product-level data, such as product category and tags (#2062).
- Cycles data now always contain all the release cycles properties, even if they are null (example: discontinued, latest, latestReleaseDate, support...).

Changes in the "Cycle" endpoint:

- Path has been changed from api/<product>/<cycle>.json to api/v1/products/<product>/cycles/<cycle>/.
- Cycles data now always contain all the release cycles properties, even if they are null (example: discontinued, latest, latestReleaseDate, support...).
- A special /api/v1/products/<product>/cycles/latest/ cycle, containing the same data as the latest cycle, has been added (#2078).

New endpoints :

- /api/v1/categories/ - list categories used on endoflife.date
- /api/v1/categories/<category> - list products having the given category
- /api/v1/tags/ - list tags used on endoflife.date
- /api/v1/tags/<tag> - list products having the given tag

Note that we thought of disabling API generation in development (using JEKYLL_ENV like the Jekyll Feed plugin - see https://github.com/jekyll/jekyll-feed/blob/master/lib/jekyll-feed/generator.rb#L145), but it was finally reverted. It does not work well with Netlify preview, and generate production URL (i.e. https://endoflife.date URLs) in development which makes it difficult to use.
marcwrobel added a commit that referenced this issue Mar 2, 2023
This is a major rework of the API with a lot of breaking changes. Compared the the old API v0, API v1:

- is generated using a Jekyll Generator (see https://jekyllrb.com/docs/plugins/generators/),
- is versioned using the api/v1 prefix (#2066). This will make it easier to implement non-backward-compatible changes in API,
- feels more "Restful".

The API v0 is still generated to give time to users to migrate to API v1.

Changes in the "All products" endpoint:

- Path has been changed from api/all.json to api/v1/products/
- Response has been changed from a simple array to a JSON document. This made it possible to add endoflife-level data, such as the number of products.
- Array elements have been changed from a simple string to a full JSON document. This made it possible to expose new data, such as product category and tags (#2062).

Changes in the "Product" endpoint:

- Path has been changed from api/<product>.json to api/v1/products/<product>/.
- Response has been changed from a simple array to a JSON document. This made it possible to expose product-level data, such as product category and tags (#2062).
- Cycles data now always contain all the release cycles properties, even if they are null (example: discontinued, latest, latestReleaseDate, support...).

Changes in the "Cycle" endpoint:

- Path has been changed from api/<product>/<cycle>.json to api/v1/products/<product>/cycles/<cycle>/.
- Cycles data now always contain all the release cycles properties, even if they are null (example: discontinued, latest, latestReleaseDate, support...).
- A special /api/v1/products/<product>/cycles/latest/ cycle, containing the same data as the latest cycle, has been added (#2078).

New endpoints :

- /api/v1/categories/ - list categories used on endoflife.date
- /api/v1/categories/<category> - list products having the given category
- /api/v1/tags/ - list tags used on endoflife.date
- /api/v1/tags/<tag> - list products having the given tag

Note that we thought of disabling API generation in development (using JEKYLL_ENV like the Jekyll Feed plugin - see https://github.com/jekyll/jekyll-feed/blob/master/lib/jekyll-feed/generator.rb#L145), but it was finally reverted. It does not work well with Netlify preview, and generate production URL (i.e. https://endoflife.date URLs) in development which makes it difficult to use.
marcwrobel added a commit that referenced this issue Mar 3, 2023
This is a major rework of the API with a lot of breaking changes. Compared the the old API v0, API v1:

- is generated using a Jekyll Generator (see https://jekyllrb.com/docs/plugins/generators/),
- is versioned using the api/v1 prefix (#2066). This will make it easier to implement non-backward-compatible changes in API,
- feels more "Restful".

The API v0 is still generated to give time to users to migrate to API v1.

Changes in the "All products" endpoint:

- Path has been changed from api/all.json to api/v1/products/
- Response has been changed from a simple array to a JSON document. This made it possible to add endoflife-level data, such as the number of products.
- Array elements have been changed from a simple string to a full JSON document. This made it possible to expose new data, such as product category and tags (#2062).

Changes in the "Product" endpoint:

- Path has been changed from api/<product>.json to api/v1/products/<product>/.
- Response has been changed from a simple array to a JSON document. This made it possible to expose product-level data, such as product category and tags (#2062).
- Cycles data now always contain all the release cycles properties, even if they are null (example: discontinued, latest, latestReleaseDate, support...).

Changes in the "Cycle" endpoint:

- Path has been changed from api/<product>/<cycle>.json to api/v1/products/<product>/cycles/<cycle>/.
- Cycles data now always contain all the release cycles properties, even if they are null (example: discontinued, latest, latestReleaseDate, support...).
- A special /api/v1/products/<product>/cycles/latest/ cycle, containing the same data as the latest cycle, has been added (#2078).

New endpoints :

- /api/v1/categories/ - list categories used on endoflife.date
- /api/v1/categories/<category> - list products having the given category
- /api/v1/tags/ - list tags used on endoflife.date
- /api/v1/tags/<tag> - list products having the given tag

Note that we thought of disabling API generation in development (using JEKYLL_ENV like the Jekyll Feed plugin - see https://github.com/jekyll/jekyll-feed/blob/master/lib/jekyll-feed/generator.rb#L145), but it was finally reverted. It does not work well with Netlify preview, and generate production URL (i.e. https://endoflife.date URLs) in development which makes it difficult to use.
marcwrobel added a commit that referenced this issue Mar 6, 2023
This is a major rework of the API with a lot of breaking changes. Compared the the old API v0, API v1:

- is generated using a Jekyll Generator (see https://jekyllrb.com/docs/plugins/generators/),
- is versioned using the api/v1 prefix (#2066). This will make it easier to implement non-backward-compatible changes in API,
- feels more "Restful".

The API v0 is still generated to give time to users to migrate to API v1.

Changes in the "All products" endpoint:

- Path has been changed from api/all.json to api/v1/products/
- Response has been changed from a simple array to a JSON document. This made it possible to add endoflife-level data, such as the number of products.
- Array elements have been changed from a simple string to a full JSON document. This made it possible to expose new data, such as product category and tags (#2062).

Changes in the "Product" endpoint:

- Path has been changed from api/<product>.json to api/v1/products/<product>/.
- Response has been changed from a simple array to a JSON document. This made it possible to expose product-level data, such as product category and tags (#2062).
- Cycles data now always contain all the release cycles properties, even if they are null (example: discontinued, latest, latestReleaseDate, support...).

Changes in the "Cycle" endpoint:

- Path has been changed from api/<product>/<cycle>.json to api/v1/products/<product>/cycles/<cycle>/.
- Cycles data now always contain all the release cycles properties, even if they are null (example: discontinued, latest, latestReleaseDate, support...).
- A special /api/v1/products/<product>/cycles/latest/ cycle, containing the same data as the latest cycle, has been added (#2078).

New endpoints :

- /api/v1/categories/ - list categories used on endoflife.date
- /api/v1/categories/<category> - list products having the given category
- /api/v1/tags/ - list tags used on endoflife.date
- /api/v1/tags/<tag> - list products having the given tag

Note that we thought of disabling API generation in development (using JEKYLL_ENV like the Jekyll Feed plugin - see https://github.com/jekyll/jekyll-feed/blob/master/lib/jekyll-feed/generator.rb#L145), but it was finally reverted. It does not work well with Netlify preview, and generate production URL (i.e. https://endoflife.date URLs) in development which makes it difficult to use.
marcwrobel added a commit that referenced this issue Mar 10, 2023
This is a major rework of the API with a lot of breaking changes. Compared the the old API v0, API v1:

- is generated using a Jekyll Generator (see https://jekyllrb.com/docs/plugins/generators/),
- is versioned using the api/v1 prefix (#2066). This will make it easier to implement non-backward-compatible changes in API,
- feels more "Restful".

The API v0 is still generated to give time to users to migrate to API v1.

Changes in the "All products" endpoint:

- Path has been changed from api/all.json to api/v1/products/
- Response has been changed from a simple array to a JSON document. This made it possible to add endoflife-level data, such as the number of products.
- Array elements have been changed from a simple string to a full JSON document. This made it possible to expose new data, such as product category and tags (#2062).

Changes in the "Product" endpoint:

- Path has been changed from api/<product>.json to api/v1/products/<product>/.
- Response has been changed from a simple array to a JSON document. This made it possible to expose product-level data, such as product category and tags (#2062).
- Cycles data now always contain all the release cycles properties, even if they are null (example: discontinued, latest, latestReleaseDate, support...).

Changes in the "Cycle" endpoint:

- Path has been changed from api/<product>/<cycle>.json to api/v1/products/<product>/cycles/<cycle>/.
- Cycles data now always contain all the release cycles properties, even if they are null (example: discontinued, latest, latestReleaseDate, support...).
- A special /api/v1/products/<product>/cycles/latest/ cycle, containing the same data as the latest cycle, has been added (#2078).

New endpoints :

- /api/v1/categories/ - list categories used on endoflife.date
- /api/v1/categories/<category> - list products having the given category
- /api/v1/tags/ - list tags used on endoflife.date
- /api/v1/tags/<tag> - list products having the given tag

Note that we thought of disabling API generation in development (using JEKYLL_ENV like the Jekyll Feed plugin - see https://github.com/jekyll/jekyll-feed/blob/master/lib/jekyll-feed/generator.rb#L145), but it was finally reverted. It does not work well with Netlify preview, and generate production URL (i.e. https://endoflife.date URLs) in development which makes it difficult to use.
marcwrobel added a commit that referenced this issue Mar 16, 2023
This is a major rework of the API with a lot of breaking changes. Compared the the old API v0, API v1:

- is generated using a Jekyll Generator (see https://jekyllrb.com/docs/plugins/generators/),
- is versioned using the api/v1 prefix (#2066). This will make it easier to implement non-backward-compatible changes in API,
- feels more "Restful".

The API v0 is still generated to give time to users to migrate to API v1.

Changes in the "All products" endpoint:

- Path has been changed from api/all.json to api/v1/products/
- Response has been changed from a simple array to a JSON document. This made it possible to add endoflife-level data, such as the number of products.
- Array elements have been changed from a simple string to a full JSON document. This made it possible to expose new data, such as product category and tags (#2062).

Changes in the "Product" endpoint:

- Path has been changed from api/<product>.json to api/v1/products/<product>/.
- Response has been changed from a simple array to a JSON document. This made it possible to expose product-level data, such as product category and tags (#2062).
- Cycles data now always contain all the release cycles properties, even if they are null (example: discontinued, latest, latestReleaseDate, support...).

Changes in the "Cycle" endpoint:

- Path has been changed from api/<product>/<cycle>.json to api/v1/products/<product>/cycles/<cycle>/.
- Cycles data now always contain all the release cycles properties, even if they are null (example: discontinued, latest, latestReleaseDate, support...).
- A special /api/v1/products/<product>/cycles/latest/ cycle, containing the same data as the latest cycle, has been added (#2078).

New endpoints :

- /api/v1/categories/ - list categories used on endoflife.date
- /api/v1/categories/<category> - list products having the given category
- /api/v1/tags/ - list tags used on endoflife.date
- /api/v1/tags/<tag> - list products having the given tag

Note that we thought of disabling API generation in development (using JEKYLL_ENV like the Jekyll Feed plugin - see https://github.com/jekyll/jekyll-feed/blob/master/lib/jekyll-feed/generator.rb#L145), but it was finally reverted. It does not work well with Netlify preview, and generate production URL (i.e. https://endoflife.date URLs) in development which makes it difficult to use.
marcwrobel added a commit that referenced this issue Jul 30, 2023
This is a major rework of the API with a lot of breaking changes. See CHANGELOG_API.md for more information.

Note that we thought of disabling API generation in development (using JEKYLL_ENV like the Jekyll Feed plugin - see https://github.com/jekyll/jekyll-feed/blob/master/lib/jekyll-feed/generator.rb#L145), but it was finally reverted. It does not work well with Netlify preview, and generate production URL (i.e. https://endoflife.date URLs) in development which makes it difficult to use.
marcwrobel added a commit that referenced this issue Aug 5, 2023
This is a major rework of the API with a lot of breaking changes. See CHANGELOG_API.md for more information.

Note that we thought of disabling API generation in development (using JEKYLL_ENV like the Jekyll Feed plugin - see https://github.com/jekyll/jekyll-feed/blob/master/lib/jekyll-feed/generator.rb#L145), but it was finally reverted. It does not work well with Netlify preview, and generate production URL (i.e. https://endoflife.date URLs) in development which makes it difficult to use.
marcwrobel added a commit that referenced this issue Aug 14, 2023
This is a major rework of the API with a lot of breaking changes. See CHANGELOG_API.md for more information.

Note that we thought of disabling API generation in development (using JEKYLL_ENV like the Jekyll Feed plugin - see https://github.com/jekyll/jekyll-feed/blob/master/lib/jekyll-feed/generator.rb#L145), but it was finally reverted. It does not work well with Netlify preview, and generate production URL (i.e. https://endoflife.date URLs) in development which makes it difficult to use.
marcwrobel added a commit that referenced this issue Aug 19, 2023
This is a major rework of the API with a lot of breaking changes. See CHANGELOG_API.md for more information.

Note that we thought of disabling API generation in development (using JEKYLL_ENV like the Jekyll Feed plugin - see https://github.com/jekyll/jekyll-feed/blob/master/lib/jekyll-feed/generator.rb#L145), but it was finally reverted. It does not work well with Netlify preview, and generate production URL (i.e. https://endoflife.date URLs) in development which makes it difficult to use.
marcwrobel added a commit that referenced this issue Aug 26, 2023
This is a major rework of the API with a lot of breaking changes. See CHANGELOG_API.md for more information.

Note that we thought of disabling API generation in development (using JEKYLL_ENV like the Jekyll Feed plugin - see https://github.com/jekyll/jekyll-feed/blob/master/lib/jekyll-feed/generator.rb#L145), but it was finally reverted. It does not work well with Netlify preview, and generate production URL (i.e. https://endoflife.date URLs) in development which makes it difficult to use.
marcwrobel added a commit that referenced this issue Sep 8, 2023
This is a major rework of the API with a lot of breaking changes. See CHANGELOG_API.md for more information.

Note that we thought of disabling API generation in development (using JEKYLL_ENV like the Jekyll Feed plugin - see https://github.com/jekyll/jekyll-feed/blob/master/lib/jekyll-feed/generator.rb#L145), but it was finally reverted. It does not work well with Netlify preview, and generate production URL (i.e. https://endoflife.date URLs) in development which makes it difficult to use.
marcwrobel added a commit that referenced this issue Sep 23, 2023
This is a major rework of the API with a lot of breaking changes. See CHANGELOG_API.md for more information.

Note that we thought of disabling API generation in development (using JEKYLL_ENV like the Jekyll Feed plugin - see https://github.com/jekyll/jekyll-feed/blob/master/lib/jekyll-feed/generator.rb#L145), but it was finally reverted. It does not work well with Netlify preview, and generate production URL (i.e. https://endoflife.date URLs) in development which makes it difficult to use.
marcwrobel added a commit that referenced this issue Oct 8, 2023
This is a major rework of the API with a lot of breaking changes. See CHANGELOG_API.md for more information.

Note that we thought of disabling API generation in development (using JEKYLL_ENV like the Jekyll Feed plugin - see https://github.com/jekyll/jekyll-feed/blob/master/lib/jekyll-feed/generator.rb#L145), but it was finally reverted. It does not work well with Netlify preview, and generate production URL (i.e. https://endoflife.date URLs) in development which makes it difficult to use.
marcwrobel added a commit that referenced this issue Oct 28, 2023
This is a major rework of the API with a lot of breaking changes. See CHANGELOG_API.md for more information.

Note that we thought of disabling API generation in development (using JEKYLL_ENV like the Jekyll Feed plugin - see https://github.com/jekyll/jekyll-feed/blob/master/lib/jekyll-feed/generator.rb#L145), but it was finally reverted. It does not work well with Netlify preview, and generate production URL (i.e. https://endoflife.date URLs) in development which makes it difficult to use.
marcwrobel added a commit that referenced this issue Nov 12, 2023
This is a major rework of the API with a lot of breaking changes. See CHANGELOG_API.md for more information.

Note that we thought of disabling API generation in development (using JEKYLL_ENV like the Jekyll Feed plugin - see https://github.com/jekyll/jekyll-feed/blob/master/lib/jekyll-feed/generator.rb#L145), but it was finally reverted. It does not work well with Netlify preview, and generate production URL (i.e. https://endoflife.date URLs) in development which makes it difficult to use.
marcwrobel added a commit that referenced this issue Nov 23, 2023
This is a major rework of the API with a lot of breaking changes. See CHANGELOG_API.md for more information.

Note that we thought of disabling API generation in development (using JEKYLL_ENV like the Jekyll Feed plugin - see https://github.com/jekyll/jekyll-feed/blob/master/lib/jekyll-feed/generator.rb#L145), but it was finally reverted. It does not work well with Netlify preview, and generate production URL (i.e. https://endoflife.date URLs) in development which makes it difficult to use.
marcwrobel added a commit that referenced this issue Dec 17, 2023
This is a major rework of the API with a lot of breaking changes. See CHANGELOG_API.md for more information.

Note that we thought of disabling API generation in development (using JEKYLL_ENV like the Jekyll Feed plugin - see https://github.com/jekyll/jekyll-feed/blob/master/lib/jekyll-feed/generator.rb#L145), but it was finally reverted. It does not work well with Netlify preview, and generate production URL (i.e. https://endoflife.date URLs) in development which makes it difficult to use.
marcwrobel added a commit that referenced this issue Dec 25, 2023
This is a major rework of the API with a lot of breaking changes. See CHANGELOG_API.md for more information.

Note that we thought of disabling API generation in development (using JEKYLL_ENV like the Jekyll Feed plugin - see https://github.com/jekyll/jekyll-feed/blob/master/lib/jekyll-feed/generator.rb#L145), but it was finally reverted. It does not work well with Netlify preview, and generate production URL (i.e. https://endoflife.date URLs) in development which makes it difficult to use.
marcwrobel added a commit that referenced this issue Dec 30, 2023
This is a major rework of the API with a lot of breaking changes. See CHANGELOG_API.md for more information.

Note that we thought of disabling API generation in development (using JEKYLL_ENV like the Jekyll Feed plugin - see https://github.com/jekyll/jekyll-feed/blob/master/lib/jekyll-feed/generator.rb#L145), but it was finally reverted. It does not work well with Netlify preview, and generate production URL (i.e. https://endoflife.date URLs) in development which makes it difficult to use.
marcwrobel added a commit that referenced this issue Jan 13, 2024
This is a major rework of the API with a lot of breaking changes. See CHANGELOG_API.md for more information.

Note that we thought of disabling API generation in development (using JEKYLL_ENV like the Jekyll Feed plugin - see https://github.com/jekyll/jekyll-feed/blob/master/lib/jekyll-feed/generator.rb#L145), but it was finally reverted. It does not work well with Netlify preview, and generate production URL (i.e. https://endoflife.date URLs) in development which makes it difficult to use.
marcwrobel added a commit that referenced this issue Jan 20, 2024
This is a major rework of the API with a lot of breaking changes. See CHANGELOG_API.md for more information.

Note that we thought of disabling API generation in development (using JEKYLL_ENV like the Jekyll Feed plugin - see https://github.com/jekyll/jekyll-feed/blob/master/lib/jekyll-feed/generator.rb#L145), but it was finally reverted. It does not work well with Netlify preview, and generate production URL (i.e. https://endoflife.date URLs) in development which makes it difficult to use.
marcwrobel added a commit that referenced this issue Feb 6, 2024
This is a major rework of the API with a lot of breaking changes. See CHANGELOG_API.md for more information.

Note that we thought of disabling API generation in development (using JEKYLL_ENV like the Jekyll Feed plugin - see https://github.com/jekyll/jekyll-feed/blob/master/lib/jekyll-feed/generator.rb#L145), but it was finally reverted. It does not work well with Netlify preview, and generate production URL (i.e. https://endoflife.date URLs) in development which makes it difficult to use.
marcwrobel added a commit that referenced this issue Feb 17, 2024
This is a major rework of the API with a lot of breaking changes. See CHANGELOG_API.md for more information.

Note that we thought of disabling API generation in development (using JEKYLL_ENV like the Jekyll Feed plugin - see https://github.com/jekyll/jekyll-feed/blob/master/lib/jekyll-feed/generator.rb#L145), but it was finally reverted. It does not work well with Netlify preview, and generate production URL (i.e. https://endoflife.date URLs) in development which makes it difficult to use.
marcwrobel added a commit that referenced this issue Mar 9, 2024
This is a major rework of the API with a lot of breaking changes. See CHANGELOG_API.md for more information.

Note that we thought of disabling API generation in development (using JEKYLL_ENV like the Jekyll Feed plugin - see https://github.com/jekyll/jekyll-feed/blob/master/lib/jekyll-feed/generator.rb#L145), but it was finally reverted. It does not work well with Netlify preview, and generate production URL (i.e. https://endoflife.date URLs) in development which makes it difficult to use.
marcwrobel added a commit that referenced this issue Mar 17, 2024
This is a major rework of the API with a lot of breaking changes. See CHANGELOG_API.md for more information.

Note that we thought of disabling API generation in development (using JEKYLL_ENV like the Jekyll Feed plugin - see https://github.com/jekyll/jekyll-feed/blob/master/lib/jekyll-feed/generator.rb#L145), but it was finally reverted. It does not work well with Netlify preview, and generate production URL (i.e. https://endoflife.date URLs) in development which makes it difficult to use.
marcwrobel added a commit that referenced this issue Mar 31, 2024
This is a major rework of the API with a lot of breaking changes. See CHANGELOG_API.md for more information.

Note that we thought of disabling API generation in development (using JEKYLL_ENV like the Jekyll Feed plugin - see https://github.com/jekyll/jekyll-feed/blob/master/lib/jekyll-feed/generator.rb#L145), but it was finally reverted. It does not work well with Netlify preview, and generate production URL (i.e. https://endoflife.date URLs) in development which makes it difficult to use.
marcwrobel added a commit that referenced this issue Jun 23, 2024
This is a major rework of the API with a lot of breaking changes. See CHANGELOG_API.md for more information.

Note that we thought of disabling API generation in development (using JEKYLL_ENV like the Jekyll Feed plugin - see https://github.com/jekyll/jekyll-feed/blob/master/lib/jekyll-feed/generator.rb#L145), but it was finally reverted. It does not work well with Netlify preview, and generate production URL (i.e. https://endoflife.date URLs) in development which makes it difficult to use.
marcwrobel added a commit that referenced this issue Jul 6, 2024
This is a major rework of the API with a lot of breaking changes. See CHANGELOG_API.md for more information.

Note that we thought of disabling API generation in development (using JEKYLL_ENV like the Jekyll Feed plugin - see https://github.com/jekyll/jekyll-feed/blob/master/lib/jekyll-feed/generator.rb#L145), but it was finally reverted. It does not work well with Netlify preview, and generate production URL (i.e. https://endoflife.date URLs) in development which makes it difficult to use.
marcwrobel added a commit that referenced this issue Jul 20, 2024
This is a major rework of the API with a lot of breaking changes. See CHANGELOG_API.md for more information.

Note that we thought of disabling API generation in development (using JEKYLL_ENV like the Jekyll Feed plugin - see https://github.com/jekyll/jekyll-feed/blob/master/lib/jekyll-feed/generator.rb#L145), but it was finally reverted. It does not work well with Netlify preview, and generate production URL (i.e. https://endoflife.date URLs) in development which makes it difficult to use.
marcwrobel added a commit that referenced this issue Jul 27, 2024
This is a major rework of the API with a lot of breaking changes. See CHANGELOG_API.md for more information.

Note that we thought of disabling API generation in development (using JEKYLL_ENV like the Jekyll Feed plugin - see https://github.com/jekyll/jekyll-feed/blob/master/lib/jekyll-feed/generator.rb#L145), but it was finally reverted. It does not work well with Netlify preview, and generate production URL (i.e. https://endoflife.date URLs) in development which makes it difficult to use.
marcwrobel added a commit that referenced this issue Aug 4, 2024
This is a major rework of the API with a lot of breaking changes. See CHANGELOG_API.md for more information.

Note that we thought of disabling API generation in development (using JEKYLL_ENV like the Jekyll Feed plugin - see https://github.com/jekyll/jekyll-feed/blob/master/lib/jekyll-feed/generator.rb#L145), but it was finally reverted. It does not work well with Netlify preview, and generate production URL (i.e. https://endoflife.date URLs) in development which makes it difficult to use.
marcwrobel added a commit that referenced this issue Sep 1, 2024
This is a major rework of the API with a lot of breaking changes. See CHANGELOG_API.md for more information.

Note that we thought of disabling API generation in development (using JEKYLL_ENV like the Jekyll Feed plugin - see https://github.com/jekyll/jekyll-feed/blob/master/lib/jekyll-feed/generator.rb#L145), but it was finally reverted. It does not work well with Netlify preview, and generate production URL (i.e. https://endoflife.date URLs) in development which makes it difficult to use.
marcwrobel added a commit that referenced this issue Sep 15, 2024
This is a major rework of the API with a lot of breaking changes. See CHANGELOG_API.md for more information.

Note that we thought of disabling API generation in development (using JEKYLL_ENV like the Jekyll Feed plugin - see https://github.com/jekyll/jekyll-feed/blob/master/lib/jekyll-feed/generator.rb#L145), but it was finally reverted. It does not work well with Netlify preview, and generate production URL (i.e. https://endoflife.date URLs) in development which makes it difficult to use.
marcwrobel added a commit that referenced this issue Sep 23, 2024
This is a major rework of the API with a lot of breaking changes. See CHANGELOG_API.md for more information.

Note that we thought of disabling API generation in development (using JEKYLL_ENV like the Jekyll Feed plugin - see https://github.com/jekyll/jekyll-feed/blob/master/lib/jekyll-feed/generator.rb#L145), but it was finally reverted. It does not work well with Netlify preview, and generate production URL (i.e. https://endoflife.date URLs) in development which makes it difficult to use.
marcwrobel added a commit that referenced this issue Oct 26, 2024
This is a major rework of the API with a lot of breaking changes. See CHANGELOG_API.md for more information.

Note that we thought of disabling API generation in development (using JEKYLL_ENV like the Jekyll Feed plugin - see https://github.com/jekyll/jekyll-feed/blob/master/lib/jekyll-feed/generator.rb#L145), but it was finally reverted. It does not work well with Netlify preview, and generate production URL (i.e. https://endoflife.date URLs) in development which makes it difficult to use.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
api Changes that relates to API enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

4 participants