Add kamelet definition: ogcapi-features-action

This commit is contained in:
gitea_admin 2026-10-12 02:35:48 +00:00
parent bbad5cd28e
commit 9038800141

207
kamelet.json Normal file
View File

@ -0,0 +1,207 @@
{
"apiVersion": "camel.apache.org/v1",
"kind": "Kamelet",
"metadata": {
"name": "ogcapi-features-action",
"annotations": {
"camel.apache.org/kamelet.support.level": "Stable",
"camel.apache.org/catalog.version": "4.22.1",
"camel.apache.org/kamelet.icon": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgd2lkdGg9IjIxMDAiCiAgIGhlaWdodD0iMjEwMCIKICAgdmlld0JveD0iMCAwIDIxMDAgMjEwMCIKICAgdmVyc2lvbj0iMS4xIgogICB4bWw6c3BhY2U9InByZXNlcnZlIgogICBzdHlsZT0iY2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjIiCiAgIGlkPSJzdmcxMTEwIgogICBzb2RpcG9kaTpkb2NuYW1lPSJPcGVuX0dlb3NwYXRpYWxfQ29uc29ydGl1bV9sb2dvLnN2ZyIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMS4xLjIgKDBhMDBjZjUzMzksIDIwMjItMDItMDQpIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zOnNlcmlmPSJodHRwOi8vd3d3LnNlcmlmLmNvbS8iPjxkZWZzCiAgIGlkPSJkZWZzMTExNCIgLz48c29kaXBvZGk6bmFtZWR2aWV3CiAgIGlkPSJuYW1lZHZpZXcxMTEyIgogICBwYWdlY29sb3I9IiNmZmZmZmYiCiAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICBib3JkZXJvcGFjaXR5PSIxLjAiCiAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwLjAiCiAgIGlua3NjYXBlOnBhZ2VjaGVja2VyYm9hcmQ9IjAiCiAgIHNob3dncmlkPSJmYWxzZSIKICAgaW5rc2NhcGU6em9vbT0iMC4xMjgzNzUiCiAgIGlua3NjYXBlOmN4PSIxNDkxLjcyMzUiCiAgIGlua3NjYXBlOmN5PSIxNDA5LjkzMTgiCiAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTkyMCIKICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iOTgzIgogICBpbmtzY2FwZTp3aW5kb3cteD0iMCIKICAgaW5rc2NhcGU6d2luZG93LXk9IjAiCiAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiCiAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9Ik9HQy0yRC1Mb2NrdXAtdy0tVHJhZGVtYXJrIiAvPgogICAgPGcKICAgaWQ9Ik9HQy0yRC1Mb2NrdXAtdy0tVHJhZGVtYXJrIgogICBzZXJpZjppZD0iT0dDIDJEIExvY2t1cCB3LyBUcmFkZW1hcmsiCiAgIHRyYW5zZm9ybT0ibWF0cml4KDIwLjA2NTEsMCwwLDIwLjA2NTEsLTE0MzUuMDksLTEwMjQuMTQpIj4KICAgICAgICAKICAgICAgICA8ZwogICBpZD0iQ3ViZSIKICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTM1LjkyNzA1NiwtNDkuNDQ2NTI0KSI+CiAgICAgICAgICAgIDxnCiAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE1Ni4yMTcsMTYxLjU2OSkiCiAgIGlkPSJnMTA5OCI+CiAgICAgICAgICAgICAgICA8cGF0aAogICBkPSJNIDAsMTQuNjUzIDAuMDAxLDQzLjk4MyAtNDIuMzEyLDE5LjU1NCAtNDIuMzEzLC0yOS4zMyAwLC00LjkwMSB2IDkuNzc2IGwgLTguNDQ2LC00Ljg3NCAtNC4yMzMsLTIuNDQ1IC0yMS4xNjcsLTEyLjIyMSB2IDI5LjMzIGwgMjUuNCwxNC42NjYgdiAtOS43NzcgbCAtMTIuNywtNy4zMzMgMC4wMDEsLTQuODg4IGggLTAuMDAxIFYgMi40NDUgWiIKICAgc3R5bGU9ImZpbGw6IzAwYjFmZjtmaWxsLXJ1bGU6bm9uemVybyIKICAgaWQ9InBhdGgxMDk2IiAvPgogICAgICAgICAgICA8L2c+CiAgICAgICAgICAgIDxnCiAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE2MC40NTUsMTEwLjI2MSkiCiAgIGlkPSJnMTEwMiI+CiAgICAgICAgICAgICAgICA8cGF0aAogICBkPSJNIDAsMjkuMzMgLTI1LjQwMywxNC42NjUgMCwtMC4wMDEgMjUuMzk5LDE0LjY2NSAyMS4xNjcsMTcuMTA5IFogTSAtMC4wMDEsLTkuNzc3IC00Mi4zMzYsMTQuNjY1IC0wLjAwMSwzOS4xMDcgNDIuMzMzLDE0LjY2NSBaIgogICBzdHlsZT0iZmlsbDojMDBiMWZmO2ZpbGwtcnVsZTpub256ZXJvIgogICBpZD0icGF0aDExMDAiIC8+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPGcKICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTgxLjY2LDE4MS4yMzkpIgogICBpZD0iZzExMDYiPgogICAgICAgICAgICAgICAgPHBhdGgKICAgZD0ibSAwLC0yNC42ODggOC40NjgsLTQuODg4IDguNDY2LC00Ljg4OSAxMGUtNCw5Ljc3NyA4LjQ0NCwtNC44NzUgdiAtMTkuNDQ0IGwgLTQyLjMxMiwyNC40MjkgdiA5LjY2NiBoIDAuMDAxIGwgLTAuMDAxLDIuOTE4IDAuMDAxLDM2LjE5IC0wLjAyMiwtMC4wMTMgdiAwLjEzNiBMIDI1LjM3OSwtMC4xMjMgdiAtMTkuNjY1IGwgLTguNDQ0LDQuODc3IHYgOS43NzYgTCAtOC40NjYsOS41MyAtOC40NjUsLTE5Ljc5OSBaIgogICBzdHlsZT0iZmlsbDojMDBiMWZmO2ZpbGwtcnVsZTpub256ZXJvIgogICBpZD0icGF0aDExMDQiIC8+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPgo=",
"camel.apache.org/provider": "Apache Software Foundation",
"camel.apache.org/kamelet.group": "Geospatial",
"camel.apache.org/kamelet.namespace": "Geo"
},
"labels": {
"camel.apache.org/kamelet.type": "action"
}
},
"spec": {
"definition": {
"title": "OGC Api Feature Get Item Action",
"description": "Returns the items of the collection provided of an OGC API Features server.",
"required": [
"url",
"collection"
],
"type": "object",
"properties": {
"url": {
"title": "URL",
"description": "The URL to fetch for data",
"type": "string",
"example": "https://emotional.byteroad.net",
"pattern": "^(http|https)://.*"
},
"collection": {
"title": "Collection",
"description": "Name of the collection we want to extract items from.",
"type": "string"
},
"bbox": {
"title": "Bounding Box",
"description": "Bounding Box of the items we want to retrieve.",
"example": "160.6,-55.95,-170,-25.89",
"default": "-180,-90,180,90",
"type": "string"
},
"limit": {
"title": "Limit",
"description": "Maximum number of items to retrieve. Must be a number between 1 and 10 000.",
"type": "integer",
"default": 10
},
"split": {
"title": "Split by Feature",
"description": "When true, instead of returning the full geojson, split the message into each feature.",
"type": "boolean",
"default": false
},
"query": {
"title": "Query",
"description": "Separated list by `&` of properties we want to query.",
"example": "property1=1&property2=dos",
"default": "",
"type": "string"
}
}
},
"types": {
"in": {
"mediaType": "text/plain"
},
"out": {
"mediaType": "application/json"
}
},
"dependencies": [
"camel:core",
"camel:http",
"camel:kamelet",
"camel:jsonpath",
"camel:jackson"
],
"template": {
"from": {
"uri": "kamelet:source",
"steps": [
{
"setHeader": {
"name": "Accept",
"constant": "application/geo+json"
}
},
{
"setHeader": {
"name": "CamelHttpQuery",
"simple": "limit={{limit}}&bbox={{bbox}}&{{?query}}&${body}"
}
},
{
"setBody": {
"simple": ""
}
},
{
"to": {
"uri": "{{url}}/collections/{{collection}}/items"
}
},
{
"removeHeader": {
"name": "Accept"
}
},
{
"removeHeader": {
"name": "CamelHttpQuery"
}
},
{
"convertBodyTo": {
"type": "java.lang.String"
}
},
{
"choice": {
"when": [
{
"simple": "{{split}}",
"steps": [
{
"split": {
"jsonpath": "$.features[*]",
"steps": [
{
"marshal": {
"json": {}
}
},
{
"to": "kamelet:sink"
}
]
}
}
]
}
],
"otherwise": {
"steps": [
{
"to": "kamelet:sink"
}
]
}
}
}
]
}
}
},
"propertiesSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"title": "OGC Api Feature Get Item Action",
"description": "Returns the items of the collection provided of an OGC API Features server.",
"required": [
"url",
"collection"
],
"properties": {
"url": {
"type": "string",
"title": "URL",
"description": "The URL to fetch for data"
},
"collection": {
"type": "string",
"title": "Collection",
"description": "Name of the collection we want to extract items from."
},
"bbox": {
"type": "string",
"title": "Bounding Box",
"description": "Bounding Box of the items we want to retrieve.",
"default": "-180,-90,180,90"
},
"limit": {
"type": "integer",
"title": "Limit",
"description": "Maximum number of items to retrieve. Must be a number between 1 and 10 000.",
"default": 10
},
"split": {
"type": "boolean",
"title": "Split by Feature",
"description": "When true, instead of returning the full geojson, split the message into each feature.",
"default": false
},
"query": {
"type": "string",
"title": "Query",
"description": "Separated list by `&` of properties we want to query.",
"default": ""
}
}
}
}