Service Catalog

06/08/2024 - 10:35:51

105'06"

1ère édition

L'article précédent expliquait l'utilité — nécessité — de disposer d'un catalogue de services.

Nous en avons montré la structure la plus simple qui soit pour qu'on puisse en dégager les principes fondamentaux.

2ème édition

Cette fois nous allons utiliser une autre structure, plus complète, et plus en rapport avec notre besoin OpenAPI . Je ne vous la montre pas tout de suite; je préfère en effet vous montrer d'abord le résultat:

Rendu de catalogue

Notre catalogue, toujours maintenu sous forme de XML, est rendu de la manière suivante :

TRQLEconomics Services
ServiceDescription
1 Get high-level figures of GOLD
stock
Endpoint: https://www.trql.fm/vaesoli!/?
Contact: pb@latosensu.be
bankruptcies 2 Number of bankruptcies by country. Country name, last data, previous data, unit (companies or/and individuals)
country
Category: Q152074
Endpoint: https://www.trql.fm/vaesoli!/?bankruptcies
Contact: pb@latosensu.be
BEL20 3 Get high-level figures of the BEL20 Stock
stock
Endpoint: https://www.trql.fm/vaesoli!/?BEL20
Contact: pb@latosensu.be
CAC40 4 Get high-level figures of the %name% Stock
stock
Endpoint: https://www.trql.fm/vaesoli!/?CAC40
Contact: pb@latosensu.be
co2-emissions 5 CO2 Emissions by country
countryclimate
Category: Q3588927
Endpoint: https://www.trql.fm/vaesoli!/?co2-emissions
Contact: pb@latosensu.be
commodities 6 Set of commidities: energy, metals, agricultural, industrial, livestock, electricity
Category: Q2897903
Endpoint: https://www.trql.fm/vaesoli!/?commodities
Contact: pb@latosensu.be
consumer-confidence 7 Consumer confidence by country
countryconsumerconfidence
Category: Q4925768
Endpoint: https://www.trql.fm/vaesoli!/?consumer-confidence
Contact: pb@latosensu.be
corporate-tax 8 Business tax percentage by country. name, last value, previous value, last update period, unit applicable to values
country
Category: Q8161
Endpoint: https://www.trql.fm/vaesoli!/?corporate-tax
Contact: pb@latosensu.be
corruption 9 Corruption Index by country
countrycorruption
Category: Q366
Endpoint: https://www.trql.fm/vaesoli!/?corruption
Contact: pb@latosensu.be
country-rating 10 List of ratings given by rating agencies to countries
country
Category: Q152074
Endpoint: https://www.trql.fm/vaesoli!/?country-rating
Contact: pb@latosensu.be
CRUDEOIL 11 Get high-level figures of the crude oil
stock
Endpoint: https://www.trql.fm/vaesoli!/?CRUDEOIL
Contact: pb@latosensu.be
cryptos 12 Latest values of cryptos
cryptocurrencies
Category: Q13479982
Endpoint: https://www.trql.fm/vaesoli!/?cryptos
Contact: pb@latosensu.be
currencies 13 16 currency conversion rates with EURO
countrycurrency
Category: Q8142
Endpoint: https://www.trql.fm/vaesoli!/?currencies
Contact: pb@latosensu.be
DAX 14 Get high-level figures of the %name% Stock
stock
Endpoint: https://www.trql.fm/vaesoli!/?DAX
Contact: pb@latosensu.be
debt 15 Debt to GDP by country
countrydebtgdp
Category: Q1559695
Endpoint: https://www.trql.fm/vaesoli!/?debt
Contact: pb@latosensu.be
DOWJONES 16 Get high-level figures of the %name% Stock
stock
Endpoint: https://www.trql.fm/vaesoli!/?DOWJONES
Contact: pb@latosensu.be
EURGBP 17 Euro to GBP rate
stock
Endpoint: https://www.trql.fm/vaesoli!/?EURGBP
Contact: pb@latosensu.be
EURUSD 18 Euro to USD rate
stock
Endpoint: https://www.trql.fm/vaesoli!/?EURUSD
Contact: pb@latosensu.be
ExpenditureVSrevenues 19 Expenditure vs. revenues by country
countryincomerevenueexpensesexpenditure
Category: Q760120 Q850210
Endpoint: https://www.trql.fm/vaesoli!/?ExpenditureVSrevenues
Contact: pb@latosensu.be
fiscal-expenditure 20 Government spending by country
Category: Q118636488
Endpoint: https://www.trql.fm/vaesoli!/?fiscal-expenditure
Contact: pb@latosensu.be
food-inflation 21 Food inflation by country
Category: Q2095 Q35865
Endpoint: https://www.trql.fm/vaesoli!/?food-inflation
Contact: pb@latosensu.be
FTSE100 22 Get high-level figures of the %name% Stock
stock
Endpoint: https://www.trql.fm/vaesoli!/?FTSE100
Contact: pb@latosensu.be
gdp 23 GDP by country
countrygdp
Category: Q12638
Endpoint: https://www.trql.fm/vaesoli!/?gdp
Contact: pb@latosensu.be
gdp-growth 24 GDP Annual Growth Rate by country
countrygdp
Category: Q12638 Q1342838
Endpoint: https://www.trql.fm/vaesoli!/?gdp-growth
Contact: pb@latosensu.be
gdp-ppp 25 GDP per capita (PPP - Purchasing Power Parity)
countrygdp
Category: Q93392206
Endpoint: https://www.trql.fm/vaesoli!/?gdp-ppp
Contact: pb@latosensu.be
gold-reserves 26 Gold Reserves by country
countrygoldreserve
Category: Q1046879
Endpoint: https://www.trql.fm/vaesoli!/?gold-reserves
Contact: pb@latosensu.be
government-revenues 27 Government revenue by country
country
Category: Q2509483
Endpoint: https://www.trql.fm/vaesoli!/?government-revenues
Contact: pb@latosensu.be
hospital-beds 28 Hospital Beds by country
health
Category: Q93696949
Endpoint: https://www.trql.fm/vaesoli!/?hospital-beds
Contact: pb@latosensu.be
hospitals 29 Hospitals by country
health
Category: Q16917
Endpoint: https://www.trql.fm/vaesoli!/?hospitals
Contact: pb@latosensu.be
households-debt-to-income 30 Households Debt to Income
countryincomedebt
Category: Q5248585 Q259059
Endpoint: https://www.trql.fm/vaesoli!/?households-debt-to-income
Contact: Pat Boens -- pb@latosensu.be
icu-beds 31 ICU Beds by country
health
Category: Q142259
Endpoint: https://www.trql.fm/vaesoli!/?icu-beds
Contact: Pat Boens -- pb@latosensu.be
industrial 32 Industrial Production by country
country
Category: Q1419090
Endpoint: https://www.trql.fm/vaesoli!/?industrial
Contact: Pat Boens -- pb@latosensu.be
industrial-production-mom 33 Industrial Production MoM by country
countryindustrialproduction
Category: Q1419090
Endpoint: https://www.trql.fm/vaesoli!/?industrial-production-mom
Contact: pb@latosensu.be
inflation 34 Inflation rate by country
countryinflation
Category: Q35865
Endpoint: https://www.trql.fm/vaesoli!/?inflation
Contact: Pat Boens -- pb@latosensu.be
labor-costs 35 Labor costs by country
country
Category: Q152074
Endpoint: https://www.trql.fm/vaesoli!/?labor-costs
Contact: Pat Boens -- pb@latosensu.be
long-term-unemployment 36 State of being without work for a long time; list per country
countryemployment
Category: Q41171
Endpoint: https://www.trql.fm/vaesoli!/?long-term-unemployment
Contact: pb@latosensu.be
M0 37 Amount of currency the central bank has injected in the economy
money
Category: Q842206
Endpoint: https://www.trql.fm/vaesoli!/?M0
Contact: pb@latosensu.be
M1 38 Amount of currency the central bank has injected in the economy
money
Category: Q842206
Endpoint: https://www.trql.fm/vaesoli!/?M1
Contact: pb@latosensu.be
M2 39 Amount of currency the central bank has injected in the economy
money
Category: Q842206
Endpoint: https://www.trql.fm/vaesoli!/?M2
Contact: pb@latosensu.be
M3 40 Amount of currency the central bank has injected in the economy
money
Category: Q842206
Endpoint: https://www.trql.fm/vaesoli!/?M3
Contact: pb@latosensu.be
medical-doctors 41 Medical Doctors by Country in Europe
health
Category: Q152074
Endpoint: https://www.trql.fm/vaesoli!/?medical-doctors
Contact: pb@latosensu.be
mercator 42 Detailed information abou a place identified by its latitude, longitude
geolocation
Category: Q152074
Endpoint: https://www.trql.fm/vaesoli!/?mercator
Example: https://www.trql.fm/vaesoli!/?mercator=50.3868414,4.6609655
Contact: pb@latosensu.be
NASDAQ 43 Get high-level figures of the %name% Stock
stock
Endpoint: https://www.trql.fm/vaesoli!/?NASDAQ
Contact: pb@latosensu.be
NIKKEI 44 Get high-level figures of the %name% Stock
stock
Endpoint: https://www.trql.fm/vaesoli!/?NIKKEI
Contact: pb@latosensu.be
nurses 45 Nurses by Country
health
Category: Q186360 Q108290334
Endpoint: https://www.trql.fm/vaesoli!/?nurses
Contact: Pat Boens -- pb@latosensu.be
personal-savings 46 Personal money held against a contingecy, or for a later plan
savings
Category: Q100348459
Endpoint: https://www.trql.fm/vaesoli!/?personal-savings
Contact: pb@latosensu.be
personal-tax 47 List Personal Income Tax Rate by country
tax
Category: Q1128317
Endpoint: https://www.trql.fm/vaesoli!/?personal-tax
Contact: pb@latosensu.be
Pat Boens
precipitation 48 Average Precipitation by Country
countryclimate
Category: Q25257
Endpoint: https://www.trql.fm/vaesoli!/?precipitation
Contact: pb@latosensu.be
private-debt-to-gdp 49 Private Debt to GDP by Country
debt
Category: Q59679655
Endpoint: https://www.trql.fm/vaesoli!/?private-debt-to-gdp
Contact: pb@latosensu.be
sales-tax 50 Tax paid to a governing body for the sales of certain goods and services; list by country
salestaxcountry
Category: Q11055488
Endpoint: https://www.trql.fm/vaesoli!/?sales-tax
Contact: pb@latosensu.be
SP500 51 Get the high level values of the S&P 500 index
stock
Category: Q242345
Endpoint: https://www.trql.fm/vaesoli!/?SP500
Contact: pb@latosensu.be
SP500 52 Get high-level figures of the %name% Stock
stock
Endpoint: https://www.trql.fm/vaesoli!/?SP500
Contact: pb@latosensu.be
stockATX 53 Stock Market Austria
stock
Category: Q475000
Endpoint: https://www.trql.fm/vaesoli!/?stockATX
Contact: pb@latosensu.be
stockBEL 54 BEL20 stock quotes - Name, last position, previous position, daily delta, daily rise or fall in %, % over the week, month and year. month and year. Data updated every 20 minutes minutes
stock
Category: Q475000
Endpoint: https://www.trql.fm/vaesoli!/?stockBEL
Contact: pb@latosensu.be
stockBIST100 55 Turkish stock quotes - Name, last position, previous position, daily delta, daily rise or fall in %, % over the week, month and year. month and year. Data updated every 20 minutes minutes
stock
Category: Q475000
Endpoint: https://www.trql.fm/vaesoli!/?stockBIST100
Contact: pb@latosensu.be
stockCAC 56 Stock Market France
stock
Category: Q475000
Endpoint: https://www.trql.fm/vaesoli!/?stockCAC
Contact: pb@latosensu.be
stockCH20 57 Stock Market Switzerland
stock
Category: Q475000
Endpoint: https://www.trql.fm/vaesoli!/?stockCH20
Contact: pb@latosensu.be
stockDAX 58 Stock Market Germany
stock
Category: Q475000
Endpoint: https://www.trql.fm/vaesoli!/?stockDAX
Contact: pb@latosensu.be
stockES35 59 Stock Market Spain
stock
Category: Q475000
Endpoint: https://www.trql.fm/vaesoli!/?stockES35
Contact: pb@latosensu.be
stockEU50 60 Stock Market Euro Zone
stock
Category: Q475000
Endpoint: https://www.trql.fm/vaesoli!/?stockEU50
Contact: pb@latosensu.be
stockEUBA 61 Euro Stoxx Banks
stock
Category: Q475000
Endpoint: https://www.trql.fm/vaesoli!/?stockEUBA
Contact: pb@latosensu.be
stockGB100 62 Stock Market United Kingdom
stock
Category: Q475000
Endpoint: https://www.trql.fm/vaesoli!/?stockGB100
Contact: pb@latosensu.be
stockISEQ 63 Stock Market Ireland
stock
Category: Q475000
Endpoint: https://www.trql.fm/vaesoli!/?stockISEQ
Contact: pb@latosensu.be
stockIT40 64 Stock Market: Italy
stock
Category: Q475000
Endpoint: https://www.trql.fm/vaesoli!/?stockIT40
Contact: pb@latosensu.be
stockJP225 65 Stock Market Japan
stock
Category: Q475000
Endpoint: https://www.trql.fm/vaesoli!/?stockJP225
Contact: pb@latosensu.be
stockLUXX 66 Stock Market Luxembourg
stock
Category: Q475000
Endpoint: https://www.trql.fm/vaesoli!/?stockLUXX
Contact: pb@latosensu.be
stockMOES 67 Stock Market Index Russia
stock
Category: Q475000
Endpoint: https://www.trql.fm/vaesoli!/?stockMOES
Contact: pb@latosensu.be
stockNL25 68 Stock Market Netherlands
stock
Category: Q475000
Endpoint: https://www.trql.fm/vaesoli!/?stockNL25
Contact: pb@latosensu.be
stockOSLO 69 Stock Market Norway
stock
Category: Q475000
Endpoint: https://www.trql.fm/vaesoli!/?stockOSLO
Contact: pb@latosensu.be
stockSCSMI 70 Stock Market China
stock
Category: Q475000
Endpoint: https://www.trql.fm/vaesoli!/?stockSCSMI
Contact: pb@latosensu.be
stockSWE 71 Stock Market Sweden
stock
Category: Q475000
Endpoint: https://www.trql.fm/vaesoli!/?stockSWE
Contact: pb@latosensu.be
stockUS 72 Stock Market United States
stock
Category: Q475000
Endpoint: https://www.trql.fm/vaesoli!/?stockUS
Contact: pb@latosensu.be
stockUS100 73 US 100 Tech Index
stock
Category: Q475000
Endpoint: https://www.trql.fm/vaesoli!/?stockUS100
Contact: pb@latosensu.be
stockWIG 74 Stock Market Poland
stock
Category: Q475000
Endpoint: https://www.trql.fm/vaesoli!/?stockWIG
Contact: pb@latosensu.be
temperature 75 Average Temperature by Country
countryclimate
Category: Q11466
Endpoint: https://www.trql.fm/vaesoli!/?temperature
Contact: pb@latosensu.be
trade 76 Balance of trade by country
tradecountry
Category: Q601401
Endpoint: https://www.trql.fm/vaesoli!/?trade
Contact: pb@latosensu.be
unemployment 77 State of being without work and actively seeking work; list per country
countryemployment
Category: Q41171
Endpoint: https://www.trql.fm/vaesoli!/?unemployment
Contact: pb@latosensu.be
SVG Services
ServiceDescription
svg-arrow 1 Creates an arrow
svg arrow
Category: Q2078
Endpoint: https://www.trql.fm/vaesoli!/?svg-arrow
Parameters
NameTypeDescription
wfloatThe width of the arrow
hfloatThe height of the arrow
xfloatThe X position of the upper left point of the arrow
yfloatThe Y position of the upper left point of the arrow
fillstringThe background color of the arrow
strokestringThe color of the edge of the arrow
stroke-widthfloatThe thickness of the edge of the arrow
harpoonfloatThe front harpoon of the arrow
notchfloatThe rear notch
rotatefloatThe rotation to be applied on the arrow (taking its center as the pivot point)
Example: https://www.trql.fm/vaesoli!/?svg-arrow&w=250&h=200&harpoon=120&fill=deeppink
Contact: pb@latosensu.be
svg-circle 2 Creates a circle
svg circle
Category: Q2078
Endpoint: https://www.trql.fm/vaesoli!/?svg-circle
Parameters
NameTypeDescription
xfloatThe X position of the center of the circle
yfloatThe Y position of the center of the circle
radiusfloatThe radius of the circle
fillstringThe background color of the circle
strokestringThe color of the edge of the circle
stroke-widthfloatThe thickness of the edge of the circle
Example: https://www.trql.fm/vaesoli!/?svg-circle&radius=100&fill=deeppink
Contact: pb@latosensu.be
svg-flower 3 Creates a flower made of n petals
svg flower
Category: Q2078
Endpoint: https://www.trql.fm/vaesoli!/?svg-flower
Example: https://www.trql.fm/vaesoli!/?svg-flower=30
Contact: pb@latosensu.be
svg-marquee 4 Creates a marquee
svg star
Category: Q2078
Endpoint: https://www.trql.fm/vaesoli!/?svg-marquee
Parameters
NameTypeDescription
xfloatThe X position of the marquee
yfloatThe Y position of the marquee
wfloatThe width of the marquee
hfloatThe height of the marquee
rotatefloatThe rotation angle in degrees
strokestringThe color of the surrounding border
stroke-widthfloatThe thickness of the surrounding border
fillstringThe background color of the marquee
textstringThe text to be displayed inside the marquee
font-familystringThe font-family of the text to be displayed inside the marquee
Example: https://www.trql.fm/vaesoli!/?svg-marquee&text=Report needed&font-family=Times New Roman
Contact: pb@latosensu.be
svg-polygon 5 Creates an n-vertex polygon
svg polygon
Category: Q2078
Endpoint: https://www.trql.fm/vaesoli!/?svg-polygon
Parameters
NameTypeDescription
xfloatThe X position of the first point of the polygon
yfloatThe Y position of the first point of the polygon
fillstringThe background color of the polygon
strokestringThe color of the edge of the polygon
stroke-widthfloatThe thickness of the edge of the polygon
radiusfloatThe radius of the polygon
nintThe number of vertices
webboolShould a web be displayed inside the polygon
Example: https://www.trql.fm/vaesoli!/?svg-polygon=12&web
Contact: pb@latosensu.be
svg-star 6 Creates a * with n branches
svg star
Category: Q2078
Endpoint: https://www.trql.fm/vaesoli!/?svg-star
Example: https://www.trql.fm/vaesoli!/?svg-star=11
Contact: pb@latosensu.be
Web Services
ServiceDescription
getBody 1 Get resource from the web: keep the body
web internet url http https
Category: Q123332885
Endpoint: https://www.trql.fm/vaesoli!/?getBody
Example: https://www.trql.fm/vaesoli!/?getBody=https://www.trql.fm/developers/articles-service-catalog-extended/
Contact: pb@latosensu.be
getBodyImages 2 Get resource from the web: keep the body, eliminate scripts and CSS, keep only the links
web internet url http https
Category: Q123332885
Endpoint: https://www.trql.fm/vaesoli!/?getBodyImages
Example: https://www.trql.fm/vaesoli!/?getBodyImages=https://www.trql.fm/developers/articles-service-catalog-extended/
Contact: pb@latosensu.be
getBodyLinks 3 Get resource from the web: keep the body, eliminate scripts and CSS, keep only the images
web internet url http https
Category: Q123332885
Endpoint: https://www.trql.fm/vaesoli!/?getBodyLinks
Example: https://www.trql.fm/vaesoli!/?getBodyLinks=https://www.trql.fm/developers/articles-service-catalog-extended/
Contact: pb@latosensu.be
getBodyNoExtra 4 Get resource from the web: keep the body, eliminate scripts and CSS
web internet url http https
Category: Q123332885
Endpoint: https://www.trql.fm/vaesoli!/?getBodyNoExtra
Example: https://www.trql.fm/vaesoli!/?getBodyNoExtra=https://www.trql.fm/developers/articles-service-catalog-extended/
Contact: pb@latosensu.be
getURL 5 Get resource from the web
web internet url http https
Category: Q123332885
Endpoint: https://www.trql.fm/vaesoli!/?getURL
Example: https://www.trql.fm/vaesoli!/?getURL=https://www.trql.fm/developers/articles-service-catalog-extended/
Contact: pb@latosensu.be
hasFeed 6 Determines if a website has an RSS feed
rss
Category: Q45432
Endpoint: https://www.trql.fm/vaesoli!/?hasFeed
Example: https://www.trql.fm/vaesoli!/?hasFeed=https://lecourrierdesstrateges.fr
Contact: pb@latosensu.be
news 7 Set of news collected by TRQL Radio through Artificial Intelligence
news
Category: Q152074
Endpoint: https://www.trql.fm/vaesoli!/?news&today&forced
Contact: pb@latosensu.be
rss 8 Extract items from an RSS feed
news
Category: Q38926
Endpoint: https://www.trql.fm/vaesoli!/?rss
Example: https://www.trql.fm/vaesoli!/?rss=https%3A%2F%2Foilprice.com%2Frss%2Fmain
Contact: pb@latosensu.be
rssChannel 9 Gives the details of an RSS channel
rss feed
Category: Q45432
Endpoint: https://www.trql.fm/vaesoli!/?rssChannel
Example: https://www.trql.fm/vaesoli!/?rssChannel=https://insolentiae.com/feed/
Contact: pb@latosensu.be
today 10 Set of events (today in history) and artist anniversaries
news
Category: Q152074
Endpoint: https://www.trql.fm/vaesoli!/?today
Contact: pb@latosensu.be
wikidata-entity 11 Search wikidata about an entity
web internet url http https wikidata
Category: Q123332885
Endpoint: https://www.trql.fm/vaesoli!/?wikidata-entity
Example: https://www.trql.fm/vaesoli!/?wikidata-entity=Q392
Contact: pb@latosensu.be
wikidata-search 12 Search wikidata for terms - get entity ID on return
web internet url http https wikidata
Category: Q123332885
Endpoint: https://www.trql.fm/vaesoli!/?wikidata-search
Example: https://www.trql.fm/vaesoli!/?wikidata-search=Bob Dylan
Contact: pb@latosensu.be
wikipedia-search 13 Search wikipedia for terms - get all matching info
web internet url http https wikidata
Category: Q123332885
Endpoint: https://www.trql.fm/vaesoli!/?wikipedia-search
Example: https://www.trql.fm/vaesoli!/?wikipedia-search=Bob Dylan
Contact: pb@latosensu.be

Le catalogue en XML

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Catalog>

    <API>
        <Name>TRQLEconomics</Name>

        <Vars>
            <Var name="baseURL"><![CDATA[https://www.trql.fm/vaesoli!]]></Var>
            <Var name="ownerName"><![CDATA[Pat Boens]]></Var>
            <Var name="ownerEmail"><![CDATA[pb@latosensu.be]]></Var>
        </Vars>

        <Services>
            <Service id="6af9174f-62ab-48f0-b549-60b610d07fe9" lupdate="20240529 12:51:42">
                <Name><![CDATA[bankruptcies]]></Name>
                <Description><![CDATA[Number of bankruptcies by country. Country name,
                last data, previous data, unit (companies or/and individuals)]]></Description>
                <Abstract><![CDATA[Legal process through which people or other
                entities who cannot repay debts to creditors may seek relief
                from some or all of their debts]]></Abstract>
                <Category><![CDATA[Q152074]]></Category>
                <Tags><![CDATA[country]]></Tags>
                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="014fae74-1975-4679-b5d9-e59bf05f8069" lupdate="20240529 12:51:42">
                <Name><![CDATA[co2-emissions]]></Name>

                <Description><![CDATA[CO2 Emissions by country]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q3588927]]></Category>

                <Tags><![CDATA[country,climate]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="7b724a05-2d51-461f-afb3-2ac6bb390f92" lupdate="20240529 12:51:42">
                <Name><![CDATA[precipitation]]></Name>

                <Description><![CDATA[Average Precipitation by Country]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q25257]]></Category>

                <Tags><![CDATA[country,climate]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="014fae74-1975-4679-b5d9-e59bf05f8069" lupdate="20240529 12:51:42">
                <Name><![CDATA[temperature]]></Name>

                <Description><![CDATA[Average Temperature by Country]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q11466]]></Category>

                <Tags><![CDATA[country,climate]]></Tags>
                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="94b95b5e-d94a-4582-a8a1-5e318c70a43c" lupdate="20240529 12:51:42">
                <Name><![CDATA[commodities]]></Name>

                <Description><![CDATA[Set of commidities: energy, metals, agricultural, industrial, livestock, electricity ]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category entity="Q2897903"><![CDATA[goods and services]]></Category>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="f1081b6a-815d-40fa-a9d9-893dfc2c8d78" lupdate="20240527 10:44:42">
                <Name><![CDATA[corporate-tax]]></Name>
                <Description><![CDATA[Business tax percentage by country. name,
                    last value, previous value, last update period, unit applicable
                    to values]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q8161]]></Category>

                <Tags><![CDATA[country]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="f18525b1-112f-4f81-8fdd-5cb5d6ed3b0c" lupdate="20240529 12:51:42">
                <Name><![CDATA[corruption]]></Name>

                <Description><![CDATA[Corruption Index by country]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q366]]></Category>

                <Tags><![CDATA[country,corruption]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>

                <Owner><![CDATA[%ownerEmail%]]></Owner>

                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="ee29f78d-3482-47f9-92df-42770d45ed1f" lupdate="20240529 12:51:42">
                <Name><![CDATA[cryptos]]></Name>

                <Description><![CDATA[Latest values of cryptos]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q13479982]]></Category>

                <Tags><![CDATA[cryptocurrencies]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>

                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="5af5d4f8-73f6-4562-b2ae-f27d4419787a" lupdate="20240529 12:51:42">
                <Name><![CDATA[currencies]]></Name>

                <Description><![CDATA[16 currency conversion rates with EURO]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q8142]]></Category>

                <Tags><![CDATA[country,currency]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="74a546a2-0c72-4609-8b8f-2de56996ce3a" lupdate="20240529 12:51:42">
                <Name><![CDATA[debt]]></Name>

                <Description><![CDATA[Debt to GDP by country]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q1559695]]></Category>

                <Tags>country,debt,gdp</Tags>
                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="7c9ca6ec-7bac-42f4-aa82-3bebb6428763" lupdate="20240529 12:51:42">
                <Name><![CDATA[country-rating]]></Name>

                <Description><![CDATA[List of ratings given by rating agencies to countries]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q152074]]></Category>

                <Tags><![CDATA[country]]></Tags>
                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="67a2a076-d72e-4614-9ad6-26ecf344f9e4" lupdate="20240529 12:51:42">
                <Name><![CDATA[M0]]></Name>

                <Description><![CDATA[Amount of currency the central bank has injected in the economy]]></Description>

                <Abstract><![CDATA[M0, also known as the monetary base, is a
                measure of the money supply that includes the most liquid form
                of money: cash. It includes central bank notes and coins in
                circulation, as well as the amount of currency held in reserve
                by commercial banks at the central bank. In other words, M0 is
                the total amount of physical currency in circulation, including
                coins and notes, and the amount held in reserve by banks.

                In the context of monetary theory, M0 is an important component
                of the broader money supply measures, such as M1 and M2, which
                include other forms of money, such as checking and savings
                accounts, and other liquid assets.

                M0 is often considered the foundation of the money supply, as it
                is the most basic and liquid form of money. It is also the base
                from which other forms of money are created through the banking
                system.]]></Abstract>

                <Category><![CDATA[Q842206]]></Category>

                <Tags><![CDATA[money]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="41f8fff4-11f1-4905-b867-6790a3deca43" lupdate="20240529 12:51:42">
                <Name><![CDATA[M1]]></Name>

                <Description><![CDATA[Amount of currency the central bank has injected in the economy]]></Description>

                <Abstract><![CDATA[M1 is a monetary aggregate that measures the
                most liquid and easily accessible form of money in an economy.
                It includes:

                - Physical currency and coin
                - Demand deposits (checking accounts)
                - Traveler’s checks
                - Other checkable deposits (e.g., checking accounts)

                M1 is considered the most basic and liquid form of money, as it
                is easily convertible into physical currency and is commonly
                used for transactions. It is often used as a guide for monetary
                policy, as it is closely tied to inflation and economic
                activity.

                In the United States, the Federal Reserve tracks and publishes
                M1 data, which provides insight into the overall money supply
                and its relationship to economic activity.]]></Abstract>

                <Category><![CDATA[Q842206]]></Category>

                <Tags><![CDATA[money]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="8f6513bb-1f21-4b60-8f08-e95eec4bebe8" lupdate="20240529 12:51:42">
                <Name><![CDATA[M2]]></Name>

                <Description><![CDATA[Amount of currency the central bank has injected in the economy]]></Description>

                <Abstract><![CDATA[M2 is a monetary aggregate that measures the
                total amount of money in circulation in an economy, including
                cash, checking deposits, and other liquid assets. It is a
                broader measure of the money supply than M1, which only includes
                cash and checking deposits.

                In monetary theory, M2 is considered a more comprehensive
                measure of the money supply because it includes assets that are
                highly liquid but not intended for routine use as cash. These
                assets include:

                - Savings deposit
                - Small deposits (< $100000)
                - Shares in retail market

                M2 is often used by economists and central banks to monitor the
                overall money supply and its impact on the economy. It is
                considered a key indicator of inflation, as a rapid growth in M2
                can lead to an increase in the money supply and potentially
                higher inflation.

                In the United States, the Federal Reserve tracks M2 as part of
                its monetary policy decisions. The Fed releases M2 data on a
                weekly basis, which is closely monitored by economists and
                financial analysts.

                In summary, M2 is a monetary aggregate that measures the total
                amount of money in circulation, including cash, checking
                deposits, and other liquid assets, and is considered a key
                indicator of the money supply and inflation.]]></Abstract>

                <Category><![CDATA[Q842206]]></Category>

                <Tags><![CDATA[money]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="48582b47-c906-4a63-b2e5-d9d6db5b9e07" lupdate="20240529 12:51:42">
                <Name><![CDATA[M3]]></Name>
                <Description><![CDATA[Amount of currency the central bank has injected in the economy]]></Description>
                <Abstract><![CDATA[M3 is a measure of the money supply that
                includes M2, large time deposits, institutional money market
                funds, and short-term repurchase agreements. It is a broader
                measure of the money supply than M2, which includes M1 (currency
                and checking accounts) and M2 (M1 plus savings accounts and
                other liquid deposits).

                M3 is often used by economists to estimate the entire money
                supply within an economy and by central banks to direct monetary
                policy to control inflation, consumption, growth, and liquidity
                over medium and long-term periods. The calculation of M3
                involves giving each component equal weight.

                In the United States, M3 was traditionally used by the Federal
                Reserve to estimate the entire money supply and direct monetary
                policy. However, in 2006, the Federal Reserve discontinued the
                publication of M3 data, citing that it did not convey any
                additional information about economic activity compared to M2.

                M3 is still used by some economists and researchers as a measure
                of the money supply, and it is also used internationally by
                organizations such as the Organization for Economic Cooperation
                and Development (OECD) to track broad money aggregates.

                Key Points:

                - M3 is a measure of the money supply that includes M2, large time deposits, institutional money market funds, and short-term repurchase agreements.
                - It is a broader measure of the money supply than M2.
                - M3 is used by economists and central banks to estimate the entire money supply and direct monetary policy.
                - The calculation of M3 involves giving each component equal weight.
                - M3 was discontinued by the Federal Reserve in 2006, but it is still used by some economists and researchers.]]></Abstract>
                <Category><![CDATA[Q842206]]></Category>
                <Tags><![CDATA[money]]></Tags>
                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="0b9423c0-2d8c-427c-bb0a-8d1080f53dac" lupdate="20240608 08:41:22">
                <Name><![CDATA[gdp]]></Name>
                <Description><![CDATA[GDP by country]]></Description>
                <Abstract><![CDATA[Market value of goods and services produced within a country]]></Abstract>

                <Category><![CDATA[Q12638]]></Category>

                <Tags><![CDATA[country,gdp]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="36b0498f-9375-41cb-bac9-93a4fceef808" lupdate="20240529 12:51:42">
                <Name><![CDATA[gdp-growth]]></Name>
                <Description><![CDATA[GDP Annual Growth Rate by country]]></Description>
                <Abstract><![CDATA[GDP (Gross Domestic Product) growth refers to
                the rate of change in the total value of goods and services
                produced within a country’s borders over a specific period of
                time. It is a widely used indicator of a country’s economic
                performance and growth.]]></Abstract>
                <Category><![CDATA[Q12638,Q1342838]]></Category>
                <Tags><![CDATA[country,gdp]]></Tags>
                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="1e548e98-5d7f-49cc-9d6e-99ec5fefe284" lupdate="20240529 12:51:42">
                <Name><![CDATA[gdp-ppp]]></Name>

                <Description><![CDATA[GDP per capita (PPP - Purchasing Power Parity)]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q93392206]]></Category>

                <Tags><![CDATA[country,gdp]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="518f3476-1ce3-4994-82ab-9bca6e5aa9f6" lupdate="20240529 12:51:42">
                <Name><![CDATA[gold-reserves]]></Name>

                <Description><![CDATA[Gold Reserves by country]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q1046879]]></Category>

                <Tags><![CDATA[country,gold,reserve]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="fdeefc5b-ce1a-41da-91f1-1930f2cbe086" lupdate="20240529 12:51:42">
                <Name><![CDATA[government-revenues]]></Name>

                <Description><![CDATA[Government revenue by country]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q2509483]]></Category>

                <Tags><![CDATA[country]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="ad6ea66b-2456-4165-92a7-e815404f7872" lupdate="20240529 12:51:42">
                <Name><![CDATA[hospitals]]></Name>

                <Description><![CDATA[Hospitals by country]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q16917]]></Category>

                <Tags><![CDATA[health]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="9b851c4f-1e43-49a5-9931-d57b61561640" lupdate="20240529 12:51:42">
                <Name><![CDATA[hospital-beds]]></Name>

                <Description><![CDATA[Hospital Beds by country]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q93696949]]></Category>

                <Tags><![CDATA[health]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="e43f7ec3-c882-419d-938f-a9b1670a87f3" lupdate="20240529 12:51:42">
                <Name><![CDATA[nurses]]></Name>

                <Description><![CDATA[Nurses by Country]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q186360,Q108290334]]></Category>

                <Tags><![CDATA[health]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerName% -- %ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="da59ec9a-3a5a-450a-854d-c54fe47f6887" lupdate="20240529 12:51:42">
                <Name><![CDATA[icu-beds]]></Name>

                <Description><![CDATA[ICU Beds by country]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q142259]]></Category>

                <Tags><![CDATA[health]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerName% -- %ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="ece5e3fb-1c35-46ac-ba74-2c74c238cf7a" lupdate="20240529 12:51:42">
                <Name><![CDATA[households-debt-to-income]]></Name>

                <Description><![CDATA[Households Debt to Income]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q5248585,Q259059]]></Category>

                <Tags><![CDATA[country,income,debt]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerName% -- %ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="ece5e3fb-1c35-46ac-ba74-2c74c238cf7a" lupdate="20240529 12:51:42">
                <Name><![CDATA[industrial]]></Name>

                <Description><![CDATA[Industrial Production by country]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q1419090]]></Category>

                <Tags><![CDATA[country]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerName% -- %ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="ece5e3fb-1c35-46ac-ba74-2c74c238cf7a" lupdate="20240529 12:53:17">
                <Name><![CDATA[inflation]]></Name>

                <Description><![CDATA[Inflation rate by country]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q35865]]></Category>

                <Tags><![CDATA[country,inflation]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerName% -- %ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="8ab462d8-0d6b-4bc3-83da-4d143bce20f7" lupdate="20240529 12:57:12">
                <Name><![CDATA[labor-costs]]></Name>

                <Description><![CDATA[Labor costs by country]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q152074]]></Category>

                <Tags><![CDATA[country]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerName% -- %ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>false</Deployed>
            </Service>

            <Service id="8d3c21b4-c87e-4e27-8bbd-0d329ebe7ddc" lupdate="20240529 13:11:12">
                <Name><![CDATA[long-term-unemployment]]></Name>

                <Description><![CDATA[State of being without work for a long time; list per country]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q41171]]></Category>

                <Tags><![CDATA[country,employment]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="fa89fe8c-502a-477e-9720-122b1510b8ce" lupdate="20240529 13:21:07">
                <Name><![CDATA[medical-doctors]]></Name>

                <Description><![CDATA[Medical Doctors by Country in Europe]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q152074]]></Category>

                <Tags><![CDATA[health]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="d4601bf9-7dd2-469e-aef1-ab5fb962535a" lupdate="20240529 13:51:42">
                <Name><![CDATA[mercator]]></Name>

                <Description><![CDATA[Detailed information abou a place identified by its latitude, longitude]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q152074]]></Category>

                <Tags><![CDATA[geolocation]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Example><![CDATA[%baseURL%/?%name%=50.3868414,4.6609655]]></Example>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="e1d707dc-a8a7-467e-aed0-726e06357fa8" lupdate="20240529 13:59:02">
                <Name><![CDATA[unemployment]]></Name>

                <Description><![CDATA[State of being without work and actively seeking work; list per country]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q41171]]></Category>

                <Tags><![CDATA[country,employment]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="cb671d44-9024-48a6-9e17-60ee6cffe496" lupdate="20240529 14:32:17">
                <Name><![CDATA[personal-tax]]></Name>

                <Description><![CDATA[List Personal Income Tax Rate by country]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q1128317]]></Category>

                <Tags><![CDATA[tax]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%<br/>%ownerName%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="882f7abd-0311-491f-a078-9da1ff6412ea" lupdate="20240529 12:51:42">
                <Name><![CDATA[private-debt-to-gdp]]></Name>

                <Description><![CDATA[Private Debt to GDP by Country]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q59679655]]></Category>

                <Tags><![CDATA[debt]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="6b76627d-1e92-4994-b5ee-24c6c172df4d" lupdate="20240529 12:51:42">
                <Name><![CDATA[personal-savings]]></Name>

                <Description><![CDATA[Personal money held against a contingecy, or for a later plan]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q100348459]]></Category>

                <Tags><![CDATA[savings]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="20b19036-c716-47fc-971b-d3756d20866c" lupdate="20240529 12:51:42">
                <Name><![CDATA[sales-tax]]></Name>

                <Description><![CDATA[Tax paid to a governing body for the sales of certain goods and services; list by country]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q11055488]]></Category>

                <Tags><![CDATA[sales,tax,country]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="49faf494-595c-4ba5-9362-ffb11c9426ea" lupdate="20240529 12:51:42">
                <Name><![CDATA[trade]]></Name>
                <Description><![CDATA[Balance of trade by country]]></Description>
                <Abstract><![CDATA[Economic branch involving the exchange of goods and services]]></Abstract>
                <Category><![CDATA[Q601401]]></Category>
                <Tags><![CDATA[trade,country]]></Tags>
                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="8d5dfae0-fdd4-4a21-9e0e-fe71f10d7d9c" lupdate="20240529 12:51:42">
                <Name><![CDATA[ExpenditureVSrevenues]]></Name>
                <Description><![CDATA[Expenditure vs. revenues by country]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q760120,Q850210]]></Category>
                <Tags><![CDATA[country,income,revenue,expenses,expenditure]]></Tags>
                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="159b9853-0a2a-4cce-af41-7567f3164487" lupdate="20240605 14:28:13">
                <Name><![CDATA[industrial-production-mom]]></Name>

                <Description><![CDATA[Industrial Production MoM by country]]></Description>

                <Abstract><![CDATA[Industrial Production MoM is an economic
                indicator that measures the change in industrial production from
                one month to the next. In other words, it compares the total
                output of companies in the industrial sector, including
                manufacturing, mining and utilities, in a given month compared
                to previous month. Here are a few key points about this
                indicator:

                - It is generally expressed as a percentage and can indicate
                either a growth or contraction in production.

                - An increase in the index is generally interpreted for the the
                economy, while a decrease can be seen as negative. be seen as
                negative.

                - Sectors taken into account include manufacturing, which
                accounts for the majority of total production, as well as mining
                and utilities.

                This indicator is often used by analysts and investors to assess
                the the health of the industrial economy and can influence
                monetary policy decisions and financial markets.]]></Abstract>

                <Category><![CDATA[Q1419090]]></Category>

                <Tags><![CDATA[country,industrial,production]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>

                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="58ace240-65b9-4572-802e-1ef07218d4bb" lupdate="20240605 14:28:13">
                <Name><![CDATA[consumer-confidence]]></Name>

                <Description><![CDATA[Consumer confidence by country]]></Description>

                <Abstract><![CDATA[Consumer Confidence is an economic indicator
                that measures the degree of optimism consumers feel about the
                general state of the economy and their personal financial
                situation. If consumers are confident about the current and
                future economy and their personal finances, they are more
                inclined to spend rather than save. When consumer confidence is
                high, consumers make more purchases. Conversely, when confidence
                is low, consumers tend to save more and spend less.

                A rising consumer confidence index generally indicates a
                positive perception of the economy, which can lead to increased
                consumer spending and stimulate economic growth. Conversely, a
                falling index can signal a negative perception, which can lead
                to reduced spending and potentially slow the economy.

                This indicator is used by investors, manufacturers, retailers,
                banks, public opinion researchers and government agencies to
                plan their actions and forecast major changes in consumer
                confidence, enabling them to gauge consumers' willingness to
                make new purchases.]]></Abstract>

                <Category><![CDATA[Q4925768]]></Category>

                <Tags><![CDATA[country,consumer,confidence]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="6e748e96-90b0-4ddb-8e8b-03c7aab2d2ca" lupdate="20240529 12:51:42">
                <Name><![CDATA[fiscal-expenditure]]></Name>

                <Description><![CDATA[Government spending by country]]></Description>

                <Abstract><![CDATA[Fiscal expenditures refer to government
                spending. This includes spending on public projects, social
                programs, education, health, infrastructure, defense and so on.
                In other words, it's how the government spends, borrows and
                taxes its citizens and businesses¹³. If you need any further
                information, please let me know!]]></Abstract>

                <Category><![CDATA[Q118636488]]></Category>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="d4cf50d7-5dab-4a3d-aed0-a062ee272f69" lupdate="20240529 12:51:42">
                <Name><![CDATA[food-inflation]]></Name>

                <Description><![CDATA[Food inflation by country]]></Description>

                <Abstract><![CDATA[Food inflation refers to the sustained
                increase in the general price level of food and beverages over a
                period of time. It is a type of inflation that affects the cost
                of food and beverages, which are essential items in people’s
                daily lives. Food inflation can have a significant impact on
                households, particularly those with limited budgets, as it can
                lead to reduced purchasing power and decreased affordability of
                food.]]></Abstract>

                <Category><![CDATA[Q2095,Q35865]]></Category>

                <Tag><![CDATA[inflation,food]]></Tag>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="b3fdf0dd-95ec-4e52-8a68-69a73c071c54" lupdate="20240529 12:50:11">
                <Name><![CDATA[stockATX]]></Name>

                <Description><![CDATA[Stock Market Austria]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q475000]]></Category>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>

                <Tags><![CDATA[stock]]></Tags>

                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="bee661d9-ea42-4886-b83d-4b1fa286a4ad" lupdate="20240527 10:19:04">
                <Name><![CDATA[stockBEL]]></Name>

                <Description><![CDATA[BEL20 stock quotes -
                Name, last position, previous position, daily delta,
                daily rise or fall in %, % over the week, month and year.
                month and year. Data updated every 20 minutes
                minutes]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q475000]]></Category>

                <Tags><![CDATA[stock]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>

                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="e6dc5dca-f5c0-44a3-a1e0-0f49d7be19ab" lupdate="20240529 14:00:42">
                <Name><![CDATA[stockBIST100]]></Name>

                <Description><![CDATA[Turkish stock quotes -
                Name, last position, previous position, daily delta,
                daily rise or fall in %, % over the week, month and year.
                month and year. Data updated every 20 minutes
                minutes]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q475000]]></Category>

                <Tags><![CDATA[stock]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>

                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="c05994d4-8783-4616-b96a-3835a28c74db" lupdate="20240529 14:00:42">
                <Name><![CDATA[stockCAC]]></Name>

                <Description><![CDATA[Stock Market France]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q475000]]></Category>

                <Tags><![CDATA[stock]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>

                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="0a99cfca-ef91-4fbb-87d9-7a625d039e7f" lupdate="20240529 14:00:42">
                <Name><![CDATA[stockCH20]]></Name>

                <Description><![CDATA[Stock Market Switzerland]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q475000]]></Category>

                <Tags><![CDATA[stock]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?stockCH20]]></Endpoint>

                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="3237c186-0b7d-4019-9f1d-2ade6a890d11" lupdate="20240529 14:00:42">
                <Name><![CDATA[stockDAX]]></Name>

                <Description><![CDATA[Stock Market Germany]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q475000]]></Category>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>

                <Tags><![CDATA[stock]]></Tags>

                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="2a4ab7c4-e562-4bf1-9f47-1bf18b1425b0" lupdate="20240529 14:00:42">
                <Name><![CDATA[stockES35]]></Name>

                <Description><![CDATA[Stock Market Spain]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q475000]]></Category>

                <Tags><![CDATA[stock]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>

                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="3fb86252-6bc1-4008-a28e-b9ec6a82a120" lupdate="20240604 11:51:04">
                <Name><![CDATA[stockEU50]]></Name>

                <Description><![CDATA[Stock Market Euro Zone]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q475000]]></Category>

                <Tags><![CDATA[stock]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>

                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="0d555836-8349-4a2b-babe-6c8299b5fd44" lupdate="20240604 11:51:04">
                <Name><![CDATA[stockEUBA]]></Name>

                <Description><![CDATA[Euro Stoxx Banks]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q475000]]></Category>

                <Tags><![CDATA[stock]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>

                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="501ee3bd-84f2-4281-a38b-cd56382d4670" lupdate="20240604 11:51:04">
                <Name><![CDATA[stockGB100]]></Name>

                <Description><![CDATA[Stock Market United Kingdom]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q475000]]></Category>

                <Tags><![CDATA[stock]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>

                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="1431c92f-114c-42d2-b25f-8392a6846343" lupdate="20240604 11:51:04">
                <Name><![CDATA[stockISEQ]]></Name>

                <Description><![CDATA[Stock Market Ireland]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q475000]]></Category>

                <Tags><![CDATA[stock]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>

                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="0ef13382-6dd9-45c6-8372-fac88f9ad2dc" lupdate="20240604 11:51:04">
                <Name><![CDATA[stockIT40]]></Name>

                <Description><![CDATA[Stock Market: Italy]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q475000]]></Category>

                <Tags><![CDATA[stock]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>

                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="9f203a94-dbf3-4327-a3a8-9f04e0bde58c" lupdate="20240604 11:51:04">
                <Name><![CDATA[stockJP225]]></Name>

                <Description><![CDATA[Stock Market Japan]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q475000]]></Category>

                <Tags><![CDATA[stock]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>

                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="312a2d88-4731-48b0-b0ad-e1fee5be221d" lupdate="20240604 11:51:04">
                <Name><![CDATA[stockLUXX]]></Name>

                <Description><![CDATA[Stock Market Luxembourg]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q475000]]></Category>

                <Tags><![CDATA[stock]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>

                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="d02200a7-d83f-43fc-9edf-47bbb9360c77" lupdate="20240604 11:51:04">
                <Name><![CDATA[stockMOES]]></Name>

                <Description><![CDATA[Stock Market Index Russia]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q475000]]></Category>

                <Tags><![CDATA[stock]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>

                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="9804a3c3-78fc-4313-940b-8b0cc8ef747d" lupdate="20240604 11:51:04">
                <Name><![CDATA[stockNL25]]></Name>

                <Description><![CDATA[Stock Market Netherlands]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q475000]]></Category>

                <Tags><![CDATA[stock]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>

                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="567789fa-9874-4be3-b6f0-458ab1323dda" lupdate="20240604 11:51:04">
                <Name><![CDATA[stockOSLO]]></Name>

                <Description><![CDATA[Stock Market Norway]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q475000]]></Category>

                <Tags><![CDATA[stock]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>

                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="25c3604e-489d-42e0-b4c5-1978fa5525b2" lupdate="20240604 11:51:04">
                <Name><![CDATA[stockSCSMI]]></Name>

                <Description><![CDATA[Stock Market China]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q475000]]></Category>

                <Tags><![CDATA[stock]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>

                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="f426bb31-07c0-4878-b80d-d3d9586a1e29" lupdate="20240604 11:51:04">
                <Name><![CDATA[stockSWE]]></Name>

                <Description><![CDATA[Stock Market Sweden]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q475000]]></Category>

                <Tags><![CDATA[stock]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>

                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="ebf1abde-a5f5-4ec4-ab6b-3d2e552427e9" lupdate="20240604 11:51:04">
                <Name><![CDATA[stockUS]]></Name>

                <Description><![CDATA[Stock Market United States]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q475000]]></Category>

                <Tags><![CDATA[stock]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>

                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="0dedd7be-eaf2-4e15-adee-9c1c94978162" lupdate="20240604 11:51:04">
                <Name><![CDATA[stockUS100]]></Name>
                <Description><![CDATA[US 100 Tech Index]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q475000]]></Category>
                <Tags><![CDATA[stock]]></Tags>
                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="8574773d-c045-4927-a9a4-5acb91fd8910" lupdate="20240604 11:51:04">
                <Name><![CDATA[stockWIG]]></Name>
                <Description><![CDATA[Stock Market Poland]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q475000]]></Category>
                <Tags><![CDATA[stock]]></Tags>
                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="228cdfda-5300-491e-8847-ad9cd8211e79" lupdate="20240717 15:23:57">
                <Name><![CDATA[SP500]]></Name>
                <Description><![CDATA[Get the high level values of the S&amp;P 500 index]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q242345]]></Category>
                <Tags><![CDATA[stock]]></Tags>
                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>


            <Service id="" lupdate="20240805 14:28:49">
                <Name><![CDATA[BEL20]]></Name>
                <Description><![CDATA[Get high-level figures of the BEL20 Stock]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[]]></Category>
                <Tags><![CDATA[stock]]></Tags>
                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>

            </Service>
            <Service id="" lupdate="20240805 14:28:49">
                <Name><![CDATA[CAC40]]></Name>
                <Description><![CDATA[Get high-level figures of the %name% Stock]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[]]></Category>
                <Tags><![CDATA[stock]]></Tags>
                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="" lupdate="20240805 14:28:49">
                <Name><![CDATA[DAX]]></Name>
                <Description><![CDATA[Get high-level figures of the %name% Stock]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[]]></Category>
                <Tags><![CDATA[stock]]></Tags>
                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="" lupdate="20240805 14:28:49">
                <Name><![CDATA[SP500]]></Name>
                <Description><![CDATA[Get high-level figures of the %name% Stock]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[]]></Category>
                <Tags><![CDATA[stock]]></Tags>
                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="" lupdate="20240805 14:28:49">
                <Name><![CDATA[FTSE100]]></Name>
                <Description><![CDATA[Get high-level figures of the %name% Stock]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[]]></Category>
                <Tags><![CDATA[stock]]></Tags>
                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="" lupdate="20240805 14:28:49">
                <Name><![CDATA[NASDAQ]]></Name>
                <Description><![CDATA[Get high-level figures of the %name% Stock]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[]]></Category>
                <Tags><![CDATA[stock]]></Tags>
                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="" lupdate="20240805 14:28:49">
                <Name><![CDATA[NIKKEI]]></Name>
                <Description><![CDATA[Get high-level figures of the %name% Stock]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[]]></Category>
                <Tags><![CDATA[stock]]></Tags>
                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="" lupdate="20240805 14:28:49">
                <Name><![CDATA[DOWJONES]]></Name>
                <Description><![CDATA[Get high-level figures of the %name% Stock]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[]]></Category>
                <Tags><![CDATA[stock]]></Tags>
                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>

            </Service>

            <Service id="" lupdate="20240805 14:28:49">
                <Name><![CDATA[CRUDEOIL]]></Name>
                <Description><![CDATA[Get high-level figures of the crude oil]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[]]></Category>
                <Tags><![CDATA[stock]]></Tags>
                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>

            </Service>

            <Service id="GOLD" lupdate="20240805 14:28:49">
                <Name><![CDATA[]]></Name>
                <Description><![CDATA[Get high-level figures of GOLD]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[]]></Category>
                <Tags><![CDATA[stock]]></Tags>
                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="" lupdate="20240805 14:28:49">
                <Name><![CDATA[EURUSD]]></Name>
                <Description><![CDATA[Euro to USD rate]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[]]></Category>
                <Tags><![CDATA[stock]]></Tags>
                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>

            </Service>

            <Service id="" lupdate="20240805 14:28:49">
                <Name><![CDATA[EURGBP]]></Name>
                <Description><![CDATA[Euro to GBP rate]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[]]></Category>
                <Tags><![CDATA[stock]]></Tags>
                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>

            </Service>

        </Services>

        <YAML><![CDATA[
        ]]></YAML>
    </API>
    <!-- ************************************************************** -->
    <!-- ************************************************************** -->
    <!-- ************************************************************** -->
    <API>
        <Name>SVG</Name>

        <Services>

            <Service id="e5aa9fcd-6acb-4412-937e-af43649d3073" lupdate="20240806 14:59:27">
                <Name><![CDATA[svg-arrow]]></Name>
                <Description><![CDATA[Creates an arrow]]></Description>

                <Abstract><![CDATA[The service is used to create an arrow whose 
                    dimensions, position, and styling attributes are all 
                    customizable]]></Abstract>

                <Category><![CDATA[Q2078]]></Category>

                <Tags><![CDATA[svg, arrow]]></Tags>

                <Params>
                    <Param name="w"             type="float" default="512" default-ext="Calculated based on the width of the arrow">
                        <Description><![CDATA[The width of the arrow]]></Description>
                    </Param>
                    <Param name="h"             type="float" default="512" default-ext="Calculated based on the width of the arrow">
                        <Description><![CDATA[The height of the arrow]]></Description>
                    </Param>
                    <Param name="x"             type="float" default-ext="Calculated based on the width of the arrow">
                        <Description><![CDATA[The X position of the upper left point of the arrow]]></Description>
                    </Param>
                    <Param name="y"             type="float" default-ext="Calculated based on the height of the arrow">
                        <Description><![CDATA[The Y position of the upper left point of the arrow]]></Description>
                    </Param>
                    <Param name="fill"          type="string" default="noloso">
                        <Description><![CDATA[The background color of the arrow]]></Description>
                        <Examples><![CDATA[aqua, royalblue, orange, rgb(255,0,0), ...]]></Examples>
                    </Param>
                    <Param name="stroke"        type="string" default="black">
                        <Description><![CDATA[The color of the edge of the arrow]]></Description>
                        <Examples><![CDATA[black, red, blue, rgb(255,128,0), ...]]></Examples>
                    </Param>
                    <Param name="stroke-width"  type="float" default="0">
                        <Description><![CDATA[The thickness of the edge of the arrow]]></Description>
                    </Param>
                    <Param name="harpoon"  type="float" default="15">
                        <Description><![CDATA[The front harpoon of the arrow]]></Description>
                    </Param>
                    <Param name="notch" type="float" default="0">
                        <Description><![CDATA[The rear notch]]></Description>
                    </Param>
                    <Param name="rotate" type="float" default="0">
                        <Description><![CDATA[The rotation to be applied on the arrow (taking its center as the pivot point)]]></Description>
                    </Param>
                </Params>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Example><![CDATA[%baseURL%/?%name%&w=250&h=200&harpoon=120&fill=deeppink]]></Example>

                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="c8e6e299-a7f6-4908-b5bd-84c0ece7bf83" lupdate="20240806 15:29:37">
                <Name><![CDATA[svg-circle]]></Name>
                <Description><![CDATA[Creates a circle]]></Description>

                <Abstract><![CDATA[The service is used to create a circle]]></Abstract>

                <Category><![CDATA[Q2078]]></Category>

                <Tags><![CDATA[svg, circle]]></Tags>

                <Params>
                    <Param name="x"             type="float" default="256">
                        <Description><![CDATA[The X position of the center of the circle]]></Description>
                    </Param>
                    <Param name="y"             type="float" default="256">
                        <Description><![CDATA[The Y position of the center of the circle]]></Description>
                    </Param>
                    <Param name="radius"        type="float">
                        <Description><![CDATA[The radius of the circle]]></Description>
                    </Param>
                    <Param name="fill"          type="string" default="noloso">
                        <Description><![CDATA[The background color of the circle]]></Description>
                        <Examples><![CDATA[aqua, royalblue, orange, rgb(255,0,0), ...]]></Examples>
                    </Param>
                    <Param name="stroke"        type="string" default="black">
                        <Description><![CDATA[The color of the edge of the circle]]></Description>
                        <Examples><![CDATA[black, red, blue, rgb(255,128,0), ...]]></Examples>
                    </Param>
                    <Param name="stroke-width"  type="float" default="1">
                        <Description><![CDATA[The thickness of the edge of the circle]]></Description>
                    </Param>
                </Params>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Example><![CDATA[%baseURL%/?%name%&radius=100&fill=deeppink]]></Example>

                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="34d87351-0216-46fb-abc6-7f817cd31379" lupdate="20240805 13:28:12">
                <Name><![CDATA[svg-flower]]></Name>
                <Description><![CDATA[Creates a flower made of n petals]]></Description>

                <Abstract><![CDATA[The service is used to create a star with n branches as an SVG]]></Abstract>

                <Category><![CDATA[Q2078]]></Category>

                <Tags><![CDATA[svg, flower]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Example><![CDATA[%baseURL%/?%name%=30]]></Example>

                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="810b5980-6aa1-44bb-a1a6-70394378272d" lupdate="20240805 10:49:22">
                <Name><![CDATA[svg-marquee]]></Name>
                <Description><![CDATA[Creates a marquee]]></Description>

                <Abstract><![CDATA[The service is used to create a star with n branches as an SVG]]></Abstract>

                <Category><![CDATA[Q2078]]></Category>

                <Tags><![CDATA[svg, star]]></Tags>

                <!-- Cette section est la première du genre -->
                <Params>
                    <Param name="x"             type="float" default-ext="Calculated based on the width of the marquee">
                        <Description><![CDATA[The X position of the marquee]]></Description>
                    </Param>
                    <Param name="y"             type="float" default-ext="Calculated based on the width of the marquee">
                        <Description><![CDATA[The Y position of the marquee]]></Description>
                    </Param>
                    <Param name="w"             type="float" default="512" default-ext="width of the SVG">
                        <Description><![CDATA[The width of the marquee]]></Description>
                    </Param>
                    <Param name="h"             type="float" default="512" default-ext="height of the SVG">
                        <Description><![CDATA[The height of the marquee]]></Description>
                    </Param>
                    <Param name="rotate"        type="float" default="0">
                        <Description><![CDATA[The rotation angle in degrees]]></Description>
                    </Param>
                    <Param name="stroke"        type="string" default="black">
                        <Description><![CDATA[The color of the surrounding border]]></Description>
                        <Examples><![CDATA[black, deeppink, rgb(0,0,0), ...]]></Examples>
                    </Param>
                    <Param name="stroke-width"  type="float" default="1">
                        <Description><![CDATA[The thickness of the surrounding border]]></Description>
                    </Param>
                    <Param name="fill"          type="string" default="noloso">
                        <Description><![CDATA[The background color of the marquee]]></Description>
                        <Examples><![CDATA[aqua, royalblue, orange, rgb(255,0,0), ...]]></Examples>
                    </Param>
                    <Param name="text"          type="string" default="Hello World">
                        <Description><![CDATA[The text to be displayed inside the marquee]]></Description>
                        <Examples><![CDATA[Report available!, ATTENTION, ...]]></Examples>
                    </Param>
                    <Param name="font-family"   type="string" default="Arial">
                        <Description><![CDATA[The font-family of the text to be displayed inside the marquee]]></Description>
                        <Examples><![CDATA[Times New Roman]]></Examples>
                    </Param>

                    <!--
                        $obj->text->font->size      =         $_GET['font-size'  ]  ?? '20px';
                        $obj->text->font->weight    =         $_GET['font-weight']  ?? 'bold';
                        $obj->text->fill            =         $_GET['font-fill']    ?? 'black';
                    -->

                </Params>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Example><![CDATA[%baseURL%/?%name%&text=Report needed&font-family=Times New Roman]]></Example>

                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="0902ecab-d55e-4125-aaea-fba16997fc44" lupdate="20240805 21:46:17">
                <Name><![CDATA[svg-polygon]]></Name>
                <Description><![CDATA[Creates an n-vertex polygon]]></Description>

                <Abstract><![CDATA[The service is used to create a polygon with n vertices]]></Abstract>

                <Category><![CDATA[Q2078]]></Category>

                <Tags><![CDATA[svg, polygon]]></Tags>

                <Params>
                    <Param name="x"             type="float" default-ext="Calculated based on the width of the polygon">
                        <Description><![CDATA[The X position of the first point of the polygon]]></Description>
                    </Param>
                    <Param name="y"             type="float" default-ext="Calculated based on the height of the polygon">
                        <Description><![CDATA[The Y position of the first point of the polygon]]></Description>
                    </Param>
                    <Param name="fill"          type="string" default="noloso">
                        <Description><![CDATA[The background color of the polygon]]></Description>
                        <Examples><![CDATA[aqua, royalblue, orange, rgb(255,0,0), ...]]></Examples>
                    </Param>
                    <Param name="stroke"        type="string" default="black">
                        <Description><![CDATA[The color of the edge of the polygon]]></Description>
                        <Examples><![CDATA[black, red, blue, rgb(255,128,0), ...]]></Examples>
                    </Param>
                    <Param name="stroke-width"  type="float" default="1">
                        <Description><![CDATA[The thickness of the edge of the polygon]]></Description>
                    </Param>
                    <Param name="radius"  type="float" default="256" default-ext="Calculated based on the default width (512)">
                        <Description><![CDATA[The radius of the polygon]]></Description>
                    </Param>
                    <Param name="n" type="int" default="8">
                        <Description><![CDATA[The number of vertices]]></Description>
                    </Param>
                    <Param name="web" type="bool" default="false">
                        <Description><![CDATA[Should a web be displayed inside the polygon]]></Description>
                    </Param>
                </Params>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Example><![CDATA[%baseURL%/?%name%=12&web]]></Example>

                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="591719c7-701a-44c5-afd0-9cb2abf91cfd" lupdate="20240805 10:49:22">
                <Name><![CDATA[svg-star]]></Name>
                <Description><![CDATA[Creates a * with n branches]]></Description>

                <Abstract><![CDATA[The service is used to create a star with n branches as an SVG]]></Abstract>

                <Category><![CDATA[Q2078]]></Category>

                <Tags><![CDATA[svg, star]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Example><![CDATA[%baseURL%/?%name%=11]]></Example>

                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>
        </Services>
    </API>
    <!-- ************************************************************** -->
    <!-- ************************************************************** -->
    <!-- ************************************************************** -->
    <API>
        <Name>Web</Name>

        <Services>
            <Service id="fd485423-b4b5-47bc-828a-c73c63aa9f22" lupdate="20240704 13:27:59">
                <Name><![CDATA[getURL]]></Name>
                <Description><![CDATA[Get resource from the web]]></Description>

                <Abstract><![CDATA[Retrieve files from the Internet via the HTTP and HTTPS
                    protocols.]]></Abstract>

                <Category><![CDATA[Q123332885]]></Category>
                <Tags><![CDATA[web, internet, url, http, https]]></Tags>
                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Example><![CDATA[%baseURL%/?%name%=https://www.trql.fm/developers/articles-service-catalog-extended/]]></Example>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="30494277-a547-470f-9d46-5760f39c2ba1" lupdate="20240704 14:15:17">
                <Name><![CDATA[getBodyImages]]></Name>
                <Description><![CDATA[Get resource from the web: keep the body,
                    eliminate scripts and CSS, keep only the links]]></Description>

                <Abstract><![CDATA[Retrieve files from the Internet via the HTTP and HTTPS
                    protocols; get rid of the scripts
                    and the CSS; keep only the links]]></Abstract>

                <Category><![CDATA[Q123332885]]></Category>
                <Tags><![CDATA[web, internet, url, http, https]]></Tags>
                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Example><![CDATA[%baseURL%/?%name%=https://www.trql.fm/developers/articles-service-catalog-extended/]]></Example>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="b6e9d331-10c4-4ff7-a534-bb953912739c" lupdate="20240704 17:02:29">
                <Name><![CDATA[getBodyLinks]]></Name>
                <Description><![CDATA[Get resource from the web: keep the body,
                    eliminate scripts and CSS, keep only the images]]></Description>

                <Abstract><![CDATA[Retrieve files from the Internet via the HTTP and HTTPS
                    protocols; get rid of the scripts
                    and the CSS; keep only the images]]></Abstract>

                <Category><![CDATA[Q123332885]]></Category>
                <Tags><![CDATA[web, internet, url, http, https]]></Tags>
                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Example><![CDATA[%baseURL%/?%name%=https://www.trql.fm/developers/articles-service-catalog-extended/]]></Example>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="e66028e4-e8f1-4069-b269-cbdf42a0f279" lupdate="20240713 11:23:34">
                <Name><![CDATA[wikidata-entity]]></Name>
                <Description><![CDATA[Search wikidata about an entity]]></Description>

                <Abstract><![CDATA[Given an entity ID ((e.g. Q392 for "Bob Dylan"), search 
                    the wikidata database to get all the details of the entity (all its
                    known properties)]]></Abstract>

                <Category><![CDATA[Q123332885]]></Category>
                <Tags><![CDATA[web, internet, url, http, https, wikidata]]></Tags>
                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Example><![CDATA[%baseURL%/?%name%=Q392]]></Example>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="f5dea503-387a-467b-aefe-aab630e668be" lupdate="20240713 11:26:42">
                <Name><![CDATA[wikipedia-search]]></Name>
                <Description><![CDATA[Search wikipedia for terms - get all matching info]]></Description>

                <Abstract><![CDATA[Given a set of terms (e.g. "Bob Dylan"), search 
                    the wikipedia database in the hope to find useuful results]]></Abstract>

                <Category><![CDATA[Q123332885]]></Category>
                <Tags><![CDATA[web, internet, url, http, https, wikidata]]></Tags>
                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Example><![CDATA[%baseURL%/?%name%=Bob Dylan]]></Example>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="65f17979-aee7-4471-a342-454ea497be39" lupdate="20240704 13:32:11">
                <Name><![CDATA[getBody]]></Name>
                <Description><![CDATA[Get resource from the web: keep the body]]></Description>

                <Abstract><![CDATA[Retrieve files from the Internet via the HTTP and HTTPS
                    protocols; keep only the body of an HTML page.]]></Abstract>

                <Category><![CDATA[Q123332885]]></Category>
                <Tags><![CDATA[web, internet, url, http, https]]></Tags>
                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Example><![CDATA[%baseURL%/?%name%=https://www.trql.fm/developers/articles-service-catalog-extended/]]></Example>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="ed31f9ec-f973-4c4b-a638-cc0874132b07" lupdate="20240704 13:32:11">
                <Name><![CDATA[getBodyNoExtra]]></Name>
                <Description><![CDATA[Get resource from the web: keep the body, eliminate scripts and CSS]]></Description>

                <Abstract><![CDATA[Retrieve files from the Internet via the HTTP and HTTPS
                    protocols; keep only the body of an HTML page, get rid of the scripts
                    and the CSS.]]></Abstract>

                <Category><![CDATA[Q123332885]]></Category>
                <Tags><![CDATA[web, internet, url, http, https]]></Tags>
                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Example><![CDATA[%baseURL%/?%name%=https://www.trql.fm/developers/articles-service-catalog-extended/]]></Example>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="cfc2a469-e44b-470b-9aba-330424a6ac36" lupdate="20240713 11:17:33">
                <Name><![CDATA[wikidata-search]]></Name>
                <Description><![CDATA[Search wikidata for terms - get entity ID on return]]></Description>

                <Abstract><![CDATA[Given a set of terms (e.g. "Bob Dylan"), search 
                    the wikidata database in the hope to find useuful results
                    amongst which the entity IDs that match the terms]]></Abstract>

                <Category><![CDATA[Q123332885]]></Category>
                <Tags><![CDATA[web, internet, url, http, https, wikidata]]></Tags>
                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Example><![CDATA[%baseURL%/?%name%=Bob Dylan]]></Example>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="f15471c0-b7f7-4470-b5aa-39f4a1827d53" lupdate="20240529 13:23:47">
                <Name><![CDATA[today]]></Name>

                <Description><![CDATA[Set of events (today in history) and artist anniversaries]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q152074]]></Category>

                <Tags><![CDATA[news]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="31ae7427-49aa-41df-9ad1-12883c6d5e41" lupdate="20240529 13:27:51">
                <Name><![CDATA[news]]></Name>

                <Description><![CDATA[Set of news collected by TRQL Radio through Artificial Intelligence]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q152074]]></Category>

                <Tags><![CDATA[news]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%&today&forced]]></Endpoint>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="843726cb-63cd-4f86-b307-df51769741e0" lupdate="20240605 14:28:13">
                <Name><![CDATA[rss]]></Name>
                <Description><![CDATA[Extract items from an RSS feed]]></Description>
                <Abstract><![CDATA[Obtain the RSS items of a RSS feed]]></Abstract>
                <Category><![CDATA[Q38926]]></Category>
                <Tags><![CDATA[news]]></Tags>
                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Example><![CDATA[%baseURL%/?%name%=https%3A%2F%2Foilprice.com%2Frss%2Fmain]]></Example>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="6475f811-306e-403c-b538-cf773fe0bb52" lupdate="20240619 11:05:10">
                <Name><![CDATA[hasFeed]]></Name>

                <Description><![CDATA[Determines if a website has an RSS feed]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q45432]]></Category>

                <Tags><![CDATA[rss]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Example><![CDATA[%baseURL%/?%name%=https://lecourrierdesstrateges.fr]]></Example>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>

            <Service id="7ce6cbfe-28fc-4e31-88df-bd4cbfabd541" lupdate="20240713 11:30:57">
                <Name><![CDATA[rssChannel]]></Name>

                <Description><![CDATA[Gives the details of an RSS channel]]></Description>

                <Abstract><![CDATA[]]></Abstract>

                <Category><![CDATA[Q45432]]></Category>

                <Tags><![CDATA[rss, feed]]></Tags>

                <Endpoint><![CDATA[%baseURL%/?%name%]]></Endpoint>
                <Example><![CDATA[%baseURL%/?%name%=https://insolentiae.com/feed/]]></Example>
                <Owner><![CDATA[%ownerEmail%]]></Owner>
                <SLA><![CDATA[Best effort]]></SLA>
                <Audience><![CDATA[All]]></Audience>
                <Pricing><![CDATA[Free]]></Pricing>
                <Links><![CDATA[]]></Links>
                <Deployed>true</Deployed>
            </Service>
        </Services>
    </API>

</Catalog>

Le CSS nécessaire au rendu

<style>
    article.content.special p.readingTime { top: -6.5em; }

    table.services,
    table.service-catalog { width: 100%;
        border-collapse: collapse;
        border: 1px solid silver;
        margin: 2em auto;
    }
    table.services { background-color: #fffa;
        font-size: 85%;
    }

        table.services caption { background-color: #900;
            color: #fff;
        }

        table.services td,
        table.services th,
        table.service-catalog td,
        table.service-catalog th { border: 1px solid #555;
            padding: 1em;
        }
        table.services td.field,
        table.service-catalog td.field { width: 20%; font-weight: bold; }
        table.servics td.desc { width: 80%; }
        table.service-catalog td.desc { width: 80%; }

        table.services td.name { font-weight: bold;
            width: 20%;
        }
        table.services td.description { width: 80%;
        }
        table.services td.details { column-span: all;
        }
        table.services tbody tr.face td { border-top-width: 4px !important;
            position: relative;
        }
        table.services tbody tr.face td.name span.number { position: absolute;
            background-color: yellow;
            border: 1px solid #000;
            display: block;
            width: 2em;
            height: 2em;
            line-height: 2em;
            text-align:center;
            vertical-align: middle;
            top: -10px;
            left: -10px;
        }

        table.services tbody td.desc span.tag { background-color: black;
            color: white;
            border: 1px dashed #fff;
            padding: 0 2px;
            border-radius: 1.5em;
            font-size: 65%;
            display: inline-block;
            min-width: 5em;
            text-align:center;
        }
        table.services tr.no-desc { background-color: orange;
        }
        table.services tr.not-deployed { background-color: #888;
        }
        table.services tr.details.no-category { background-color: #a00;
            color: #fff;
        }

        table.serviceParameters { width: 80%;
            margin: 1em auto;
            border: 1px solid black;
            border-collapse: collapse;
        }
            table.serviceParameters thead tr th.name { width: 15%; }
            table.serviceParameters thead tr th.type { width: 15%; }
            table.serviceParameters thead tr th.desc { width: 70%; }

            table.serviceParameters tbody tr td.name { text-align: center; }
            table.serviceParameters tbody tr td.type { text-align: center; }

    pre.code,
    pre.source { line-height: 1.3em;
        color: #a00;
        overflow-x: auto;
        background-color: #fff9;
        padding: 3px;
    }
</style>

Le code du rendu du catalogue en PHP

<?php
    $webServices = null;
    $xml         = null;

    $oDom = new \DOMDocument();

    if ( $oDom->load( $file = v::FIL_AddBS( __DIR__ ) . 'service-catalog-extended.xml' ) )
    {
        $xml = v::FIL_FileToStr( $file );

        if ( $oXPath = new \DOMXPath( $oDom ) )
        {
            $patterns   =
            $substs     =
            $allVars    = [];

            if ( ( $vars = $oXPath->query( '*/Vars/Var' ) ) && $vars->length> 0 )
            {
                //var_dump( $vars );
                foreach( $vars as $var )
                {
                    $varName                = $var->getAttribute( 'name' );
                    $$varName               =
                    $allVars[ $varName ]    = $var->nodeValue;

                    $patterns[] = "%{$varName}%";
                    $substs[]   = $var->nodeValue;
                }   /* foreach( $vars as $var ) */
            }   // if ( ( $vars = $oXPath->query( '*/Vars/Var' ) ) && $vars->length> 0 )

            if ( ( $APIs = $oXPath->query( '//API' ) ) && $APIs->length> 0 )
            {
                foreach( $APIs as $API )
                {
                    $APIName = $oXPath->query( 'Name',$API )->item(0)->nodeValue;
                    //var_dump( "dans {$APIName}",'<br /><br /><br /><br /><br />' );
                    $services = $oXPath->query( 'Services/Service',$API );
                    //var_dump( $services );
                    $webServices = null;

                    if ( ( $services = $oXPath->query( 'Services/Service',$API ) ) && $services->length> 0 )
                    {
                        foreach( $services as $service )
                        {
                            $id             = $service->getAttribute( 'id' );
                            $name           = trim( $oXPath->query( "Name"       ,$service )->item(0)->nodeValue );
                            $desc           = trim( $oXPath->query( "Description",$service )->item(0)->nodeValue );
                            $abstract       = trim( $oXPath->query( "Abstract"   ,$service )->item(0)->nodeValue );
                            $endpoint       = trim( $oXPath->query( "Endpoint"   ,$service )->item(0)->nodeValue );
                            $example        = trim( $oXPath->query( "Example"    ,$service )->item(0)->nodeValue ?? '' ) ;
                            $owner          = trim( $oXPath->query( "Owner"      ,$service )->item(0)->nodeValue );
                            $deployed       = trim( $oXPath->query( "Deployed"   ,$service )->item(0)->nodeValue ) === 'true';
                            $obsolete       = false;

                            $tags           = null;
                            $cats           = null;
                            $serviceParams  = null;
                            $additionalCSS  = '';

                            if ( ( $o = $oXPath->query( "Tags",$service ) ) && $o->length > 0 )
                                $tags   = trim( $o->item(0)->nodeValue );

                            if ( ( $params = $oXPath->query( "Params/Param",$service ) ) && $params->length > 0 )
                            {
                                foreach( $params as $param )
                                {
                                    $paramName          = $param->getAttribute( 'name'          );
                                    $paramType          = $param->getAttribute( 'type'          );
                                    $paramDefault       = $param->getAttribute( 'default'       );
                                    $paramDefaultExt    = $param->getAttribute( 'default-ext'   );
                                    $paramDescription   = null;
                                    $paramExamples      = null;

                                    if ( ( $o = $oXPath->query( "Description",$param ) ) && $o->length > 0 )
                                        $paramDescription = $o->item(0)->nodeValue;

                                    if ( ( $o = $oXPath->query( "Examples",$param ) ) && $o->length > 0 )
                                        $paramExamples = $o->item(0)->nodeValue;

                                    $serviceParams[] = array( 'name'        => $paramName       ,
                                                              'type'        => $paramType       ,
                                                              'default'     => $paramDefault    ,
                                                              'default-ext' => $paramDefaultExt ,
                                                              'description' => $paramDescription,
                                                              'examples'    => $paramExamples   ,
                                                             );
                                }   /* foreach( $params as $param ) */
                            }   /* if ( ( $params = $oXPath->query( "Params/Param",$service ) ) && $params->length > 0 ) */


                            // Soit en attribut, soit en tag
                            if ( ! $cats = $oXPath->query( "Category",$service )->item(0)->getAttribute( 'entity' ) )
                                $cats = trim( $oXPath->query( "Category",$service )->item(0)->nodeValue );

                            $endpoint = str_replace( $patterns,$substs,$endpoint );
                            $owner    = str_replace( $patterns,$substs,$owner    );

                            $endpoint = str_replace( '%name%',$name,$endpoint );

                            $example  = str_replace( $patterns,$substs,$example );
                            $example  = str_replace( '%name%',$name,$example    );

                            $webServices[] = array( 'id'        => $id              ,
                                                    'name'      => $name            ,
                                                    'desc'      => $desc            ,
                                                    'abstract'  => $abstract        ,
                                                    'endpoint'  => $endpoint        ,
                                                    'example'   => $example         ,
                                                    'owner'     => $owner           ,
                                                    'tags'      => $tags            ,
                                                    'cats'      => $cats            ,
                                                    'deployed'  => $deployed        ,
                                                    'obsolete'  => $obsolete        ,
                                                    'params'    => $serviceParams   ,
                                                  );
                        }   /* foreach( $services as $service ) */

                        //die();
                        usort( $webServices,fn($a, $b) => strcmp( strtolower( trim( $a['name'] ) ),strtolower( trim( $b['name'] ) ) ) );

                        renderServices( $webServices,$allVars,$APIName );
                    }   /* if ( ( $services ... */
                } /* foreach( $APIs as $API ) */
            }
        }   /* if ( $oXPath = new ... */
    }   /* if ( $oDom->;load( $file = ... */

    function renderServices( $services,$vars,$APIName )
    /*-----------------------------------------------*/
    {
        echo "<table class=\"services shadowLight\">\n";
            echo "<caption><strong>{$APIName}</strong> Services</caption>\n";

            echo "<thead>\n";
                echo "<tr>\n";
                    echo "<th>Service</th>";
                    echo "<th>Description</th>";
                echo "<tr>\n";
            echo "</thead>\n";

            echo "<tbody>\n";
                $i = 1;
                foreach( $services as $service )
                {
                    $additionalCSS = '';

                    if ( ! $service['deployed'] )
                        $additionalCSS .= " not-deployed";

                    if ( empty( $service['desc'] ) )
                        $additionalCSS .= " no-desc";

                    if ( empty( $service['cats'] ) )
                        $additionalCSS .= " no-category";

                    echo "<tr id=\"{$service['id']}\" class=\"face {$additionalCSS}\">\n";
                        echo "<td class=\"name\">\n";
                            echo "<code>{$service['name']}</code>\n";
                            echo "<span class=\"number shadowLight\">{$i}</span>\n"; $i++;
                        echo "</td>";
                        echo "<td class=\"desc\">\n";
                            echo "<span class=\"description\">{$service['desc']}</span>\n";

                            if ( $service['tags'] )
                            {
                                $labels = explode(',',$service['tags'] );

                                if ( ! empty( trim( $service['desc'] ) ) )
                                    echo "<hr />";

                                foreach( $labels as $tag )
                                {
                                    if ( ! empty( trim( $tag ) ) )
                                        echo  "<span class=\"tag\">{$tag}</span>";
                                }
                            }
                        echo "</td>\n";
                    echo "</tr>\n";

                    echo "<tr id=\"{$service['id']}_details\" class=\"details {$additionalCSS}\">\n";
                        echo "<td class=\"details\" colspan=\"2\">";

                            $entities   = '';

                            if ( ! empty( $service['cats'] ) )
                            {
                                $categories = explode(',',$service['cats'] );

                                foreach( $categories as $entity )
                                {
                                    $entityID  = trim( $entity );

                                    if ( ! empty( $entityID ) )
                                    {
                                        $entities .= "<span class=\"entity\"><a href=\"https://www.wikidata.org/wiki/{$entityID}\" target=\"_blank\">{$entityID}</a></span>\n";
                                    }
                                }   /* foreach( $categories as $entity ) */
                            }   /* if ( ! empty( $cats ) ) */

                            if ( ! empty( $entities ) )
                                echo "<b>Category</b>: {$entities}<br />";

                            echo "<b>Endpoint</b>: <a href=\"{$service['endpoint']}\" target=\"_blank\">{$service['endpoint']}</a><br />";

                            if ( $service['params'] )
                            {
                                echo buildParametersTable( $service['params'] );
                            }   /* if ( $service['params'] ) */

                            if ( ! empty( $service['example'] ) )
                                echo "<b>Example</b>: <a href=\"{$service['example']}\" target=\"_blank\">{$service['example']}</a><br />";

                            // problème car je fais référence à ownerName qui est une variable construite dynamiquement
                            // sur base de la section /vars du .xml
                            //echo "<b>Contact</b>: <a href=\"mailto:{$ownerEmail}\" target=\"_blank\">$service['owner']}</a>";
                            echo "<b>Contact</b>: <a href=\"mailto:{$vars['ownerEmail']}\" target=\"_blank\">{$service['owner']}</a>";
                        echo "</td>\n";
                    echo "</tr>\n";
                }   /* foreach( $services as $service ) */
            echo "</tbody>\n";
        echo "</table>\n";
    }

    function buildParametersTable( $params )
    /*------------------------------------*/
    {
        $html = '';

        if ( $params )
        {
            $html .= "<table class=\"serviceParameters\">\n";
                $html .= "<caption>Parameters</caption>";
                $html .= "<thead>";
                    $html .= "<tr>";
                        $html .= "<th class=\"name\">Name</th>";
                        $html .= "<th class=\"type\">Type</th>";
                        $html .= "<th class=\"desc\">Description</th>";
                    $html .= "</tr>";
                $html .= "</thead>";

                $html .= "<tbody>";
                foreach( $params as $param )
                {
    
                    //array( 'name'        => $paramName       ,
                    //       'type'        => $paramType       ,
                    //       'default'     => $paramDefault    ,
                    //       'default-ext' => $paramDefaultExt ,
                    //       'description' => $paramDescription,
                    //       'examples'    => $paramExamples   ,
                    //      );

                    $html .= "<tr>";
                        $html .= "<td class=\"name\">{$param['name']}</td>";
                        $html .= "<td class=\"type\">{$param['type']}</td>";
                        $html .= "<td class=\"desc\">{$param['description']}</td>";
                    $html .= "</tr>";
                }   /* foreach( $params as $param ) */
                $html .= "</tbody>";
            $html .= "</table> <!-- .serviceParameters -->\n";
        }   /* if ( $params ) */

        return ( $html );
    }
?>

Conclusions

Pour TRQL Radio nous n'avons pas besoin de plus ! Nous gérons 218 services au moment où ces lignes sont écrites (06/06/2024 13:09:26). Prenant place à côté de l'API TRQLEconomics nous avons trois autres APIs : une API pour des services spécifiques à la musique dans le contexte de notre radio (e.g. infos concernant un morceau, infos concernant un artiste, …), une API pour notre Media Player (e.g. passage au morceau suivant, diffusion d'un jingle, …), et une API généraliste (e.g. traduction de texte, découpe de textes en entités Wikidata, synonymes, taxonomies, …)

Notre solution convient à nos besoins. Si d'aventure nous détecterions des besoins plus larges ou plus profonds, nous sommes confiants dans notre capacité à importer notre catalogue de services dans n'importe quel outil du marché. Aucune porte ne nous est fermée puisque nous avons choisi un format ouvert et universel, j'ai nommé le XML.

Au fond, c'est peut-être cela être agile ou lean : juste ce qu'il faut au moment où il le faut et … ne pas être bloqué pour d'éventuelles évolutions futures !

Telegram icon