extensions.typo3.org issueshttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues2023-08-15T19:28:29Zhttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/586Outdated extension metadata from TER REST API2023-08-15T19:28:29ZElias HäußlerOutdated extension metadata from TER REST API### Summary
When requesting extension metadata through TER REST API, the responded information is not always correct. For example, the latest version of EXT:news supports TYPO3 v11 and v12, whereas the API response shows that only TYPO3...### Summary
When requesting extension metadata through TER REST API, the responded information is not always correct. For example, the latest version of EXT:news supports TYPO3 v11 and v12, whereas the API response shows that only TYPO3 v11 is supported.
### Steps to reproduce
Perform request to https://extensions.typo3.org/api/v1/extension/news and compare the response with extension metadata shown at https://extensions.typo3.org/extension/news.
### Example URL
See above.
### What is the current *bug* behavior?
Extension metadata is incorrect – the shown TYPO3 versions do not include all actually supported TYPO3 versions of the latest available version.
### What is the expected *correct* behavior?
The API response should include all actually supported TYPO3 versions.
### Relevant logs and/or screenshots
Current API response:
```json
[
{
"key": "news",
"downloads": 1747634,
"verified": true,
"version_count": 80,
"meta": {
"packagist": "https://packagist.org/packages/georgringer/news",
"composer_name": "georgringer/news",
"forge_link": "https://github.com/georgringer/news",
"repository_url": "https://github.com/georgringer/news",
"external_manual": "",
"paypal_url": "https://www.paypal.me/GeorgRinger/25",
"tags": [
{
"title": "News"
},
{
"title": "Extbase"
},
{
"title": "Fluid"
},
{
"title": "tags"
},
{
"title": "categories"
},
{
"title": "article"
},
{
"title": "Bestpractice"
},
{
"title": "responsive"
},
{
"title": "best-practice"
},
{
"title": "extension"
},
{
"title": "tx-news"
}
]
},
"current_version": {
"title": "News system",
"description": "Versatile news system based on Extbase \u0026 Fluid and using the latest technologies provided by TYPO3 CMS.",
"number": "11.0.0",
"state": "stable",
"category": "fe",
"typo3_versions": [
11
],
"dependencies": {
"typo3": "11.5.19 - 12.9.99",
"php": "7.4.0 - 8.2.99"
},
"conflicts": [],
"downloads": 0,
"upload_date": 1678361701,
"review_state": 0,
"download": {
"composer": "composer req georgringer/news",
"zip": "https://extensions.typo3.org/extension/download/news/11.0.0/zip",
"t3x": "https://extensions.typo3.org/extension/download/news/11.0.0/t3x"
},
"author": {
"name": "Georg Ringer",
"email": "mail@ringer.it",
"company": ""
}
}
}
]
```_Ready for sprinthttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/545Better error messages on extension key validation2022-08-05T22:27:24ZgilbertsoftBetter error messages on extension key validationCurrently the error messages produced during a failing extension key validation are very inaccurate. The error should point to the rule which was failing during the validation.Currently the error messages produced during a failing extension key validation are very inaccurate. The error should point to the rule which was failing during the validation._Ready for sprintJonas GötzeJonas Götzehttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/543Integrate extension license handling2022-06-16T10:15:44ZAlexander NitscheIntegrate extension license handling### Problem to solve
Currently, it is not possible to filter extensions by license type, display the license on the TER detail page, or manually filter the TER database by license type. Also, when uploading extensions to TER, the licens...### Problem to solve
Currently, it is not possible to filter extensions by license type, display the license on the TER detail page, or manually filter the TER database by license type. Also, when uploading extensions to TER, the license is not checked on the server side, so you have to rely on the user's responsibility.
### Further details
The license is currently written to composer.json and/or a special extension license file that is not checked by TER.
### Proposal
It would be nice to integrate a license handling into the TER by:
1. implementing a license scanner of TYPO3 extensions
* scanning for license in common files (composer.json, LICENSE(.txt|.rst|.md)?)
* returning license in unified wording (or null)
2. scanning for and storing the licenses of all TYPO3 extensions in TER on-demand
* scanning with license scanner
* option for dry-run
* option for being verbose with grouping extensions by
* no license
* changed license
* same license
* and sub grouping all types by license.
3. scanning for the license on upload to TER on server side
* scanning with license scanner
* rejecting if wrong license
* with response containing all supported licenses and a getting in contact note
* with logging extension details and wrong license
* storing license in TER database
* adapting clients to handle responses (API = Tailor, UI = Upload form of my.typo3.org)
4. showing license in TER list tile and linking license to TYPO3 license page with explanations of all common licenses
5. showing license in TER detail page and linking license to TYPO3 license page with explanations of all common licenses
6. extending TER filter by license type
7. extending TER sorting by license type
### What does success look like, and how can we measure that?
Success can be
1. The license scanner recognizes the license in composer.json and LICENSE* file on manual run.
2. A TER run has been successful in dry-run mode and is listing all extensions with either no license or with changed license (as the extension license DB field is empty on first run).
3. A second TER run without dry-run mode shows the same listing (as the first run was in dry-run mode).
4. A third TER run in dry-run mode is listing all extensions with either no license or with same license (as no modifications have been done between second and third run).
5. A TER upload has been successful and the license field is not empty in the TER DB.
6. An exception is logged on TER side which states which license was rejected on extension upload.
7. The TER frontend filters by/sorts by/displays the license in list view
8. The TER frontend shows the license in detail view_Ready for sprinthttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/540Provide a JSON File with the list of verified Extensions2022-06-16T10:15:45ZmultanifxProvide a JSON File with the list of verified Extensions### Problem to solve
<!--- What problem do we solve? -->
### Further details
<!--- Include use cases, benefits, and/or goals (contributes to our vision?) -->
To highlight/display the verified Extensions in the Extension Manager, the ...### Problem to solve
<!--- What problem do we solve? -->
### Further details
<!--- Include use cases, benefits, and/or goals (contributes to our vision?) -->
To highlight/display the verified Extensions in the Extension Manager, the list of verified Extensions is needed.
Providing an endpoint, where the list of verified extensions is returned as JSON File.
The List should include:
extension_key, latest version number
### What does success look like, and how can we measure that?
There is an URL to a JSON File, which includes the full list of verified extensions.
**Acceptence Criterias**
* [ ] The file could be opened via URL and includes all verified extensions with the latest version number for the given TYPO3 major version
* [ ] The file contains only extensions and versions that matches the given TYPO3 major version
### Links / references
```json
{
"extensions": {
"extension-key-a": "1.0.0",
"extension-key-b": "1.3.0",
}
}
```_Ready for sprinthttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/530Stats for extensions2023-06-15T19:22:13ZmultanifxStats for extensions### Describe the task
For an analysis of the extension updates, I would need some data about the supported TYPO3 versions of the Extensions in the Extension Manager.
I need the information about "works with TYPO3" (https://extensions.t...### Describe the task
For an analysis of the extension updates, I would need some data about the supported TYPO3 versions of the Extensions in the Extension Manager.
I need the information about "works with TYPO3" (https://extensions.typo3.org/ )
from
- 22.03.2021 (3 month after 11.0 Release)
- 21.07.2020 (3 month after 10LTS Release)
- 23.11.2019 (3 month after 10.0 Release)
- 02.01.2019 (3 month after 9LTS Release)
### Further details
I wanted to know, when people are updating their extensions.
### What does success look like, and how can we measure that?
Information about the numbers of extensions for Version 7,8,9,10 and 11
### Links / references
https://extensions.typo3.org/
```sql
SELECT DISTINCT e.ext_key
FROM tx_terfe2_domain_model_extension AS e
JOIN tx_terfe2_domain_model_version AS v ON v.extension = e.uid
JOIN tx_terfe2_domain_model_relation AS r ON r.version = v.uid
WHERE r.relation_key = "typo3" AND r.maximum_version >= 10004000 AND v.upload_date <= UNIX_TIMESTAMP("2020-07-21")
ORDER BY e.ext_key
```_Ready for sprintThomas LöfflermultanifxThomas Löfflerhttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/528Change lables and add link for version badges2022-08-12T13:47:13ZFrank NäglerChange lables and add link for version badges### Problem to solve
The labels of the TYPO3 should contain the correct wording. e.g. "v10 LTS" and "v8 ELTS", "v7 ELTS" etc.
So use "LTS" for community-supported versions and "ELTS" for the ELTS versions.
Also, it would be cool to lin...### Problem to solve
The labels of the TYPO3 should contain the correct wording. e.g. "v10 LTS" and "v8 ELTS", "v7 ELTS" etc.
So use "LTS" for community-supported versions and "ELTS" for the ELTS versions.
Also, it would be cool to link these labels to:
- https://get.typo3.org
- https://typo3.com/elts
Example:
![bildschirmfoto_2021-06-02_um_16.03.56](/uploads/0c8c45fbfcd8f599eadec7546a052e3d/bildschirmfoto_2021-06-02_um_16.03.56.png)
### Further details
The user gets clear information about the supported versions and can get the direct link to get the TYPO3 version.
### Proposal
change the names and link the labels ;)
### What does success look like, and how can we measure that?
Labels:
- 7 ELTS
- 8 ELTS
- 9 LTS
- 10 LTS
- 11 LTS
since version 6 is out of support, this label should not be displayed or maybe with a hint: "not supported" anymore.
**Acceptence Criterias**
* [ ] Labeles use "LTS" or "ELTS"
* [ ] LTS labels link to https://get.typo3.org
* [ ] ELTS labels link to https://typo3.com/elts
### Links / references_Ready for sprinthttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/519Show Distribution Image in List and Detail view2023-06-15T19:18:33ZStefan BusemannShow Distribution Image in List and Detail view### Problem to solve
As a user, I want to identify distributions, in the list and detail view
**Acceptence Criterias**
* [ ] List view shows an icon or the distribution image
* [x] detail view shows the distribution image
### Lin...### Problem to solve
As a user, I want to identify distributions, in the list and detail view
**Acceptence Criterias**
* [ ] List view shows an icon or the distribution image
* [x] detail view shows the distribution image
### Links / references_Ready for sprintThomas LöfflerThomas Löfflerhttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/513Sentry Client and Server for development and supervision2022-06-16T10:15:43ZStefan BusemannSentry Client and Server for development and supervisionAs the PO of the site, I want to ensure, that the site runs without any errors
AC:
* Sentry Server is added for local development
* Sentry client is added and
* configured for local development
* configured for production developmentAs the PO of the site, I want to ensure, that the site runs without any errors
AC:
* Sentry Server is added for local development
* Sentry client is added and
* configured for local development
* configured for production development_Ready for sprinthttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/501Extensions Stars - Github/Gitlab2022-06-16T10:15:44ZTomas Norre MikkelsenExtensions Stars - Github/Gitlab### Problem to solve
It's not a problem but an idea.
What about have the GitHub/Gitlab stars for a repository, reflected on the TER as well? This way we would easier get extensions "promoted" within the TER as well.### Problem to solve
It's not a problem but an idea.
What about have the GitHub/Gitlab stars for a repository, reflected on the TER as well? This way we would easier get extensions "promoted" within the TER as well._Ready for sprinthttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/482GDPR Admin function2022-06-16T10:15:45ZStefan BusemannGDPR Admin functionAs a TER admin I want to be able, to remove meta data of extensions.
UAC:
* Edit view of Extension offers the option to remove the author info
* List view displays "abandoned_extensions" as author
* Search function respects the changeAs a TER admin I want to be able, to remove meta data of extensions.
UAC:
* Edit view of Extension offers the option to remove the author info
* List view displays "abandoned_extensions" as author
* Search function respects the change_Ready for sprinthttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/417Ensure valid composer.json for extensions2022-04-04T17:31:03ZspetersEnsure valid composer.json for extensions### Problem to solve
* Some extensions do not include a composer.json.
* Some extensions do not have a valid composer.json or include a composer.json with deprecations.
* Information about composer.json (for extensions) is not consisten...### Problem to solve
* Some extensions do not include a composer.json.
* Some extensions do not have a valid composer.json or include a composer.json with deprecations.
* Information about composer.json (for extensions) is not consistent and not regularly updated.
To further propagate use of Composer and use of best practices for composer.json and to ensure stressless installation and
maintainance of TYPO3 sites, it might be useful to do some basic checks on extensions.
### Example
bp_pagetree
```
$ composer validate
```
```
Deprecation warning: replace.bp_pagetree is invalid, it should have a vendor name, a forward slash, and a package name. The vendor and package name can be words separated by -, . or _. The complete name should match "[a-z0-9]([_.-]?[a-z0-9]+)*/[a-z0-9]([_.-]?[a-z0-9]+)*". Make sure you fix this as Composer 2.0 will error.
```
```
composer --version
Composer version 1.9.1 2019-11-01 17:20:17
```
composer.json:
```
"replace": {
"bp_pagetree": "self.version",
"typo3-ter/bp_pagetree": "self.version"
},
```
See also:
* Issue about deprecations in composer.json of core extensions: https://forge.typo3.org/issues/89392
* The patch drops the replace section entirely: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61944
### Further details
long term goal:
* all TYPO3 extensions listed on extensions.typo3.org include valid composer.json
* documentation for extension authors is consistent and easily findable (beyond scope of this issue, should be handled in documentation)
### Proposal
Regularly run `composer validate` on extensions listed on extensions.typo3.org.
### What does success look like, and how can we measure that?
**Acceptence Criterias**
* [ ] Extension authors are regularly notified about problems (or possible improvements) with their extensions
* [ ] If problems are detected, the problems are listed for the extensions
* [ ] Best practices for composer.json are documented and regularly updated, e.g. on https://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/ExtensionArchitecture/ComposerJson/Index.html and in Installation & Upgrade Guide
### Related
* core issue: https://forge.typo3.org/issues/89392
* documentation issue: https://github.com/TYPO3-Documentation/TYPO3CMS-Reference-CoreApi/issues/641
* documentation page for composer.json: https://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/ExtensionArchitecture/ComposerJson/Index.html_Ready for sprinthttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/401Adjust GitLab Issue Template Labels2022-04-04T17:34:23ZpixeldesuAdjust GitLab Issue Template LabelsJust as in #400, the GitLab Issue Template also requires adjustment of the proper group labels to be used. The GitLab issue templates are located in `.gitlab/issue-templates` in the projects root.
**Acceptance Criteria:**
* [ ] Issues ...Just as in #400, the GitLab Issue Template also requires adjustment of the proper group labels to be used. The GitLab issue templates are located in `.gitlab/issue-templates` in the projects root.
**Acceptance Criteria:**
* [ ] Issues created using GitLab issue templates in the extensions.typo3.org repository use the proper group labels_Ready for sprinthttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/400Switch extensions.typo3.org Feedback Form GitLab Labels2022-04-04T17:34:23ZpixeldesuSwitch extensions.typo3.org Feedback Form GitLab Labels### Problem to solve
At the typo3.org DevDays 2019 Sprint we adjusted GitLab labels to a more uniform format, also planning to focus more on group labels for better sorting. The feedback forms have their own project-specific set of labe...### Problem to solve
At the typo3.org DevDays 2019 Sprint we adjusted GitLab labels to a more uniform format, also planning to focus more on group labels for better sorting. The feedback forms have their own project-specific set of labels which we should switch away from to have as few project-specific labels as possible.
### Further details
The Feedback form configuration for extensions.typo3.org includes a set of labels and a configurable label for each feedback type selection.
### Proposal
Adjust the existing labels in the feedback form configuration to reflect the group labels from the t3o group! https://git-t3o.typo3.org/groups/t3o/-/labels
### What does success look like, and how can we measure that?
The issues created from the extensions.typo3.org feedback form use t3o group labels instead of project labels from the typo3.org repository
**Acceptence Criterias**
* [ ] Change the labels from the Feedback form to use t3o group labels (by name)
* [ ] Remove the site specific "extensions.typo3.org" label, as the issue gets created in the typo3.org repository already_Ready for sprinthttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/396Update information about extension documentation in FAQ2022-04-04T17:31:43ZspetersUpdate information about extension documentation in FAQThese 2 documentation related things are outdated:
> Although I uploaded a manual, it is not displayed at docs.typo3.org - why?
> I have problems with the reST format to document my extension - where can I get help?
**In general, it w...These 2 documentation related things are outdated:
> Although I uploaded a manual, it is not displayed at docs.typo3.org - why?
> I have problems with the reST format to document my extension - where can I get help?
**In general, it would be good to point people to docs.typo3.org, so we can keep this information updated ourselves. Just let us know, what is missing.**
outdated:
1. ~~In addition you can use the extension sphinx to proof if everything is fine on your local system~~
Using the Docker image for local rendering is the recommended method. See
https://docs.typo3.org/m/typo3/docs-how-to-document/master/en-us/RenderingDocs/Index.html
Additionally, you can create a documentation-draft
branch which will automatically be rendered as draft (not indexed by search engines).
2. ~~That is ./Documentation/Index.rst or ./README.rst.~~
Can also be any of: https://docs.typo3.org/m/typo3/docs-how-to-document/master/en-us/GeneralConventions/DirectoryFilenames.html#supported-filenames-and-formats
3. ~~Rendering takes time. The documentation is fetched cyclically by docs server~~
No longer true. Rendering is triggered by Webhook.
4. ~~To get an introduction to reStructuredText take the sphinx extension as an example. Further more the format is well
documented at sphinx-doc.org/rest.html. In addition the documentation of the sphinx extension has further information.~~
Best to point people to our official docs: https://docs.typo3.org/m/typo3/docs-how-to-document/master/en-us/WritingReST/Index.html
5. ~~On the page https://docs.typo3.org/Extensions/ you get a list of tools and worflows how to best document your extension in reST.~~
This page no longer exists (404). I don't know what used to be on there. I think it is best to point them to https://docs.typo3.org/m/typo3/docs-how-to-document/master/en-us/WritingReST/Index.html# for general information about reST and to https://docs.typo3.org/m/typo3/docs-how-to-document/master/en-us/WritingDocForExtension/Index.html for extension documentation._Ready for sprinthttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/385Suggestion: Add core extensions to extension directory2022-04-04T17:34:25ZspetersSuggestion: Add core extensions to extension directory### Problem to solve
* confusion about where to find things
### Further details
Some things have changed: You used to install the core and then you had the extension manager and TER to install additional third party extensions.
Now,...### Problem to solve
* confusion about where to find things
### Further details
Some things have changed: You used to install the core and then you had the extension manager and TER to install additional third party extensions.
Now, since the **subtree split** it is not so different for the end user to install additional core components (system extensions) or third party extensions.
### Proposal
If extensions.typo3.org is nowadays rather used as a catalog (if I understand it correctly), it might be useful to show all, not just the third party extensions.
Of course, the core extensions should be marked as part of the core to underline that they are supported officially by TYPO3.
### What does success look like, and how can we measure that?
* (almost?) all system extensions are searchable in extension directory
* system extensions are clearly marked as system extensions
* if third party extensions depends on system extension, a link is used to link to the sysext in "Dependencies" section
* the composer command is listed for the system extension
## Advantages:
* find everything in one place
* easily find Composer command (or package name) for installing a core extension without having to go to packagist
* dependencies to sysexts could be added as links, e.g. see [rte_ckeditor_image](https://extensions.typo3.org/extension/rte_ckeditor_image/) (depends on rte_ckeditor, this could be a link, as in ext:introduction -> ext:bootstrap_package)
![rte_ckeditor_image](/uploads/b891004c1f19388a8d6fa5b273316495/rte_ckeditor_image.png)
![introduction](/uploads/5f29c3dcb1635b9cb212e2be455db105/introduction.png)
For me, the question is: What is useful for the end user?_Ready for sprinthttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/382Add information about publishing an extension to FAQ2022-06-16T10:18:14ZspetersAdd information about publishing an extension to FAQThere is a page: https://extensions.typo3.org/faq/publish-an-extension/
Can you add an item and link to that page to the [FAQ](https://extensions.typo3.org/faq/) list (preferably at the top)?
It is available in the menu on the top, but...There is a page: https://extensions.typo3.org/faq/publish-an-extension/
Can you add an item and link to that page to the [FAQ](https://extensions.typo3.org/faq/) list (preferably at the top)?
It is available in the menu on the top, but that is not the first place I would look.
Also, there is general information about publishing extensions in TYPO3 Explained: https://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/ExtensionArchitecture/PublishExtension/Index.html_Ready for sprinthttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/321Increase max character length for extension key2022-04-04T17:31:04ZDan Kleine (geb. Dan Untenzu)Increase max character length for extension key## What kind of feature do you want?
*Register extension key*
> An extension key must have minimum 3, maximum 30 characters (not counting underscores).
Where does the maximum value origin, and is it possible to increase it? Since exte...## What kind of feature do you want?
*Register extension key*
> An extension key must have minimum 3, maximum 30 characters (not counting underscores).
Where does the maximum value origin, and is it possible to increase it? Since extension developers are urged to use speaking variables and not come up with odd abbreviations the 30 character limit is obstructive.
## What are the benefits?
* Speaking extension names
* Less odd abbreviations just to fit the character max size
* Same names on Github and Packagist possible (instead of shortcuts to fit the TER naming rules)
* Eason forks/patch extensions (»acme_extension_with_long_name« → »acme_extension_with_long_name_patched« instead of »acme_extension_with_l_patched«)
## Add some use case
Github allows repository names with a maximum of 100 characters. I often need more than 30 characters and would like to use the same key as GitHub repo name, TYPO3 extension key, Composer package name etc._Ready for sprinthttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/320Extension key registration - rules for underscores not applied2022-04-04T17:31:01ZDan Kleine (geb. Dan Untenzu)Extension key registration - rules for underscores not applied## What was the cause of the issue?
*Register extension key*
> An extension key must have minimum 3, maximum 30 characters (not counting underscores).
This rules implies, that any number of underscores is allowed.
However the form a...## What was the cause of the issue?
*Register extension key*
> An extension key must have minimum 3, maximum 30 characters (not counting underscores).
This rules implies, that any number of underscores is allowed.
However the form actually does count underscores.
## Steps to reproduce
Registering `test_______________________test` (31 characters) is not possible (but should), registering `test______________________test` (30 characters) is possible. Registering `aa` is not possible, registering `a_a` is possible (but should'nt).
long
![Bildschirmfoto_vom_2018-02-22_15-04-45](/uploads/7e7898c46d1a60988753189a2eb21083/Bildschirmfoto_vom_2018-02-22_15-04-45.png)
short
![Bildschirmfoto_vom_2018-02-22_15-11-19](/uploads/af2abadb85c2b4d1e6b0fa71f754ee64/Bildschirmfoto_vom_2018-02-22_15-11-19.png)
## Possible solution
* Either remove the “(not counting underscores)” rule
* …or fix the validation to follow the given rule_Ready for sprinthttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/300Trigger notification request to t3extensions.org2021-08-19T13:24:04ZMichael SchamsTrigger notification request to t3extensions.org_(as discussed with Thomas Löffler and Mathias Schreiber on Slack)_
# Real-time Notification of Extension Updates
## Feature Overview
This new feature triggers an HTTPS request to a specific API endpoint at [t3extensions.org](https://..._(as discussed with Thomas Löffler and Mathias Schreiber on Slack)_
# Real-time Notification of Extension Updates
## Feature Overview
This new feature triggers an HTTPS request to a specific API endpoint at [t3extensions.org](https://t3extensions.org), whenever a new extension version gets uploaded or a new extension published at the TER.
## Benefits
Currently, [t3extensions.org](https://t3extensions.org) features a Slash command for [typo3.slack.com](https://typo3.slack.com) to allow users to retrieve details of an extension (see typical use case below). The underlying NoSQL database gets updated a few times a day only, so the extension details are sometimes outdated.
By implementing the feature described below, we aim for a real-time update of the data, so Slack would always show accurate details of extensions.
## Use Case
In any channel (public or private) or direct message communication between users on [typo3.slack.com](https://typo3.slack.com), command `/extension <extension_key>` returns details about the extension with extension key equals `<extension_key>`. This has been implemented and is available and actually used already.
For example:
```
/extension powermail
```
Details such extension title, key, author, latest version, last update date, description, etc. is posted into the Slack channel, assuming the extension exists.
## Requirements
As soon as a new TYPO3 extension version gets uploaded to the TER, a **POST** request should be triggered to a specific API endpoint. The endpoint URL should be configurable. The payload (data in the body of the request) is a JSON object with the following keys/values.
```
{
"token": "<token>",
"source": "extensions.typo3.org",
"data": {
"extension_key": "<extension_key>",
"version": "<version>",
"integer_version": "<integer_version>",
"state": "<state>",
"title": "<title>",
"description": "<description>",
"author_name": "<author_name>",
"last_updated": "<timestamp>"
}
}
```
| Key: | Description: | Example: | Notes: |
| :------------------------- | :-------------------------------------- | :--------------------- | :----: |
| `token` | Access token | `AEEK4K2a8OgSRcXz` | (1) |
| `source` | Source identifier | `extensions.typo3.org` | (2) |
| `data` | _JSON object, see below_ | | |
| `data` → `extension_key` | Extension key | `powermail` | |
| `data` → `version` | Extension version (format: X.Y.Z) | `1.2.3` | |
| `data` → `integer_version` | Extension integer version | `1002003` | |
| `data` → `state` | Extension state (arbitrary text) | `beta` | |
| `data` → `title` | Extension title (arbitrary text) | `Powermail` | |
| `data` → `description` | Extension description (arbitrary text) | `Lorem ipsum...` | |
| `data` → `author_name` | Extension author (arbitrary text) | `Brad Pitt` | |
| `data` → `last_updated` | UNIX timestamp of last update in UTC | `1514524068` | |
### Notes
(1) The _access token_ should be configurable. The token must be classified as sensitive information and is therefore not included in this publicly accessible feature request. Please contact me on Slack: https://typo3.slack.com/messages/D1KECK1EF
(2) The _source_ identifies, which service or server initiates the request. Useful for debugging purposes at [t3extensions.org](https://t3extensions.org). In case the TER runs in a distributed server setup, the host name can be used as the _source_. Otherwise, `extensions.typo3.org` could be a good value.
### API Endpoint URLs
#### Method: **Update Extension**
A `POST` request to `https://slack.t3extensions.org/v1/UpdateExtension` updates the details of a specific extension. This request requires a valid _token_ and further data (see details above) as the payload.
The API method automatically detects, if the details of an existing extension need to be updated or if the request is for a new extension (first version of an extension). The `<extension_key>` is used as the identifier.
#### Method: **Show Test Table**
The `UpdateExtension` API method uses a **test database table** during development. To retrieve the data of this test table, a `GET` request to `https://slack.t3extensions.org/v1/ShowTestTable` can be executed.
## API Tests
### Update Extension Details on Command Line
```
# DATA='{"token": "secret-token", "source": "testing", "data": {"extension_key": "myextension", "version": "1.2.3", "integer_version": "1002003", "state": "alpha", "title": "My Test Extension", "description": "This is just a test entry for t3extensions.org", "author_name": "Johnny Depp", "last_updated": "1512270379"}}'
# curl -s -X POST --data "${DATA}" -H "Content-Type: application/json" https://slack.t3extensions.org/v1/UpdateExtension
```
### Retrieve Data from Test Table on Command Line
```
# curl -s https://slack.t3extensions.org/v1/ShowTestTable
```
The content of the test table can also be access in a standard browser of course: https://slack.t3extensions.org/v1/ShowTestTable
## Error Handling
If the data update fails, the API method returns a JSON object with an error description. For example:
```
{
"result": "failed",
"request_id": "4083432a-ec5c-11e7-bed9-f33584834239",
"response": [
{
"message": "Security token mismatch",
"code": 102
}
]
}
```
## Restrictions
The code at [t3extensions.org](https://t3extensions.org) uses a cloud-based, serverless microservice at [Amazon Web Services](https://aws.amazon.com).
In order to control resources and costs, the number of read/write operations to the NoSQL database and the CPU and memory consumption of the API methods are limited intentionally. Too many requests within a certain time frame may result in an error message.
Version 1 of API method `UpdateExtension` currently supports **one** update request only. As a logical consequence, each extension update requires a notification request to the API method. The update of multiple extensions in one request is not supported at this point in time._Ready for sprinthttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/296In Admin->Searchresult the header is missing2022-08-12T11:45:33ZStephan GroßberndtIn Admin->Searchresult the header is missingWhen searching for an extension key in "Managing my extensions" -> "Admin" on the result page the header "Managing my extensions" and the tabs to switch between "Managing extension keys", "Register extension key", "Transfer extension key...When searching for an extension key in "Managing my extensions" -> "Admin" on the result page the header "Managing my extensions" and the tabs to switch between "Managing extension keys", "Register extension key", "Transfer extension key", "Admin" are missing.
![Screenshot_2017-12-11_19.15.33](/uploads/67cbdca32474d95133ff8af0383d8aac/Screenshot_2017-12-11_19.15.33.png)_Ready for sprint