[{"id":"kds-team.ex-2performant","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":62,"name":"2Performant","type":"extractor","shortDescription":"Extracts commissions and transactions from the 2Performant affiliate network API.","longDescription":"# 2Performant Affiliate Extractor\n\nThe 2Performant extractor allows to download all commissions and their transactions.\n\nTo successfully use the extractor, a username and password used to access [network.2performant.com](https://network.2performant.com/) is needed.\n\n## Configuration\n\nA configuration of 3 mandatory parameters is required. A sample configuration of the component can be found in [component's repository](https://bitbucket.org/kds_consulting_team/kds-team.ex-2performant/src/master/component_config/sample-config/).\n\n- username (`username`) - a username used to login to 2performant;\n- password (`#password`) - a password associated with username;\n- month delta (`monthsBack`) - a positive integer marking the amount of months for which to download commissions;\n- incremental load (`incremental`) - a boolean marking, whether incremental load should be used.\n\n## Output\n\nA table with commissions returned by the API. Table is loaded incrementally with column `id` used as primary key.","licenseUrl":"https://github.com/keboola/component-2performant/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-2performant/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-2performant","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Advertisement"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["#password","username","monthsBack","incremental"],"properties":{"username":{"type":"string","title":"Username","default":"","minLength":1,"description":"User name used to log in to <a href='https://network.2performant.com/'>network.2performant.com</a>.","propertyOrder":100},"#password":{"type":"string","title":"Password","format":"password","minLength":1,"description":"User password used to log in to <a href='https://network.2performant.com/'>network.2performant.com</a>.","propertyOrder":200},"monthsBack":{"type":"integer","title":"Month delta","default":4,"maximum":48,"minimum":1,"description":"The amount of months, including this one, for which to download the data. Functionality is as follows: <ul><li>1 - downloads data for current month,</li><li>2 - downloads data for current and previous month,</li><li>3 - downloads data for this, previous and month prior to that,</li><li>4 - etc.</li>","propertyOrder":300},"incremental":{"type":"boolean","title":"Incremental load","default":true,"description":"Use incremental load to storage.","propertyOrder":400}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"#### Input\n\nA configuration of 3 mandatory parameters is required. A sample configuration of the component can be found in [component's repository](https://bitbucket.org/kds_consulting_team/kds-team.ex-2performant/src/master/component_config/sample-config/).\n\n- username (`username`) - a username used to login to 2performant;\n- password (`#password`) - a password associated with username;\n- month delta (`monthsBack`) - a positive integer marking the amount of months for which to download commissions;\n- incremental load (`incremental`) - a boolean marking, whether incremental load should be used.\n\n#### Output\n\nA table with commissions returned by the API. Table is loaded incrementally with column `id` used as primary key.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":62,"uri":"docker/kds-team.ex-2performant","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-2performant","name":"developer-portal-v2/kds-team.ex-2performant","tag":"0.1.5","options":{},"digest":"sha256:1e4d0a228fb7ffd74e7726f4f27b37f2f4ee5c6363a4be92cb4499e699576cb6"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-2performant/32/1623156530892.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-2performant/64/1623156530892.png","128":null}},{"id":"keboola.ex-abra-flexi","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":65,"name":"ABRA Flexi","type":"extractor","shortDescription":"Extracts records from ABRA Flexi (FlexiBee) accounting/ERP. Each configuration row pulls one evidence type, with optional incremental loading on the lastUpdate field.","longDescription":"The ABRA Flexi (FlexiBee) extractor pulls accounting/ERP records out of an ABRA Flexi instance over its REST API into Keboola Storage.\n\nIt is generic over evidence types: each configuration row selects one evidence (e.g. `faktura-vydana`, `adresar`, `banka`) and produces one output table. Reference fields are flattened (e.g. `mena`, `mena_ref`, `mena_showAs`) and the record `id` is used as the primary key.\n\nLoading can be full or incremental. Set a date window on the `lastUpdate` field — using relative expressions such as `5 days ago` or absolute dates — to fetch only recently changed records; rows are then upserted incrementally on `id`.\n\nConnection details (base URL, company, username, password) are shared at the configuration level; a Test Connection action verifies them and an evidence picker lists the available evidence types.","licenseUrl":"https://github.com/keboola/component-ex-flexibee/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-ex-flexibee/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-ex-flexibee","requiredMemory":"512m","processTimeout":null,"features":[],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":true,"forwardTokenDetails":true,"injectEnvironment":false,"complexity":"easy","category":null,"categories":["Accounting","ERP"],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"ABRA Flexi connection","required":["base_url","company","username","#password"],"properties":{"company":{"type":"string","title":"Company","description":"ABRA Flexi company (database) identifier — the segment after `/c/` in the URL, e.g. `demo`.","propertyOrder":2},"base_url":{"type":"string","title":"Base URL","description":"e.g. https://demo.flexibee.eu or https://your-host:5434","propertyOrder":1},"username":{"type":"string","title":"Username","propertyOrder":3},"#password":{"type":"string","title":"Password","format":"password","propertyOrder":4},"ssh_tunnel":{"type":"object","title":"SSH Tunnel","format":"ssh-editor","propertyOrder":5},"ssl_verify":{"type":"boolean","title":"Verify SSL certificate","default":true,"propertyOrder":6},"test_connection":{"type":"button","format":"sync-action","options":{"async":{"label":"Test connection","action":"testConnection"}},"propertyOrder":7}}},"configurationRowSchema":{"type":"object","title":"Evidence","required":["evidence"],"properties":{"limit":{"type":"integer","title":"Page size","default":200,"options":{"tooltip":"Number of records fetched **per API request** (pagination page size). The extractor automatically pages through *all* matching records — this only controls how many are pulled per HTTP call. Higher values mean fewer requests but larger responses. Default `200`."},"propertyOrder":10},"detail":{"enum":["full","summary","custom"],"type":"string","title":"Detail level","default":"full","options":{"tooltip":"**Full** — the complete record (all fields). **Summary** — only the core identifying fields (e.g. id, code, name); smaller and faster. **Custom** — only the fields you list below.","enum_titles":["Full","Summary","Custom"]},"description":"How many fields each record includes.","propertyOrder":6},"date_to":{"type":"string","title":"Date End","options":{"tooltip":"Applied on every run. Accepts relative (`5 days ago`) or absolute (`2026-01-01`) values. Empty = up to now."},"description":"Upper bound of the date-field range.","propertyOrder":5},"evidence":{"type":"string","title":"Evidence type","format":"select","options":{"async":{"label":"Re-load evidence types","action":"listEvidences","autoload":["parameters.base_url","parameters.company","parameters.username"]}},"description":"ABRA Flexi evidence path to extract","propertyOrder":1},"date_from":{"type":"string","title":"Date Start","options":{"tooltip":"Applied on every run. For an incremental (upsert) load, set a **relative** bound like `2 days ago` to pull a rolling window of recent changes. Accepts relative (`5 days ago`) or absolute (`2026-01-01`) values. Empty = from the beginning."},"description":"Lower bound of the date-field range.","propertyOrder":4},"load_type":{"enum":["incremental_load","full_load"],"type":"string","title":"Load type","format":"select","default":"incremental_load","options":{"tooltip":"**Incremental load** (default) — upserts records into the Storage table on the primary key. **Full load** — overwrites the table on every run. Both fetch the Date Start / Date End window on the chosen Date field; there is no automatic watermark, so bound an incremental load with a relative Date Start (e.g. '2 days ago') to fetch only recent changes.","enum_titles":["Incremental load","Full load"]},"description":"How this evidence is loaded on every run.","propertyOrder":2},"date_field":{"enum":[],"type":"string","title":"Date field","format":"select","default":"lastUpdate","options":{"tags":true,"async":{"label":"Re-load date fields","action":"getDateFields","autoload":["parameters.evidence"]},"tooltip":"Which date/datetime column the Date Start / Date End range filters on. Pick a column the evidence returns (e.g. `lastUpdate`, `datVyst`) or type one yourself. Default `lastUpdate`."},"description":"Column the Date Start / Date End range filters on.","propertyOrder":3},"primary_key":{"type":"array","items":{"enum":[],"type":"string"},"title":"Primary key","format":"select","options":{"tags":true,"async":{"label":"Re-load columns","action":"getEvidenceColumns","autoload":["parameters.evidence"]},"tooltip":"Columns that uniquely identify a record, used for incremental upsert. **Leave empty to auto-detect** from the evidence metadata (`id` on standard evidences, the evidence's own key such as `idUcetniDenik` on derived ones; report views load without a key). Pick columns from the list or type your own to override. Non-unique columns silently overwrite rows under incremental load. Changing the key of a table that already exists in Storage requires dropping the output table first."},"description":"Columns that uniquely identify a record. Leave empty to auto-detect.","uniqueItems":true,"propertyOrder":9},"custom_fields":{"type":"string","title":"Custom fields","options":{"dependencies":{"detail":"custom"}},"description":"Comma-separated field list (used when Detail level = custom)","propertyOrder":7},"custom_filter":{"type":"string","title":"Advanced WQL filter","options":{"tooltip":"Raw **WQL** expression, written the way it appears inside the URL parentheses: `field operator 'value'`. It is combined with the Date Start / Date End window using `and`.\n\n**Operators:** `eq`, `ne`, `gt`, `lt`, `like`, `is null`, `is empty`. Use `gt`/`lt` for ranges — the API rejects `ge`/`le`. Quote values with single quotes and use full ISO timestamps for dates.\n\n**Examples:**\n- `kod eq 'CODE-001'`\n- `lastUpdate gt '2026-01-01T00:00:00+00:00'`\n- `kod eq 'A' and castka gt 1000`\n\nLeave empty to fetch everything within the date window."},"description":"Optional raw ABRA Flexi WQL, AND-ed into the Date Start / Date End window.","propertyOrder":8}}},"createConfigurationRowSchema":null,"configurationDescription":"Configuration description.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["getDateFields","getEvidenceColumns","listEvidences","testConnection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":65,"uri":"docker/keboola.ex-abra-flexi","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-abra-flexi","name":"developer-portal-v2/keboola.ex-abra-flexi","tag":"1.0.4","options":{},"digest":"sha256:66a4b6b79d2f0c5a73a71b447a07cdab9f7e9383acda282ce656f2af960d6810"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-abra-flexi/32/1780321584884.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-abra-flexi/64/1780321584884.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-abra-flexi/128/1780321584884.png"}},{"id":"keboola.wr-abra-flexi","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":47,"name":"ABRA Flexi","type":"writer","shortDescription":"Writes data from Keboola Storage tables into the ABRA Flexi (FlexiBee) ERP system via its REST API.","longDescription":"# ABRA Flexi Writer\n\nWrites rows from a Keboola Storage input table into an ABRA Flexi (formerly FlexiBee) evidence\ntype (e.g. `adresar`, `faktura-vydana`) via the FlexiBee REST API.\n\nEach configuration row targets one evidence type. Records are upserted in batches: the value of a\nchosen ID column becomes the FlexiBee record identifier — either an external ID (`ext:`) for\nidempotent upserts, or an internal numeric ID for updating existing records. Records that the API\nrejects are written to a `write_errors` output table (id, error, field, code) so you can review and\nre-run them; set **Fail on error** to abort the whole job on the first failure instead.\n\n## Authentication\n\nHTTP Basic authentication. The configured user must have REST API write access in ABRA Flexi.\n\n## Configuration\n\n- **Connection** (per configuration): instance URL, company identifier, username, password.\n- **Per evidence row**: evidence type, ID column, ID type, batch size, fail-on-error.","licenseUrl":"https://github.com/keboola/component-wr-abra-flexi/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-wr-abra-flexi/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-wr-abra-flexi","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":true,"forwardTokenDetails":true,"injectEnvironment":false,"complexity":"medium","category":null,"categories":["Accounting","ERP"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-tableInput"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"ABRA Flexi connection","required":["base_url","company","username","#password"],"properties":{"debug":{"type":"boolean","title":"Debug","default":false,"description":"Verbose logging","propertyOrder":6},"company":{"type":"string","title":"Company (firma)","options":{"tooltip":"Company identifier (firma) from the URL path, e.g. fiktivni_firma."},"description":"Company identifier","propertyOrder":2},"base_url":{"type":"string","title":"Base URL","options":{"tooltip":"ABRA Flexi instance URL, e.g. https://demo.flexibee.eu"},"description":"Instance URL","propertyOrder":1},"username":{"type":"string","title":"Username","propertyOrder":3},"#password":{"type":"string","title":"Password","format":"password","propertyOrder":4},"ssl_verify":{"type":"boolean","title":"Verify SSL certificate","default":true,"options":{"tooltip":"Disable only for self-signed on-prem certificates."},"propertyOrder":5},"test_connection":{"type":"button","format":"sync-action","options":{"async":{"label":"Test connection","action":"testConnection"}},"propertyOrder":7}}},"configurationRowSchema":{"type":"object","title":"Evidence write configuration","required":["evidence","id_column"],"properties":{"id_type":{"enum":["ext","internal"],"type":"string","title":"ID type","default":"ext","options":{"tooltip":"ext = upsert by external ID; internal = update by FlexiBee numeric ID.","enum_titles":["External ID (ext)","Internal FlexiBee ID (internal)"]},"description":"How the ID is matched","propertyOrder":3},"evidence":{"type":"string","title":"Evidence type","format":"select","options":{"async":{"label":"Re-load evidence types","action":"listEvidences","autoload":["parameters.base_url","parameters.company","parameters.username"]},"tooltip":"ABRA Flexi evidence path (e.g. adresar). Use the button to load the available types for this company."},"description":"Evidence to write to","propertyOrder":1},"id_column":{"type":"string","title":"ID column","options":{"tooltip":"Input column whose value identifies the record; it becomes the FlexiBee record id."},"description":"Record identifier column","propertyOrder":2},"_metadata_":{"type":"object","options":{"hidden":true},"properties":{"table":{"type":"object","properties":{"columns":{"type":"array"}}},"flexibee_fields":{"type":"array"}},"propertyOrder":9},"batch_size":{"type":"integer","title":"Batch size","default":100,"maximum":500,"minimum":1,"options":{"tooltip":"Records sent per request (1–500)."},"propertyOrder":4},"load_mapping":{"type":"button","title":"Load columns & FlexiBee fields","format":"sync-action","options":{"async":{"label":"Load columns & FlexiBee fields","action":"loadColumnMapping"},"tooltip":"Appends a row for each input column not yet mapped and loads the evidence's FlexiBee fields as destination options. Existing rows are preserved."},"description":"Add unmapped columns; load fields","propertyOrder":9},"fail_on_error":{"type":"boolean","title":"Fail on error","default":false,"options":{"tooltip":"Abort the job on the first record error instead of routing failures to the write_errors table."},"description":"Stop on first error","propertyOrder":5},"column_mapping":{"type":"array","items":{"type":"object","required":["source","destination"],"properties":{"source":{"type":"string","title":"Source Column","watch":{"columns":"_metadata_.table.columns"},"options":{"tags":true},"enumSource":"columns","description":"Input column","propertyOrder":1},"destination":{"type":"string","title":"FlexiBee Field","watch":{"fields":"_metadata_.flexibee_fields"},"format":"select","options":{"tags":true},"enumSource":[{"title":"{{item.label}}","value":"{{item.field_name}}","source":"fields"}],"description":"Target field","propertyOrder":2}}},"title":"Column Mapping","format":"table","options":{"tooltip":"Only mapped columns are sent; unmapped columns are dropped. Leave empty to send all columns as-is."},"description":"Map input columns to FlexiBee fields","propertyOrder":8}}},"createConfigurationRowSchema":null,"configurationDescription":"## Connection\n\n- **Instance URL** – base URL of the ABRA Flexi instance (e.g. `https://demo.flexibee.eu`).\n- **Company** – company identifier (firma) as it appears in the API path.\n- **Username / Password** – HTTP Basic credentials with REST API write access.\n- **Verify TLS** – disable only for self-signed certificates on on-premises installs.\n\nUse **Test Connection** to validate the credentials.\n\n## Evidence row\n\n- **Evidence** – the ABRA Flexi evidence type to write into (pick from the dropdown).\n- **ID column** – the input-table column whose value identifies each record.\n- **ID type** – `ext` upserts on an external ID; `internal` updates by FlexiBee numeric ID.\n- **Batch size** – records sent per API request (1–500).\n- **Fail on error** – abort on the first rejected record instead of collecting failures in the\n  `write_errors` table.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["listEvidences","loadColumnMapping","testConnection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":47,"uri":"docker/keboola.wr-abra-flexi","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-abra-flexi","name":"developer-portal-v2/keboola.wr-abra-flexi","tag":"0.1.1","options":{},"digest":"sha256:a6fd91b323197f966f0d5db05f49c7e40681409402450689767cc10be3a3b306"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-abra-flexi/32/1780344511525.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-abra-flexi/64/1780344511525.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-abra-flexi/128/1780344511525.png"}},{"id":"keboola.ex-accuweather","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":36,"name":"AccuWeather","type":"extractor","shortDescription":"Extracts current conditions and daily and hourly forecasts from AccuWeather.","longDescription":"The AccuWeather extractor pulls weather data from the [AccuWeather APIs](https://developer.accuweather.com/apis)\ninto Keboola Storage as a per-location time series.\n\nEach configuration row represents one **location**, identified by a search query (a city name or\npostal code) or a geo-position. For every location the component resolves an AccuWeather\n`locationKey` (cached in state to conserve API quota) and fetches the datasets you enable:\n\n- **Current conditions** — the latest observation for the location.\n- **Daily forecast** — 1, 5, 10, or 15 days.\n- **Hourly forecast** — 1, 12, 24, 72, or 120 hours.\n\nEach dataset is written to its own table (`current_conditions`, `daily_forecast`,\n`hourly_forecast`) with **incremental upsert** on a `location_key`-prefixed primary key, so\nre-running accumulates a time series while replacing rows within the same observation or forecast\nwindow. All rows in a configuration share the same tables in the default bucket.\n\n**Authentication** uses a single API key sent as a Bearer token. Create a developer account at\n[developer.accuweather.com](https://developer.accuweather.com), add an app, and copy its API key.\n\n**Limitations:** AccuWeather exposes no server-side incremental cursor, so each run re-polls the\ncurrent snapshot. The public trial tier is limited to 500 requests/day.","licenseUrl":"https://github.com/keboola/component-ex-accuweather/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-ex-accuweather/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-ex-accuweather","requiredMemory":null,"processTimeout":null,"features":[],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"AccuWeather Extractor","required":["#api_key"],"properties":{"units":{"enum":["metric","imperial"],"type":"string","title":"Units","default":"metric","options":{"enum_titles":["Metric","Imperial"]},"description":"Measurement system for forecast values.","propertyOrder":30},"#api_key":{"type":"string","title":"API Key","format":"password","options":{"tooltip":"Create a developer account at developer.accuweather.com, add an app, and copy its API key. The key is sent as a Bearer token on every request."},"description":"Your AccuWeather developer API key. Create one at the <a href='https://developer.accuweather.com' target='_blank'>AccuWeather developer portal</a>.","propertyOrder":10},"language":{"type":"string","title":"Language","default":"en-us","options":{"tooltip":"AccuWeather language tag, e.g. en-us, es, fr, de. Defaults to en-us."},"description":"Language for text fields such as weather phrases.","propertyOrder":40},"test_connection":{"type":"button","format":"test-connection","propertyOrder":20}}},"configurationRowSchema":{"type":"object","title":"Location","required":["location_type"],"properties":{"datasets":{"type":"object","title":"Datasets","properties":{"indices":{"type":"boolean","title":"Lifestyle Indices","format":"checkbox","default":false,"description":"Daily lifestyle indices for the location.","propertyOrder":90},"daily_range":{"enum":[1,5,10,15],"type":"integer","title":"Daily Forecast Range","default":5,"options":{"enum_titles":["1 day","5 days","10 days","15 days"],"dependencies":{"daily_forecast":true}},"description":"Number of forecast days to request.","propertyOrder":40},"indices_ids":{"type":"array","items":{"enum":[-15,-14,-13,-12,-11,-10,-3,-2,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52],"type":"integer","options":{"enum_titles":["UV Index (-15)","Tree Pollen (-14)","Ragweed Pollen (-13)","Mold (-12)","Grass Pollen (-11)","Air Quality Index (-10)","Flight Delays (-3)","Indoor Activity Forecast (-2)","Running Forecast (1)","Jogging Forecast (2)","Hiking Forecast (3)","Bicycling Forecast (4)","Golf Weather Forecast (5)","Tennis Forecast (6)","Skateboarding Forecast (7)","Outdoor Concert Forecast (8)","Kite Flying Forecast (9)","Beach & Pool Forecast (10)","Sailing Forecast (11)","Stargazing Forecast (12)","Fishing Forecast (13)","Construction Forecast (14)","Ski Weather Forecast (15)","Healthy Heart Fitness Forecast (16)","Mosquito Activity Forecast (17)","Dust & Dander Forecast (18)","Snow Days Forecast (19)","Hunting Forecast (20)","Arthritis Pain Forecast (21)","Arthritis Pain Forecast (22)","Asthma Forecast (23)","Outdoor Barbecue (24)","Common Cold Forecast (25)","Flu Forecast (26)","Migraine Headache Forecast (27)","Lawn Mowing Forecast (28)","Outdoor Activity Forecast (29)","Sinus Headache Forecast (30)","Flying Travel Index (31)","Morning School Bus Forecast (35)","Home Energy Efficiency Forecast (36)","Fuel Economy Forecast (37)","Composting Forecast (38)","Shopping Forecast (39)","Driving Travel Index (40)","Thirst Forecast, brought to you by Country Time (41)","Hair Frizz Forecast (42)","Dog Walking Comfort Forecast (43)","COPD Forecast (44)","Indoor Pest Activity Forecast (45)","Outdoor Pest Activity Forecast (46)","AccuLumen Brightness Index™ Forecast (47)","Dry Skin Forecast (48)","Makeup and Skincare Forecast (49)","Clothes Drying Forecast (50)","Carwashing Forecast (51)","Climbing Forecast (52)"]}},"title":"Indices Filter","format":"select","options":{"tooltip":"Restricts the indices output to the selected AccuWeather indices. Leave empty to keep every index.","dependencies":{"indices":true}},"description":"Optional. Leave empty to output all indices, or pick specific ones to keep.","uniqueItems":true,"propertyOrder":110},"hourly_range":{"enum":[1,12,24,72,120],"type":"integer","title":"Hourly Forecast Range","default":12,"options":{"enum_titles":["1 hour","12 hours","24 hours","72 hours","120 hours"],"dependencies":{"hourly_forecast":true}},"description":"Number of forecast hours to request.","propertyOrder":70},"indices_range":{"enum":[1,5,10,15],"type":"integer","title":"Indices Range","default":5,"options":{"enum_titles":["1 day","5 days","10 days","15 days"],"dependencies":{"indices":true}},"description":"Number of days of indices to request.","propertyOrder":100},"daily_forecast":{"type":"boolean","title":"Daily Forecast","format":"checkbox","default":false,"description":"Multi-day daily forecast for the location.","propertyOrder":30},"hourly_forecast":{"type":"boolean","title":"Hourly Forecast","format":"checkbox","default":false,"description":"Multi-hour hourly forecast for the location.","propertyOrder":60},"current_conditions":{"type":"boolean","title":"Current Conditions","format":"checkbox","default":true,"description":"Latest observed conditions for the location.","propertyOrder":10},"daily_forecast_details":{"type":"boolean","title":"Daily Forecast – Include Full Details","format":"checkbox","default":false,"options":{"tooltip":"Adds extra columns to the daily forecast table: realfeel_temperature_min/max, hours_of_sun, day/night wind speed and direction, day/night thunderstorm and rain probability, uv_index and air_quality_category.","dependencies":{"daily_forecast":true}},"description":"Fetch the extended detail fields for the daily forecast.","propertyOrder":50},"hourly_forecast_details":{"type":"boolean","title":"Hourly Forecast – Include Full Details","format":"checkbox","default":false,"options":{"tooltip":"Adds extra columns to the hourly forecast table: realfeel_temperature, wind_speed and wind_direction, relative_humidity, dew_point, uv_index, visibility, cloud_cover, precipitation_type and rain amount.","dependencies":{"hourly_forecast":true}},"description":"Fetch the extended detail fields for the hourly forecast.","propertyOrder":80},"current_conditions_details":{"type":"boolean","title":"Current Conditions – Include Full Details","format":"checkbox","default":false,"options":{"tooltip":"Adds extra columns to the current conditions table: realfeel_temperature, relative_humidity, wind_speed, uv_index, visibility, cloud_cover and pressure.","dependencies":{"current_conditions":true}},"description":"Fetch the extended detail fields for current conditions.","propertyOrder":20}},"description":"Which weather datasets to pull for this location.","propertyOrder":70},"latitude":{"type":"number","title":"Latitude","options":{"dependencies":{"location_type":"geoposition"}},"description":"Latitude in decimal degrees.","propertyOrder":40},"longitude":{"type":"number","title":"Longitude","options":{"dependencies":{"location_type":"geoposition"}},"description":"Longitude in decimal degrees.","propertyOrder":50},"location_key":{"enum":[],"type":"string","title":"Confirmed Location Key","format":"select","options":{"async":{"label":"Find & confirm location","action":"search_locations"},"tooltip":"Click Find & confirm location to search using the query above and pick a match, or paste a known AccuWeather location key here.","creatable":true,"dependencies":{"location_type":"search"}},"description":"You must confirm the location here — use Find & confirm location to search and pick the match, or paste a known AccuWeather location key.","propertyOrder":25},"location_type":{"enum":["search","geoposition"],"type":"string","title":"Location Type","default":"search","options":{"enum_titles":["Search","Geo"]},"description":"How this location is identified.","propertyOrder":10},"location_search":{"type":"string","title":"Search","options":{"tooltip":"Type a city name (e.g. Prague) or a postal/ZIP code (e.g. 110 00, 10001). Then use Find & confirm location to look up and pick the matching AccuWeather location key.","dependencies":{"location_type":"search"}},"description":"City name or postal code to search for.","propertyOrder":20}}},"createConfigurationRowSchema":null,"configurationDescription":"### Authentication\n\nEnter your AccuWeather **API Key** and use **Test Connection** to verify it. Optionally set the\nmeasurement **Units** (metric/imperial), the **Language** for text fields, and whether to\n**Include Details**.\n\n### Locations\n\nAdd one configuration **row per location**. For each row choose a **Location Type**: **Search** or\n**Geo**. In Search mode, type a city name or a postal code into the single search box, then use\n**Find & confirm location** to look up the AccuWeather location key and pick the exact match. In Geo\nmode, enter latitude and longitude.\n\nThen pick the **Datasets** to pull (current conditions, daily forecast, hourly forecast) and, where\napplicable, the forecast **range** (days or hours).","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["search_locations","testConnection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-accuweather","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-accuweather","name":"developer-portal-v2/keboola.ex-accuweather","tag":"0.1.0","options":{},"digest":"sha256:edf7825da45314e0fdb99d76364fa9c736ba42ca0a61c43c5ca9ce4dcf0a3d71"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-accuweather/32/1783620102060.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-accuweather/64/1783620102060.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-accuweather/128/1783620102060.png"}},{"id":"kds-team.ex-activecampaign","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":32,"name":"ActiveCampaign","type":"extractor","shortDescription":"Extracts contacts, accounts, deals, campaigns, messages, and automations from ActiveCampaign.","longDescription":"This component uses the ActiveCampaign API v3 to import the following data from ActiveCampaign:\n\n**Contacts**\n\n**Accounts**\n\n**Deals**\n\n**Campaigns**\n\n**Messages**\n\n**Automations**\n\nTo configure this extractor, you need to have a working ActiveCampaign **account**, and\n**API token**.\n\nData is always imported as full load due to the fact that record states may be changing over time.","licenseUrl":"https://github.com/keboola/kbc-ui-templates/blob/master/resources/kds-team.ex-activecampaign/templates/LICENSE","documentationUrl":"https://github.com/keboola/kbc-ui-templates/blob/main/resources/kds-team.ex-activecampaign/templates/README.md","sourceCodeUrl":"https://github.com/keboola/generic-extractor","requiredMemory":null,"processTimeout":43200,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Advertisement"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericTemplatesUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["config"],"properties":{"config":{"type":"object","title":"Authorization","required":["#apiKey","accountName","incrementalOutput","updated_since"],"properties":{"#apiKey":{"type":"string","title":"API Token","format":"password","required":true,"minLength":10,"propertyOrder":1},"accountName":{"type":"string","title":"Account Name","required":true,"minLength":4,"description":"Provide Account name from your Base URL of ActiveCampaign API - ex. https://ACCOUNT_NAME.api-us1.com/api/3/","propertyOrder":2},"updated_since":{"type":"string","title":"Updated since","default":"","description":"Fetch only records updated since this date. Date in YYYY-MM-DD format or a string i.e. -1 day, -2 days, -1 month, yesterday, etc. If left empty, all records are downloaded. Note that this will affect only some supported enpoints such as Contacts and Deals.","propertyOrder":400},"incrementalOutput":{"enum":[false,true],"type":"boolean","title":"Load type","default":false,"options":{"enum_titles":["Full Load","Incremental Update"]},"description":"If set to Incremental update, the result tables will be updated based on primary key. Full load overwrites the destination table each time. NOTE: If you wish to remove deleted records, this needs to be set to Full load and the Updated since attribute empty.","propertyOrder":365}}}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"1) All data from listed endpoints\n\n2) Only unsubscribed users","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":32,"uri":"docker/kds-team.ex-activecampaign","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/ex-generic-v2","name":"developer-portal-v2/ex-generic-v2","tag":"latest","options":{},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-activecampaign/32/1674037011588.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-activecampaign/64/1674037011588.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-activecampaign/128/1674037011588.png"}},{"id":"keboola.ex-acumatica","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":795,"name":"Acumatica","type":"extractor","shortDescription":"Extracts data from Acumatica ERP.","longDescription":"This Keboola extractor component connects to Acumatica ERP systems and extracts data from endpoints set up as configuration rows via the REST API.\n\nKey features:\n- Extract from any Acumatica REST API endpoint (Customer, SalesOrder, Invoice, etc.)\n- Full OData support ($expand, $filter, $select)\n- Automatic pagination for large datasets\n- Session-based authentication with automatic cookie management\n- Nested JSON to flat CSV conversion\n- Configurable API versions\n- Incremental loading support\n- Built-in retry logic for reliability\n\nThe component handles all authentication, pagination, and data transformation automatically, delivering clean CSV tables ready for analysis in Keboola Storage.","licenseUrl":"https://github.com/keboola/component-acumatica/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-acumatica/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-acumatica","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":true,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-authorization","appInfo.experimental"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Acumatica Extractor Configuration","required":["acumatica_url","endpoints"],"properties":{"endpoints":{"type":"array","items":{"type":"object","title":"Endpoint Configuration","required":["tenant_version","endpoint"],"properties":{"expand":{"type":"string","title":"Expand","default":"","description":"Related entities to expand (e.g., MainContact, Details)","propertyOrder":4},"select":{"type":"string","title":"Select","default":"","description":"OData select expression to choose specific fields","propertyOrder":6},"enabled":{"type":"boolean","title":"Enabled","format":"checkbox","default":true,"description":"Enable or disable extraction for this endpoint","propertyOrder":1},"endpoint":{"enum":[],"type":"string","title":"Endpoint Name","options":{"async":{"label":"Load Endpoints","action":"listEndpoints","watchFor":["tenant_version"]}},"description":"Acumatica entity endpoint (e.g., Customer, SalesOrder, Invoice)","propertyOrder":3},"filter_expr":{"type":"string","title":"Filter","default":"","description":"OData filter expression to filter records","propertyOrder":5},"primary_keys":{"enum":[],"type":"array","items":{"type":"string"},"title":"Primary Keys","format":"select","options":{"tags":true,"async":{"label":"Get Columns","action":"getOutputColumns","watchFor":["tenant_version","endpoint"]},"creatable":true},"description":"Select primary key columns for incremental loads. Use the 'Get Columns' button to load available columns from the endpoint schema.","uniqueItems":true,"propertyOrder":7},"tenant_version":{"enum":[],"type":"string","title":"Tenant / Version","options":{"async":{"label":"Load Tenants & Versions","action":"listTenantVersions"}},"description":"Acumatica tenant and API version in format: tenant/version (e.g., Default/25.200.001)","propertyOrder":2}}},"title":"Endpoints","description":"List of endpoints to extract","propertyOrder":3},"page_size":{"type":"integer","title":"Page Size","default":2500,"minimum":1,"description":"Number of records to fetch per API request","propertyOrder":2},"acknowledge":{"type":"boolean","title":"I understand I need to contact support to set up this component","format":"checkbox","description":"Due to OAuth implementation limitations, we currently need to help each new client set up the authorization. This needs to be done only ONCE","propertyOrder":0},"destination":{"type":"object","title":"Destination","required":["load_type"],"properties":{"load_type":{"enum":["full_load","incremental_load"],"type":"string","title":"Load Type","format":"select","default":"full_load","options":{"enum_titles":["Full Load","Incremental Load"]},"description":"If Full load is used, the destination tables will be overwritten every run. If incremental load is used, data will be upserted into the destination tables. Tables with a primary key will have rows updated, tables without a primary key will have rows appended.","propertyOrder":1}},"propertyOrder":4},"acumatica_url":{"type":"string","title":"Acumatica URL","format":"uri","description":"Full URL to your Acumatica instance (e.g., https://your-instance.acumatica.com)","propertyOrder":1}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["getOutputColumns","listEndpoints","listTenantVersions","loadFieldMapping"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-acumatica","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-acumatica","name":"developer-portal-v2/keboola.ex-acumatica","tag":"0.1.3","options":{},"digest":"sha256:027f46dc30d53a6d04a9f671d77e7431e53e2a9bfba7a8c2cb61f539fc941286"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-acumatica/32/1764724651015.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-acumatica/64/1764724651015.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-acumatica/128/1764724651015.png"}},{"id":"keboola.wr-acumatica","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":30,"name":"Acumatica","type":"writer","shortDescription":"Acumatica ERP Writer — upsert records from Keboola tables into Acumatica via REST API.","longDescription":"# Acumatica Writer\n\nWrites data from Keboola Storage tables into Acumatica ERP via the Acumatica REST API.\n\n## How it works\n\nEach configured table maps a Keboola input CSV to an Acumatica entity endpoint. Records are upserted using the Acumatica REST API PUT operation — existing records are updated, new records are created, identified by their natural key fields.\n\n## Authentication\n\nUses the same OAuth 2.0 or username/password authentication as the extractor.\n\n## Field format\n\nCSV column values are sent as plain strings. Acumatica's API accepts these and converts them to the appropriate field types automatically.","licenseUrl":"https://github.com/keboola/component-acumatica/blob/main/LICENSE.md","documentationUrl":null,"sourceCodeUrl":"https://github.com/keboola/component-acumatica","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"out","forwardToken":true,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-oneTableInput","genericDockerUI-authorization","appInfo.experimental"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Acumatica Writer Configuration","required":["acumatica_url","tenant_version","endpoint","table_name"],"properties":{"endpoint":{"enum":[],"type":"string","title":"Endpoint Name","options":{"async":{"label":"Load Endpoints","action":"listEndpoints","watchFor":["tenant_version"]}},"description":"Acumatica entity endpoint to write into (e.g., Customer, SalesOrder)","propertyOrder":3},"_metadata_":{"type":"object","options":{"hidden":true},"properties":{"api_fields":{"type":"array"}},"propertyOrder":8},"table_name":{"enum":[],"type":"string","title":"Input Table","options":{"async":{"label":"Load Input Tables","action":"listInputTables"}},"description":"Select the input table to read from","propertyOrder":4},"load_mapping":{"type":"button","title":"Load Field Mapping","format":"sync-action","options":{"async":{"cache":false,"label":"Load Field Mapping","action":"loadFieldMapping","autoload":["endpoint","table_name"]}},"propertyOrder":6},"acumatica_url":{"type":"string","title":"Acumatica URL","format":"uri","description":"Full URL to your Acumatica instance (e.g., https://your-instance.acumatica.com)","propertyOrder":1},"field_mapping":{"type":"array","items":{"type":"object","required":["source_column","destination_field"],"properties":{"source_column":{"type":"string","title":"Source Column","options":{"readOnly":true}},"destination_field":{"type":"string","title":"Destination Field","watch":{"api_fields":"_metadata_.api_fields"},"format":"select","options":{"tags":true},"enumSource":[{"title":"{{item.label}}","value":"{{item.field_name}}","source":"api_fields"}]}}},"title":"Field Mapping","format":"table","description":"Map input table columns to Acumatica API fields. Use 'Load Field Mapping' to auto-populate.","propertyOrder":5},"tenant_version":{"enum":[],"type":"string","title":"Tenant / Version","options":{"async":{"label":"Load Tenants & Versions","action":"listTenantVersions"}},"description":"Acumatica tenant and API version (e.g., Default/25.200.001)","propertyOrder":2},"continue_on_error":{"type":"boolean","title":"Continue on Error","format":"checkbox","default":false,"description":"If enabled, failed records are written to an output table instead of stopping the job","propertyOrder":7}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"Configure the Acumatica connection and the list of tables to write.\n\nEach table entry maps an input CSV file to an Acumatica entity endpoint. Records are upserted via PUT — Acumatica identifies existing records by their natural key fields included in the CSV.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["getOutputColumns","listEndpoints","listInputTables","listTenantVersions","loadFieldMapping"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.wr-acumatica","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-acumatica","name":"developer-portal-v2/keboola.wr-acumatica","tag":"0.1.3","options":{},"digest":"sha256:c5ef229abc7890cba4595e801366c4955d95b513c27b4421a7edb82e81bedc89"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-acumatica/32/1773657799840.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-acumatica/64/1773657799840.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-acumatica/128/1773657799840.png"}},{"id":"kds-team.processor-add-columns","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":72,"name":"Add Columns","type":"processor","shortDescription":"Add columns to input tables, with static values generated by specified function.","longDescription":"\nTakes all tables in `in/tables/` and adds columns with specified value. Result is moved to `out/tables/`\n\nFiles folder `in/files` is moved unchanged.\n\nManifest files are respected and transferred / modified as well.\n\n**Table of contents:**\n\n[TOC]\n\n## Configuration\n\nlist columns that will be added to all tables on the input. Column value is constant provided by specified function.\n\n- **name** - name of the result column\n- **function** - function (or set of nested functions) to construct the result value\n\n\n### Sample configuration\n\n```json\n{\n  \"definition\": {\n    \"component\": \"kds-team.processor-add-columns\"\n  },\n  \"parameters\": {\n    \"columns\": [\n      {\n        \"name\": \"timestamp_custom\",\n        \"function\": {\n          \"function\": \"string_to_date\",\n          \"args\": [\n            \"yesterday\",\n            \"%Y-%m-%d\"\n          ]\n        }\n      }\n    ]\n  }\n}\n\n```","licenseUrl":"https://github.com/keboola/kds-team.processor-add-columns/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/kds-team.processor-add-columns/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/kds-team.processor-add-columns","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":[],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.processor-add-columns","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.processor-add-columns","name":"developer-portal-v2/kds-team.processor-add-columns","tag":"1.2.1","options":{},"digest":"sha256:b262e09c7f533ff66a3e7555af81398c9eca11dd8940f516f15c27c10883eab1"},"publishingStatus":"public","icon":{"32":null,"64":null,"128":null}},{"id":"keboola.processor-add-filename-column","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":59,"name":"Add Filename Column","type":"processor","shortDescription":"Append a new column with the filename","longDescription":"Append a new column with the filename.","licenseUrl":"https://github.com/keboola/processor-add-filename-column/blob/master/LICENSE","documentationUrl":"https://github.com/keboola/processor-add-filename-column/blob/master/README.md#usage","sourceCodeUrl":"https://github.com/keboola/processor-add-filename-column","requiredMemory":"1024m","processTimeout":21600,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":[],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":null,"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.processor-add-filename-column","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.processor-add-filename-column","name":"developer-portal-v2/keboola.processor-add-filename-column","tag":"v3.4.0","options":{"region":"us-east-1"},"digest":"sha256:7786d6846de64faf8994bb375ce7764efe8fe7836c20f64e1a5170a8dd635d5c"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.processor-add-filename-column/32/1674036571182.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.processor-add-filename-column/64/1674036571182.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.processor-add-filename-column/128/1674036571182.png"}},{"id":"keboola.processor-add-row-number-column","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":34,"name":"Add Row Number Column","type":"processor","shortDescription":"Append a new column with the row number","longDescription":"Append a new column with the row number.","licenseUrl":"https://github.com/keboola/processor-add-row-number-column/blob/master/LICENSE","documentationUrl":"https://github.com/keboola/processor-add-row-number-column/blob/master/README.md#usage","sourceCodeUrl":"https://github.com/keboola/processor-add-row-number-column","requiredMemory":null,"processTimeout":10800,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":[],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":null,"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.processor-add-row-number-column","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.processor-add-row-number-column","name":"developer-portal-v2/keboola.processor-add-row-number-column","tag":"2.3.0","options":{"region":"us-east-1"},"digest":"sha256:7466ba5fe2b22823f98e33508fa6ede5be096af592c4c2b91f8942d0d1083749"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.processor-add-row-number-column/32/1674036593204.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.processor-add-row-number-column/64/1674036593204.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.processor-add-row-number-column/128/1674036593204.png"}},{"id":"revolt-bi.ex-adform","vendor":{"id":"revolt-bi","name":"Revolt BI","address":"Pobřežní 249/46,\nPraha 8-Karlín,\n186 00","email":"support@revolt.bi","type":"other"},"version":252,"name":"Adform (DMP)","type":"extractor","shortDescription":"Adform Data Management Platform, the go-to choice for universal data collection and trusted audiences.","longDescription":"Adform is advertising technology company. This component allows you to extract: \n\n1. Usage (Revenue and Impressions) Reports (`/v2/dmp/reports/datausage`)\n2. Audience reports (`/v2/dmp/reports/audience`)\n3. Overall billing report for data Provider(`/v2/dmp/reports/billing/overall`, list of proviers acquired from `/v1/dmp/dataproviders`)\n\nSegment / Audience reports:\n4. Audience information for specific segment (`/v2/dmp/segments/{segmentId}/audience/comparison`)\n5. Audience dynamics information for specific segmen(`/v1/dmp/segments/{segmentId}/audience/dynamics`)\n6. Audience totals information for specific segment(`/v1/dmp/segments/{segmentId}/audience/totals`)\n\nUsing below 2 reports for filtering:\n- (`/v1/dmp/categories/{categoryId}/segments`)\n- (`/v1/dmp/dataconsumers/{dataConsumerId}/segments`)\n\nAnd for your account lists of: \n- Data Providers \n- Agencies\n- Advertisers\n- Categories\n- Data Consumers\n- Segments\n\n### User input\n1. Adform login credentials \n2. Period\n3. Filtering details if needed (by segment,  category, data consumer)\n\n### Output\nData output overwrites the original table in Storage and are saved to tables:\n1. `advertisers_by_PID`: list of advertisers by your Provider Id (PID)\n2. `agencies`\n4. `audience_by_date`\n5. `categories_by_PID`: list of categories for your Provider Id (PID)\n6. `dataconsumers_by_PID`: list of data consumers for your Provider Id (PID)\n7. `dataproviders`\n8. `datausage`\n9. `overall`\n10. `segments_by_CID`: list of segments by Category Id (CID)\n\nand if specific Segment filtered then as well:\n11. `comparison_by_SID`: segment stats for specific segment and segments with top audiences in same category\n12. `dynamics_by_SID`: the audience dynamics information for specific segment\n13. `totals_by_SID`: the audience totals information for specific segment\n\nDetails of table structure below. \n#### `datausage_*` \n-  Date\n-  Agency Id\n-  AdvertiserId\n-  CampaignId\n-  OrderId\n-  LineItemId\n-  DataProviderId\n-  SegmentsGroupId\n-  SegmentIds_1, SegmentIds_2, ........\n - Impressions\n-  Contract Id\n - Revenue\n - RevenueInAdvertiserCurrency\n - Adform_Gross_Revenue\n - DataProviderRevenue\n - DataProviderRevenueInAdvertiserCurrency\n - Owner_Net_Revenue_EUR\n - AdformRevenue\n - Adform_Net_Revenue_EUR\n - AdformRevenueInAdvertiserCurrency\n - Audience_Id\n - Audience\n - Category_Id\n - Category\n\n#### ` audience_by_date`  \n- Date\n- Audience_ID\n- Audience_Category\n- Audience_Name\n- UID_s_Total\n- UID_s_Delta\n- OptOuts\n- OptIns\n- byProviderId\n\n\n","licenseUrl":"https://github.com/TerezaLic/adform/blob/master/LICENSE","documentationUrl":"https://github.com/TerezaLic/adform/blob/master/README_KBC.md","sourceCodeUrl":null,"requiredMemory":"512m","processTimeout":null,"features":["container-root-user"],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"out","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Analytics","Advertisement"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{"compauth_url":"https://authorization.revolt.bi","compauth_user_token":"99sG5vMeRR9ZYPwcNMYB0KbVlrcTPd8f9MAT-mjFjQZ5jNepPmM78K8bxeufGp-F","compauth_license_token":"E8i0CM_HJfyAoAZ6C3A-5WL2KauuL1tOqyjINwQf2MKUUiEUW4I8BUhiP8Q_dYE9","compauth_tokens_in_image":true},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"AdForm DMP extractor","required":["user","#password","from","filtry"],"properties":{"from":{"type":"string","title":"Days past","default":"1","minLength":1,"description":"Define number of days - past","propertyOrder":3000},"user":{"type":"string","title":"AdForm user account","propertyOrder":1000},"filtry":{"type":"object","title":"Filter configuration","required":["filter","id","text"],"properties":{"id":{"type":"string","title":"ID number for selected filtering","default":"(All)","description":"Insert single ID, eg. 1073399","propertyOrder":5666},"text":{"type":"string","title":"Text string for selected filtering","default":"(All)","description":"Filter ID names containing insterted text","propertyOrder":5999},"filter":{"enum":["category","data consumers","segment/audience"],"type":"string","title":"Filter according to:","propertyOrder":5333}},"propertyOrder":5000},"#password":{"type":"string","title":"AdForm password","format":"password","propertyOrder":2000}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/revolt-bi.ex-adform","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/revolt-bi.ex-adform","name":"developer-portal-v2/revolt-bi.ex-adform","tag":"1.0.0","options":{},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/revolt-bi.ex-adform/32/1576594151103.png","64":"https://ui.keboola-assets.com/developer-portal/icons/revolt-bi.ex-adform/64/1576594151103.png","128":"https://ui.keboola-assets.com/developer-portal/icons/revolt-bi.ex-adform/128/115.png"}},{"id":"ex-adform-masterdata","vendor":{"id":"esnerda","name":"David Ešner","address":"CZ","email":"esnerda@gmail.com","type":"other"},"version":44,"name":"AdForm (MasterData)","type":"extractor","shortDescription":"Extractor for AdForm MasterData service.","longDescription":null,"licenseUrl":"https://github.com/davidesner/keboola-adform-masterdata-extractor/blob/master/LICENSE.md","documentationUrl":"https://github.com/davidesner/keboola-adform-masterdata-extractor/blob/master/README_KBC.md","sourceCodeUrl":null,"requiredMemory":"1024m","processTimeout":7200,"features":["container-root-user"],"encryption":true,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Analytics","Advertisement"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-processors"],"imageParameters":{},"stackParameters":{},"testConfiguration":{},"configurationSchema":{"type":"object","title":"AdForm Masterdata extractor config","$schema":"http://json-schema.org/draft-04/schema#","required":["user","#pass","mdListId","daysInterval","dateTo","bucket","prefixes","metaFiles","srcCharset","hoursInterval","alwaysGetMeta","override_pkey"],"properties":{"user":{"type":"string","title":"User Name","description":"AdForm user name","propertyOrder":1000},"#pass":{"type":"string","title":"Password","format":"password","description":"AdForm password","propertyOrder":2000},"bucket":{"type":"string","title":"Output bucket ID","description":"Result Storage bucket ID path. e.g. in.c-adform-masterdata","propertyOrder":3500},"dateTo":{"type":"string","title":"Date To","description":"[Optional] Top boundary of the date interval. If not specified, current date is considered. Format: dd-mm-yyyy hh:mm [UTC]","propertyOrder":4800},"mdListId":{"type":"string","title":"Setup ID","description":"Your unique Master Data setup identificator","propertyOrder":3000},"prefixes":{"type":"array","items":{"enum":["Click","Impression","Trackingpoint","Event"],"type":"string","default":["Click","Impression","Trackingpoint","Event"],"options":{"enum_titles":["Click","Impression","Trackingpoint","Event"]}},"title":"Datasets","format":"checkbox","description":"List of required Masterdata datasets","uniqueItems":true,"propertyOrder":5000},"metaFiles":{"type":"array","items":{"enum":["zip-codes","trackingpoints","tags","screensizes","placements-activities","parties","orderstatuses","operatingsystems","medias","languages","inventorysources","iabcategories","geolocations","events","devices","deals","daily-costs","costs","clients","clickdetails-paidkeywords","campaigns","browsers","banners-adgroups"],"type":"string","default":["zip-codes","trackingpoints","tags","screensizes","placements-activities","parties","orderstatuses","operatingsystems","medias","languages","inventorysources","iabcategories","geolocations","events","devices","deals","daily-costs","costs","clients","clickdetails-paidkeywords","campaigns","browsers","banners-adgroups"],"options":{"enum_titles":["zip-codes","trackingpoints","tags","screensizes","placements-activities","parties","orderstatuses","operatingsystems","medias","languages","inventorysources","iabcategories","geolocations","events","devices","deals","daily-costs","costs","clients","clickdetails-paidkeywords","campaigns","browsers","banners-adgroups"]}},"title":"Metadata","format":"checkbox","description":"List of required Masterdata metadata datasets","uniqueItems":true,"propertyOrder":6000},"srcCharset":{"enum":["IBM00858","IBM437","IBM775","IBM850","IBM852","IBM855","IBM857","IBM862","IBM866","ISO-8859-1","ISO-8859-2","ISO-8859-4","ISO-8859-5","ISO-8859-7","ISO-8859-9","ISO-8859-13","ISO-8859-15","KOI8-R","KOI8-U","US-ASCII","UTF-8","UTF-16","UTF-16BE","UTF-16LE","UTF-32","UTF-32BE","UTF-32LE","x-UTF-32BE-BOM","x-UTF-32LE-BOM","windows-1250","windows-1251","windows-1252","windows-1253","windows-1254","windows-1257","Not available","x-IBM737","x-IBM874","x-UTF-16LE-BOM"],"type":"string","title":"File charset","default":"UTF-8","description":"Determines the datasets file charset. By default UTF-8, however it may vary in some cases. If specified incorrectly, the import to Storage will fail.","propertyOrder":5250},"daysInterval":{"type":"number","title":"Days interval","default":1,"description":"Number of days since current date specifiing the interval of retrieved data.","propertyOrder":4000},"alwaysGetMeta":{"type":"boolean","title":"Always get meta files.","default":true,"description":"If set to true, meta data will be always retrieved. If set to false, the specified `since` interval will be used, i.e. only recently updated metadata will be fetched.","propertyOrder":6500},"hoursInterval":{"type":"number","title":"Hours interval","default":0,"description":"Number of hours since current date specifiing the interval of retrieved data. Combine with `days interval` parameter.","propertyOrder":4200},"override_pkey":{"type":"array","items":{"type":"object","title":"List","format":"grid","required":["dataset","pkey"],"properties":{"pkey":{"type":"array","items":{"type":"string","title":"col name"},"title":"Primary key","propertyOrder":5000},"dataset":{"enum":["Click","Impression","Trackingpoint","Event"],"type":"string","title":"Load type","default":"CLick","propertyOrder":4000}}},"title":"Override primary keys","description":"Set custom primary keys.","propertyOrder":5050}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"**For this application to work, you need:**\n\n - Agency account with permission to access Adform External API (https://api.adform.com/)\n - Master Data service enabled \n  \nOnce the contract is signed Adform will enable Master Data service and send you the credentials. Please note, that accessing External API places additional requirements on your account security and password complexity.\n\nPlease contact Adform support, if you have any questions.\n\n**NOTE:** You can also use WEB UI (https://www.adform.com/masterdata?setup={setupId}), where ```{setupId}``` is your unique Master Data setup identificator, to preview and download files using WEB browser.\nDataset descriptions can be found [here](https://dmp-help.adform.com/documentation/audience-management/available-data/) \n\n## Funcionality\n\nUser may specify datasets to be extracted. There are two types of data tables provided by masterdata. \n\nThe first one provides data usually at hourly intervals and in a period of maximum one week. These tables are then imported incrementally to the specified tables in KBC. Prefixes are defined using the **Datasets** config parameter described below. \n\n**NOTE:** Master data files are always loaded incrementally. \n\nMetadata section contains metadata i.e. campaign names for the fact tables. It changes less often and all historical data is contained in the newly imported table. Therefore, the import of metadata tables is NOT incremental and overwrites the original table in Storage.\n\n\n\n## Configuration\nAdForm masterdata service provides data dumps usually at hourly intervals. This application allows you to retrieve tables of your choice within the specified interval.\n\nConfiguration takes folowing parameters:\n\n - **User** - (REQUIRED) user name (login) of your AdForm MasterData service account\n -  **Password** - (REQUIRED) password of your AdForm MasterData service account\n - **Setup ID** - (REQUIRED) Your unique Master Data setup identificator.\n - **Date To** - (OPTIONAL) time until which you want to retrieve the data, i.e. the upper boundary of the time interval you want to retrieve - data before this time (excluded) will be retrieved. \nThe time has to be specified in the following format: *05-10-2015 21:00* [UTC]. If not specified data until *NOW* [UTC] will be retrieved.\n - **Days interval** - (REQUIRED) time interval within which you want to retrieve the data. Specified in days. For example if the value is 5 and `Date To` is not specified, data dated between today and five days ago will be retrieved.\n - **Hours interval** - (REQUIRED) time interval within which you want to retrieve the data. Specified in hours, it is combined with the `Days Interval` parameter. For example if the value is 6,  `Days Interval` value is 1 and `Date To` is not specified, data dated between today and 1 day and 6 hours ago will be retrieved.\n - **Output bucket** - (REQUIRED) name of the bucket in KBC. e.g. *in.c-main*\n - **Datasets** - (REQUIRED) list of datasets you want to retrieve. e.g. *[Impression, Click, Trackingpoint]* \n - **Metadata** - (OPTIONAL) the list of metadata tables (prefixes) you want to retrieve. e.g. *[geolocations, campaigns]*\n - **File charset** - Specify file encoding of the returned dataset. By default UTF-8, however it may vary in some cases. If specified incorrectly, the import to Storage will fail.\n - **Always get meta files** - (REQUIRED) If set to true, meta data will be always retrieved. If set to false, the specified `since` interval will be used, i.e. only recently updated metadata will be fetched..\n\nFor further information please refer to [component documentation](https://github.com/davidesner/keboola-adform-masterdata-extractor/blob/master/README_KBC.md).","configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":["run"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/ex-adform-masterdata","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/ex-adform-masterdata","name":"developer-portal-v2/ex-adform-masterdata","tag":"1.2.2","options":{},"digest":"sha256:6199ed9e8a9dbb9f72aacb0e35f31922bd05556ec2325b256903c719850a7515"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/ex-adform-masterdata/32/1576594154822.png","64":"https://ui.keboola-assets.com/developer-portal/icons/ex-adform-masterdata/64/1576594154822.png","128":null}},{"id":"kds-team.ex-adform-reports","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":145,"name":"Adform DSP Reports","type":"extractor","shortDescription":"Extracts Adform buy-side campaign reports from the Reporting Stats API.","longDescription":"The display advertising tools allow you to identify, track and engage with your audience across a wide range of channels. \nRetrieve Buy-Side report data from the Reporting Stats API. Reporting Stats API returns report data consisting of statistics derived from the data collected by the Adform tracking code.","licenseUrl":"https://github.com/keboola/component-adform-reports/blob/main/LICENSE.md","documentationUrl":"https://help.keboola.com/components/extractors/marketing-sales/adform-dsp-reports/","sourceCodeUrl":"https://github.com/keboola/component-adform-reports","requiredMemory":"512m","processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Analytics","Advertisement"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Configuration","required":["#api_secret","api_client_id","result_file_name","incremental_output","filter","dimensions","metrics"],"properties":{"filter":{"type":"object","title":"Filter","required":["date_range","client_ids"],"properties":{"client_ids":{"type":"array","items":{"type":"string","title":"Client ID"},"title":"Client IDS","description":"List of Client IDs. If left empty, all are downloaded"},"date_range":{"type":"object","title":"Date","format":"grid","required":["from_date","to_date"],"properties":{"to_date":{"type":"string","title":"To date [including]","default":"today","description":"Date in YYYY-MM-DD format or dateparser string i.e. 5 days ago, 1 month ago, yesterday, etc.","propertyOrder":350},"from_date":{"type":"string","title":"From Date [including]","default":"1 week ago","description":"Date in YYYY-MM-DD format or dateparser string i.e. 5 days ago, 1 month ago, yesterday, etc.","propertyOrder":300}},"description":"Report date range. A maximum date range accessible through API is 397 days (13 months) from today.","propertyOrder":1}},"description":"Report filter","propertyOrder":10},"metrics":{"type":"array","items":{"type":"object","title":"Metric","format":"grid","required":["metric","specs_metadata"],"properties":{"metric":{"enum":["videoCompleteCount","deliveredClicksPercent","deliveredConversionsPercent","deliveredImpressionsPercent","newVisitsPercent","overdeliveredPercent","uniqueClicksPercent","uniqueImpressionsPercent","viewImpressionsPercentIAB","viewImpressionsPercentCustom1","viewImpressionsPercentCustom2","mpAmount","avgBrandExposureDuration","avgEngagementTime","avgExpansionTime","avgFrequency","avgMouseoverTime","avgPageDuration","avgOrderSales","avgVideoPlayTime","avgViewabilityTime","avgVisitDepth","avgVisitDuration","blockedImpressions","blockedImpressionsPercent","booked","bookedClicks","bookedConversions","bookedImpressions","bookedTime","bounceRate","bounces","clicks","clicksToLandingPage","conversions","conversionsAll","conversionsSpecs","cost","costNonView","costPostClick","costView","costBySales","cov","covVisitsPercent","ctrView","ctr","ctrAdjusted","ctrUnique","delivered","deliveredPercent","deliveredClicks","deliveredConversions","deliveredCostPercent","deliveredImpressions","deliveredTime","ecpa","seCPA","ecpc","ecpi","ecpm","ecpmv","ecpp","engagementRate","engagements","engagingImpressions","entrances","events","exits","expansionRate","impressions","measurableImpressions","measurableImpressionsPercent","mouseOverRate","mouseovers","mpPrice","overdelivered","overdeliveredClicks","overdeliveredImpressions","pageviews","pageviewsAll","pageviewsSpecsTemp","roi","rtbBids","rtbWinRate","rtbMediaCost","rtbAdformIncludedFee","rtbRichMediaFee","rtbTradingDeskFee","rtbContextualTargetingCost","rtbBrandSafetyCost","rtbThirdPartyVendorCost","sales","salesAll","salesSpecs","salesByCost","seAvgCPC","seAvgPosition","sysvarBasketSize","sysvarNumeric1","sysvarNumeric2","sysvarProductCount","sysvarProductSales","videoCompletionRate","videoEvents","videoEventsPlayTimePercent","videoStartRate","viewImpressionsIAB","viewImpressionsCustom1","viewImpressionsCustom2","visitors","visits","vtr","dcoProductViews","ctrDco","nonViewableImpressionsIAB","nonViewableImpressionsCustom1","nonViewableImpressionsCustom2","impressionspct","undeterminedImpressions","impressionDistributionNonViewablePctIAB","impressionDistributionNonViewablePctCustom1","impressionDistributionNonViewablePctCustom2","impressionDistributionUndeterminedPct","impressionDistributionViewablePctIAB","impressionDistributionViewablePctCustom1","impressionDistributionViewablePctCustom2","dmpDspDataCost","dmpRotatorsDataCost","impressionscrossdevice","clickscrossdevice","conversionscrossdevice","pageviewscrossdevice","ctrcrossdevice","covcrossdevice","avgFrequencycrossdevice","salescrossdevice","renderedImpressions","videoPlayStartCount","userInitiatedVideoPlayCount","rtbLostBids","rtbLossRate","rtbCrossDeviceCost","eligibleImpressions","measurableRate","bannerClickInteractions","dmpRtbCrossDeviceCost","dmpRtbLookalikeCost"],"type":"string","title":"Metric"},"specs_metadata":{"type":"array","items":{"type":"object","format":"grid","required":["key","value"],"properties":{"key":{"type":"string","title":"Key","format":"string","default":"today","description":"","propertyOrder":350},"value":{"type":"string","title":"Value","format":"string","default":"today","description":"","propertyOrder":360}}},"title":"Specs Metadata","description":"Optional list of specs metadata. Refer to documentation for possible values."}},"propertyOrder":40},"title":"Metrics","maxItems":10,"description":"List of report metrics. Max 10. Note that some combinations of metrics and/or dimensions are not supported.","propertyOrder":30},"dimensions":{"type":"array","items":{"enum":["deviceVendor","deviceModel","adCreativeType","adInteractionType","agencyIDOVK","appName","appID","appStore","banner","bannerAdMessage","bannerAttribute1","bannerAttribute1ID","bannerAttribute2","bannerAttribute3","bannerAttribute4","bannerAttribute5","bannerBackup","bannerClickInteractionCoordinateX","bannerClickInteractionCoordinateY","bannerDomain2Level","bannerDomain3Level","bannerFormat","bannerFormatID","bannerGlobalID","bannerID","bannerMember","bannerSize","bannerType","bannerTypeID","bannerWeight","brandSafetyBlockedCategory","brandSafetyProvider","browser","buyType","buyTypeID","campaign","campaignBillingID","campaignCurrency","campaignEndDate","campaignID","campaignLabel1","campaignLabel10","campaignLabel11","campaignLabel12","campaignLabel13","campaignLabel14","campaignLabel15","campaignLabel16","campaignLabel17","campaignLabel18","campaignLabel19","campaignLabel2","campaignLabel20","campaignLabel3","campaignLabel4","campaignLabel5","campaignLabel6","campaignLabel7","campaignLabel8","campaignLabel9","campaignStartDate","campaignType","city","clickDetail","client","clientID","continent","continentID","cookiesEnabled","country","countryID","date","dateID","dayMonth","dcoProduct","deal","dealID","deviceType","event","flashVersion","frequencyCampaign","frequencyLineItem","hour","industryVertical","languageBrowser","lineItem","lineItemEndDate","lineItemID","lineItemLabel1","lineItemLabel10","lineItemLabel11","lineItemLabel12","lineItemLabel13","lineItemLabel14","lineItemLabel15","lineItemLabel16","lineItemLabel17","lineItemLabel18","lineItemLabel19","lineItemLabel2","lineItemLabel20","lineItemLabel3","lineItemLabel4","lineItemLabel5","lineItemLabel6","lineItemLabel7","lineItemLabel8","lineItemLabel9","lineItemNote","lineItemStartDate","lineItemAdGapID","media","mediaCountry","mediaGlobal","mediaGroup2","mediaGroup3","mediaGroup4","mediaGroup5","mediaID","mediaLineItem","mediaSection","month","monthID","network","networkID","operatingSystem","order","orderID","page","pageID","paidKeyword","reactionTime","referrerType","region","regionID","rtbCategory","rtbDomain","rtbInventorySource","rtbInventorySourceID","rtbParentCategory","rtbAudience","screenResolution","seAccount","seDailyBudget","sendingVariables","sysvar1","sysvar2","sysvar3","sysvar4","sysvar5","sysvar6","sysvar7","sysvarAge","sysvarCountry","sysvarCurrency","sysvarGender","sysvarProduct","sysvarProductGroup","sysvarProductID","tag","tagID","tagUID","viewabilityTime","website","websiteSection","websiteSubsection","week","weekday","weekdayID","year","yearID","yearMonth","yearWeek","zip","dmpDspDataProviderIds","dmpDspDataProvider","dmpDspSegmentIds","dmpDspSegment","dmpDspSegmentSource","dmpRotatorsDataProviderIds","dmpRotatorsDataProvider","dmpRotatorsSegmentIds","dmpRotatorsSegment","dmpRotatorsSegmentSource","crossDeviceDataProvider","connectionType","rtbAdPosition","videoPlayerSize","rtbLossReason","dynamicAd","dynamicAdVersion","dynamicAdSetup","dynamicAdCreativeShell","contractType","partnerID","channelID","environmentType","videoPlacementType","videoPosition"],"type":"string","title":"Dimension"},"title":"Dimensions","maxItems":8,"description":"List of report dimensions. Max 8. Note that some combinations of metrics and/or dimensions are not supported.","propertyOrder":20},"#api_secret":{"type":"string","title":"API client secret","format":"password","propertyOrder":1},"api_client_id":{"type":"string","title":"API client ID","propertyOrder":2},"result_file_name":{"type":"string","title":"Result table name","default":"report-data","description":"Result storage table name","propertyOrder":3},"incremental_output":{"enum":[0,1],"type":"number","title":"Load type","default":1,"options":{"enum_titles":["Full Load","Incremental Update"]},"description":"If set to Incremental update, the result tables will be updated based on primary key consisting of all selected dimensions. Full load overwrites the destination table each time, with no primary keys.","propertyOrder":4}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"**NOTE**: Updating an existing configuration may lead to different result structure which might cause \nStorage import to fail. It is recommended to drop existing tables after changing the report parameters.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":145,"uri":"docker/kds-team.ex-adform-reports","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-adform-reports","name":"developer-portal-v2/kds-team.ex-adform-reports","tag":"1.0.1","options":{},"digest":"sha256:914b1412565f35830c011e28c1fb2df98773c2ac12977ebd8b83079665539366"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-adform-reports/32/1576594169409.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-adform-reports/64/1576594169409.png","128":null}},{"id":"kds-team.ex-airtable","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":628,"name":"Airtable","type":"extractor","shortDescription":"Extracts tables from Airtable bases.","longDescription":"Airtable Data Source allows you to download data from Airtable Bases. It supports custom fields selection and filtering by\nformulas.","licenseUrl":"https://github.com/keboola/component-airtable/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/component-airtable/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/component-airtable","requiredMemory":"512m","processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Airtable Credentials","required":["#api_key"],"properties":{"#api_key":{"type":"string","title":"Personal Access Token (PAT)","format":"password","description":"A valid Airtable PAT token with required read only scopes (`data.records:read`, `schema.bases:read`). Learn more in the <a href=\"https://support.airtable.com/docs/creating-and-using-api-keys-and-access-tokens\">documentation</a<","propertyOrder":20},"test_connection":{"type":"button","format":"test-connection"}}},"configurationRowSchema":{"type":"object","title":"Row configuration","required":["base_id","table_name"],"properties":{"debug":{"type":"boolean","title":"Debug mode","format":"checkbox","default":false,"description":"If enabled, the component will produce more detailed logs","propertyOrder":99},"fields":{"type":"array","items":{"enum":[],"type":"string"},"title":"Fields","format":"select","options":{"async":{"label":"Re-load available columns","action":"list_fields","autoload":["parameters.table_name"]}},"description":"The fields you want to download. You may leave this empty to download all fields. Note: in case of use_view even hidden fields will be retrieved.","uniqueItems":true,"propertyOrder":30},"base_id":{"enum":[],"type":"string","title":"Base ID","format":"select","options":{"async":{"label":"Re-load available base ids","action":"list_bases","autoload":[]}},"description":"The ID of the base you want to extract tables from.","propertyOrder":10},"use_view":{"type":"boolean","title":"Use View","format":"checkbox","default":false,"description":"if checked - extraction is done from the view not the table itself","propertyOrder":24},"view_name":{"enum":[],"type":"string","title":"View name","format":"select","options":{"async":{"label":"Re-load available views","action":"list_views","autoload":["parameters.table_name"]},"dependencies":{"use_view":true}},"description":"The name of the view in Airtable base you want to download.","propertyOrder":25},"table_name":{"enum":[],"type":"string","title":"Table name","format":"select","options":{"async":{"label":"Re-load available tables","action":"list_tables","autoload":["parameters.base_id"]}},"description":"The name of the table in Airtable base you want to download.","propertyOrder":20},"destination":{"type":"object","title":"Destination","required":["incremental_loading"],"properties":{"table_name":{"type":"string","title":"Storage Table Name","description":"Name of the destination table. Source table name will be used if not specified.","propertyOrder":10},"incremental_loading":{"enum":[false,true],"type":"boolean","title":"Load Type","default":false,"options":{"enum_titles":["Full Load","Incremental Load"]},"description":"If Full load is used, the destination table will be overwritten every run. If Incremental Load is used, data will be upserted into the destination table.","propertyOrder":20}},"propertyOrder":70},"sync_options":{"type":"object","title":"Sync Options","properties":{"date_to":{"type":"string","title":"Date to","default":"now","options":{"dependencies":{"sync_mode":"incremental_sync"}},"description":"Date to which data is downloaded. Either date in YYYY-MM-DD format or dateparser string i.e. 5 days ago, 1 month ago, now, etc.","propertyOrder":30},"date_from":{"type":"string","title":"Date From","default":"last run","options":{"dependencies":{"sync_mode":"incremental_sync"}},"description":"Date from which data is downloaded. Either date in YYYY-MM-DD format or dateparser string i.e. 5 days ago, 1 month ago, yesterday, etc. You can also set this as last run, which will fetch data from the last run of the component.","propertyOrder":20},"sync_mode":{"enum":["full_sync","incremental_sync"],"type":"string","title":"Sync Mode","default":"full_sync","options":{"enum_titles":["Full Sync","Incremental Sync"]},"required":true,"description":"Full Sync downloads all data from the source every run. Incremental Sync downloads data created or updated in a specified time range by field CREATED_TIME() or LAST_MODIFIED_TIME(), fields are described in <a href='https://support.airtable.com/docs/formula-field-reference'>Airtable - Formula field reference</a>.","propertyOrder":10}},"propertyOrder":40}}},"createConfigurationRowSchema":null,"configurationDescription":"You must know your Airtable API key and ID of the base.\n\n- You can obtain the API key from your [Airtable account overview page](https://airtable.com/account). Since read only access is sufficient, we recommend you create a read only account and provide its API key. For instructions how to do that, see the [this Airtable support article](https://support.airtable.com/hc/en-us/articles/360056249614).\n- To obtain the base ID, open your base API documentation from the [Airtable API documentation list](https://airtable.com/api) and find the base ID in your base's API documentation.\n\nYou must also know the names of the tables in your Airtable base you want to extract. If you want to use filtering or download just a subset of the given table's fields (columns), you also need to provide the filter [formula](https://support.airtable.com/hc/en-us/articles/203255215-Formula-Field-Reference) and/or the names of the fields (columns) you want to download respectively.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["list_bases","list_fields","list_tables","list_views","testConnection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.ex-airtable","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-airtable","name":"developer-portal-v2/kds-team.ex-airtable","tag":"1.2.0","options":{},"digest":"sha256:f0a0b5d41834232158eefa5e48123fb0dc1749291c3008aa219fa360d67a72cd"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-airtable/32/1657100780964.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-airtable/64/1657100780964.png","128":null}},{"id":"keboola.wr-airtable","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":495,"name":"Airtable","type":"writer","shortDescription":"Writes tables to Airtable bases.","longDescription":"The component allows writing datasets from KBC Storage into Airtable, a cloud platform that combines the simplicity of spreadsheets with the power of relational databases. Airtable is widely used for project management, content planning, CRM, and workflow automation thanks to its intuitive interface and flexible data structures. By connecting Keboola with Airtable, this component enables seamless synchronization of structured data into Airtable bases and tables, making it easier for teams to collaborate, visualize, and act on their data within Airtable’s ecosystem.","licenseUrl":"https://github.com/keboola/component-airtable-writer/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/component-airtable-writer/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/component-airtable-writer","requiredMemory":"256m","processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":true,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"easy","category":null,"categories":["Database","CRM"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-simpleTableInput","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Connection","required":["#api_token"],"properties":{"#api_token":{"type":"string","title":"API Token","format":"password","description":"Valid PAT token. Should have data.records:write. Optionally schema.bases:write if adding or editing new tables via component.","propertyOrder":1},"test_connection":{"type":"button","format":"test-connection","propertyOrder":2}}},"configurationRowSchema":{"type":"object","title":"Table configuration","required":["base_id","destination"],"properties":{"debug":{"type":"boolean","title":"Debug mode","format":"checkbox","default":false,"description":"If enabled, the component will produce detailed logs","propertyOrder":5},"base_id":{"enum":[],"type":"string","title":"Base ID","format":"select","options":{"async":{"label":"LOAD BASES","action":"list_bases","autoload":[]}},"description":"The ID of the Airtable base where the table is located.","propertyOrder":1},"_metadata_":{"type":"object","options":{"hidden":true}},"batch_size":{"type":"integer","title":"Batch Size","default":1000,"maximum":10000,"minimum":1,"options":{"dependencies":{"show_advanced_options":true}},"description":"Number of records to process in each batch. Lower values use less memory but may be slower. Adjust based on the width and size of your data.","propertyOrder":5},"destination":{"type":"object","title":"Destination","required":["table_name","columns","load_type"],"properties":{"columns":{"type":"array","items":{"type":"object","title":"Column","required":["source_name","destination_name","dtype"],"properties":{"dtype":{"enum":["barcode","checkbox","currency","date","dateTime","email","multilineText","multipleSelects","number","percent","phoneNumber","rating","richText","singleLineText","singleSelect","url"],"type":"string","title":"Airtable Field Type","default":"singleLineText","propertyOrder":4},"upsert_key":{"type":"boolean","title":"Upsert Key","format":"checkbox","default":false,"propertyOrder":3},"source_name":{"type":"string","title":"Source Column","enumSource":"columns","propertyOrder":1},"destination_name":{"type":"string","title":"Destination Column","propertyOrder":2}}},"title":"Columns","format":"table","description":"⚠️ Writing to calculated columns in Airtable is not supported. Only writable data types are shown. The Load Columns button auto-converts types only for natively typed tables.","propertyOrder":3},"load_type":{"enum":["Append","Full Load","Incremental Load"],"type":"string","title":"Load Type","default":"Append","description":"Full Load: Delete all rows and reload from scratch; Incremental Load: Update existing records using upsert keys; Append: Add new records without checking for duplicates.","propertyOrder":2},"table_name":{"enum":[],"type":"string","title":"Table Name or Table ID","format":"select","options":{"async":{"label":"LOAD TABLES","action":"list_tables","autoload":["parameters.base_id"]},"creatable":true},"description":"The name/id of the table to be created/updated in the specified base.","propertyOrder":1},"load_columns_button":{"type":"button","format":"sync-action","options":{"async":{"cache":false,"label":"LOAD COLUMNS","action":"return_columns_data"}},"description":"Loads columns from storage and attempts to datatype them to Airtable column types.","propertyOrder":4}},"propertyOrder":2},"show_advanced_options":{"type":"boolean","title":"Show Advanced Options","format":"checkbox","default":false,"description":"Enable to configure advanced settings like batch size","propertyOrder":4}}},"createConfigurationRowSchema":null,"configurationDescription":"Configuration description.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["list_bases","list_tables","return_columns_data","testConnection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.wr-airtable","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-airtable","name":"developer-portal-v2/keboola.wr-airtable","tag":"1.0.3","options":{},"digest":"sha256:c5bb3b451f2337c522eea261dadb0e9be35c709eff236742640e40ce8738738b"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-airtable/32/1760696103408.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-airtable/64/1760696103408.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-airtable/128/1760696103408.png"}},{"id":"keboola.ex-db-hive","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":72,"name":"Apache Hive","type":"extractor","shortDescription":"Extracts tables or query results from Apache Hive, with Kerberos or LDAP authentication.","longDescription":"This component imports data from selected tables or results from arbitrary SQL queries from the [Apache Hive](https://hive.apache.org) database. It connects to the database, executes your queries, and stores the results in Keboola Connection Storage.\n\nTo configure this extractor, you need to \n\n- provide database credentials, and \n- have a connection to the database you want to read, preferably [secure](https://help.keboola.com/extractors/database/#connecting-to-database).\n\nIncremental load is optional.\n","licenseUrl":"https://github.com/keboola/db-extractor-hive/blob/master/LICENSE","documentationUrl":"https://github.com/keboola/db-extractor-hive/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/db-extractor-hive","requiredMemory":"512m","processTimeout":10800,"features":["container-root-user","dev-branch-job-blocked","has-simplified-ui"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":true,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Database"],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","$defs":{"credentials":{"type":"object","required":["host","port","user","database"],"properties":{"ssh":{"type":"object","properties":{"keys":{"type":"object","properties":{"public":{"type":"string"},"#private":{"type":"string"}}},"user":{"type":["string","null"]},"enabled":{"type":"boolean"},"sshHost":{"type":["string","null"]},"sshPort":{"type":["string","integer","null"],"default":22},"localPort":{"type":["string","integer"]},"remoteHost":{"type":"string"},"remotePort":{"type":["string","integer"]}}},"ssl":{"type":"object","properties":{"ca":{"type":["string","null"]},"#ca":{"type":["string","null"]},"#key":{"type":["string","null"]},"cert":{"type":["string","null"]},"#cert":{"type":["string","null"]},"cipher":{"type":"string"},"enabled":{"type":"boolean"},"caFileType":{"type":"string"},"verifyServerCert":{"type":"boolean"},"ignoreCertificateCn":{"type":"boolean"}}},"host":{"type":"string"},"port":{"type":["string","integer"]},"user":{"type":"string"},"authType":{"type":"string"},"database":{"type":"string"},"httpPath":{"type":"string"},"kerberos":{"type":"object","properties":{"config":{"type":"string"},"#keytab":{"type":"string"},"#kinitPassword":{"type":"string"},"kinitPrincipal":{"type":"string"},"servicePrincipal":{"type":"string"}}},"#password":{"type":"string"},"connectThrough":{"type":"boolean"},"verboseLogging":{"type":"boolean"},"thriftTransport":{"type":["string","integer"]}}}},"title":"keboola.ex-db-hive — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","required":["db"],"properties":{"db":{"$ref":"#/$defs/credentials"}}},"configurationRowSchema":{"type":"object","title":"keboola.ex-db-hive — Row Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"id":{"type":["string","integer"]},"name":{"type":"string"},"query":{"type":"string"},"table":{"oneOf":[{"type":"string"},{"type":"object","properties":{"schema":{"type":"string"},"tableName":{"type":"string"}}}]},"tables":{"type":"array","options":{"async":{"label":"Re-load tables","action":"getTables"}}},"columns":{"type":"array","items":{"type":"string"}},"enabled":{"type":"boolean"},"primaryKey":{"type":"array","items":{"type":"string"}},"incremental":{"type":"boolean"},"outputTable":{"type":"string"},"advancedMode":{"type":"boolean"},"incrementalFetchingLimit":{"type":"integer"},"incrementalFetchingColumn":{"type":"string"}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":{},"actions":["testConnection","getTables"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":72,"uri":"docker/keboola.ex-db-hive","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-db-hive","name":"developer-portal-v2/keboola.ex-db-hive","tag":"3.1.4","options":{},"digest":"sha256:900228cb100b4feb6103331e37da1ba66c7399f0c400b43f402b16aed9153f06"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-db-hive/32/1674038966063.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-db-hive/64/1674038966063.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-db-hive/128/1674038966063.png"}},{"id":"keboola.wr-db-hive","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":35,"name":"Apache Hive","type":"writer","shortDescription":"Writes data to an Apache Hive database.","longDescription":"Write data to [Apache Hive](https://hive.apache.org) Database","licenseUrl":"https://github.com/keboola/db-writer-hive/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/db-writer-hive/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/db-writer-hive","requiredMemory":null,"processTimeout":43200,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Database"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","$defs":{"credentials":{"type":"object","required":["host","port","user","#password","database"],"properties":{"ssh":{"type":"object","properties":{"keys":{"type":"object","properties":{"public":{"type":"string"},"#private":{"type":"string"}}},"user":{"type":["string","null"]},"enabled":{"type":"boolean"},"sshHost":{"type":["string","null"]},"sshPort":{"type":["string","integer","null"],"default":22},"localPort":{"type":["string","integer"]},"remoteHost":{"type":"string"},"remotePort":{"type":["string","integer"]}}},"ssl":{"type":"object","properties":{"ca":{"type":["string","null"]},"#ca":{"type":["string","null"]},"#key":{"type":["string","null"]},"cert":{"type":["string","null"]},"#cert":{"type":["string","null"]},"cipher":{"type":"string"},"enabled":{"type":"boolean"},"verifyServerCert":{"type":"boolean"},"ignoreCertificateCn":{"type":"boolean"}}},"host":{"type":"string"},"port":{"type":["string","integer"],"default":10000},"user":{"type":"string"},"driver":{"type":"string"},"database":{"type":"string"},"#password":{"type":"string"}}}},"title":"keboola.wr-db-hive — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","required":["db"],"properties":{"db":{"$ref":"#/$defs/credentials"}}},"configurationRowSchema":{"type":"object","title":"keboola.wr-db-hive — Row Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"items":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"size":{"type":["string","integer","null"]},"type":{"type":"string"},"dbName":{"type":"string"},"default":{"type":["string","null"]},"nullable":{"type":"boolean"}}}},"dbName":{"type":"string"},"tables":{"type":"array","options":{"async":{"label":"Re-load tables","action":"getTables"}}},"tableId":{"type":"string"},"primaryKey":{"type":"array","items":{"type":"string"}},"incremental":{"type":"boolean"}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":["testConnection","getTablesInfo"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":35,"uri":"docker/keboola.wr-db-hive","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-db-hive","name":"developer-portal-v2/keboola.wr-db-hive","tag":"v1.4.1","options":{},"digest":"sha256:5cbf640a8480cebadf8dc3af31c8f29ce652905cc049a88f020bf02a0077c45d"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-db-hive/32/1674039029339.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-db-hive/64/1674039029339.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-db-hive/128/1674039029339.png"}},{"id":"apify.apify","vendor":{"id":"apify","name":"Apify Technologies s.r.o.","address":"Apify Technologies s.r.o.\nLucerna Palace\nVodickova 704/36\n110 00 Prague 1\nCzech Republic","email":"integrations@apify.com","type":"other"},"version":93,"name":"Apify","type":"extractor","shortDescription":"Extract structured data from any website using Apify actors.","longDescription":"The Apify extractor enables you to extract structured data from any website. You can find several ready-to-use [actors](https://www.apify.com/docs/actor) in the [Apify Store](https://www.apify.com/store). If you don’t find a specific actor in the store, you can create your own by following the guide in this [web scraping tutorial](https://docs.apify.com/scraping). Apify can also connect you with developers who can create an actor for you. Just fill out an [Apify Marketplace form](https://apify.com/marketplace) and you’ll get offers from developers and can choose the one that’s best for you. To create the extractor, you’ll need your User ID and API token, which you can find on your [Apify Account page](https://my.apify.com/account#/integrations).\n\nNOTE: The structure of the data from the extractor must be consistent across all runs. Also, try to avoid sub-arrays as they would be split into columns and Keboola expects a fixed number of columns. ","licenseUrl":"https://www.apify.com/terms-of-use","documentationUrl":"https://help.apify.com/en/articles/2003234-keboola-integration","sourceCodeUrl":null,"requiredMemory":"512m","processTimeout":43200,"features":["container-root-user"],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["API"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":{"parameters":{"#token":"5dvKh9hQykho9erbfwxNesSCS","userId":"hNNQbYhnwafECWc8f","crawlerId":"Hacker%20News","crawlerSettings":{}}},"configurationSchema":{"type":"object","allOf":[{"if":{"required":["actionType"],"properties":{"actionType":{"const":"runActor"}}},"then":{"required":["actId"]}},{"if":{"required":["actionType"],"properties":{"actionType":{"const":"getActorLastRunDatasetItems"}}},"then":{"required":["actId"]}},{"if":{"required":["actionType"],"properties":{"actionType":{"const":"runTask"}}},"then":{"required":["actorTaskId"]}},{"if":{"required":["actionType"],"properties":{"actionType":{"const":"getTaskLastRunDatasetItems"}}},"then":{"required":["actorTaskId"]}},{"if":{"required":["actionType"],"properties":{"actionType":{"const":"getDatasetItems"}}},"then":{"required":["datasetId"]}}],"title":"Apify — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","examples":[{"actId":"LpVuK3Zozwuipa5bp","build":"latest","input":{},"#token":"<your Apify API token>","memory":"2048","actionType":"runActor"},{"actId":"LpVuK3Zozwuipa5bp","build":"latest","input":{"startUrls":[{"url":"https://example.com"}],"maxRequestsPerCrawl":100},"#token":"<your Apify API token>","fields":["url","title"],"memory":"4096","actionType":"runActor"},{"actId":"LpVuK3Zozwuipa5bp","#token":"<your Apify API token>","actionType":"getActorLastRunDatasetItems"},{"build":"latest","input":{"maxRequestsPerCrawl":50},"#token":"<your Apify API token>","memory":"2048","actionType":"runTask","actorTaskId":"7ZqLd2WkYtBn4xRvC"},{"#token":"<your Apify API token>","actionType":"getTaskLastRunDatasetItems","actorTaskId":"7ZqLd2WkYtBn4xRvC"},{"#token":"<your Apify API token>","datasetId":"iWLY5yTJ2tBKNtP2p","actionType":"getDatasetItems"}],"required":["#token","actionType"],"properties":{"actId":{"type":"string","title":"Actor ID","description":"Apify Actor id, e.g. `LpVuK3Zozwuipa5bp`. This is the opaque object id as returned by the `listActors` sync action, not the `username~actor-name` slug. Required for `runActor` and `getActorLastRunDatasetItems`.","propertyOrder":3},"build":{"type":"string","title":"Build","description":"Tag or number of the build to run, e.g. `latest` or `1.2.34`. The effective default is `latest`. Applies to `runActor` and `runTask`.","propertyOrder":8},"input":{"type":"object","title":"Actor Input / Input Overrides","description":"For `runActor`, the Actor input object — its shape is defined by the Actor itself and is not constrained here. For `runTask`, a partial object overriding the Task's stored input; only the keys provided are overridden. Defaults to an empty object.","propertyOrder":6,"additionalProperties":true},"#token":{"type":"string","title":"API Token","format":"password","description":"Apify API token. Generate a token for Keboola in the Apify console under Account → Integrations.","propertyOrder":1},"fields":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}],"title":"Output fields","description":"Subset of fields to pick from the dataset items. Written by the UI as an array of field names; a comma-separated string is also accepted. Omit to keep all fields.","propertyOrder":9},"memory":{"type":["string","integer"],"title":"Memory","description":"Memory allocated for the run, in MB. Written by the UI as a string; the effective default is `2048`. Applies to `runActor` and `runTask`.","propertyOrder":7},"datasetId":{"type":"string","title":"Dataset","description":"Id or name of the dataset to fetch items from, e.g. `iWLY5yTJ2tBKNtP2p`. Required for `getDatasetItems`.","propertyOrder":5},"actionType":{"enum":["runActor","getActorLastRunDatasetItems","runTask","getTaskLastRunDatasetItems","getDatasetItems"],"type":"string","title":"Action","options":{"enum_titles":["Run Actor","Retrieve dataset items from the last Actor run","Run Task","Retrieve items from the last Task run","Retrieve items from a dataset"]},"description":"What the component does. `runActor` runs an Actor and retrieves its dataset items on success. `getActorLastRunDatasetItems` reads the dataset of an Actor's most recent run without running it. `runTask` / `getTaskLastRunDatasetItems` are the Task equivalents. `getDatasetItems` reads an existing dataset directly.","propertyOrder":2},"actorTaskId":{"type":"string","title":"Task ID","description":"Apify Actor Task id, e.g. `7ZqLd2WkYtBn4xRvC`. This is the opaque object id as returned by the `listTasks` sync action, not the `username~task-name` slug. Required for `runTask` and `getTaskLastRunDatasetItems`.","propertyOrder":4},"crawlerSettings":{"type":"object","title":"Crawler Settings (legacy)","description":"Deprecated. Settings for the retired Apify Crawler. Present only in older configurations and not written by the current UI; do not add it to new configurations.","propertyOrder":10,"additionalProperties":true}},"description":"Runs an Apify Actor or Task, or reads items from an Apify dataset, and stores the resulting dataset items as a table. Which fields apply depends on `actionType`. An optional input table is configured through the configuration's storage input mapping (not here); its key-value store id and record key are passed to the Actor/Task as `inputTableRecord`."},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["listActors","listTasks"],"fees":false,"limits":"Depends on your Apify plan, see https://www.apify.com/pricing.","logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/apify.apify","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/apify.apify","name":"developer-portal-v2/apify.apify","tag":"v4.3.0","options":{},"digest":"sha256:2521e84f3b04a7a902a62541063800b04ff284dd170aaed921eb935a7dc6f0ee"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/apify.apify/32/1753864164528.png","64":"https://ui.keboola-assets.com/developer-portal/icons/apify.apify/64/1753864164528.png","128":"https://ui.keboola-assets.com/developer-portal/icons/apify.apify/128/1753864164528.png"}},{"id":"kds-team.ex-appsflyer","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":117,"name":"AppsFlyer","type":"extractor","shortDescription":"Extracts report data from AppsFlyer.","longDescription":"to fill in","licenseUrl":"https://github.com/keboola/component-appsflyer/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-appsflyer/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-appsflyer","requiredMemory":"1024m","processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Analytics","Advertisement"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"AppsFlyer","required":["#api_token","reports"],"properties":{"reports":{"type":"array","items":{"type":"object","title":"Report","properties":{"name":{"type":"string","title":"Report Name","propertyOrder":10},"to_dt":{"type":"string","title":"End Date","default":"-1 days","description":"API querying date range is limited to past 3 months","propertyOrder":40},"reattr":{"type":"boolean","title":"Attribute to retargeting campaigns","default":false,"propertyOrder":60},"from_dt":{"type":"string","title":"Start Date","default":"-1 days","description":"API querying date range is limited to past 3 months","propertyOrder":30},"Primary Key":{"type":"string","title":"Primary Key","default":"","propertyOrder":50},"date_intervals":{"type":"integer","title":"Report intervals","default":2,"minimum":1,"description":"Intervals in which reports are fetched","propertyOrder":90},"Application IDs":{"type":"string","title":"Applications IDs","default":"","propertyOrder":20},"filter_by_event_name":{"type":"array","items":{"type":"object","title":"Filter by event name","properties":{"event_name":{"type":"string","title":"Event Names"}}},"title":"Filter by event name","format":"table","maxItems":1,"description":"To filter multiple events use a comma separated list of events.","propertyOrder":70},"filter_by_media_source":{"type":"array","items":{"type":"object","title":"Filter by media source","properties":{"category":{"type":"string"},"media_source":{"type":"string"}}},"title":"Filter by media source","format":"table","maxItems":1,"description":"Configuration Details: https://support.appsflyer.com/hc/en-us/articles/207034346-Pulling-reports-using-Pull-API#raw-data-filter-by-media-source","propertyOrder":80}}},"title":"Reports","default":[{"name":"1","to_dt":"today","reattr":false,"from_dt":"7 days ago","Primary Key":"AppsFlyer_ID, Install_Time, Media_Source, Campaign, Event_Name, Event_Time, Event_Value","date_intervals":1,"Application IDs":"","filter_by_event_name":[],"filter_by_media_source":[]}],"description":"Report name - report name (i.e. installs_report) ||| Applications IDs - IDs of the apps you want to retrieve the report for ||| Start & End Date - you can use either absolute dates YYYY-MM-DD or relative dates like < today, yesterday, 7 days ago etc. > For complete list of dates the component accepts please refer here: https://github.com/scrapinghub/dateparser","uniqueItems":true,"propertyOrder":10},"#api_token":{"type":"string","title":"API token v1","format":"password","options":{"dependencies":{"token_type":"v1"}},"description":"User's external API Authorization Key, account owner API Key should be used","propertyOrder":2},"token_type":{"enum":["v1","v2"],"type":"string","title":"API token type","description":"API token V1 will be deprecated on <a href=https://support.appsflyer.com/hc/en-us/articles/12399683708305-Bulletin-API-token-changes>May 31, 2023</a>","propertyOrder":1},"#api_token_v2":{"type":"string","title":"API token v2","format":"password","options":{"dependencies":{"token_type":"v2"}},"description":"User's external API V2 Authorization Key, account owner API V2 Key should be used","propertyOrder":3}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"###Note\nThe component fetches the report on a daily basis to overcome the [API limits](https://support.appsflyer.com/hc/en-us/articles/207034366-Report-generation-quotas-rate-limitations-).","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":117,"uri":"docker/kds-team.ex-appsflyer","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-appsflyer","name":"developer-portal-v2/kds-team.ex-appsflyer","tag":"1.0.2","options":{},"digest":"sha256:a0b97485d20db348ad4068abc844ec79a0a49b36db4e8505f51a48c43883286e"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-appsflyer/32/2.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-appsflyer/64/2.png","128":null}},{"id":"kds-team.ex-ares-opendata","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":80,"name":"ARES Opendata","type":"extractor","shortDescription":"Retrieve data about economic entities registered in CZ ARES registry opendata dataset.","longDescription":"Simple extractor downloading the full snapshot of CZ ARES registry [opendata dataset](http://wwwinfo.mfcr.cz/ares/ares_opendata.html.cz) . \n\n\n- The dataset is usually updated once a month.\n- Downloads list of changed ICOs since the last dataset update.\n- May be run repeatedly - full dataset is downloaded only when the new version is available. ","licenseUrl":"https://github.com/keboola/component-ares-opendata/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-ares-opendata/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-ares-opendata","requiredMemory":null,"processTimeout":10800,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["API"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"extractor configuration","required":["ares_url"],"properties":{"ares_url":{"type":"string","title":"ARES dataset url","default":"http://wwwinfo.mfcr.cz/ares/ares_vreo_all.tar.gz","description":"This may be used to download older versions of dataset, otherwise the default URL is used.","propertyOrder":100}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"Simple extractor downloading the full snapshot of CZ ARES registry [opendata dataset](http://wwwinfo.mfcr.cz/ares/ares_opendata.html.cz) . \n\n- The dataset is usually updated once a month.\n- Downloads list of changed ICOs since the last dataset update.\n- May be run repeatedly - full dataset is downloaded only when the new version is available. ","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"normal","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":80,"uri":"docker/kds-team.ex-ares-opendata","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-ares-opendata","name":"developer-portal-v2/kds-team.ex-ares-opendata","tag":"1.0.1","options":{},"digest":"sha256:cdbfc4137ba2b3745cbbfcd4e59951378cca0dd6a03dc0d04b340ed2484c15f7"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-ares-opendata/32/1593351387553.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-ares-opendata/64/1593351387553.png","128":null}},{"id":"kds-team.ex-asana-v2","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":394,"name":"Asana","type":"extractor","shortDescription":"Extracts Asana projects, tasks, sections, subtasks, and stories.","longDescription":"This extractor allows users to extract details and status of your projects and tasks from Asana.","licenseUrl":"https://github.com/keboola/component-asana-v2/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-asana-v2/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-asana-v2","requiredMemory":"1024m","processTimeout":86400,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Project Management"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-resetState"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"extractor configuration","required":["#token","incremental_load","endpoints"],"properties":{"#token":{"type":"string","title":"Token","format":"password","propertyOrder":100},"endpoints":{"type":"object","title":"Endpoints","required":["users","users_details","projects","user_defined_projects","archived_projects","projects_sections","projects_sections_tasks","projects_tasks","projects_tasks_details","projects_tasks_subtasks","projects_tasks_stories"],"properties":{"users":{"type":"boolean","title":"Users","format":"checkbox","propertyOrder":100},"projects":{"type":"boolean","title":"Projects","format":"checkbox","propertyOrder":200},"users_details":{"type":"boolean","title":"Users Details","format":"checkbox","propertyOrder":150},"projects_tasks":{"type":"boolean","title":"Project Tasks","format":"checkbox","propertyOrder":400},"archived_projects":{"type":"boolean","title":"Archived Projects","format":"checkbox","propertyOrder":250},"projects_sections":{"type":"boolean","title":"Project Sections","format":"checkbox","propertyOrder":300},"user_defined_projects":{"type":"boolean","title":"Projects - User Defined","format":"checkbox","propertyOrder":210},"projects_tasks_details":{"type":"boolean","title":"Project Tasks Details","format":"checkbox","propertyOrder":500},"projects_tasks_stories":{"type":"boolean","title":"Project Tasks Stories","format":"checkbox","propertyOrder":700},"projects_sections_tasks":{"type":"boolean","title":"Project Sections Tasks","format":"checkbox","propertyOrder":350},"projects_tasks_subtasks":{"type":"boolean","title":"Project Tasks Subtasks","format":"checkbox","propertyOrder":600}},"propertyOrder":300},"project_id":{"type":"string","title":"Project IDs","options":{"dependencies":{"endpoints.user_defined_projects":true}},"description":"Required when endpoint [Projects - User Defined] is selected. Please enter your values with comma delimiter.","propertyOrder":300},"load_options":{"type":"object","title":"Load Options","options":{"dependencies":{"incremental_load":true}},"properties":{"date_from":{"type":"string","title":"Date From","default":"last run","description":"Date from which data is downloaded. Either date in YYYY-MM-DD format or dateparser string i.e. 5 days ago, 1 month ago, yesterday, etc. You can also set this as last run, which will fetch data from the last run of the component.","propertyOrder":20}},"propertyOrder":500},"incremental_load":{"type":"boolean","title":"Incremental Load","format":"checkbox","default":false,"propertyOrder":400},"skip_unauthorized":{"type":"boolean","title":"Skip unsuccessful requests","format":"checkbox","default":false,"description":"If set to true, the component will skip objects that could not be retrieved from the API.","propertyOrder":600},"max_requests_per_second":{"type":"number","title":"Maximum number of requests per second for your licence (default 2.5)","default":2.5,"propertyOrder":700},"task_membership_timestamp":{"type":"boolean","title":"Add timestamp column to task membership table","options":{"dependencies":{"endpoints.projects_tasks_details":true}},"description":"Allows you to track changes in task membership over time.","propertyOrder":310}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"## To obtain an API Key ##\n1. Login to [Asana](https://app.asana.com/)\n2. Click on your account icon at the top right corner of the page\n3. Click *My Profile Settings...*.\n4. Click on *Apps* tab.\n5. Click on *Manage Developer Apps*.\n6. Click on *\\+ Create New Personal Access Token*.\n\n## Configuration\n1. Token\n2. Incremental Load\n    - *Enable* : The component will start extraction from the last persisted extraction date and load results into respective tables incrementally.\n    - *Disable* : The component will extract `everything` from the respective endpoint and full load the respones into the respective output tables in Keboola storage.\n3. Endpoints\n    1. Users\n    2. Users Details\n    3. Projects\n    4. Projects - User Defined\n    5. Archived Projects\n    6. Project Sections\n    7. Project Tasks\n    8. Project Tasks Details\n    9. Project Tasks Subtasks\n    10. Project Tasks Stories\n\n    **Notes: If `Projects - User Defined` is selected, the component will NOT fetch data from `Projects` endpoint and `Archived Projects` endpoint.\n\n4. Project IDs\n    - Required when endpoint `Projects - User Defined` is selected\n    - Please enter your values with comma delimiter.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":394,"uri":"docker/kds-team.ex-asana-v2","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-asana-v2","name":"developer-portal-v2/kds-team.ex-asana-v2","tag":"1.2.7","options":{},"digest":"sha256:fb0dbb9c013bf29629d527b50f916a14193860a7cedcbb117f8a3c83e7ecd4b8"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-asana-v2/32/1674037055598.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-asana-v2/64/1674037055598.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-asana-v2/128/1674037055598.png"}},{"id":"medio.app-attribution","vendor":{"id":"medio","name":"Taste","address":"Hybernská 1271/32\n110 00 Prague 1\nCzech republic","email":"keboola@taste.cz","type":"other"},"version":29,"name":"Attribution","type":"application","shortDescription":"Attribution modelling tool for online marketing data. Created with love by Taste Medio.","longDescription":"Supports lots of attribution models and their settings, multiple goals and vectors, custom weights and lookback windows. Created with love by Taste Medio.\n\n# Data preparation\nBefore you start with application (APP) is necessary prepare data for attribution testing to following format. Every line in the table represents a single interaction – a website visit, mobile app launch, banner impression, ad click-through, reading an email, helpdesk phone call, offline shop visit. All interactions which are considered as “conversions” like newsletter sign-up or completed purchase must have assigned value. Types of interaction are distinguished in “hitType” column no other columns are considered due to different channel grouping settings for each client.\nPlease be sure that you also mark “direct” traffic as “direct” in this column.\n\n## Input data\nTable of all events for attribution:\n* **visitor_id** - unique identificator for each visitor\n* **date_time** - event timestamp \n* **hitType** - event or “action” type  \n* **campaign** - traffic campaign \n* **source** - traffic source\n* **medium** - traffic medium\n* **revenue** - conversion value\n* **weight** - empty column % weight of interaction calculated by MAT\n* **revenue_attribution_value** - empty column, interaction value calculated by MAT\nBold columns \n\n\n# Configuration\n## INPUT and OUTPUT mapping\nInput and output can be the same table in storage.\nOutput file is “out/tables/results.csv”.\n\n## JSON config\nIt support various attribution models:\n### Basic settings\nFollowing list of keys and key values are used for using MAT and predefined attribution models:\n* **sortInputFile** - optional key for sorting output file\n* **visitorColumn** - mandatory settings of unique identifier column in input data\n* **timestampColumn** - mandatory settings of timestamp in input data\n* **interactionType** - mandatory identification of hit types in input data\n* **task** - define specific run of attribution model\n* **attributionModel** - mandatory key determining type of attribution **allowed values**: (firstClick, lastClick, linear, lastNonDirect, linear, linearNonDirect, positionBased, positionBasedNonDirect)\n\t\t\n* **inputValueColumn** - mandatory key for conversion value column definition \n* **outputWeightColumn** - key for column to save percentage share of each row at conversion\n* **outputValueColumn** - key for hit revenue share column\n```\n{  \n   \"sortInputFile\":true,\n   \"visitorColumn\":\"visitor_id\",\n   \"timestampColumn\":\"date_time\",\n   \"interactionType\":\"hitType\",\n   \"tasks\":[  \n      {  \n         \"attributionModel\":\"linear\",\n         \"inputValueColumn\":\"revenue\",\n         \"outputWeightColumn\":\"weight\",\n         \"outputValueColumn\":\"revenue_attribution_value\"\n      }\n   ]\n}\n```\nBy running this code you will get sorted output of your data calculated by linear attribution. Attribution paths will be sorted by user and time in ascending order.\n### Additional task keys\n* **startDate** - can be used for attribution calculation in specific time frame\n* **endDate** - specific time frame can be limited also from top\n* **lookbackWindow** - allows you create lookback window for “startDate”\n* **shares** - key array for customization of maximum share for specific hitTypes\n* **weights** - key array for setting of weight to specific hitTypes\n```\n{\n  \"tasks\": [\n\t{\n  \t\"startDate\": \"2015-01-01\",\n  \t\"endDate\": \"2016-03-13\",\n  \t\"lookbackWindow\": 90,\n  \t\"shares\": {\n    \t\"conversion\": 0\n  \t},\n  \t\"weights\": {\n    \t\"view\": 0\n  \t},\n  ]\n}\n```\n\n","licenseUrl":"https://github.com/tastecz/keboola-components/blob/master/attribution/license","documentationUrl":"https://github.com/tastecz/keboola-components/tree/master/attribution","sourceCodeUrl":null,"requiredMemory":"5120m","processTimeout":7200,"features":["container-root-user","dev-branch-configuration-unsafe"],"encryption":true,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput","genericDockerUI-tableOutput","appInfo.experimental"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":null,"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{"tasks":[{"endDate":"2016-03-13","startDate":"2015-12-25","lookbackWindow":30,"lastInteraction":30,"firstInteraction":20,"inputValueColumn":"revenue","outputValueColumn":"revenue_ushape_value","outputWeightColumn":"revenue_ushape_weight"},{"attributionModel":"lastNonDirect","inputValueColumn":"revenue","outputValueColumn":"revenue_last_value","outputWeightColumn":"revenue_last_weight"}],"timezone":"+0100","sortInputFile":true,"visitorColumn":"visitor_id","timestampColumn":"date_time"},"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/medio.app-attribution","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/medio.app-attribution","name":"developer-portal-v2/medio.app-attribution","tag":"latest","options":{},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/medio.app-attribution/32/5.png","64":"https://ui.keboola-assets.com/developer-portal/icons/medio.app-attribution/64/5.png","128":null}},{"id":"kds-team.processor-avro2csv","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":77,"name":"Avro2CSV","type":"processor","shortDescription":"Converts Avro files to CSV.","longDescription":"# Avro2CSV processor\n\nThe avro2csv processor allows for conversion of binary AVRO files to flat files. \n\n[Avro](https://avro.apache.org/) is a row-oriented data serialization framework develop by Apache and allows for storing arbitrarily complex schemas. Conversion of such complex schemas to flat files may not be arbitrary and that's why the extractor also supports a `raw_mode`, where the schema is converted to a new-line delimited JSON, stored in a csv.\n\n**The processor currently supports only avro files with attached schema.**\n\nThe complete sample configuration can be found the [component repository](https://bitbucket.org/kds_consulting_team/kds-team.processor-avro2csv/src/master/component_config/sample-config/).","licenseUrl":"https://bitbucket.org/kds_consulting_team/kds-team.processor-avro2csv/src/master/LICENSE.md","documentationUrl":"https://bitbucket.org/kds_consulting_team/kds-team.processor-avro2csv/src/master/README.md","sourceCodeUrl":"https://bitbucket.org/kds_consulting_team/kds-team.processor-avro2csv/src/master/","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":[],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"The complete sample configuration can be found the [component repository](https://bitbucket.org/kds_consulting_team/kds-team.processor-avro2csv/src/master/component_config/sample-config/).\n\nThe processor processes all files in `/data/in/files` folder, which match specified extension mask and outputs them to `/data/out/files` folder.\n\nThe processor configuration accepts following parameters:\n\n- `raw_mode`\n    - **description:** A boolean value specifying whether the avro should be converted to a csv or a json-like csv. If set to `true`, processor will create a csv and store each row of the avro file as a json inside. If set to `false`, the processor will try flatten structure and produce a valid csv.\n    - **type:** optional\n    - **values:** `true` or `false`\n- `columns`\n    - **description:** Allows to specify columns which should be present in the resulting csv file. If any of the columns is not present in the avro file, it will be automatically added. If the parameter is not specified, schema is automatically determined from matched avro files. **This parameter is ignored, if `raw_mode` is enabled.**\n    - **type:** optional\n    - **values:** an array of columns, e.g. `[\"col1\", \"col2\"]`\n- `extension_mask`\n    - **description:** Allows to specify a mask for extensions, which should be processed. The parameter follows a glob syntax and defaults to `*`, i.e. all files are processed.\n    - **type:** optional\n\n### Sample configurations\n\nProcessing avro files in raw format, where result is a flat file with one json per row of avro file.\n\n```json\n{\n    \"definition\": {\n        \"component\": \"kds-team.processor-avro2csv\"\n    },\n    \"parameters\": {\n        \"raw_mode\": true\n    }\n}\n```\n\nProcessing avro files without any schema enforcement.\n\n```json\n{\n    \"definition\": {\n        \"component\": \"kds-team.processor-avro2csv\"\n    }\n}\n```\n\nProcessing avro files with enforced schema and extension mask for filtering only wanted extensions.\n\n```json\n{\n    \"definition\": {\n        \"component\": \"kds-team.processor-avro2csv\"\n    },\n    \"parameters\": {\n        \"columns\": [\"order_id\", \"order_name\", \"customer_id\"],\n        \"extension_mask\": \"*.avro\"\n    }\n}\n```\n\n### Sample use-case\n\nAn avro file `data.avro0` was download using from Azure Blob storage. The following processors configuration can be used to convert the avro file to a csv (using this processor), move the file to `./tables` folder (using a [processor for moving files](https://components.keboola.com/components/keboola.processor-move-files)) and create a manifest for the table (using [processor for creating manifests](https://components.keboola.com/components/keboola.processor-create-manifest)).\n\n```json\n{\n    \"parameters\": {\n        \"file\": {\n            \"file_name\": \"/data/data.avro0\",\n            \"primary_key\": [],\n            \"incremental\": false,\n            \"storage\": \"data_from_blob\"\n        }\n    },\n    \"processors\": {\n        \"after\": [\n            {\n                \"definition\": {\n                    \"component\": \"kds-team.processor-avro2csv\"\n                }\n            },\n            {\n                \"definition\": {\n                    \"component\": \"keboola.processor-move-files\"\n                },\n                \"parameters\": {\n                    \"direction\": \"tables\",\n                    \"addCsvSuffix\": true,\n                    \"folder\": \"data_from_blob\"\n                }\n            },\n            {\n                \"definition\": {\n                    \"component\": \"keboola.processor-create-manifest\"\n                },\n                \"parameters\": {\n                    \"delimiter\": \",\",\n                    \"enclosure\": \"\\\"\",\n                    \"incremental\": false,\n                    \"primary_key\": [\n                        \"id\"\n                    ]\n                }\n            }\n        ]\n    }\n}\n```","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":77,"uri":"docker/kds-team.processor-avro2csv","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.processor-avro2csv","name":"developer-portal-v2/kds-team.processor-avro2csv","tag":"0.1.3","options":{},"digest":"sha256:8f28cc14c625992d16e21fd82c936b9b3d8ed264c84d37ea99545fbf9d63d756"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.processor-avro2csv/32/1597849187809.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.processor-avro2csv/64/1597849187809.png","128":null}},{"id":"kds-team.ex-aws-cost-and-usage-reports","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":318,"name":"AWS Cost and Usage reports","type":"extractor","shortDescription":"Extracts AWS Cost & Usage Reports from S3.","longDescription":"The AWS Cost & Usage Report itemizes usage at the account or Organization level by product code,\n usage type and operation. These costs can be further organized by enabling Cost Allocation tags and Cost Categories. \nThe AWS Cost & Usage Report is available at an hourly, daily, or monthly level of granularity.\n\nThis extractor downloads AWS CUR reports exported to S3 in CSV format.","licenseUrl":"https://github.com/keboola/component-aws-cost-and-usage-reports/blob/main/LICENSE.md","documentationUrl":"https://help.keboola.com/components/extractors/other/aws-cu-reports/","sourceCodeUrl":"https://github.com/keboola/component-aws-cost-and-usage-reports","requiredMemory":"3072m","processTimeout":18000,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Monitoring"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","appInfo.dataIn","genericDockerUI-resetState"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Configuration","required":["aws_parameters","report_path_prefix","min_date_since","max_date","since_last"],"properties":{"max_date":{"type":"string","title":"Maximum date","default":"now","description":"Max report date to download. Date in YYYY-MM-DD format or dateparser string i.e. 5 days ago, 1 month ago, yesterday, etc. If left empty, all records are downloaded.","propertyOrder":7},"since_last":{"type":"boolean","title":"New files only.","format":"checkbox","default":true,"description":"Download only new reports since last run. The Maximum date parameter is ignored.","propertyOrder":3},"aws_parameters":{"type":"object","title":"AWS config","format":"grid","required":["api_key_id","#api_key_secret","s3_bucket","aws_region"],"properties":{"s3_bucket":{"type":"string","title":"AWS S3 bucket name","description":"An existing S3 bucket name that will be used for lambda function package staging.","propertyOrder":3},"api_key_id":{"type":"string","title":"AWS API Key ID","options":{"grid_columns":"2"},"propertyOrder":1},"aws_region":{"enum":["us-east-1","us-west-1","us-west-2","ap-east-1","ap-south-1","ap-northeast-2","ap-southeast-1","ap-southeast-2","ap-northeast-1","ca-central-1","cn-north-1","cn-northwest-1","eu-central-1","eu-west-1","eu-west-2","eu-west-3","eu-north-1","me-south-1","sa-east-1","us-gov-east-1","us-gov-west-1"],"type":"string","title":"AWS Region","default":"eu-central-1","propertyOrder":4},"#api_key_secret":{"type":"string","title":"AWS API Key Secret","format":"password","options":{"grid_columns":"2"},"propertyOrder":2}},"propertyOrder":1},"min_date_since":{"type":"string","title":"Minimum date since","description":"Lowest report date to download. When New files only is checked, this applies only on first run, reset the state to backfill. Date in YYYY-MM-DD format or dateparser string i.e. 5 days ago, 1 month ago, yesterday, etc. If left empty, all records are downloaded.","propertyOrder":5},"loading_options":{"type":"object","title":"Loading Options","format":"grid","required":["incremental_output","pkey"],"properties":{"pkey":{"type":"array","items":{"type":"string","title":"col name"},"title":"Primary key","propertyOrder":5000},"incremental_output":{"enum":[0,1],"type":"number","title":"Load type","default":0,"options":{"enum_titles":["Full Load","Incremental Update"]},"description":"If set to Incremental update, the result tables will be updated based on primary key. Full load overwrites the destination table each time. NOTE: If you wish to remove deleted records, this needs to be set to Full load and the Period from attribute empty.","propertyOrder":450}},"propertyOrder":2},"report_path_prefix":{"type":"string","title":"Report prefix","description":"The prefix as you set up in the AWS CUR config. In S3 bucket this is path to your report. E.g. my-report or some/long/prefix/myreport","propertyOrder":10}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"This extractor downloads AWS CUR reports exported to S3 in CSV format. \n\n### Prerequisite: The AWS setup\n\nFirst, the CUR report exports need to be set up in the AWS account to be exported to S3 bucket \nin the selected granularity and CSV format. Follow this [guide](https://docs.aws.amazon.com/cur/latest/userguide/cur-create.html)\n to set up the export.\n \n Export Setup:\n \n - Setup S3 bucket\n - Set the report prefix\n - Select granularity\n - Select report versioning (overwrite recommended)\n - Choose GZIP compression type\n ","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":318,"uri":"docker/kds-team.ex-aws-cost-and-usage-reports","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-aws-cost-and-usage-reports","name":"developer-portal-v2/kds-team.ex-aws-cost-and-usage-reports","tag":"1.2.2","options":{},"digest":"sha256:c86b34d0eb1fae8491e7bc3dfb36e35e901576d5f28096042c7351b29c692c12"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-aws-cost-and-usage-reports/32/1603903782280.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-aws-cost-and-usage-reports/64/1603903782280.png","128":null}},{"id":"keboola.ex-aws-s3","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":119,"name":"AWS S3","type":"extractor","shortDescription":"Imports files from an AWS S3 bucket.","longDescription":"This component loads a single or multiple CSV files from a single or multiple AWS S3 buckets and stores them in multiple tables in Keboola Connection Storage. \n\nCompared to the Simple AWS S3 extractor, this component offers extensive CSV postprocessing and its UI gives you more flexibility.\n\nTo configure this extractor, you need to have credentials for the S3 files you want to read.\n\nIncremental load is optional.\n\nLimitations: All files stored in [AWS Glacier](https://aws.amazon.com/glacier/) are ignored.\n","licenseUrl":"https://github.com/keboola/aws-s3-extractor/blob/master/LICENSE","documentationUrl":"https://help.keboola.com/extractors/other/aws-s3/","sourceCodeUrl":"https://github.com/keboola/aws-s3-extractor","requiredMemory":"512m","processTimeout":21600,"features":["has-sample-data","has-simplified-ui"],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"medium","category":null,"categories":["File Storage"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-processors"],"imageParameters":{},"stackParameters":{"connection.keboola.com":{"KEBOOLA_USER_AWS_ACCESS_KEY":"AKIASE4SHFLW5N4SJEPM","#KEBOOLA_USER_AWS_SECRET_KEY":"KBC::ComponentSecure::eJwBVAGr/mE6Mjp7aTowO3M6MTI0OiLe9QIA3IWT1gY/zYWWSgFSKlTSmh/tiG7ldB9YTK6BTQtJb4VeDBs7usgkCem4liTLtB/mlhsGofIikQBog/oltAgIB7kiEu5snf2LeXpMfOjVsNVCpB8X6EbM2ICdZ8n4ndSzjhK5Xc+NADBU3c1HPp+uqQx2uvK3/1s3IjtpOjE7czoxODQ6IgECAwB4ZV7Pb+ceXfpJSJC/W88mh+as71hybdnxlvXMw4VnbcAB81CGOotnz+EcTdg0s18knQAAAH4wfAYJKoZIhvcNAQcGoG8wbQIBADBoBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDFgz4MwOQ2ZmZCS6GwIBEIA7O9RcUDegIfQARpEodDsrty8mUuRzdBq0d93DsXbj8O4c1ajMd1evbH62WLE3nTXd9Qd/uIkw3l+i94siO328Go5t"},"connection.eu-central-1.keboola.com":{"KEBOOLA_USER_AWS_ACCESS_KEY":"AKIASE4SHFLW5N4SJEPM","#KEBOOLA_USER_AWS_SECRET_KEY":"KBC::ComponentSecure::eJwBVAGr/mE6Mjp7aTowO3M6MTI0OiLe9QIAZWV/s2Ak7/2zpUqUIubqz5XOzbbkH0pJS74YVmwUhFp9NtAOkX1Hb/RVv9Gzd/x+9ow/kjQLqR5GIK8f9kl85EuaihLRr2czMViV8iHImq3n/OW3y+zqkZxRkO4t8KerxeiL2hQ0eJzDe0s9P4bL7ojJNu2oQLIYIjtpOjE7czoxODQ6IgECAwB4JwpmrwnvHMi+H9vY2cAWNETT0g4aeesZMXO1knqiH84BHnvyJASbTIpAjv/q+yFJ/wAAAH4wfAYJKoZIhvcNAQcGoG8wbQIBADBoBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDHYqgbq0rKglYPabqwIBEIA7AfNtg5ss4+P7NZbp2R6cJQPiPOOMKs6QhGn5CqNVevzKYx35X/MfIWWd/Sk8OdYuKaeIxdnFSu7yzhsiO313aJTd"},"connection.us-east4.gcp.keboola.com":{"KEBOOLA_USER_AWS_ACCESS_KEY":"AKIATALY2ZR5NJRMVE5I","#KEBOOLA_USER_AWS_SECRET_KEY":"KBC::ComponentSecureGKMS::eJwBdwGI/mE6Mjp7aToxO3M6MTI0OiLe9QIAt1/fKAuRT7ECrIvJoDCfQb/RHVyOEMi7fQQmXU9I6va+BNPTJtnkrXvA5AG+f4Vd+b/mjzgx+YfK05+YmH0J8BZ6saThcUkxxlDfNRVxC1LaWYsgMoUX9tnN+KmGOT+lSWjSjS2zeXC7t+/rxP5opgp5ZOlCRDXWIjtpOjA7czoyMTk6IgokAGqzy+DUm2xS4IOjpm+S8UHHhb1b83O1uUjdjop/JLSBKIlCErIBAHTZCBqVDBoT/QvzQvI6OCIPE0S64cv2itJRmpPKhRnRs0QnWeHD/wq1Rf2g8ljyCnW1tKAhi4twK8HQwHsMEbyVMTAYbhQlyBhhed0L2W2Hl6qNktwe0vpbQ+AtsKkvtwkUvxjmaJOGb5AivMt/mFc7AP6hPpD1YaRnsFpEGyMw5ayymhFg3qQaG+17fz/A10ZW1/Kn91RYMv9cnLiFW5DjX0Ki44Cn71vt9vPCWwA4jyI7fU/5twI="},"connection.europe-west3.gcp.keboola.com":{"KEBOOLA_USER_AWS_ACCESS_KEY":"AKIATALY2ZR5CTPD44PX","#KEBOOLA_USER_AWS_SECRET_KEY":"KBC::ComponentSecureGKMS::eJwBdwGI/mE6Mjp7aToxO3M6MTI0OiLe9QIAMZFyhLkeD05yGQfCjvWBYQHwRIJ9qgj763nxlE6TnIJTYBjw02R5CkwSH/TeTeJMmoPLzTBeiWmVEFoGfBjaQoQ8I/a8Lv0eDoQMlsCm7Ccqd21tvT51Gk34pIz/J3l4SKC96iSWmW0qUuy8KKQL170eX4m2VxRfIjtpOjA7czoyMTk6IgokAC4ydSdWkggp0cnZTkKDyNU4xoGW1kAswdzz30Zc3gQr9VCwErIBAL/IwcdOuamKB/1rTIf4D3fHVGP5ELZXU6r9QEKkLQzzOAm0yN0Oshco/vaww4H/GEb/bKAsIIpM6gstf/PJ1X8BAM7MF5/mZNdvnMuLk61NaQNnJ1KLjf8x0+eyk4h6sbLUSxGuOBphtkhn8xBnLUwaER57EItKzIKQBxCorP7voTxeW0+kZwL3eVTTCohAmDLJgX8SWU8PEv1q3rKTat7CaQDihXveJWsSL60RM/AQ5iI7fYy1qoA="},"connection.north-europe.azure.keboola.com":{"KEBOOLA_USER_AWS_ACCESS_KEY":"AKIASE4SHFLW5N4SJEPM","#KEBOOLA_USER_AWS_SECRET_KEY":"KBC::ComponentSecureKV::eJwB4QAe/2E6Mzp7aToyO3M6MTI0OiLe9QIA+HV3blOzR2U+tUE6XkRUovx2O6491NFB/D/p7tjHHImCfS/1lXU3ShY9TBnzB3+zxhxZW9Lv0tV/lmFYWoZtZ3Qd62xb+mGKiOkEKsHghy8mA7X33TwzymP9NSZ2w+yiFOkwlaEECGr/IQ1RUuHssere/Tlm9VpbIjtpOjM7czoyNjoiZ2VuLWVuY3J5cHRvcjYwMmE0NDY2OGY3MzUiO2k6NDtzOjMyOiJiZGJiNDYyZjI4MzQ0ZTc3YTkwZjcyYmU2NWVlOWZiNiI7fXyaWtY="}},"testConfiguration":null,"configurationSchema":{"type":"object","title":"keboola.ex-aws-s3 — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"roleName":{"type":"string"},"accountId":{"type":"string"},"loginType":{"enum":["credentials","role"],"type":"string"},"accessKeyId":{"type":"string"},"#secretAccessKey":{"type":"string"}}},"configurationRowSchema":{"type":"object","title":"keboola.ex-aws-s3 — Row Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"key":{"type":"string"},"limit":{"type":["string","integer"]},"bucket":{"type":"string"},"saveAs":{"type":"string"},"newFilesOnly":{"type":"boolean"},"decodeContent":{"type":"boolean"},"includeSubfolders":{"type":"boolean"}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["getExternalId"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-aws-s3","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-aws-s3","name":"developer-portal-v2/keboola.ex-aws-s3","tag":"v3.21.0","options":{"region":"us-east-1"},"digest":"sha256:564ddf7c283261fbaa9855d356da17cb424473a31170c22bd43a47d2862673f3"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-aws-s3/32/1674039131003.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-aws-s3/64/1674039131003.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-aws-s3/128/1674039131003.png"}},{"id":"keboola.wr-aws-s3","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":61,"name":"AWS S3","type":"writer","shortDescription":"Exports files to an AWS S3 bucket under an optional path prefix.","longDescription":"This component exports CSV files from Keboola Connection Storage to a single AWS S3 bucket.\n\nTo configure this writer, you need to provide credentials for the destination S3 bucket.","licenseUrl":"https://github.com/keboola/aws-s3-writer/blob/master/LICENSE","documentationUrl":"https://help.keboola.com/writers/storage/aws-s3/","sourceCodeUrl":"https://github.com/keboola/aws-s3-writer","requiredMemory":"4098m","processTimeout":14400,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["File Storage"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput","genericDockerUI-processors","genericDockerUI-rows"],"imageParameters":{},"stackParameters":{"connection.keboola.com":{"KEBOOLA_USER_AWS_ACCESS_KEY":"AKIATALY2ZR5IWBKUM5Y","#KEBOOLA_USER_AWS_SECRET_KEY":"KBC::ComponentSecure::eJwBVAGr/mE6Mjp7aTowO3M6MTI0OiLe9QIA+PNeF6lETGV2eztbNFLeLZMg9Esd6zg+84UhAFDVyzB74nOGLbaF5jOWHBnSuxgrS99LZsrxXBdb9lymvIcor1t/2DPObJq27DSdhFzo8ROQRfpxtT+F2yD+zwCGjAy2p3dDlr/epamqpTWklZ4KkK+APCiMf73AIjtpOjE7czoxODQ6IgECAwB4ZV7Pb+ceXfpJSJC/W88mh+as71hybdnxlvXMw4VnbcAB3nyuao28W3aB6eaNJiApowAAAH4wfAYJKoZIhvcNAQcGoG8wbQIBADBoBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDF+7CAnMxrw6ctTgcQIBEIA70qHducChm5pO8QbsYVXlHO5jQ4lLFBg1RxW88wrAcFcQaAHo1wzeduU9nhs3M9mNiLAGJmAxzSiG4nAiO33WR5BG"},"connection.groupon.keboola.cloud":{"KEBOOLA_USER_AWS_ACCESS_KEY":"AKIATALY2ZR5ICM7YVW6","#KEBOOLA_USER_AWS_SECRET_KEY":"KBC::ComponentSecureGKMS::eJwBdwGI/mE6Mjp7aToxO3M6MTI0OiLe9QIAAxUL60HDpssn5OHXis9PHWoT0F8w4x9lrf6UswCnTktS7bqwDFQLbXmUtScHAHEY7eOzl/KuAhXXHyznYUF0RM9QnoKcD5Ecf9kFpsxUvX0fOCw1iyYyTokymSz7T0r78gzmdW1T5InToIifTbhWQmQmGaQU2lLEIjtpOjA7czoyMTk6IgokAJv8bV/0ey1IAytJUBfuKfpTwpDm2NDK4QRZKmrQkD+JpCNXErIBADNb/DQLC2AtktgwJ6z9kk1e5iEXu1PVKcZzx1T9uhjkTKhMmQcDhx0Md0douVAcfjSRzSNvDBF3cn2BY5dDQPejrjc4l1dYwUwLeyTU5SatyOklAntdNU1y7Ny86QV/Uue+uO1GHKzErpj02t68GmEpBpbwbVI4+D7zVl0YeSj4CczRIvYTkeT15k75xa/dPAsKeYdrWi8zECyvYYj1osKuZQkbpwlFvP03UWPvGvffQSI7fT+up/4="},"connection.eu-central-1.keboola.com":{"KEBOOLA_USER_AWS_ACCESS_KEY":"AKIATALY2ZR5NPCFRKNL","#KEBOOLA_USER_AWS_SECRET_KEY":"KBC::ComponentSecure::eJwBVAGr/mE6Mjp7aTowO3M6MTI0OiLe9QIAXOrhQmkfR31R6BL6ayX5ka0Z3mH6MtrAUcT9nJ/MnAQ+yF4tyRe6m7rY7tTFU272LOtYcRScQrwJcSF6EUDl9U80retdoUT3LwfL5YbalN82lIyJU5fMHAF8kgRCFjm+od2xiBzEldwYJcc774UiUoyejdyH98ZQIjtpOjE7czoxODQ6IgECAwB4JwpmrwnvHMi+H9vY2cAWNETT0g4aeesZMXO1knqiH84BsSLDY5JE9MHKFz+pLItBDwAAAH4wfAYJKoZIhvcNAQcGoG8wbQIBADBoBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDDUnInvQ6GiSsFwOXgIBEIA7i+rFXV13H6T0ZXPdYFTWyfJCiapkm9CylVHgOUqZ7yyRJZVFGz4B0lpRDWXSygnLHVXrwRkAEKj6xbUiO317/I4c"},"connection.us-east4.gcp.keboola.com":{"KEBOOLA_USER_AWS_ACCESS_KEY":"AKIATALY2ZR5I4E6RNW5","#KEBOOLA_USER_AWS_SECRET_KEY":"KBC::ComponentSecureGKMS::eJwBdwGI/mE6Mjp7aToxO3M6MTI0OiLe9QIAqqdDBfPTRSr+1RH5YgkTfqemSe1XCMtJri8Rg3uzMdXkbav1RNq0RnbCWsRGna5ccRruvp2267uYF17o1sDye/PWGqeCruPOwRhEPnHzXiQLp+f9Kju6EOFTHT8GfLg/K7vc4GN8PvxRLAicLMS65jEw2DWp/evIIjtpOjA7czoyMTk6IgokAGqzy+B4kVDwGoyWxuDucRW7SYJtjYYdQLmkNTIk3/cWHk29ErIBAHTZCBq/G/Q+8MEjlfhoemFemXvuplIKrbNuI779m6Xc4QFqCrmyXnu5YibuoWlvyEcMukT03L4DFHhoEq9nULE1sdqvu3InAvnaMFTrcmKwR1WLKn12K4GNAya4cwyzZrVMi69im/SGdzKImZbw7p4hNdizB83Ra/0n+UH9tPGCBFBEJznUNKs70ZklhcqyTakOWdiQuSpM0hDfd8wDPSUJ96oKa7vaJvy3wbeRanSNUiI7fVQStQc="},"connection.europe-west3.gcp.keboola.com":{"KEBOOLA_USER_AWS_ACCESS_KEY":"AKIATALY2ZR5JNTOUAPD","#KEBOOLA_USER_AWS_SECRET_KEY":"KBC::ComponentSecureGKMS::eJwBdwGI/mE6Mjp7aToxO3M6MTI0OiLe9QIAd9YKYo4cC/HaVGbwWVJ4KNcawGc0jK66iPL5KhEW1dZY8bwudxNM90vuCLAJAxqdaWThEcqPP9Z3YSVeit9yRY4/IhAr3DAzwTwFUoZKxVyNbwZr8npH4N+IokBdOLkPdVa5JTQI3TppQN26KZRd3SBnNqXPuvoPIjtpOjA7czoyMTk6IgokAC4ydSdKj9EqOGoC/fko3piE55hLhzXNTmZnLJZxiBVLkZsLErIBAL/Iwcf+k2TunLOaVyuXQBNqKnX1aklNYX77gKewYF1LoIFlHESpg/EWNVZMj1u1QGZnC9ZU3XN/c30aiSSyLnd9vGjWQJbi61ecQWy29MECvsBDwdRbU4tv3ZukA2bztdvSSSCvADQ5b3Kjby/oq09Qt/htTROkd4ET6kdx32Nto5zt7CT9UdT9FddjhTwIyfN613IsT8Ac7rLhj+6qQgTWMdUiDo5fhnjT7G3HIXV6PiI7fcJ2q1M="},"connection.north-europe.azure.keboola.com":{"KEBOOLA_USER_AWS_ACCESS_KEY":"AKIATALY2ZR5JS4VWZPO","#KEBOOLA_USER_AWS_SECRET_KEY":"KBC::ComponentSecureKV::eJwB4QAe/2E6Mzp7aToyO3M6MTI0OiLe9QIAi2gQVg26la3ihMx/8p07lFmiRceaXPGos9NsLr9t6VXX+Tn/Ftd7Lx1kHMHGkatcU/oP9WpydIrACMC4OJyLSHPJVj4xQR1yA+x4TcGvIFFpFnGvyHiNFfHS33pGMaNyLdI7ol19ij7dyme8EEjBJ92ihcZnq17BIjtpOjM7czoyNjoiZ2VuLWVuY3J5cHRvcjY1ZDhhOWZkNjU4ZmYiO2k6NDtzOjMyOiIwZjZlNTViNWQxMjM0NzIwYTgwMDM1MmZmMjdlNDI3NCI7fSjOWs0="}},"testConfiguration":null,"configurationSchema":{"type":"object","title":"keboola.wr-aws-s3 — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"bucket":{"type":"string"},"roleName":{"type":"string"},"accountId":{"type":"string"},"loginType":{"enum":["credentials","role"],"type":"string"},"accessKeyId":{"type":"string"},"#secretAccessKey":{"type":"string"}}},"configurationRowSchema":{"type":"object","title":"keboola.wr-aws-s3 — Row Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"prefix":{"type":"string"}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["getExternalId"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.wr-aws-s3","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-aws-s3","name":"developer-portal-v2/keboola.wr-aws-s3","tag":"v2.4.0","options":{"region":"us-east-1"},"digest":"sha256:4ed505b5f27c2fad983bb6ce7ddb7e51292b1e894985a20bf15aa66d0d300258"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-aws-s3/32/1674039148823.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-aws-s3/64/1674039148823.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-aws-s3/128/1674039148823.png"}},{"id":"azor.ex-azor","vendor":{"id":"azor","name":"WEPS, s.r.o.","address":"Nováčkova 401/53\nHusovice\n614 00 Brno-Brno-sever\nCZ","email":"mosat@weps.cz","type":"other"},"version":23,"name":"Azor","type":"extractor","shortDescription":"Azor monitoring is watching product pricing on eshops 24/7. Turn your data into advantage, get to know your bussines comptetion.","longDescription":"Azor is an app for monitoring product prices on eshops. Thanks to our unique and precise algorithm along with years of experince we can provide you daily price monitoring service.","licenseUrl":"https://github.com/DataWeps/keboola_azor/blob/master/LICENSE.md","documentationUrl":"https://github.com/DataWeps/keboola_azor/blob/master/CONFIGURATION.md","sourceCodeUrl":null,"requiredMemory":"512M","processTimeout":3600,"features":["container-root-user"],"encryption":true,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Monitoring"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":1024,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["username","#password","file"],"properties":{"file":{"type":"string","title":"File name","default":"","minLength":1},"username":{"type":"string","title":"Username","default":"","minLength":1},"#password":{"type":"string","title":"Password","format":"password","default":"","minLength":4}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/azor.ex-azor","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/azor.ex-azor","name":"developer-portal-v2/azor.ex-azor","tag":"1.1.3","options":{},"digest":"sha256:f61140df2ed45e5301ebcffcd537b7256d6782065a0d7b7e0dc9a06255465775"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/azor.ex-azor/32/6.png","64":"https://ui.keboola-assets.com/developer-portal/icons/azor.ex-azor/64/6.png","128":null}},{"id":"kds-team.wr-azure-blob","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":209,"name":"Azure Blob Storage","type":"writer","shortDescription":"Exporting any input CSV files into the destinated Blob containers","longDescription":"## Limitations\n\n- Each block has a maximum of 100 MB\n- A block blob can include up to 50,000 blocks\n- Maximum size of a block blib is 4.75 TB\n\n## Token Permission Requirement\n    Allowed services: \n        1. Blob\n    Allowed resource types:\n        1. Service\n        2. Container\n        3. Object\n    Allowed Permissions:\n        1. Read\n        2. List\n\n## Configuration\n\n### Input Mapping Configurations\nThe component will be using the input mapping to determine what files are needed to export into the configured Azure Blob Storage. File name configuration in the inputting namming will be used as a naming convention in the Blob storage container.\n\n    Input Mapping\n        Source      in.c-main.kbc_export\n        File Name   kbc_export.csv\n\nIn the above configuration, File Name (kbc_export.csv) will be used to export into the Blob storage container.\n    \n\n### Component Parameters Configurations\n1. Account Name - `Required`\n    - Azure storage account name\n2. Account Key - `Required`\n    - Azure storage account access key\n    - Account Key can be found:\n      ```\n      [Your Storage Account Overview] > Settings > Access Keys\n      ```\n3. Container Name - `Required`\n    - Azure storage container name\n4. Destination Path\n    - The folder path you wish to export the input files to\n    - Please leave this blank if you wish to export the files into the root folder of the container\n    - If slash '/' is not included at the end of the path configuration, the component will automatically add the '/' for you. Slash represents every folder/directory the component has to pass through in the blob storage directory.\n    - Example: \n        - To export into the [test] folder, enter\n          ```\n          test/\n          ```\n5. Append Date to File\n    - Appending dates into the end of the export file name\n    - [Today]'s date in format (YYYY_MM_dd) will be appended into the exported file\n    - Example:\n        - Input mapping file name:\n          ```\n          test.csv\n          ```\n        - Exported Blob storage name:\n          ```\n          test-2020_01_01.csv\n          ```","licenseUrl":"https://github.com/keboola/component-azure-blob/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-azure-blob/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-azure-blob","requiredMemory":null,"processTimeout":28800,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["File Storage"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput","genericDockerUI-processors","appInfo.dataOut","genericDockerUI-fileInput"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["account_name","container_name","destination_path","append_date_to_file","stage_and_commit"],"properties":{"auth_type":{"enum":["Azure Credentials","Workspace Credentials"],"type":"string","title":"Authorization type","default":"Azure Credentials","propertyOrder":1},"block_size":{"type":"integer","title":"Block Size","default":4194304,"options":{"dependencies":{"stage_and_commit":true}},"description":"Block size for staging (default 4 * 1024 * 1024 B ~ 4 MB)","propertyOrder":80},"#account_key":{"type":"string","title":"Account Key / SAS Token","format":"password","default":"","options":{"dependencies":{"auth_type":"Azure Credentials"}},"description":"Azure Storage Resources Account Key or SAS Token","propertyOrder":20},"account_name":{"type":"string","title":"Account Name","minLength":1,"description":"Azure Storage Resources Account Name","propertyOrder":10},"workspace_id":{"type":"string","title":"Workspace ID","options":{"dependencies":{"auth_type":"Workspace Credentials"}},"description":"ID of the persistent workspace.","propertyOrder":22},"#storage_token":{"type":"string","title":"Storage Token (Workspace)","format":"password","options":{"dependencies":{"auth_type":"Workspace Credentials"}},"description":"Storage token to refresh the Workspace SAS key.","propertyOrder":25},"container_name":{"type":"string","title":"Container Name","minLength":1,"description":"Azure Storage Container Name","propertyOrder":40},"destination_path":{"type":"string","title":"Destination Path","description":"The folder path you want to export the files to. Please refer to component description on how to configure","propertyOrder":50},"stage_and_commit":{"type":"boolean","title":"Upload via blocks staging and subsequent commit","format":"checkbox","default":false,"description":"Staging and committing ensures the whole file will be uploaded before visible in azure","propertyOrder":70},"append_date_to_file":{"type":"boolean","title":"Append Date to File","format":"checkbox","default":false,"description":"Today's date (YYYY_MM_dd) will be appended into the export file","propertyOrder":60}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"### Input Mapping Configurations\nThe component will be using the input mapping to determine what files are needed to export into the configured Azure Blob Storage. File name configuration in the inputting namming will be used as a naming convention in the Blob storage container.\n\n    Input Mapping\n        Source      in.c-main.kbc_export\n        File Name   kbc_export.csv\n\nIn the above configuration, File Name (kbc_export.csv) will be used to export into the Blob storage container.\n    \n\n### Component Parameters Configurations\n1. Account Name - `Required`\n    - Azure storage account name\n2. Account Key / SAS token  - `Required`\n    - Azure storage account access key or SAS token\n    - Account Key can be found:\n      ```\n      [Your Storage Account Overview] > Settings > Access Keys\n      ```\n    - SAS token can be generated from the Azure portal:\n      ```\n      [Your Storage Account Overview] > Your Blob Container > Shared access tokens\n      ```   \n3. Container Name - `Required`\n    - Azure storage container name\n4. Destination Path\n    - The folder path you wish to export the input files to\n    - Please leave this blank if you wish to export the files into the root folder of the container\n    - If slash '/' is not included at the end of the path configuration, the component will automatically add the '/' for you. Slash represents every folder/directory the component has to pass through in the blob storage directory.\n    - Example: \n        - To export into the [test] folder, enter\n          ```\n          test/\n          ```\n5. Append Date to File\n    - Appending dates into the end of the export file name\n    - [Today]'s date in format (YYYY_MM_dd) will be appended into the exported file\n    - Example:\n        - Input mapping file name:\n          ```\n          test.csv\n          ```\n        - Exported Blob storage name:\n          ```\n          test-2020_01_01.csv\n          ```","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":209,"uri":"docker/kds-team.wr-azure-blob","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.wr-azure-blob","name":"developer-portal-v2/kds-team.wr-azure-blob","tag":"1.2.4","options":{},"digest":"sha256:ce8979f33e0c70d41ecd83902736579387ed88d86cbaa675a01ae93a6d68642f"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.wr-azure-blob/32/1623157373971.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.wr-azure-blob/64/1623157373971.png","128":null}},{"id":"kds-team.ex-azure-blob-storage-v2","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":465,"name":"Azure Blob Storage V2","type":"extractor","shortDescription":"Extracting files from Azure Blob Storage Container","longDescription":"This component is to extract a single or multiple files from a single or nested folders from an Azure Blob Container and stores them in Storage.\n\nBy default, the component expects CSV files that are stored in [table storage](https://help.keboola.com/storage/tables/), but it can handle any file type or destination using [processors](https://components.keboola.com/components?type=processor).\n\n## Configurations\n\n1. Account Name - `Required`\n    - Azure Storage Account Name\n2. Account Key - `Required`\n    - Access keys to authentication when making requests to the Azure Storage Account\n    - Access Keys can be found under the **Settings** of the Storage Account\n    - **Settings** >> **Access keys** >> **Key** from key1 or key2\n3. Container Name - `Required`\n    - Azure Storage Container Name","licenseUrl":"https://bitbucket.org/kds_consulting_team/kds-team.ex-azure-blob-storage-v2/src/master/LICENSE.md","documentationUrl":"https://bitbucket.org/kds_consulting_team/kds-team.ex-azure-blob-storage-v2/src/master/README.md","sourceCodeUrl":"https://bitbucket.org/kds_consulting_team/kds-team.ex-azure-blob-storage-v2/src/master/src/","requiredMemory":"1536m","processTimeout":21600,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["File Storage"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-resetState","appInfo.dataIn"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"kds-team.ex-azure-blob-storage-v2 — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","required":["account_name","#account_key","container_name"],"properties":{"file":{"type":"object","properties":{"storage":{"type":"string"},"file_name":{"type":"string"},"incremental":{"type":"boolean"},"primary_key":{"type":"array","items":{"type":"string"}},"add_timestamp":{"type":"boolean"},"new_files_only":{"type":"boolean"}}},"path":{"type":"string"},"debug":{"type":"boolean"},"#account_key":{"type":"string"},"account_name":{"type":"string"},"container_name":{"type":"string"}}},"configurationRowSchema":{"type":"object","title":"kds-team.ex-azure-blob-storage-v2 — Row Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"file":{"type":"object","properties":{"storage":{"type":"string"},"file_name":{"type":"string"},"incremental":{"type":"boolean"},"primary_key":{"type":"array","items":{"type":"string"}},"add_timestamp":{"type":"boolean"},"new_files_only":{"type":"boolean"}}},"path":{"type":"string"},"debug":{"type":"boolean"},"#account_key":{"type":"string"},"account_name":{"type":"string"},"container_name":{"type":"string"}}},"createConfigurationRowSchema":null,"configurationDescription":"1. Account Name - `Required`\n    - Azure Storage Account Name\n2. Account Key - `Required`\n    - Access keys to authentication when making requests to the Azure Storage Account\n    - Access Keys can be found under the **Settings** of the Storage Account\n    - **Settings** >> **Access keys** >> **Key** from key1 or key2\n3. Container Name - `Required`\n    - Azure Storage Container Name","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":465,"uri":"docker/kds-team.ex-azure-blob-storage-v2","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-azure-blob-storage-v2","name":"developer-portal-v2/kds-team.ex-azure-blob-storage-v2","tag":"1.4.0","options":{},"digest":"sha256:44ae987b4ae3ddc37eb5292b6863d4eed8d8f1a58954e51ee739de88839dab09"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-azure-blob-storage-v2/32/1623157379774.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-azure-blob-storage-v2/64/1623157379774.png","128":null}},{"id":"keboola.ex-azure-cost-management","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":38,"name":"Azure Cost Management OAuth","type":"extractor","shortDescription":"Extracts cost and usage data from Azure Cost Management using OAuth.","longDescription":"This component allows you to extract cost and usage date of the Azure Subscription, using the [Azure Cost Management API](https://docs.microsoft.com/en-us/rest/api/cost-management/).","licenseUrl":"https://github.com/keboola/ex-azure-cost-management/blob/master/LICENSE.md","documentationUrl":"https://help.keboola.com/components/extractors/other/azure-cost/","sourceCodeUrl":"https://github.com/keboola/ex-azure-cost-management","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Monitoring"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-authorization"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["subscriptionId"],"properties":{"tenantId":{"type":"string","title":"Tenant ID","default":"","description":"ID of the Azure AD Tenant (optional). If specified, uses tenant-specific OAuth endpoint instead of the multitenant 'common' endpoint.","propertyOrder":2},"subscriptionId":{"type":"string","title":"Subscription ID","default":"","minLength":1,"description":"ID of the Azure subscription.","propertyOrder":1}}},"configurationRowSchema":{"type":"object","title":"Parameters","required":["export"],"properties":{"export":{"type":"object","title":"Export","required":["destination","type","aggregation","granularity","timeDimension","groupingDimensions"],"properties":{"type":{"enum":["ActualCost","AmortizedCost","Usage"],"type":"string","links":[{"rel":"See Export Type API Documentation.","href":"https://docs.microsoft.com/en-us/rest/api/cost-management/query/usage#exporttype"}],"title":"Type","default":"ActualCost","description":" ","propertyOrder":2},"aggregation":{"enum":["Cost","PreTaxCost","CostUSD","PreTaxCostUSD","UsageQuantity"],"type":"string","links":[{"rel":"See Query Aggregation API documentation.","href":"https://docs.microsoft.com/en-us/rest/api/cost-management/query/usage#queryaggregation"}],"title":"Aggregation Column","default":"Cost","description":" ","propertyOrder":3},"destination":{"type":"string","title":"Destination Table","default":"","minLength":1,"description":"Name of the target table in the bucket.","propertyOrder":1},"granularity":{"enum":["None","Daily"],"type":"string","title":"Granularity","default":"Daily","description":"Granularity of the time dimension.","propertyOrder":4},"incremental":{"type":"boolean","title":"Incremental Load","format":"select","default":true,"description":"If Incremental Load is enabled, new lines are added to existing ones.","propertyOrder":5},"timeDimension":{"type":"object","title":"Time Dimension","required":["timeFrame"],"properties":{"end":{"type":"string","title":"End Date","format":"date","options":{"dependencies":{"timeFrame":"Custom"}},"description":"End Date, only for the \"Custom\" time frame.","propertyOrder":3},"start":{"type":"string","title":"Start Date","format":"date","options":{"dependencies":{"timeFrame":"Custom"}},"description":"Start Date, only for the \"Custom\" time frame.","propertyOrder":2},"timeFrame":{"enum":["WeekToDate","MonthToDate","BillingMonthToDate","TheLastBillingMonth","Custom"],"type":"string","title":"Time Frame","default":"WeekToDate","description":"Period for which the data will be exported.","propertyOrder":1}},"propertyOrder":7},"groupingDimensions":{"type":"array","items":{"enum":["ServiceName","ResourceGroupName","ResourceLocation","ResourceType","ResourceId","MeterCategory","MeterSubCategory","Meter","ServiceTier","BillingPeriod","InvoiceNumber","PartNumber","PricingModel","ChargeType","PublisherType","ReservationId","ReservationName","Frequency","ResourceGuid"],"type":"string"},"title":"Grouping Dimensions","format":"select","default":["ServiceName","ResourceGroupName","ResourceLocation","Meter"],"minLength":1,"description":"Select ONE or MORE grouping dimension columns (will be present in the output).","uniqueItems":true,"propertyOrder":6}}}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":38,"uri":"docker/keboola.ex-azure-cost-management","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-azure-cost-management","name":"developer-portal-v2/keboola.ex-azure-cost-management","tag":"1.3.0","options":{},"digest":"sha256:fcbab6345a9b564ec61400761cc3b3561eef11f042155ca049e8c2275677a1fa"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-azure-cost-management/32/1677062114557.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-azure-cost-management/64/1677062114557.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-azure-cost-management/128/1677062114557.png"}},{"id":"keboola.ex-azure-cost-management-sp","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":18,"name":"Azure Cost Management Service Principal","type":"extractor","shortDescription":"Extracts cost and usage data from Azure Cost Management using a service principal.","longDescription":"This component allows you to extract cost and usage date of the Azure Subscription, using the [Azure Cost Management API](https://docs.microsoft.com/en-us/rest/api/cost-management/).","licenseUrl":"https://github.com/keboola/ex-azure-cost-management/blob/master/LICENSE.md","documentationUrl":"https://help.keboola.com/components/extractors/other/azure-cost/","sourceCodeUrl":"https://github.com/keboola/ex-azure-cost-management","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Monitoring"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["subscriptionId","servicePrincipal"],"properties":{"subscriptionId":{"type":"string","title":"Subscription ID","default":"","minLength":1,"description":"ID of the Azure subscription.","propertyOrder":1},"servicePrincipal":{"type":"object","title":"Service Principal","required":["tenant","username","#password"],"properties":{"tenant":{"type":"string","title":"Tenant ID","default":"","minLength":1,"propertyOrder":1},"username":{"type":"string","title":"Username","default":"","minLength":1,"propertyOrder":2},"#password":{"type":"string","title":"Password","format":"password","default":"","minLength":1,"description":"Will be encrypted on save.","propertyOrder":3}},"description":"Service Principal to log in using OAuth client credentials flow.","propertyOrder":2}}},"configurationRowSchema":{"type":"object","title":"Parameters","required":["export"],"properties":{"export":{"type":"object","title":"Export","required":["destination","type","aggregation","granularity","timeDimension","groupingDimensions"],"properties":{"type":{"enum":["ActualCost","AmortizedCost","Usage"],"type":"string","links":[{"rel":"See Export Type API Documentation.","href":"https://docs.microsoft.com/en-us/rest/api/cost-management/query/usage#exporttype"}],"title":"Type","default":"ActualCost","description":" ","propertyOrder":2},"aggregation":{"enum":["Cost","PreTaxCost","CostUSD","PreTaxCostUSD","UsageQuantity"],"type":"string","links":[{"rel":"See Query Aggregation API documentation.","href":"https://docs.microsoft.com/en-us/rest/api/cost-management/query/usage#queryaggregation"}],"title":"Aggregation Column","default":"Cost","description":" ","propertyOrder":3},"destination":{"type":"string","title":"Destination Table","default":"","minLength":1,"description":"Name of the target table in the bucket.","propertyOrder":1},"granularity":{"enum":["None","Daily"],"type":"string","title":"Granularity","default":"Daily","description":"Granularity of the time dimension.","propertyOrder":4},"incremental":{"type":"boolean","title":"Incremental Load","format":"select","default":true,"description":"If Incremental Load is enabled, new lines are added to existing ones.","propertyOrder":5},"timeDimension":{"type":"object","title":"Time Dimension","required":["timeFrame"],"properties":{"end":{"type":"string","title":"End Date","format":"date","options":{"dependencies":{"timeFrame":"Custom"}},"description":"End Date, only for the \"Custom\" time frame.","propertyOrder":3},"start":{"type":"string","title":"Start Date","format":"date","options":{"dependencies":{"timeFrame":"Custom"}},"description":"Start Date, only for the \"Custom\" time frame.","propertyOrder":2},"timeFrame":{"enum":["WeekToDate","MonthToDate","BillingMonthToDate","TheLastBillingMonth","Custom"],"type":"string","title":"Time Frame","default":"WeekToDate","description":"Period for which the data will be exported.","propertyOrder":1}},"propertyOrder":7},"groupingDimensions":{"type":"array","items":{"enum":["ServiceName","ResourceGroupName","ResourceLocation","ResourceType","ResourceId","MeterCategory","MeterSubCategory","Meter","ServiceTier","BillingPeriod","InvoiceNumber","PartNumber","PricingModel","ChargeType","PublisherType","ReservationId","ReservationName","Frequency","ResourceGuid"],"type":"string"},"title":"Grouping Dimensions","format":"select","default":["ServiceName","ResourceGroupName","ResourceLocation","Meter"],"minLength":1,"description":"Select ONE or MORE grouping dimension columns (will be present in the output).","uniqueItems":true,"propertyOrder":6}}}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-azure-cost-management-sp","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-azure-cost-management","name":"developer-portal-v2/keboola.ex-azure-cost-management","tag":"1.3.0","options":{},"digest":"sha256:a9823d1933312af73028b2628f39dbfd6346adf98308033f25562ef5f7af614b"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-azure-cost-management-sp/32/1677062128444.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-azure-cost-management-sp/64/1677062128444.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-azure-cost-management-sp/128/1677062128444.png"}},{"id":"kds-team.ex-azure-data-lake-gen2","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":113,"name":"Azure Data Lake Gen2","type":"extractor","shortDescription":"Extracts files from Azure Data Lake Storage Gen2.","longDescription":"This component can be used to extract files from Azure Data Lake Gen2 and apply after processors to save them into storage.","licenseUrl":"https://github.com/keboola/component-azure-data-lake-gen2/blob/main/LICENSE.md","documentationUrl":"https://help.keboola.com/components/extractors/storage/azure-datalake-gen2/","sourceCodeUrl":"https://github.com/keboola/component-azure-data-lake-gen2","requiredMemory":"512m","processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["File Storage"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-processors","genericDockerUI-rows"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Credentials","required":["account_name","#account_key","file_system"],"properties":{"file_system":{"type":"string","title":"File System","minLength":1,"description":"Azure DataLake Filesystem Name (Container)","propertyOrder":4},"#account_key":{"type":"string","title":"Access Key","description":"Azure Storage Access Key","propertyOrder":2},"account_name":{"type":"string","title":"Account Name","minLength":1,"description":"Azure Storage Resources Account Name","propertyOrder":1}}},"configurationRowSchema":{"type":"object","title":"Source","required":["file"],"properties":{"file":{"type":"object","title":"File","required":["file_name","new_files_only","add_timestamp"],"properties":{"file_name":{"type":"string","title":"File Name","description":"Name of a source file with its extension or wildcard.\nfolder/subfolder/test.csv will download \"test\" CSV file from \"folder/subfolder\" directory\ntest_* will download all CSV files with \"test_\" prefix","propertyOrder":300},"add_timestamp":{"type":"boolean","title":"Add Timestamp To Filename","format":"checkbox","description":"Add last updated timestamp to the file name","propertyOrder":450},"new_files_only":{"type":"boolean","title":"New Files Only","format":"checkbox","description":"Every job stores the timestamp of the last downloaded file and a subsequent job can pick up from there.","propertyOrder":400}},"propertyOrder":400}}},"createConfigurationRowSchema":null,"configurationDescription":"Please note that to control the primary keys and Storage table load mode, following processors section needs to be added.\n\n- Replace the `\"incremental\"` and `\"primary_key\"` values in the `keboola.processor-create-manifest` definition to control the load mode.\n- Replace the `\"folder\"` value in the `keboola.processor-move-files` definition to control the result table name.\n- Use place only the [`Create File Manifest processor`](https://components.keboola.com/components/kds-team.processor-create-file-manifest)\ninside the `after` section to load results into the File Blob Storage instead of the Synapse.\n\n```json\n    \"after\": [\n      {\n        \"definition\": {\n          \"component\": \"keboola.processor-move-files\"\n        },\n        \"parameters\": {\n          \"direction\": \"tables\",\n          \"addCsvSuffix\": true,\n          \"folder\": \"test\"\n        }\n      },\n      {\n        \"definition\": {\n          \"component\": \"keboola.processor-create-manifest\"\n        },\n        \"parameters\": {\n          \"delimiter\": \",\",\n          \"enclosure\": \"\\\"\",\n          \"incremental\": false,\n          \"primary_key\": [\n            \"aaa\"\n          ],\n          \"columns_from\": \"header\"\n        }\n      },\n      {\n        \"definition\": {\n          \"component\": \"keboola.processor-skip-lines\"\n        },\n        \"parameters\": {\n          \"lines\": 1\n        }\n      }      \n    ]\n```\n\n**NOTE:** New UI will soon remove the need to define the processors manually.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":113,"uri":"docker/kds-team.ex-azure-data-lake-gen2","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-azure-data-lake-gen2","name":"developer-portal-v2/kds-team.ex-azure-data-lake-gen2","tag":"1.0.1","options":{},"digest":"sha256:6605daabd12d5b10fa907fe755b2eb81c3ae3f266e16d27a0a55d87cb622faba"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-azure-data-lake-gen2/32/1626119056974.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-azure-data-lake-gen2/64/1626119056974.png","128":null}},{"id":"keboola.wr-azure-event-hub","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":64,"name":"Azure Event Hub","type":"writer","shortDescription":"Writes table rows to Azure Event Hub as JSON or single-column messages.","longDescription":"Writes messages to the [Azure Event Hubs](https://azure.microsoft.com/en-us/services/event-hubs/).","licenseUrl":"https://github.com/keboola/wr-azure-event-hub/blob/master/LICENSE","documentationUrl":"https://help.keboola.com/components/writers/other/azure-event-hub/","sourceCodeUrl":"https://github.com/keboola/wr-azure-event-hub","requiredMemory":"1024m","processTimeout":7200,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Monitoring"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput","genericDockerUI-rows"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["hub"],"properties":{"hub":{"type":"object","title":"Event Hub Connection","required":["#connectionString","eventHubName"],"properties":{"eventHubName":{"type":"string","title":"Event Hub Name","default":"","minLength":1,"description":"Name of an event hub from the your namespace. Please, enter name of the Hub, NOT name of the Namespace.","propertyOrder":2},"#connectionString":{"type":"string","title":"Connection String","default":"","minLength":1,"description":"Eg. \"Endpoint=...\", the value will be encrypted when saved.","propertyOrder":1}},"propertyOrder":1}}},"configurationRowSchema":{"type":"object","title":"Parameters","required":["mode"],"properties":{"mode":{"enum":["row_as_json","column_value"],"type":"string","title":"Mapping Mode","default":"row_as_json","description":"Determines the contents of the message.","propertyOrder":3},"column":{"type":"string","title":"Message Column","default":"","options":{"dependencies":{"mode":"column_value"}},"minLength":1,"description":"Columns that contains the contents of the message.","propertyOrder":4},"propertiesColumn":{"type":"string","title":"Properties Column","default":"","options":{"dependencies":{"mode":"column_value"}},"description":"Column that specifies additional properties of the message (correlationId, messageId, ...).","propertyOrder":5}}},"createConfigurationRowSchema":null,"configurationDescription":"Setup procedure:\n- Fill in **Connection String** and **Event Hub Name**.\n- Click **Add Row**.\n- Add one table to the input mapping.\n- Fill in the other parameters if needed.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["testConnection"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":64,"uri":"docker/keboola.wr-azure-event-hub","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-azure-event-hub","name":"developer-portal-v2/keboola.wr-azure-event-hub","tag":"1.6.5","options":{},"digest":"sha256:32f5850d23762221b7b32fd81c3b94dab0443b9935bb0eeaaac93c555345b84d"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-azure-event-hub/32/1606313112637.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-azure-event-hub/64/1606313112637.png","128":null}},{"id":"keboola.ex-azure-storage-table","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":20,"name":"Azure Storage Table","type":"extractor","shortDescription":"Extracts data from Azure Table Storage and Azure Cosmos DB Table API.","longDescription":"This component allows you to extract data from:\n- [Azure Table storage](https://azure.microsoft.com/en-us/services/storage/tables) or\n- [Azure Cosmos DB Table API](https://docs.microsoft.com/en-us/azure/cosmos-db/table-introduction)\n\nSee [comparison](https://docs.microsoft.com/en-us/azure/cosmos-db/table-support) of these databases.","licenseUrl":null,"documentationUrl":"https://help.keboola.com/components/extractors/database/azure-storage-table/","sourceCodeUrl":"https://github.com/keboola/ex-azure-storage-table","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["File Storage","Database"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Configuration Parameters","properties":{"db":{"type":"object","title":"Database","required":["#connectionString"],"properties":{"#connectionString":{"type":"string","title":"Connection String","default":"","minLength":1,"description":"Eg. \"DefaultEndpointsProtocol=https;...\". The value will be encrypted when saved.","propertyOrder":1}}}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["testConnection"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-azure-storage-table","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-azure-storage-table","name":"developer-portal-v2/keboola.ex-azure-storage-table","tag":"v1.0.0","options":{},"digest":"sha256:0a3aa0d75e0a2fd243ef7f016553af982edcf1e1e1b9193c5a685e4cc6580d84"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-azure-storage-table/32/1606731013152.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-azure-storage-table/64/1606731013152.png","128":null}},{"id":"keboola.wr-azure-table-storage","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":69,"name":"Azure Table Storage","type":"writer","shortDescription":"Writes table rows as entities into Azure Table Storage.","longDescription":"The Azure Table Storage Writer loads Keboola Storage tables into Azure Table Storage, mapping each input row to an entity in a target table.\n\nKey features:\n\n- **Upsert write modes** – choose `upsert_merge` to preserve existing entity properties, or `upsert_replace` to fully overwrite the entity.\n- **Automatic table creation** – the target table is created if it does not already exist.\n- **Flexible key mapping** – select any input column as the entity `PartitionKey` and any other column as the `RowKey`.\n- **Row-based configuration** – write to multiple Azure tables from a single configuration using rows.\n- **Connection validation** – built-in **Test Connection** action verifies credentials before running.\n- **Table discovery** – **Load tables** action lists existing tables in the storage account directly in the UI.\n- **Secure credentials** – the storage account connection string is stored encrypted.","licenseUrl":"https://github.com/keboola/component-azure-table-storage/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/component-azure-table-storage/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/component-azure-table-storage","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-simpleTableInput","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Azure Table Storage Writer","required":["#connection_string"],"properties":{"debug":{"type":"boolean","title":"Debug Mode","default":false,"description":"Enable verbose debug logging.","propertyOrder":3},"test_connection":{"type":"button","title":"Test Connection","format":"test-connection","options":{"async":{"label":"Test Connection","action":"testConnection"}},"propertyOrder":2},"#connection_string":{"type":"string","title":"Connection String","format":"password","description":"Azure Storage account connection string (will be encrypted).","propertyOrder":1}}},"configurationRowSchema":{"type":"object","title":"Table Mapping","required":["azure_table_name","partition_key_column","row_key_column"],"properties":{"write_mode":{"enum":["upsert_merge","upsert_replace"],"type":"string","title":"Write Mode","default":"upsert_merge","description":"upsert_merge keeps existing properties; upsert_replace overwrites the whole entity.","enum_titles":["Upsert Merge","Upsert Replace"],"propertyOrder":4},"row_key_column":{"type":"string","title":"Row Key Column","watch":{"columns":"_metadata_.table.columns"},"enumSource":"columns","description":"Input table column to use as the entity RowKey.","propertyOrder":3},"azure_table_name":{"enum":[],"type":"string","title":"Azure Table Name","format":"select","default":"","options":{"tags":true,"async":{"label":"Load tables","action":"list_tables"},"creatable":true},"description":"Name of the target table in Azure Table Storage.","propertyOrder":1},"partition_key_column":{"type":"string","title":"Partition Key Column","watch":{"columns":"_metadata_.table.columns"},"enumSource":"columns","description":"Input table column to use as the entity PartitionKey.","propertyOrder":2}}},"createConfigurationRowSchema":null,"configurationDescription":"Configuration description.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["list_tables","testConnection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.wr-azure-table-storage","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-azure-table-storage","name":"developer-portal-v2/keboola.wr-azure-table-storage","tag":"0.0.3","options":{},"digest":"sha256:3775315498d0d36df6eb7d71de3af34e0086d0155a9ff3a94e4c96284608b79c"},"publishingStatus":"public","icon":{"32":null,"64":null,"128":null}},{"id":"kds-team.app-azureml-model-deployment","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":447,"name":"AzureML Model Deployment","type":"application","shortDescription":"Deploy your trained model to Azure Container Instances and query it via an API","longDescription":"# Azure ML Model Deployment Tool\n\nThis tool allows for deployment of trained Python models packaged via Pickle or Joblib to Azure Container Webservices via Azure ML platform. It creates an API for these models and outputs the Bearer tokens, the URI, and Swagger for the API.\n\nYou need to have an active Azure ML account and an active workspace for using this component.\n\nThis whole component mimics this workflow - [How to deploy and where](https://docs.microsoft.com/en-us/azure/machine-learning/service/how-to-deploy-and-where). It deploys the model to Azure Container Instances through an existing Workspace. The WebService then accepts and returns JSON data.\n\n### Adjustments\n\nThis component will be further enhanced. In the future, there will be these improvements:  \n- The tokens will be sent to email  \n- The API will be accepting requests in a format that will allow for integration with PowerBI  \n- There will be a new component created that will be able to fetch metadata from the API\n- A functionality for updating a webservice - the idea is that if you will use a name of an existing webservice AND you'll check that you want to update a service (so the chance of this happening by accident is minimized), the component will only update an existing webservice","licenseUrl":"https://bitbucket.org/kds_consulting_team/kds-team.app-azureml-model-deployment/src/master/LICENSE.md","documentationUrl":"https://bitbucket.org/kds_consulting_team/kds-team.app-azureml-model-deployment/src/master/README.md","sourceCodeUrl":"https://bitbucket.org/kds_consulting_team/kds-team.app-azureml-model-deployment/src/master/src/","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-fileInput"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"extractor configuration","required":["subscription_id","resource_group","workspace_name","model_name","dependencies","pip_yaml","cpu_cores","memory_gb","auth","webservice_name","tenant_id","service_principal_id","#service_principal_password"],"properties":{"auth":{"type":"boolean","title":"Authorization","default":"true","propertyOrder":410},"pip_yaml":{"type":"string","title":"PIP command for the Inference Config Yaml","propertyOrder":320},"cpu_cores":{"type":"number","title":"CPU CORES","propertyOrder":420},"memory_gb":{"type":"number","title":"MEMORY GB","propertyOrder":430},"tenant_id":{"type":"string","title":"Tenant ID for authentication","propertyOrder":100},"model_name":{"type":"string","title":"Model Name","propertyOrder":300},"dependencies":{"type":"string","title":"Dependencies in the Inference Config Yaml","propertyOrder":310},"resource_group":{"type":"string","title":"Resource Group","propertyOrder":210},"workspace_name":{"type":"string","title":"Workspace Name","propertyOrder":220},"subscription_id":{"type":"string","title":"Subscription ID","propertyOrder":200},"webservice_name":{"type":"string","title":"Name of the WebService","propertyOrder":400},"service_principal_id":{"type":"string","title":"Service principal ID for authentication","propertyOrder":110},"#service_principal_password":{"type":"string","title":"Service principal password for authentication","format":"password","propertyOrder":120}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"### Parameters\n\n**Tenant ID for authentication** - used for the ServicePrincipalAuthentication (Look for `Service Principal Authentication` [here](https://github.com/Azure/MachineLearningNotebooks/blob/master/how-to-use-azureml/manage-azureml-service/authentication-in-azureml/authentication-in-azureml.ipynb))\n\n**Service principal ID for authentication** - used for the ServicePrincipalAuthentication (Look for `Service Principal Authentication` [here](https://github.com/Azure/MachineLearningNotebooks/blob/master/how-to-use-azureml/manage-azureml-service/authentication-in-azureml/authentication-in-azureml.ipynb))\n\n**Service principal password for authentication** - used for the ServicePrincipalAuthentication (Look for `Service Principal Authentication` [here](https://github.com/Azure/MachineLearningNotebooks/blob/master/how-to-use-azureml/manage-azureml-service/authentication-in-azureml/authentication-in-azureml.ipynb))\n\n**Subscription ID** - your unique subscription ID (for more info click [here](https://docs.bitnami.com/azure/faq/administration/find-subscription-id/))\n\n**Resource Group** - the resource group your Workspace belongs to (can be found [here](https://portal.azure.com/#home))\n\n**Workspace Name** - the name of the workspace you want to use for the deployment\n\n**Model Name** - the name your model will be registered under\n\n**Dependencies in the Inference Config Yaml** - dependencies of your model and your score.py function (for more info click [here](https://docs.microsoft.com/en-us/azure/machine-learning/service/how-to-deploy-and-where#2-define-your-inferenceconfig)). The required format is a list delimited by commas (e.g. `pandas, numpy, scikit-learn=0.19.1`).\n\n**PIP command for the Inference Config Yaml** - pip commands that will be executed during deployment of your model as a Web Service (for more info click [here](https://docs.microsoft.com/en-us/azure/machine-learning/service/how-to-deploy-and-where#2-define-your-inferenceconfig)). The required format is a list delimited by commas (e.g. `azureml-defaults==1.0.79, inference-schema[numpy-support]`).\n\n**Name of the WebService** - the name under which your webservice will be deployed\n\n**Authorization** - BOOLEAN denoting whether the API will require authentication (it is strongly recommended to use Authentication, the component as of now does not allow for not using Authentication - please use only the default value `true` for now)\n\n**CPU CORES** - how many CPU cores will your model run on\n\n**MEMORY GB** - how much memory will your model have access to. Please use multiples of 0.1\n\n### Input mapping\n\nThe input mapping requires two files:\n\n- **model** : this file needs to be a pickled python model (packaged vbia joblib or pickle) and needs to have `.pkl` suffix\n- **score.py**: this file is the entry function in the API. It takes what is sent to the API, runs the model, and returns the outputs back to the API. For more info read about `entry script` [here](https://docs.microsoft.com/en-us/azure/machine-learning/service/how-to-deploy-and-where#prepare-to-deploy)\n\n### Output\n\nThere is only one file outputted, it contains info about the deployed Web Service. The name is always compiled as `configuration_` + `[Name of the WebService]` + `.txt` (e.g. is your webservice is called `test`, the output file is called `configuration_test.txt`).","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":447,"uri":"docker/kds-team.app-azureml-model-deployment","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.app-azureml-model-deployment","name":"developer-portal-v2/kds-team.app-azureml-model-deployment","tag":"0.3.1","options":{},"digest":"sha256:547c5a21fc5fce758932260d125be28cb7b7bf68f15c92ca6300dc8411fc7f6d"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-azureml-model-deployment/32/1579612939225.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-azureml-model-deployment/64/1579612939225.png","128":null}},{"id":"bootiq.app-bootiq-crm","vendor":{"id":"bootiq","name":"BOOTIQ s.r.o.","address":"Hybernská 1007/20\n110 00 Praha 1\nCzech Republic","email":"keboola@bootiq.io","type":"other"},"version":35,"name":"B!Q Deal Prediction","type":"application","shortDescription":"Deal closing state prediction","longDescription":"## Deal closing state prediction based on AI (Neural Network)\n\n### Overview\nThis application predicts the result of the deals based on the relevant metrics. The used data are from CRM software. \n\n### Requirements\nInput table cannot be larger than 100Mb. It needs at least 200 inputs rows. For more info check configuration description or documentation.","licenseUrl":"https://gitlab.bootiq.io/BIQ-PUBLIC/BOOTIQ-AI-CRM-documentation/blob/master/LICENSE","documentationUrl":"https://gitlab.bootiq.io/BIQ-PUBLIC/BOOTIQ-AI-CRM-documentation","sourceCodeUrl":null,"requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"out","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["ID","Label"],"properties":{"ID":{"type":"integer","title":"ID","default":1,"maximum":100,"minimum":1,"description":"Position of column with ID. Count from 1."},"Label":{"type":"integer","title":"Label","default":2,"maximum":100,"minimum":1,"description":"Position of column with Label. Count from 1."}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"The data requirements can be found in [the documentation](https://gitlab.bootiq.io/BIQ-PUBLIC/BOOTIQ-AI-CRM-documentation) with an example of [the input table](https://gitlab.bootiq.io/BIQ-PUBLIC/BOOTIQ-AI-CRM-documentation/tree/master/in-table). \n\n### Input table\nInput table should containt at least 3 columns.\nPlease add only one input table at the time.\n\n* `deal_id` (required) - the column is used as primary key in the output\n* `label` (required) - the label is used to differentiate between lost, won and open deals - It must be in numeric form: **lost = 0, won = 1, open = 2**\n* `metric` (required) - at least one metric should be used for result prediction - It should be something correlated with deal result (deal length, number of emails between seller and buyer, stage of the deal ...) values must be **numeric**\n* `another metrics` (optional) - more metrics can be added\n\n| ID     |    Label    | Deal_length|  ...  |\n| ------- |---------------| ------------------|-----|\n|1        | 0               |  20               |  ... |\n|2        | 1               |  30               |  ... |\n|3        | 2               |   5                |  ... |\n\n### Output\nThe output is composed of `deal_id` of open deals and `Prediction_of_the_result`\n\n| ID     |Prediction \\[%\\]| \n| ------- |---------------|\n|3        |   50           | \n\n### Parameters config\nThe position of the `deal_id` and `label` column must be specified in the configuration.\n","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":"Input table cannot be larger than 100Mb. It needs at least 200 inputs rows.","logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":35,"uri":"docker/bootiq.app-bootiq-crm","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/bootiq.app-bootiq-crm","name":"developer-portal-v2/bootiq.app-bootiq-crm","tag":"0.1.14","options":{},"digest":"sha256:17882fe9cf071906188b5260012eb68887251d40d40a700b5cd9a76e2f2c7482"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/bootiq.app-bootiq-crm/32/1576485522347.png","64":"https://ui.keboola-assets.com/developer-portal/icons/bootiq.app-bootiq-crm/64/1576485522347.png","128":null}},{"id":"bootiq.ex-gooddata-basic","vendor":{"id":"bootiq","name":"BOOTIQ s.r.o.","address":"Hybernská 1007/20\n110 00 Praha 1\nCzech Republic","email":"keboola@bootiq.io","type":"other"},"version":32,"name":"B!Q GoodData Telemetry","type":"extractor","shortDescription":"This extractor uses GoodData API for getting info about users, projects, dashboards, reports and uploaded datasets.","longDescription":"# GoodData Telemetry Extractor\n\nThis extractor gathers the following datasets from GoodData (projects, users, dashboards, ...) and provides you with a complete metadata view of your GoodData account\n\n## Running the extractor\nFor this extractor you need account in a project or multiple projects in GoodData. \n### Input:\n* **Login email**: The email address for the GoodData account\n* **Password**: GoodData account password\n* **The white-labeled domain**: The subdomain under which your GoodData project resides (Eg: bootiq.na, keboola.eu, secure).  If you don't have a whitelisted domain, `secure` is the GoodData default.\n\nIf you do not have white-labeled domain, then use `secure` domain.\n\n### Output:\n\nOn the output you can find 5 tables:\n\n* `users`\n* `projects`\n* `dashboards`\n* `reports`\n* `datasets`\n* `uploads` -> This one uses increment loading but does not have primary key so you need to delete duplicated rows\n\nFor Data Model and duplication handling check out our [documentation.](https://gitlab.com/bootiq-gooddata/gooddata-telemetry-documentation)","licenseUrl":"https://gitlab.com/bootiq-gooddata/gooddata-telemetry-documentation/-/blob/master/LICENSE","documentationUrl":"https://gitlab.com/bootiq-gooddata/gooddata-telemetry-documentation","sourceCodeUrl":null,"requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Monitoring"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Credentials","required":["login","#password","domain"],"properties":{"login":{"type":"string","title":"Login:","default":"Your email","description":"Email you use for log in into GoodData."},"domain":{"type":"string","title":"GoodData domain:","default":"secure","description":"Type in your whitelisted domain, if you use any. eg. 'secure', 'bootiq.na', 'keboola.eu'"},"#password":{"type":"string","title":"Password:","format":"password","default":"","minLength":1,"description":"Password for GoodData project.","propertyOrder":2}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"### Running the extractor\nFor this extractor you need account in a project or multiple projects in GoodData. \n#### Input:\n* **Login email**: The email address for the GoodData account\n* **Password**: GoodData account password\n* **The white-labeled domain**: The subdomain under which your GoodData project resides (Eg: bootiq.na, keboola.eu, secure).  If you don't have a whitelisted domain, `secure` is the GoodData default.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":32,"uri":"docker/bootiq.ex-gooddata-basic","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/bootiq.ex-gooddata-basic","name":"developer-portal-v2/bootiq.ex-gooddata-basic","tag":"1.0.1","options":{},"digest":"sha256:59c18405a128946292ff2cc99024840a8ac0318c8cdd5eebf3e3eae83ce4156f"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/bootiq.ex-gooddata-basic/32/1601374310222.png","64":"https://ui.keboola-assets.com/developer-portal/icons/bootiq.ex-gooddata-basic/64/1601374310222.png","128":null}},{"id":"keboola.ex-babelforce","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":18,"name":"babelforce","type":"extractor","shortDescription":"Extracts data from babelforce via its REST API.","longDescription":"This component uses the babelforce [REST API](https://www.babelforce.com/rest-api-power/) to import data from [babelforce](http://babelforce.com/).\n\nTo configure this extractor, you need to provide \n\n- an API Access ID, and\n- an API token.\n\nData are always imported incrementally.","licenseUrl":"https://github.com/keboola/kbc-ui-templates/blob/main/LICENSE","documentationUrl":"https://help.keboola.com/extractors/marketing-sales/babelforce/","sourceCodeUrl":"https://github.com/keboola/kbc-ui-templates/tree/main/resources/keboola.ex-babelforce/templates","requiredMemory":"512m","processTimeout":3600,"features":["container-root-user"],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"medium","category":null,"categories":["CRM"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericTemplatesUI"],"imageParameters":{"default_bucket":true},"stackParameters":{},"testConfiguration":{},"configurationSchema":{"type":"object","title":"Parameters","required":["config"],"properties":{"config":{"type":"object","title":"Config","properties":{"#apiAccessId":{"type":"string","title":"API Access ID","format":"password","required":true,"minLength":1},"#apiAccessToken":{"type":"string","title":"API Access Token","format":"password","required":true,"minLength":1}}}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-babelforce","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/ex-generic-v2","name":"developer-portal-v2/ex-generic-v2","tag":"2.3.2","options":{},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-babelforce/32/1697617086949.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-babelforce/64/1697617086949.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-babelforce/128/1697617086949.png"}},{"id":"kds-team.ex-bigcommerce","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":344,"name":"BigCommerce","type":"extractor","shortDescription":"Extracts brands, customers, orders, and products from a BigCommerce store.","longDescription":"This extractor downloads data about brands, customers, orders and products in your [BigCommerce](https://www.bigcommerce.com/) store.\n\n### Prerequisites\nYou must create a V2/V3 API access token with read-only OAuth scope and find your API path. Both can be accomplished by following [this guide](https://support.bigcommerce.com/s/article/Store-API-Accounts?language=en_US#creating).\n\n### Supported endpoints\n- `v2/orders` and `v2/orders/{order_id}/products`\n- `v3/customers`\n- `v3/catalog/brands`\n- `v3/catalog/products`\n\nIf you need more endpoints, please submit [a feature request](https://keboola.atlassian.net/servicedesk/customer/portal/3/group/4/create/41)","licenseUrl":"https://bitbucket.org/kds_consulting_team/kds-team.ex-bigcommerce/src/master/LICENSE.md","documentationUrl":"https://help.keboola.com/components/extractors/marketing-sales/bigcommerce/","sourceCodeUrl":"https://bitbucket.org/kds_consulting_team/kds-team.ex-bigcommerce/src/master/","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"BigCommerce Extractor Configuration","required":["api_path","#access_token"],"properties":{"api_path":{"type":"string","title":"API Path","options":{"inputAttributes":{"placeholder":"https://api.bigcommerce.com/stores/123example/v2"}},"pattern":"^https:\\/\\/api\\.bigcommerce\\.com\\/stores\\/(\\w+)(\\/(v\\d)\\/?)?$","description":"Your API base path. It must look like \"https://api.bigcommerce.com/stores/123example/v2\". For more information on API token creation follow <a href=\"https://support.bigcommerce.com/s/article/Store-API-Accounts?language=en_US#creating\">this guide</a>.","propertyOrder":10},"#access_token":{"type":"string","title":"Access Token","format":"password","description":"Your API access token. For more information on API token creation follow <a href=\"https://support.bigcommerce.com/s/article/Store-API-Accounts?language=en_US#creating\">this guide</a>.","propertyOrder":20},"test_connection":{"type":"button","format":"test-connection","propertyOrder":200}}},"configurationRowSchema":{"type":"object","title":"BigCommerce Extractor Row Configuration","required":["endpoints","destination"],"properties":{"endpoints":{"enum":["brands","customers","orders","products"],"type":"string","title":"Endpoints","options":{"enum_titles":["Brands","Customers","Orders","Products"]},"description":"Select the data you wish to download.","propertyOrder":10},"destination":{"type":"object","title":"Destination","required":["load_type"],"properties":{"load_type":{"enum":["full_load","incremental_load"],"type":"string","title":"Load Type","default":"incremental_load","options":{"enum_titles":["Full Load","Incremental Load"]},"description":"If Full load is used, the destination table will be overwritten every run. If Incremental load is used, data will be upserted into the destination table.","propertyOrder":20}},"propertyOrder":400},"sync_options":{"type":"object","title":"Sync Options","options":{"dependencies":{"endpoints":["customers","orders","products"]}},"required":["date_from","date_to"],"properties":{"date_to":{"type":"string","title":"Date To","default":"now","description":"Date to which data is downloaded (i.e. only data last modified before this are downloaded). Either date in `YYYY-MM-DD` format or dateparser string i.e. `5 days ago`, `1 week ago`, `today`, etc.","propertyOrder":30},"date_from":{"type":"string","title":"Date From","default":"last run","description":"Date from which data is downloaded (i.e. only data last modified after this are downloaded). Either date in `YYYY-MM-DD` format or dateparser string i.e. `5 days ago`, `1 month ago`, `yesterday`, etc. You can also set this as `last run`, which will fetch data from the last run of the component; if no previous successful run exists, all data up to specified Date To will be downloaded.","propertyOrder":20}},"propertyOrder":20}}},"createConfigurationRowSchema":null,"configurationDescription":"This extractor downloads data about brands, customers, orders and products in your store.\n\nYou must create a V2/V3 API access token with read-only OAuth scope and find your API path. Both can be accomplished by folowing [this guide](https://support.bigcommerce.com/s/article/Store-API-Accounts?language=en_US#creating).","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["testConnection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":344,"uri":"docker/kds-team.ex-bigcommerce","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-bigcommerce","name":"developer-portal-v2/kds-team.ex-bigcommerce","tag":"1.0.4","options":{},"digest":"sha256:46f0a73a05dcf4fd4c95677db8085499bcda8daeb31a2c04600f11283de59fec"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-bigcommerce/32/1676291196773.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-bigcommerce/64/1676291196773.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-bigcommerce/128/1676291196773.png"}},{"id":"kds-team.ex-bitbucket","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":21,"name":"Bitbucket","type":"extractor","shortDescription":"Get the data about commits to your team's repositories.","longDescription":"[Bitbucket](https://bitbucket.org/product) is a **Git management tool** which helps you take care of your code and its development.\n\nThis extractor is getting data about **teams**, **projects**, **repositories**, **commits**, **issues** and **pull requests** from [Bitbucket API v2](https://developer.atlassian.com/bitbucket/api/2/reference/resource/).\nThe scope of the extractor might be extended by altering the JSON configuration and following [Generic Extractor tutorial](https://developers.keboola.com/extend/generic-extractor/tutorial/).","licenseUrl":"https://github.com/keboola/kbc-ui-templates/blob/master/resources/kds-team.ex-bitbucket/templates/LICENSE","documentationUrl":"https://components.keboola.com/~/components/kds-team.ex-bitbucket","sourceCodeUrl":"https://github.com/keboola/kbc-ui-templates/tree/main/resources/kds-team.ex-bitbucket/templates","requiredMemory":null,"processTimeout":10800,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericTemplatesUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["config"],"properties":{"config":{"type":"object","title":"Config","required":["username","#password","startDate"],"properties":{"username":{"type":"string","title":"Username","default":"","minLength":0,"description":"Fill in you BitBucket username","propertyOrder":1},"#password":{"type":"string","title":"Password/App Password","format":"password","default":"","minLength":0,"description":"If you're using Multi-factor authentication on Bitbucket (as you should), App Password is necessary (https://confluence.atlassian.com/bitbucket/app-passwords-828781300.html)","propertyOrder":2},"startDate":{"type":"string","title":"Start Date","default":"-10 days","minLength":1,"description":"Any date accepted by strtotime (http://php.net/manual/en/function.strtotime.php) function (Example: -10 days, 2018-03-18)","propertyOrder":3}}}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"## Parameters\n* **Username** (required): Fill in your Bitbucket username.\n* **Password** (required): Fill in your Bitbucket Password or App Password. Creation of [App Password](https://confluence.atlassian.com/bitbucket/app-passwords-828781300.html) is mandatory if you're using Multi-factor authentication. It will be automatically ciphered.\n\n**Note**: It's possible that you'll need Bitbucket Admin privileges to extract all of the data from the scope.\n\nExtractor is storing data in KBC [incrementally](https://developers.keboola.com/extend/generic-extractor/incremental/).\n\n**Hint**: As extractor is working incrementally and it extracts pull requests and their activities to different tables according to current request state, you'll end up with some kind of duplicate rows across these tables (i.e. pull request once open and saved to KBC can be saved again as merged request). Keep that in mind and deduplicate the data easily in the Transformations. ","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":21,"uri":"docker/kds-team.ex-bitbucket","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/ex-generic-v2","name":"developer-portal-v2/ex-generic-v2","tag":"latest","options":{},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-bitbucket/32/1576594423513.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-bitbucket/64/1576594423513.png","128":null}},{"id":"kds-team.ex-brightloom","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":22,"name":"Brightloom","type":"extractor","shortDescription":"Download your Brightloom transaction data directly to Keboola Storage.","longDescription":"Brightloom sells restaurants a platform which includes software for ordering kiosks, a mobile app, digital signage, and the aggregation of orders from delivery apps for kitchen staff. For pickup, the company offers cubby hardware and shelves with integrated displays.\n\nExtractor connects to API endpoint: Orders","licenseUrl":"https://github.com/keboola/kbc-ui-templates/blob/master/resources/kds-team.ex-brightloom/templates/LICENSE.txt","documentationUrl":"https://github.com/keboola/kbc-ui-templates/tree/master/resources/kds-team.ex-brightloom/templates","sourceCodeUrl":"https://github.com/keboola/kbc-ui-templates/tree/master/resources/kds-team.ex-brightloom/templates/config","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericTemplatesUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["config"],"properties":{"config":{"type":"object","title":"Brightloom Input","required":["#api_token","days_back"],"properties":{"days_back":{"type":"integer","title":"In case the Incremental Option is selected, please, specify how many days back should the extractor go. The input format is e.g.: -2 days","default":"-2 days","maximum":-1},"#api_token":{"type":"string","title":"API Access Token","format":"password","default":"","minLength":1,"description":"Please, see your Brightloom developer account's settings for API access token"}}}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":22,"uri":"docker/kds-team.ex-brightloom","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/ex-generic-v2","name":"developer-portal-v2/ex-generic-v2","tag":"latest","options":{},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-brightloom/32/1576595020501.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-brightloom/64/1576595020501.png","128":null}},{"id":"gymbeam.app-bulkgate","vendor":{"id":"gymbeam","name":"GymBeam","address":"GymBeam\nRastislavova 93\n040 01 Košice","email":"robert.cizmar@gymbeam.com","type":"other"},"version":140,"name":"Bulkgate","type":"application","shortDescription":"Bulkgate allows to send SMS and Viber messages.","longDescription":"# Bulkgate\n\nThis application is used for sending SMS and Viber messages using [bulkgate api](https://www.bulkgate.com/en/).\n\n\n## Input\n\nInput must be a table with 3 columns:\n\n - `number` - phone number to which message will be send - must include country code (ex: 420123123123)\n - `text` - text which will be send\n - `timestamp` - `0` for message to be sent right away or [unix timestamp](https://en.wikipedia.org/wiki/Unix_time)/[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) for message to be sent at a specific time\n\n## Credentials\n\nCredentials used for authentification:\n\n - `Application ID`\n - `Application token`\n\nCan be created as per [here](https://help.bulkgate.com/docs/en/api-administration.html).\n\n## Settings\n\nAdditional settings for message sending:\n\n - `Message type` - can be either `Transactional` or `Promotional` depending on the purpose of the message. Be aware that as per [documentation](https://help.bulkgate.com/docs/en/difference-promotional-transactional-sms.html#transactional-sms) **it is *strictly prohibited* to exploit transactional SMS for promotional/marketing uses. It must be used for notification purposes only - as an SMS notification.**\n - `Sender ID` - [sender ID profile](https://help.bulkgate.com/docs/en/sender-id-profile.html)\n - `Send to Viber?` - if `true` message will be send to `viber` primarly and fallback to `SMS` if the provided phone number does not have `viber` account. If `false` message will be send only via `SMS`\n - `Viber sender` - sender name which will be shown in `viber` as the sender of a message (this field is mandatory if `Send to Viber?` is `true`\n\n## Output\n\nAs an output, 3 tables are returned.\n - `stats` - contains information about the sent messages in total\n - `messages` - contains information about each sent message\n - `messages_parts` - contains information about message parts for each message","licenseUrl":"https://portal.bulkgate.com/page/terms-and-conditions","documentationUrl":"https://github.com/gymbeam/gymbeam.app-bulkgate/#readme","sourceCodeUrl":"https://github.com/gymbeam/gymbeam.app-bulkgate/","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"out","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Credentials and settings","required":["credentials","settings"],"properties":{"settings":{"type":"object","title":"Settings","required":["message_type","sender_id","send_channel"],"properties":{"sender_id":{"type":"integer","title":"Sender ID","description":"Sender ID to use for the message.","propertyOrder":2},"sms_unicode":{"type":"boolean","title":"SMS Unicode","format":"checkbox","default":false,"description":"If set, messages via sms will be sent in unicode (characters with diacritics will be sent properly) ","propertyOrder":3},"message_type":{"enum":["Promotional"],"type":"string","title":"Message type","description":"Type of message to send.","propertyOrder":1},"send_channel":{"enum":["viber","sms","viber_sms"],"type":"string","title":"Sending Channels","default":"viber","options":{"enum_titles":["Viber only","SMS only","Viber + SMS as a backup"]},"required":true,"description":"Determines what channel you wish to use to send the messages","propertyOrder":5},"viber_sender":{"type":"string","title":"Viber sender","description":"Viber sender name which will be shown as a sender.","propertyOrder":6},"duplicates_check":{"enum":["null","same_text","same_number"],"type":"string","title":"Duplicates Check","default":"null","options":{"enum_titles":["No Duplicate Check","Same Text","Same Number"]},"required":true,"description":"Select 'Same Text' to prevent sending duplicate messages to the same phone number. Disable the possibility to send a message with either the same or different text to the same number with 'Same Number'. If 'No Duplicate Check' no duplicates will be removed.","propertyOrder":4}},"propertyOrder":2},"credentials":{"type":"object","title":"Credentials","required":["#application_id","#application_token"],"properties":{"#application_id":{"type":"string","title":"Application ID","format":"password","description":"Your BulkGate application ID.","propertyOrder":1},"#application_token":{"type":"string","title":"Application token","format":"password","description":"Your BulkGate application token.","propertyOrder":2}},"propertyOrder":1}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"## Input\n\nInput should be a table with 5 columns:\n\n - `number` - phone number to which message will be send - must include country code (ex: 420123123123)\n - `text` - text which will be send\n - `timestamp` - `0` for message to be sent right away or [unix timestamp](https://en.wikipedia.org/wiki/Unix_time)/[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) for message to be sent at a specific time\n - `button_caption` - Caption for the [Button object](https://help.bulkgate.com/docs/en/http-advanced-promotional-v2.html#button-object-parameters-table) to be sent with a viber message. Can be null for sms. button_url must also be provided\n - `button_url` - URL for the [Button object](https://help.bulkgate.com/docs/en/http-advanced-promotional-v2.html#button-object-parameters-table) to be sent with a viber message. Can be null for sms. button_caption must also be provided\n \n## Credentials\n\nCredentials used for authentification:\n\n - `Application ID`\n - `Application token`\n\nCan be created as per [here](https://help.bulkgate.com/docs/en/api-administration.html).\n\n## Settings\n\nAdditional settings for message sending:\n\n - `Message type` - can be either `Transactional` or `Promotional` depending on the purpose of the message. Be aware that as per [documentation](https://help.bulkgate.com/docs/en/difference-promotional-transactional-sms.html#transactional-sms) **it is *strictly prohibited* to exploit transactional SMS for promotional/marketing uses. It must be used for notification purposes only - as an SMS notification.** \n - `Sender ID` - [sender ID profile](https://help.bulkgate.com/docs/en/sender-id-profile.html)\n - `Sending Channel` - Determines which channels will be used for sending the message: \"viber\" for viber only, \"sms\" for sms only, \"viber_sms\" for viber and sms as backup\n - `Viber sender` - Sender name which will be shown in `viber` as the sender of a message (this field is mandatory if `send_options` is `viber_sms` or `viber`\n - `SMS Unicode` - If set to true, messages via sms will be sent in unicode (characters with diacritics will be sent properly) .\n - `Duplicates Check` - Select 'same_text' to prevent sending duplicate messages to the same phone number. Disable the possibility to send a message with either the same or different text to the same number with 'same_number'. If 'null' no duplicates will be removed.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":140,"uri":"docker/gymbeam.app-bulkgate","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/gymbeam.app-bulkgate","name":"developer-portal-v2/gymbeam.app-bulkgate","tag":"0.1.6","options":{},"digest":"sha256:1e825d2ebaca72b8ee85d0f04576d545311a0e80c294ef10efcc408f3537af5e"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/gymbeam.app-bulkgate/32/1659929191170.png","64":"https://ui.keboola-assets.com/developer-portal/icons/gymbeam.app-bulkgate/64/1659929191170.png","128":null}},{"id":"kds.ex-ca-rally","vendor":{"id":"kds","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":18,"name":"CA Agile Central","type":"extractor","shortDescription":"Extracts work-item data from CA Agile Central.","longDescription":null,"licenseUrl":null,"documentationUrl":null,"sourceCodeUrl":null,"requiredMemory":"256m","processTimeout":14400,"features":["container-root-user"],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericTemplatesUI"],"imageParameters":{"default_bucket":true},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["config"],"properties":{"config":{"type":"object","title":"Authorization","properties":{"#zsessionid":{"type":"string","title":"API Key","format":"password","required":true,"minLength":1,"description":""}}}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds.ex-ca-rally","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/ex-generic-v2","name":"developer-portal-v2/ex-generic-v2","tag":"latest","options":{"region":"us-east-1"},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds.ex-ca-rally/32/1576595148469.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds.ex-ca-rally/64/1576595148469.png","128":null}},{"id":"kds-team.ex-ceps","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":193,"name":"CEPS","type":"extractor","shortDescription":"Extracts data from the CEPS API for selected endpoints.","longDescription":"This component enables you to extract publicly available data from the Ceps API.","licenseUrl":"https://github.com/keboola/component-ceps/blob/main/LICENSE.md","documentationUrl":"https://help.keboola.com/components/extractors/other/ceps/","sourceCodeUrl":"https://github.com/keboola/component-ceps","requiredMemory":"512m","processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"CEPS data source Configuration","required":[],"properties":{"date_to":{"type":"string","title":"Date to","description":"End date of the data to be fetched eg. now or exact date 2021-02-01","propertyOrder":20},"date_from":{"type":"string","title":"Date from","description":"Start date of the data to be fetched eg. 3 days ago or exact date 2021-01-01","propertyOrder":10},"endpoints":{"type":"array","items":{"type":"object","title":"Endpoint","properties":{"granularity":{"enum":["DY","HR","QH","MI","None"],"type":"string","title":"Granularity","default":"HR"},"endpoint_name":{"enum":["AktualniSystemovaOdchylkaCR","CrossborderPowerFlows","Generation","GenerationPlan","GenerationRES","Load","OdhadovanaCenaOdchylky","OfferPrices"],"type":"string","title":"Endpoint name","default":"GenerationPlan"}},"propertyOrder":30},"title":"Endpoints","format":"table","default":[{"granularity":"MI","endpoint_name":"CrossborderPowerFlows"},{"granularity":"QH","endpoint_name":"Generation"},{"granularity":"HR","endpoint_name":"GenerationPlan"},{"granularity":"MI","endpoint_name":"GenerationRES"},{"granularity":"MI","endpoint_name":"Load"},{"granularity":"None","endpoint_name":"OdhadovanaCenaOdchylky"},{"granularity":"None","endpoint_name":"OfferPrices"}],"uniqueItems":true}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":193,"uri":"docker/kds-team.ex-ceps","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-ceps","name":"developer-portal-v2/kds-team.ex-ceps","tag":"0.1.6","options":{},"digest":"sha256:96b32072663d508b471fd8d5ea54e68ad92dc809c755fd49d7768364027bd2c4"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-ceps/32/1645885230614.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-ceps/64/1645885230614.png","128":null}},{"id":"kds-team.ex-chartmogul","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":348,"name":"ChartMogul","type":"extractor","shortDescription":"Extracts ChartMogul subscription analytics data.","longDescription":"ChartMogul is the leading subscription analytics platform. It provides subscription analytics and revenue recognition solutions to subscription businesses so they can measure, understand, and grow their recurring revenue.\n\nThis connector fetches subscription data from the ChartMogul API (activities, customers, subscriptions, invoices, and key metrics for deeper insights).","licenseUrl":"https://github.com/keboola/component-chartmogul/blob/main/LICENSE.md","documentationUrl":"https://help.keboola.com/components/extractors/marketing-sales/chartmogul/","sourceCodeUrl":"https://github.com/keboola/component-chartmogul","requiredMemory":null,"processTimeout":28800,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"easy","category":null,"categories":["Analytics"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-resetState","genericDockerUI-rows"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Authentication","required":["#api_token"],"properties":{"#api_token":{"type":"string","title":"API Token","format":"password","propertyOrder":100}}},"configurationRowSchema":{"type":"object","title":"Row configuration","required":["endpoints","incrementalLoad"],"properties":{"endpoints":{"enum":["activities","customers","customers_subscriptions","invoices","key_metrics"],"type":"string","title":"Endpoint","default":"customers","description":"[customers] will be included in the extraction in [customers_subscriptions].","propertyOrder":100},"incrementalLoad":{"type":"boolean","title":"Incremental load","format":"checkbox","propertyOrder":200},"additional_params_activities":{"type":"object","title":"Additional query parameters","options":{"dependencies":{"endpoints":"activities"}},"required":["start-date","end-date"],"properties":{"end-date":{"type":"string","title":"End date","description":"[Optional] — Example: 2021-01-01, 1 day ago, 2 weeks ago","propertyOrder":600},"start-date":{"type":"string","title":"Start date","description":"[Optional] — Example: 2021-01-01, 1 day ago, 2 weeks ago","propertyOrder":500}},"propertyOrder":400},"additional_params_key_metrics":{"type":"object","title":"Additional query parameters","options":{"dependencies":{"endpoints":"key_metrics"}},"required":["start-date","end-date","interval","geo","plans"],"properties":{"geo":{"type":"string","title":"Geo","description":"[Optional] A comma-separated list of ISO 3166-1 Alpha-2 formatted country codes to filter the results (e.g., US, GB, DE).","propertyOrder":800},"plans":{"type":"string","title":"Plans","description":"[Optional] A comma-separated list of plan names (as configured in your ChartMogul account) to filter the results. Note: Spaces must be URL-encoded and the names are case-sensitive (e.g., Silver%20plan,Gold%20plan,Enterprise%20plan).","propertyOrder":900},"end-date":{"type":"string","title":"End date","description":"[Required] — Example: 2021-01-01, 1 day ago, 2 weeks ago","propertyOrder":600},"interval":{"enum":["month","week","day"],"type":"string","title":"Interval","default":"month","propertyOrder":700},"start-date":{"type":"string","title":"Start date","description":"[Required] — Example: 2021-01-01, 1 day ago, 2 weeks ago","propertyOrder":500}},"propertyOrder":400}}},"createConfigurationRowSchema":null,"configurationDescription":"### Authorization\n\nTo run this component, API keys are required. API keys are required to be `Active` and contains `Read` as a minimum access level.\n\n#### Obtaining API Tokens\n    Follow path below in your ChartMogul web app:\n      1. [Profile] - bottom left corner of the platform\n      2. [Admin]\n      3. Click on the user you wish to authorize as\n      4. API Keys\n\n### Row configuration\n  - Endpoint - [REQ]\n      1. `activities`\n      2. `customers`\n      3. `customers_subscriptions` - endpoint `customers` extraction will be inclusive with this endpoint\n      4. `invoices`\n      5. `key_metrics`\n  - Incremental Load\n  - Start date - [REQ for `key_metrics`][OPT for `activities`] \n      - Start date of the request. Eg: 2021-01-01, 1 day ago, 2 weeks ago\n  - End date - [REQ for `key_metrics`][OPT for `activities`] \n      - End date of the request. Eg: 2021-01-01, 1 day ago, 2 weeks ago\n      - If End Date is specified for `activities`, Start Date will be required.\n  - Interval - [REQ for `key_metrics`]\n      1. day\n      2. week\n      3. month\n  - Geo [OPT for `key_metrics`]\n      - A comma-separated list of ISO 3166-1 Alpha-2 formatted country codes to filter the results to, e.g. US,GB,DE\n  - Plans [OPT for `key_metrics`]\n      - A comma-separated list of plan names (as configured in your ChartMogul account) to filter the results to. Note that spaces must be url-encoded and the names are case-sensitive, e.g. Silver%20plan,Gold%20plan,Enterprise%20plan.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.ex-chartmogul","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-chartmogul","name":"developer-portal-v2/kds-team.ex-chartmogul","tag":"1.1.1","options":{},"digest":"sha256:216585d969f04a1d5beea25b28ee1b1522f414fe9b8340b0b32dea29dac8bc13"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-chartmogul/32/1639600535439.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-chartmogul/64/1639600535439.png","128":null}},{"id":"kds-team.ex-cj-affiliate","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":160,"name":"CJ Affiliate","type":"extractor","shortDescription":"Extracts CJ Affiliate commissions for advertisers or publishers.","longDescription":"# CJ Affiliate Extractor\n\nCJ Affiliate is an online advertising company operating in the affiliate marketing industry, which operates worldwide. The extractor allows to connect to CJ's API and download commissions for specified advertisers or publishers.\n\nThe extractor utilizes [Commission Detail API](https://developers.cj.com/graphql/reference/Commission%20Detail) to query and download all commissions within specified time window. Both `publisherCommissions` and `advertiserCommissions` endpoints are available in the extractor.\n\n#### Pre-requisities\n\nTo successfully run the extractor and download commissions, the following is required:\n- personal access token,\n- access to either `publisherCommissions` or `advertiserCommissions` endpoint.\n\nThe personal access token can be created in the [CJ's developer portal](https://developers.cj.com/account/personal-access-tokens).","licenseUrl":"https://github.com/keboola/component-cj-affiliate/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-cj-affiliate/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-cj-affiliate","requiredMemory":"1g","processTimeout":7200,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Advertisement"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["#apiToken","advOrPub","entityId","recordsQuery","dateFrom","dateTo","incremental"],"properties":{"dateTo":{"type":"string","title":"End Date","default":"now","description":"Upper boundary of the date window, for which the commissions should be downloaded.</br></br>Accepted values:<ul><li><font color='red'>now</font>, <font color='red'>today</font> or blank - sets parameter to today's date,</li><li><font color='red'>yesterday</font> - sets parameter to yesterday's date,</li><li><font color='red'>X day(s) ago</font> - sets parameter to relative date from today,</li><li>absolute date in format <font color='red'>YYYY-MM-DD</font>.","propertyOrder":500},"advOrPub":{"enum":["advertiser","publisher"],"type":"string","title":"Advertiser or Publisher","default":"advertiser","description":"Choose whether to use \"advertiserCommissions\" endpoint or \"publisherCommissions\" endpoint.","uniqueItems":true,"propertyOrder":200},"dateFrom":{"type":"string","title":"Start Date","default":"7 days ago","description":"Lower boundary of the date window, for which the commissions should be downloaded.</br></br>Accepted values:<ul><li><font color='red'>yesterday</font> - sets parameter to yesterday's date,</li><li><font color='red'>X day(s) ago</font> - sets parameter to relative date from today,</li><li>absolute date in format <font color='red'>YYYY-MM-DD</font>.","propertyOrder":400},"entityId":{"type":"array","items":{"type":"string","title":"ID"},"title":"Entity IDs","format":"table","description":"IDs of entities, for which to download commissions. Un-authorized entities are ignored.","propertyOrder":300},"#apiToken":{"type":"string","title":"Personal Access Token","format":"password","description":"The personal access token authorizing requests to the API. A token can be created in <a href='https://developers.cj.com/account/personal-access-tokens'>CJ Developer Portal</a>.","propertyOrder":100},"dateField":{"enum":["EventDate","LockingDate","PostingDate"],"type":"string","title":"Date window field","default":"EventDate","description":"Select one of the available filtering arguments. Refer to <a href='https://developers.cj.com/graphql/reference/Commission%20Detail'>CJ's Developer portal</a>","propertyOrder":550},"incremental":{"type":"boolean","title":"Incremental Load","default":true,"description":"If set to <font color='red'>true</font>, incremental load will be utilized. Otherwise, full load to storage is performed.","propertyOrder":600},"recordsQuery":{"type":"string","title":"Query","format":"textarea","default":"commissionId advertiserId advCommissionAmountAdvCurrency items { sku } verticalAttributes {age}","options":{"input_height":"100px"},"description":"A valid records query that will be sent to CJ's API. Refer to <a href='https://developers.cj.com/graphql/reference/Commission%20Detail'>CJ's Developer portal</a> for valid query fields and correct specification.","propertyOrder":700}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"The API returns commissions that satisfy a query sent to the API. The **full** query sent to the API might have the following form:\n\n```\n{ publisherCommissions(forPublishers: [\"999\"], sinceEventDate:\"2018-08-08T00:00:00Z\",beforeEventDate:\"2018-08-09T00:00:00Z\"){count payloadComplete records {actionTrackerName websiteName advertiserName postingDate pubCommissionAmountUsd items { quantity perItemSaleAmountPubCurrency totalCommissionPubCurrency }  }  } }\n```\n\nbut for simplicity reasons, the user is not required to provide full query, but rather configure a set of parameters, while the component takes care of the rest and builds the required query.\n\n### Parameters\n\nIn the following section, each parameter will be dissected one-by-one and its role in the query explained. A sample version of the configuration file can be found [here](https://bitbucket.org/kds_consulting_team/kds-team.ex-cj-affiliate/src/master/component_config/sample-config/config.json).\n\n##### Note on date ranges\n\nBy design, the CJ's API only accepts date ranges with a maximum of 31 days difference. The extractor automatically splits the date into intervals of maximum 10 days and queries the data for each of the 10-day ranges. A 10 day interval was chosen as an optimal trade-off between number of requests and long query times for longer date ranges.\n\n##### Notes on pagination\n\nAll of responses by CJ's API return at most 10000 responses on a single page. A pagination is automatically handled by the extractor using the `sinceCommissionId` cursor parameter. Additionally, meta parameters `payloadComplete` and `maxCommissionId` are automatically added to the query for pagination purposes.\n\n#### Personal Access Token (`#apiToken`)\n\nThe personal access token can be created in the [CJ's developer portal](https://developers.cj.com/account/personal-access-tokens) and provides access to one of the endpoints in CJ's API. The token is used to authenticate all requests. Each request is authenticated by appending personal access token in the `Authorization` header.\n\n#### Advertiser or Publisher (`advOrPub`)\n\nA string marking, whether to use `publisherCommissions` or `advertiserCommissions` endpoint. The default value is `advertiserCommissions`.\n\nDepending on the value chosen, the first part of the query will differ. If `advertiser` is selected, the query will have a form of `{advertiserCommissions (forAdvertisers: ...) ...}`, otherwise it will take shape of `{publisherCommissions (forPublishers: ...) ...}`.\n\n#### Entity IDs (`entityId`)\n\nAn array of entities for which the commissions should be downloaded. Only the authorized entities are downloaded (design of CJ's API). If the account used to authorize the request has no access to any of the entities specified, the component will fail.\n\nIrrespectful of the endpoint chosen, the array of entities is filled directly after endpoint specification. The query thus might look like this:\n\n```\n{advertiserCommissions( forAdvertisers: [\"12345678\",\"23456789\"] ...) ...}\n```\n\n#### Start Date (`dateFrom`)\n\nA date, since when the commissions will be downloaded. The extractor is using the `sinceEventDate` field to query only the commissions satisfying the condition. Accepted values for the parameter are:\n\n- `yesterday`,\n- `X days ago` where `X` is a positive integer,\n- or, an absolute date in format `YYYY-MM-DD`.\n\nThe parameter will be added to the query after the entities are specified, hence the query takes form of:\n\n```\n{advertiserCommissions( forAdvertisers: [\"12345678\",\"23456789\"] sinceEventDate: \"2019-01-01T00:00:00Z\" ...) ...}\n```\n\n#### End Date (`dateTo`)\n\nSimilar to parameter `dateFrom`, the `dateTo` parameter defines a window, for which the commissions are downloaded. The parameter uses field `beforeEventDate` to filter the commissions. Accepted values are:\n\n- `today` or `now`,\n- `yesterday`,\n- `X days ago` where `X` is a positive integer,\n- or, an absolute date in format `YYYY-MM-DD`.\n\nIf left blank, the parameter defaults to `now`. Adding this parameter to the query completes the endpoint function specification. The query now has a form of:\n\n```\n{advertiserCommissions( forAdvertisers: [\"12345678\",\"23456789\"] sinceEventDate: \"2019-01-01T00:00:00Z\" beforeEventDate: \"2019-01-02T00:00:00Z\") ...}\n```\n\n#### Incremental Load (`incremental`)\n\nA boolean marking, whether incremental load to storage should be utilized. The parameter value does not affect the query or its shape, but rather effects load type used when exporting tables to Keboola Storage.\n\n#### Query (`recordsQuery`)\n\nA query used to specify fields to be returned by the API. The full list of available fields for both endpoints can be found in [the API's documentation](https://developers.cj.com/graphql/reference/Commission%20Detail). The query can be space, comma, dot or new-line separated string of fields and should represent the query used in `records` query field, which defines the response.\n\nQueries can be split into 3 parts:\n\n- main part,\n- items part,\n- vertical attributes part.\n\nIf specified, the items part of the query is outputted into a separate table called `commissions-items`. Main and vertical attributes parts are together bundled and provided in `commissions` table.\n\nIn addittion, if field `commissionId` is not specified in the query, it will automatically be added as it's used as a primary key for the `commissions` table. Similarly, if not specified, field `commissionItemId` is added for table `commissions-items`.\n\nAn example input can have the following form:\n\n```\ncommissionId advertiserId saleAmountAdvCurrency items {sku} verticalAttributes{age, city, campaignId}\n```\n\nand fills in the last piece of puzzle into the query sent to the API:\n\n```\n{advertiserCommissions( forAdvertisers: [\"12345678\",\"23456789\"] sinceEventDate: \"2019-01-01T00:00:00Z\" beforeEventDate: \"2019-01-02T00:00:00Z\") {payloadComplete maxCommissionId records {\n    commissionId advertiserId saleAmountAdvCurrency items { commissionItemId sku} verticalAttributes{age, city, campaignId}\n} } }\n```\n\nNotice the added `commissionItemId` field in the items query. The query inputted must not be encapsulated by curly braces (`{}`) as it's already inputted into `records {}`, which itself is bounded by these. The query will fail otherwise.\n\n**Correct**:\n\n```\ncommissionId advertiserId saleAmountAdvCurrency items { commissionItemId sku} verticalAttributes{age, city, campaignId}\n```\n\n**Incorrect**:\n\n```\n{ commissionId advertiserId saleAmountAdvCurrency items { commissionItemId sku} verticalAttributes{age, city, campaignId} }\n```","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":160,"uri":"docker/kds-team.ex-cj-affiliate","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-cj-affiliate","name":"developer-portal-v2/kds-team.ex-cj-affiliate","tag":"0.2.0","options":{},"digest":"sha256:744df4727f20021b634377cc0fc77da71613fcc649b578bb917cfb90d2b5f4bd"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-cj-affiliate/32/1576595246323.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-cj-affiliate/64/1576595246323.png","128":null}},{"id":"cleveranalytics.ex-clevermaps-source","vendor":{"id":"cleveranalytics","name":"CleverMaps, a.s.","address":"Vídeňská 101/119\nBrno\nCzech Republic","email":"data.dev@clevermaps.io","type":"other"},"version":58,"name":"CleverMaps","type":"extractor","shortDescription":"CleverMaps is a location intelligence platform for the advanced analytical maps and dashboards.","longDescription":"This component exports data from the CleverMaps Platform. The export is based on Query definition which can contain properties, metrics and filters from the corresponding CleverMaps project.\n\nFollowing rules apply:\n* Properties can be defined across many datasets. \n* Metrics are defined by their names.\n* Filters can be defined across many datasets.\n* Relationship has to exist between datasets.\n\nFurther information about CleverMaps projects can be found here:\nhttps://clevermaps-internal.atlassian.net/wiki/spaces/CDD/overview","licenseUrl":"https://developer.clevermaps.io/7536885/License","documentationUrl":"https://clevermaps-internal.atlassian.net/wiki/spaces/CDD/pages/1727496357/Extractor+Keboola","sourceCodeUrl":null,"requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableOutput"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"CleverMaps Source parameters","required":["#access_token","project_id"],"properties":{"query":{"type":"object","title":"Query definition","properties":{"metrics":{"type":"array","items":{"type":"string","title":"Metric","description":"Metric name"},"title":"Metrics","description":"Metrics to be exported","propertyOrder":2},"filter_by":{"type":"array","items":{"type":"object","title":"Filter","properties":{"value":{"type":"string","title":"Value","description":"Value or values to select.","propertyOrder":3},"operator":{"enum":["eq","ne","in","lt","lte","gt","gte"],"type":"string","title":"Operator","description":"Operator to apply between property and value.","propertyOrder":2},"property":{"type":"string","title":"Property","description":"Fully qualified name of the dataset property to apply the filter (e.g. branches_dwh.type)","propertyOrder":1}},"description":"Filter which will be applied to an export. You can define one or more filters."},"title":"Filters","description":"Filters to apply. You can combine properties from one or more datasets (the relation has to exists)","propertyOrder":3},"properties":{"type":"array","items":{"type":"string","title":"Property","description":"Fully qualified name of the dataset property to be exported (e.g. branches_dwh.id)"},"title":"Properties","description":"Properties to be exported. You can combine properties from one or more datasets (the relation has to exists)","propertyOrder":1}},"description":"Query definition which will be exported from the CleverMaps."},"server":{"type":"string","title":"Server URL","default":"https://secure.clevermaps.io","description":"Server URL of the CleverMaps instance. Set this parameter in case you need to overwrite default value.","propertyOrder":3},"project_id":{"type":"string","title":"Project ID","maxLength":16,"minLength":16,"description":"ID of a CleverMaps project.","propertyOrder":2},"#access_token":{"type":"string","title":"Access Token","minLength":1,"description":"Access token for authentication.","propertyOrder":1}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":58,"uri":"docker/cleveranalytics.ex-clevermaps-source","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/cleveranalytics.ex-clevermaps-source","name":"developer-portal-v2/cleveranalytics.ex-clevermaps-source","tag":"0.0.36","options":{},"digest":"sha256:bacc918ad4f145eada62d11b38a1869588ebb8dfd7264f8552756f19d869a227"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/cleveranalytics.ex-clevermaps-source/32/1665493483719.png","64":"https://ui.keboola-assets.com/developer-portal/icons/cleveranalytics.ex-clevermaps-source/64/1665493483719.png","128":null}},{"id":"cleveranalytics.wr-clevermaps-writer","vendor":{"id":"cleveranalytics","name":"CleverMaps, a.s.","address":"Vídeňská 101/119\nBrno\nCzech Republic","email":"data.dev@clevermaps.io","type":"other"},"version":56,"name":"CleverMaps","type":"writer","shortDescription":"CleverMaps is a location intelligence platform for the advanced analytical maps and dashboards.","longDescription":"This component loads data into the CleverMaps platform from the CSV files. You need to have an existing CleverMaps project with defined data model.\n\nThe format of the input table must match the target CleverMaps dataset. This includes the number of columns, their order and data types. It is possible to load one or more files in one configuration. ","licenseUrl":"https://developer.clevermaps.io/7536885/License","documentationUrl":"https://clevermaps-internal.atlassian.net/wiki/spaces/CDD/pages/1731231774/Writer+Keboola","sourceCodeUrl":null,"requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Writer parameters","required":["#access_token","project_id"],"properties":{"server":{"type":"string","title":"Server URL","default":"https://secure.clevermaps.io","description":"Server URL of the CleverMaps instance. Set this parameter in case you need to overwrite default value.","propertyOrder":3},"datasets":{"type":"array","items":{"type":"object","title":"Dataset","properties":{"main_options":{"type":"object","title":"Main options","format":"grid","required":["input_csv","dataset"],"properties":{"dataset":{"type":"string","title":"Destination dataset","minLength":1,"description":"Name of the dataset to which the input table will be loaded (e.g. points_dwh)","propertyOrder":2},"input_csv":{"type":"string","title":"Input file","minLength":1,"description":"Name of the input CSV file which will be loaded into the destination dataset (e.g. points.csv)","propertyOrder":1}},"propertyOrder":2},"advanced_options":{"type":"object","title":"Advanced options","options":{"dependencies":{"advanced_options_enabled":true}},"properties":{"mode":{"enum":["full","incremental"],"type":"string","title":"Load mode","description":"Data load mode (full - reloads the whole table, incremental - appends data to the end of the table).","propertyOrder":1},"csv_null":{"type":"string","title":"Null value to replace","description":"Specifies which value should be replaced with null. For example to replace an empty string define single or double quotes.","propertyOrder":2},"csv_force_null":{"type":"string","title":"Null columns to replace","description":"Specifies which columns should enforce the null replacement. Values need to be separated with commas in case of more columns.","propertyOrder":3}},"propertyOrder":4},"advanced_options_enabled":{"type":"boolean","title":"Advanced options","format":"checkbox","default":false,"propertyOrder":3}}},"title":"Datasets","minLength":1,"propertyOrder":4},"project_id":{"type":"string","title":"Project ID","maxLength":16,"minLength":16,"description":"ID of a CleverMaps project.","propertyOrder":2},"#access_token":{"type":"string","title":"Access Token","minLength":1,"description":"Access token for authentication of CleverMaps Writer.","propertyOrder":1}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":56,"uri":"docker/cleveranalytics.wr-clevermaps-writer","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/cleveranalytics.wr-clevermaps-writer","name":"developer-portal-v2/cleveranalytics.wr-clevermaps-writer","tag":"2.0.8-RELEASE","options":{},"digest":"sha256:f1ca2ed6fdca438b8a66cfe8df9243f62fe4893d4d57ba7226c247e68a6a0502"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/cleveranalytics.wr-clevermaps-writer/32/1671123348576.png","64":"https://ui.keboola-assets.com/developer-portal/icons/cleveranalytics.wr-clevermaps-writer/64/1671123348576.png","128":"https://ui.keboola-assets.com/developer-portal/icons/cleveranalytics.wr-clevermaps-writer/128/1671123348576.png"}},{"id":"cleveranalytics.can-areamapper","vendor":{"id":"cleveranalytics","name":"CleverMaps, a.s.","address":"Vídeňská 101/119\nBrno\nCzech Republic","email":"data.dev@clevermaps.io","type":"other"},"version":165,"name":"CleverMaps AreaMapper","type":"application","shortDescription":"AreaMapper can help you prepare your bussines data with point coordinates for CleverMaps platform. AreaMapper computes spatial join between your point data and areas data. Then you can work with customers data in context of city districts and so on.","longDescription":"[AreaMapper](https://developer.clevermaps.io/7537271/AreaMapper+Keboola) is a tool which can help you prepare your bussines data with point coordinates for use in the CleverMaps platform. AreaMapper computes spatial join between your point data (e.g. customers) and areas data (e.g. city districts). Then you can work with data of your customers in context of city districts, cities, counties and so on.\n\nDo you need some CleverMaps project? Contact us on [info@clevermaps.io](mailto:info@clevermaps.io) and we will create a project for you. \n\n","licenseUrl":"https://developer.clevermaps.io/7536885/License","documentationUrl":"https://developer.clevermaps.io/7537271/AreaMapper+Keboola","sourceCodeUrl":null,"requiredMemory":"2024m","processTimeout":14400,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput","genericDockerUI-tableOutput"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"AreaMapper parameters","required":["input_points","input_areas","output"],"properties":{"output":{"type":"object","title":"Output parameters","required":["not_matched_value"],"properties":{"not_matched_value":{"type":"string","title":"Default value of area primary key for not matched rows.","default":"0","description":"","propertyOrder":1}},"description":"Output CSV file name is automatically taken from output mapping (just create new empty table output there). Here you can set some additional output parameters.","propertyOrder":3},"input_areas":{"type":"object","title":"Input areas parameters","required":["csv_type","dimension_type"],"properties":{"csv_type":{"type":"object","title":"Parameters of your own area data","required":["filename","geom_fieldname","primary_key_fieldname","join_fieldname"],"properties":{"filename":{"type":"string","title":"CSV file name of your own area data from input mapping","default":"","description":"Specifiy file path (e.g. areas.csv).","propertyOrder":1},"geom_fieldname":{"type":"string","title":"Name of the field which contains area geometry in WKT format","description":"","propertyOrder":2},"join_fieldname":{"type":"string","title":"Name of the field with join key (optional).","description":"If specified than only points and areas with same values of the join field are compared.","propertyOrder":4},"primary_key_fieldname":{"type":"string","title":"Name of the field with primary key","description":"Name of the area primary key field name which will be mapped to points.","propertyOrder":3}},"propertyOrder":2},"dimension_type":{"type":"object","title":"Parameters of data dimension","required":["filename"],"properties":{"filename":{"enum":["","Neighborhoods administrative units (CZ)","Neighborhoods administrative units 2021 (CZ)","Neighborhoods administrative units (SK)","Obwod administrative units (PL)","Settlements administrative units (HU)","Zipcodes (US)","LAU - Local Administrative Units (EU)","Hexagonal grid level 9 (CZ)","Postcodes (CZ)"],"type":"string","title":"Data dimension name","description":"","propertyOrder":1}},"propertyOrder":1}},"description":"You can map points to already prepared area data dimensions (e.g. administrative units) or to your own areas. Just select data dimension name (Parameters of data dimension > Data dimension name) OR specify parameters in section Parameters of you own area data.","propertyOrder":2},"input_points":{"type":"object","title":"Input points parameters","required":["filename","geom_fieldname_x","geom_fieldname_y","join_fieldname"],"properties":{"filename":{"type":"string","title":"CSV file name of your bussines point data from input mapping","default":"","description":"E.g. points.csv","propertyOrder":1},"join_fieldname":{"type":"string","title":"Name of the field with join key (optional).","description":"If specified than only points and areas with same values of the join field are compared.","propertyOrder":4},"geom_fieldname_x":{"type":"string","title":"Name of the field with longitude coordinates.","description":"E.g. lng","propertyOrder":2},"geom_fieldname_y":{"type":"string","title":"Name of the field with latitude coordinates.","description":"E.g. lat","propertyOrder":3}},"propertyOrder":1}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/cleveranalytics.can-areamapper","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/cleveranalytics.can-areamapper","name":"developer-portal-v2/cleveranalytics.can-areamapper","tag":"0.0.98","options":{},"digest":"sha256:eedbdfc517ac6f92eed8f06ffe4e47195c12aa365c0e1431e066724c3d931381"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/cleveranalytics.can-areamapper/32/1623157832593.png","64":"https://ui.keboola-assets.com/developer-portal/icons/cleveranalytics.can-areamapper/64/1623157832593.png","128":null}},{"id":"cleveranalytics.app-can-mapbox-utils","vendor":{"id":"cleveranalytics","name":"CleverMaps, a.s.","address":"Vídeňská 101/119\nBrno\nCzech Republic","email":"data.dev@clevermaps.io","type":"other"},"version":91,"name":"CleverMaps MapboxUtils","type":"application","shortDescription":"This application lets you easily create or update vector tilesets on Mapbox from your CSV files. It can be especially handy if you need to periodically update some vector tileset (e.g. every day updates). It is alternative for Mapbox Studio where you can do almost same things manually. ","longDescription":"This application lets you easily create or update vector tilesets on Mapbox from your CSV files. It can be especially handy if you need to periodically update some vector tileset (e.g. every day updates). It is alternative for Mapbox Studio where you can do almost same things manually. Under the hood the tool is using Mapbox Python API, ogr2ogr and tippecanoe utilites. Just pass your CSV file with WKT geometries, specify some parameters and you are done. \n\nPlease check documentation link for configuration examples.\n\nOr you can contact us at support@clevermaps.io.","licenseUrl":"https://developer.clevermaps.io/7536885/License","documentationUrl":"https://developer.clevermaps.io/7537166/MapboxUtils+Keboola","sourceCodeUrl":null,"requiredMemory":"512m","processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":null,"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":91,"uri":"docker/cleveranalytics.app-can-mapbox-utils","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/cleveranalytics.app-can-mapbox-utils","name":"developer-portal-v2/cleveranalytics.app-can-mapbox-utils","tag":"0.1.0","options":{},"digest":"sha256:ca0144b3541a5ff54335a99a4c9e1e5f816c033c419a2472a4b018980e300620"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/cleveranalytics.app-can-mapbox-utils/32/1623157837037.png","64":"https://ui.keboola-assets.com/developer-portal/icons/cleveranalytics.app-can-mapbox-utils/64/1623157837037.png","128":null}},{"id":"cleveranalytics.app-clevermaps-projectvalidator","vendor":{"id":"cleveranalytics","name":"CleverMaps, a.s.","address":"Vídeňská 101/119\nBrno\nCzech Republic","email":"data.dev@clevermaps.io","type":"other"},"version":62,"name":"CleverMaps ProjectValidator","type":"application","shortDescription":"CleverMaps is a location intelligence platform for the advanced analytical maps and dashboards.","longDescription":"This component helps you to automatically validate the project in the CleverMaps platform and ensure that nothing was broken in the data or metadata during the updates. Validation is configured with the set of checks. \n\nCurrently you can validate following scenarios:\n* All metrics are computable (real value is returned)\n* Metric value falls into the expected range\n* Column has expected distinct values (e.g. fixed string values which are used further in analysis)\n* Metric is computable on expected dimensions\n\nFurther information about CleverMaps projects can be found here: https://clevermaps-internal.atlassian.net/wiki/spaces/CDD/overview","licenseUrl":"https://developer.clevermaps.io/7536885/License","documentationUrl":"https://clevermaps-internal.atlassian.net/wiki/spaces/CDD/pages/1727463527/ProjectValidator+Keboola","sourceCodeUrl":null,"requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableOutput"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"CleverMaps ProjectValidator configuration","required":["#access_token","project_id"],"properties":{"server":{"type":"string","title":"Server URL","default":"https://secure.clevermaps.io","description":"Server URL of the CleverMaps instance. Set this parameter in case you need to overwrite default value.","propertyOrder":3},"project_id":{"type":"string","title":"Project ID","maxLength":16,"minLength":16,"description":"ID of a CleverMaps project.","propertyOrder":2},"validations":{"type":"object","title":"Validations","properties":{"property_values":{"type":"array","items":{"type":"object","title":"Property","format":"grid","properties":{"property_name":{"type":"string","title":"Property name","propertyOrder":1},"expected_values":{"type":"string","title":"Expected values (separated with comma)","propertyOrder":2}}},"title":"Property values","options":{"dependencies":{"validation_type":"property_values"}},"description":"Validates if the property contains values same as expected."},"validation_type":{"enum":["metrics_all","metrics_expected","property_values","available_datasets"],"type":"string","title":"Validation type","options":{"enum_titles":["All metrics","Expected metrics","Property values","Available datasets"]},"propertyOrder":4},"metrics_expected":{"type":"array","items":{"type":"object","title":"Validation","properties":{"metric":{"type":"string","title":"Metric name","propertyOrder":1},"result":{"type":"object","title":"Result expectation","format":"grid","properties":{"expected_to":{"type":"number","title":"Value expected to","propertyOrder":2},"expected_from":{"type":"number","title":"Value expected from","propertyOrder":1}}},"filter_by":{"type":"array","items":{"type":"object","title":"Filter","format":"grid-strict","properties":{"value":{"type":"string","title":"Value","options":{"grid_columns":4},"description":"Value or values to select.","propertyOrder":3},"operator":{"enum":["eq","ne","in","lt","lte","gt","gte"],"type":"string","title":"Operator","options":{"grid_columns":4},"description":"Operator to apply between property and value.","propertyOrder":2},"property":{"type":"string","title":"Property","options":{"grid_columns":4},"propertyOrder":1}}},"title":"Filters","description":"Filters to apply","propertyOrder":3},"properties":{"type":"array","items":{"type":"string","title":"Property"},"title":"Properties","propertyOrder":2}}},"title":"Metrics expected","options":{"dependencies":{"validation_type":"metrics_expected"}},"description":"Validates if the metric result falls into the expected range."},"available_datasets":{"type":"array","items":{"type":"object","title":"Metric","format":"grid","properties":{"metric_name":{"type":"string","title":"Metric name","propertyOrder":1},"expected_datasets":{"type":"string","title":"Expected datasets (separated with comma)","propertyOrder":2}}},"title":"Available datasets","options":{"dependencies":{"validation_type":"available_datasets"}},"description":"Validates if the metric is computable on the expected datasets."}}},"#access_token":{"type":"string","title":"Access Token","minLength":1,"description":"Access token for authentication of CleverMaps Writer.","propertyOrder":1}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":62,"uri":"docker/cleveranalytics.app-clevermaps-projectvalidator","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/cleveranalytics.app-clevermaps-projectvalidator","name":"developer-portal-v2/cleveranalytics.app-clevermaps-projectvalidator","tag":"0.0.36","options":{},"digest":"sha256:573ec497580d03779a0743481b42b61ed877a4104fe7653e9de44f9b173d4a3a"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/cleveranalytics.app-clevermaps-projectvalidator/32/1665493446123.png","64":"https://ui.keboola-assets.com/developer-portal/icons/cleveranalytics.app-clevermaps-projectvalidator/64/1665493446123.png","128":null}},{"id":"cleveranalytics.app-cleveranalytics-spatialutils","vendor":{"id":"cleveranalytics","name":"CleverMaps, a.s.","address":"Vídeňská 101/119\nBrno\nCzech Republic","email":"data.dev@clevermaps.io","type":"other"},"version":73,"name":"CleverMaps SpatialUtils","type":"application","shortDescription":"This application provides basic spatial functions for processing CSV files with geometries. You can calculate an intersection, buffer, bounding box, area, dissolve, difference, and so on. ","longDescription":"This application provides basic spatial functions for processing CSV files with geometries. You can calculate an intersection, buffer, bounding box, area, dissolve, difference, and so on. It is built on top of Spatialite, and thanks to that, it has a very low memory footprint and is even ready for large datasets (millions of rows). It could come in handy if you do not have PostGIS or similar tools available. \n\nThere are the following requirements for geometries:\n* Geometry has to be stored as a WKT string (https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry).\n* Coordinate system of geometry has to be 4326 (WGS84).\n* If your data is in any other format than CSV with WKT (e.g., Shapefile, GeoJSON), you can convert it using, for instance, ogr2ogr utility (https://gdal.org/drivers/vector/csv.html).\n\nAvailable spatial functions:\n* area\n  * computes the area in square meters for each polygon\n  * value for the function parameter in the configuration is area\n\n* bounding box\n  * computes x_min, x_max, y_min and y_max for each geometry\n  * value for the function parameter in the configuration is bbox\n\n* buffer\n  * computes the buffer around geometry (point, line, polygon) with the defined radius in meters\n  * value for the function parameter in the configuration is buffer\n\n* centroid\n  * computes the centroid point for each geometry\n  * value for the function parameter in the configuration is centroid\n\n* union\n  * computes the union of geometries based on the same values of an attribute key\n  * value for the function parameter in the configuration is union\n\n* intersection\n  * computes the intersection between geometries from two input tables\n  * value for the function parameter in the configuration is intersection\n\n* isvalid\n  * validates WKT geometries and writes the result into two new columns - isvalid and isvalid_reason\n  * value for the function parameter in the configuration is isvalid\n\nPlease check the documentation link for configuration examples. \n\nOr you can contact us at support@clevermaps.io.","licenseUrl":"https://developer.clevermaps.io/7536885/License","documentationUrl":"https://developer.clevermaps.io/7537162/SpatialUtils+Keboola","sourceCodeUrl":null,"requiredMemory":"512m","processTimeout":10800,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput","genericDockerUI-tableOutput","appInfo.dataOut"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":null,"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":73,"uri":"docker/cleveranalytics.app-cleveranalytics-spatialutils","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/cleveranalytics.app-cleveranalytics-spatialutils","name":"developer-portal-v2/cleveranalytics.app-cleveranalytics-spatialutils","tag":"0.0.41","options":{},"digest":"sha256:ba70d95b5eb54852b6de8236bb5e9025b8e1734f2ce1ea29ee18ff98f811952c"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/cleveranalytics.app-cleveranalytics-spatialutils/32/1623157841794.png","64":"https://ui.keboola-assets.com/developer-portal/icons/cleveranalytics.app-cleveranalytics-spatialutils/64/1623157841794.png","128":null}},{"id":"keboola.ex-db-impala","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":56,"name":"Cloudera Impala","type":"extractor","shortDescription":"Extracts data from Apache Impala via the Cloudera ODBC driver.","longDescription":"This component imports data from selected tables or results from arbitrary SQL queries from the [Cloudera Impala](https://www.cloudera.com/products/apache-hadoop/impala.html) database. It connects to the database, executes your queries, and stores the results in Keboola Connection Storage.\n\nTo configure this extractor, you need to \n\n- provide database credentials, and \n- have a connection to the database you want to read, preferably [secure](https://help.keboola.com/extractors/database/#connecting-to-database).\n\nIncremental load is optional.\n","licenseUrl":null,"documentationUrl":"https://help.keboola.com/extractors/database/sqldb/","sourceCodeUrl":"https://github.com/keboola/db-extractor-impala","requiredMemory":"256m","processTimeout":43200,"features":["container-root-user"],"encryption":true,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"easy","category":null,"categories":["Database"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":{},"configurationSchema":{"type":"object","$defs":{"credentials":{"type":"object","required":["host","port","database"],"properties":{"ssh":{"type":"object","properties":{"keys":{"type":"object","properties":{"public":{"type":"string"},"#private":{"type":"string"}}},"user":{"type":["string","null"]},"enabled":{"type":"boolean"},"sshHost":{"type":["string","null"]},"sshPort":{"type":["string","integer","null"],"default":22},"localPort":{"type":["string","integer"]},"remoteHost":{"type":"string"},"remotePort":{"type":["string","integer"]}}},"host":{"type":"string"},"port":{"type":["string","integer"]},"user":{"type":"string"},"database":{"type":"string"},"kerberos":{"type":"object","properties":{"#password":{"type":"string"},"principal":{"type":"string"}}},"#password":{"type":"string"},"auth_mech":{"type":["string","integer"]}}}},"title":"keboola.ex-db-impala — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","required":["db"],"properties":{"db":{"$ref":"#/$defs/credentials"}}},"configurationRowSchema":{"type":"object","title":"keboola.ex-db-impala — Row Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"id":{"type":["string","integer"]},"name":{"type":"string"},"query":{"type":"string"},"table":{"oneOf":[{"type":"string"},{"type":"object","properties":{"schema":{"type":"string"},"tableName":{"type":"string"}}}]},"tables":{"type":"array","options":{"async":{"label":"Re-load tables","action":"getTables"}}},"columns":{"type":"array","items":{"type":"string"}},"enabled":{"type":"boolean"},"primaryKey":{"type":"array","items":{"type":"string"}},"incremental":{"type":"boolean"},"outputTable":{"type":"string"},"advancedMode":{"type":"boolean"},"incrementalFetchingLimit":{"type":"integer"},"incrementalFetchingColumn":{"type":"string"}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":["testConnection"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-db-impala","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-db-impala","name":"developer-portal-v2/keboola.ex-db-impala","tag":"4.8.1","options":{},"digest":"sha256:abb625263e9a7026832b0bee7d7697175d88c5d95684a781c623bf3a1bc6c99f"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-db-impala/32/1623156753063.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-db-impala/64/1623156753063.png","128":null}},{"id":"keboola.wr-db-impala","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":34,"name":"Cloudera Impala","type":"writer","shortDescription":"Writes data to Cloudera Impala databases.","longDescription":"Write data to [Cloudera Impala](https://www.cloudera.com/products/apache-hadoop/impala.html) Database","licenseUrl":"https://github.com/keboola/db-writer-impala/blob/master/LICENSE","documentationUrl":"https://github.com/keboola/db-writer-impala/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/db-writer-impala","requiredMemory":"256m","processTimeout":86400,"features":["container-root-user","dev-branch-configuration-unsafe"],"encryption":true,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Database"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":{},"configurationSchema":{"type":"object","$defs":{"credentials":{"type":"object","required":["host","port","user","#password","database"],"properties":{"ssh":{"type":"object","properties":{"keys":{"type":"object","properties":{"public":{"type":"string"},"#private":{"type":"string"}}},"user":{"type":["string","null"]},"enabled":{"type":"boolean"},"sshHost":{"type":["string","null"]},"sshPort":{"type":["string","integer","null"],"default":22},"localPort":{"type":["string","integer"]},"remoteHost":{"type":"string"},"remotePort":{"type":["string","integer"]}}},"host":{"type":"string"},"port":{"type":["string","integer"],"default":21050},"user":{"type":"string"},"driver":{"type":"string"},"database":{"type":"string"},"#password":{"type":"string"},"auth_mech":{"type":["string","integer"]}}}},"title":"keboola.wr-db-impala — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","required":["db"],"properties":{"db":{"$ref":"#/$defs/credentials"}}},"configurationRowSchema":{"type":"object","title":"keboola.wr-db-impala — Row Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"items":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"size":{"type":["string","integer","null"]},"type":{"type":"string"},"dbName":{"type":"string"},"default":{"type":["string","null"]},"nullable":{"type":"boolean"}}}},"dbName":{"type":"string"},"tables":{"type":"array","options":{"async":{"label":"Re-load tables","action":"getTables"}}},"tableId":{"type":"string"},"primaryKey":{"type":"array","items":{"type":"string"}},"incremental":{"type":"boolean"}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":["testConnection"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.wr-db-impala","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-db-impala","name":"developer-portal-v2/keboola.wr-db-impala","tag":"1.3.0","options":{},"digest":"sha256:c7a419a7af4cde891c98654d27346fdea5e7fbe6f0c858446c18559105e454f1"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-db-impala/32/1623156827504.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-db-impala/64/1623156827504.png","128":null}},{"id":"keboola.ex-cnb-exchange-rates","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":169,"name":"CNB Exchange Rates","type":"extractor","shortDescription":"Extracts Czech National Bank daily currency exchange rates.","longDescription":"**Central Bank Exchange Rate Fixing**\n\nExchange rates for commonly traded currencies are published every working day after 2:30 p.m. and are valid for that working day and, \nwhere applicable, the following Saturday, Sunday, or public holiday.","licenseUrl":"https://github.com/keboola/component-cnb-exchange-rates/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/component-cnb-exchange-rates/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/component-cnb-exchange-rates","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","properties":{"currencies":{"type":"object","title":"Currency settings","required":["selected_currencies"],"properties":{"selected_currencies":{"type":"array","items":{"enum":["AUD","BRL","BGN","CNY","DKK","EUR","PHP","HKD","HRK","INR","IDR","ISK","ILS","JPY","ZAR","CAD","KRW","HUF","MYR","MXN","XDR","NOK","NZD","PLN","RON","SGD","SEK","CHF","THB","TRY","USD","GBP"],"type":"string"},"title":"Currencies selection","format":"select","minItems":1,"description":"Select the currencies you want to extract.","uniqueItems":true}},"propertyOrder":200},"destination":{"type":"object","title":"Destination","required":["file_name","incremental"],"properties":{"file_name":{"type":"string","title":"Table name","options":{"inputAttributes":{"placeholder":"your table name"}},"description":"Only alphanumeric characters, dashes, and underscores are allowed.</br>Your data will be extracted to in.c-cnb-extractor.{your table name}."},"incremental":{"enum":["full_load","incremental_load"],"type":"string","title":"Load Type","format":"checkbox","default":"full_load","options":{"enum_titles":["Full Load","Incremental Load"]},"description":"If a full load is used, the destination table will be overwritten with each run. If an incremental load is used, data will be imported into the destination table. For tables with a primary key, rows will be updated; for tables without a primary key, rows will be appended."}},"propertyOrder":100},"date_settings":{"type":"object","title":"Date settings","properties":{"dates":{"enum":["Current day (currently declared rates)","Current day and yesterday","Week","Custom date range"],"type":"string","title":"Range of dates","default":"Current day and yesterday","propertyOrder":310},"current_as_today":{"type":"boolean","title":"Current rates as today's rates","format":"checkbox","default":true,"description":"By checking this box, the actual exchange rates will be considered as the exchange rates for the current day (exchange rates for the current day are published every working day after 2:30 p.m. CET). Please use this option in combination with incremental loading so that the current rates can be updated on the next run.","propertyOrder":320},"dependent_date_to":{"type":"string","title":"Date to","format":"date","options":{"flatpickr":{},"dependencies":{"dates":"Custom date range"}},"propertyOrder":340},"dependent_date_from":{"type":"string","title":"Date from","format":"date","options":{"flatpickr":{},"dependencies":{"dates":"Custom date range"}},"propertyOrder":330}},"propertyOrder":300}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"## Extractor for CNB Exchange Rates\n\nThis extractor enables you to download exchange rates from the Czech National Bank (CNB).\n\nExchange rates for commonly traded currencies are published every working day after 2:30 p.m. (Europe/Prague timezone) and are valid for that working day. \nWhere relevant, they also apply to the following Saturday, Sunday, or public holiday. \n\nFor example, an exchange rate declared on Tuesday, December 23, is valid for Tuesday, December 23; the public holidays from December 24–26; \nand Saturday, December 27, and Sunday, December 28.\n\nMore information can be found on CNB's official website: [www.cnb.cz](https://www.cnb.cz/cs/financni-trhy/devizovy-trh/kurzy-devizoveho-trhu/kurzy-devizoveho-trhu/)","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-cnb-exchange-rates","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-cnb-exchange-rates","name":"developer-portal-v2/keboola.ex-cnb-exchange-rates","tag":"1.0.6","options":{},"digest":"sha256:782e1d8ddae8e3ca67bea31f73f41af7c77dbe6d71ea5af5b27fbdb2c8c400b2"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-cnb-exchange-rates/32/1726743248332.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-cnb-exchange-rates/64/1726743248332.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-cnb-exchange-rates/128/1726743248332.png"}},{"id":"kds.ex-collabim","vendor":{"id":"kds","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":27,"name":"Collabim","type":"extractor","shortDescription":"Get keywords and their positions from Collabim.","longDescription":"[Collabim](https://www.collabim.cz/) is a **SEO tool** which helps you measure positions of you keywords, monitor PPC Ads etc.\n\nThis extractor is getting data about **keywords** and their **positions** from [Collabim API](https://collabimapi.docs.apiary.io/#).\n\nThe extractor is based on the  [Generic Extractor](https://developers.keboola.com/extend/generic-extractor/). User can expend the functionality by switching to the JSON mode and editing the configuration directly.","licenseUrl":"https://github.com/keboola/kbc-ui-templates/blob/master/resources/kds.ex-collabim/templates/LICENSE","documentationUrl":"https://components.keboola.com/components/kds.ex-collabim","sourceCodeUrl":"https://github.com/keboola/kbc-ui-templates/blob/master/resources/kds.ex-collabim/","requiredMemory":"256m","processTimeout":10800,"features":["container-root-user"],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Project Management"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericTemplatesUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["config"],"properties":{"config":{"type":"object","title":"Config","required":["#token","projectId","from","to","tags"],"properties":{"to":{"type":"string","title":"To","default":"-1 day","minLength":1,"description":"Any date accepted by strtotime (http://php.net/manual/en/function.strtotime.php) function (Example: -10 days, 2018-03-18)","propertyOrder":4},"from":{"type":"string","title":"From","default":"-3 days","minLength":1,"description":"Any date accepted by strtotime (http://php.net/manual/en/function.strtotime.php) function (Example: -10 days, 2018-03-18)","propertyOrder":3},"tags":{"type":"string","title":"Tags","default":"","minLength":0,"description":"You can fill in tags to filter the results","propertyOrder":5},"#token":{"type":"string","title":"API Token","format":"password","default":"","minLength":1,"description":"Fill in Collabim API Token","propertyOrder":1},"projectId":{"type":"string","title":"Project ID","default":"","minLength":1,"description":"Fill in Collabim Project ID","propertyOrder":2}}}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"## Parameters\n* **API Token** (required): Fill in you API Token for Collabim API. It will be automatically ciphered.\n* **Project ID** (required): Fill in ID of your Collabim project.\n* **From** (required): Set fixed (*YYYY-MM-DD*) or rolling (*-X days*) start date to define how old keywords positions should be extracted (default *-3 days*).\n* **To** (required): Set fixed (*YYYY-MM-DD*) or rolling (*-X days*) end date to define how recent keywords positions should be extracted (default *-1 day*).\n* **Tags** (optional): You can define tags to filter out the data you're requesting from the API.\n\nExtractor is storing data in KBC [incrementally](https://developers.keboola.com/extend/generic-extractor/incremental/).","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds.ex-collabim","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/ex-generic-v2","name":"developer-portal-v2/ex-generic-v2","tag":"latest","options":{},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds.ex-collabim/32/2.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds.ex-collabim/64/2.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds.ex-collabim/128/2.png"}},{"id":"kds-team.app-column-to-files","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":16,"name":"Columns to files","type":"application","shortDescription":"Convert column row values into files","longDescription":"Simple APP that takes specified column values from single input table and stores them in `out/files/` folder. Currently this is only to use in conjunction with other processors like [XML2CSV](https://bitbucket.org/kds_consulting_team/kds-team.processor-xml2csv/src) or [JSON2CSV](https://bitbucket.org/kds_consulting_team/kds-team.processor-json2csv/src) since it does not produce file manifests, hence does not store any files in filestorage as a result.\n\n","licenseUrl":null,"documentationUrl":"https://bitbucket.org/kds_consulting_team/kds-team.app-column-to-files/src/master/README.md","sourceCodeUrl":"https://bitbucket.org/kds_consulting_team/kds-team.app-column-to-files/src/master/","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput","genericDockerUI-processors","appInfo.experimental"],"imageParameters":{"syrup_url":"https://syrup.keboola.com/"},"stackParameters":{"connection.keboola.com":{"syrup_url_st":"https://syrup.keboola.com/"}},"testConfiguration":null,"configurationSchema":{"type":"object","title":"extractor configuration","required":["col_names"],"properties":{"col_names":{"type":"array","items":{"type":"object","title":"Table column mapping","format":"grid","required":["col_name","src_table","prefix","prefix_col","res_extension"],"properties":{"prefix":{"type":"string","title":"Result file prefix","description":"Prefix to add to result files","propertyOrder":3000},"col_name":{"type":"string","title":"Column name","description":"Col name to convert values from","propertyOrder":2000},"src_table":{"type":"string","title":"Source table name","description":"Name as specified in input mapping","propertyOrder":1000},"prefix_col":{"type":"string","title":"Result file prefix col","description":"Column which value to use as result file prefix","propertyOrder":4000},"res_extension":{"type":"string","title":"Extension of result file","propertyOrder":5000}}},"title":"Table column mappings"}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"## Usage\n\n- **Source table name** (REQ) - source table name as specified in input mapping.\n- **Column name** (REQ) - Column that is to be converted\n- **Result file prefix col** (OPTIONAL) - Name of the secondary column whose value is used as a prefix of the result file. The result files will be then outputed in this form: `[PREFIX_COL_VALUE]_[INDEX]_[TABLE_NAME].[EXTENSION]`\n- **Result file prefix** (OPTIONAL) - Prefix that is added to the result file name. The result files will be then outputed in this form: `[FILE_PREFIX]_*[PREFIX_COL_VALUE]*_[INDEX]_[TABLE_NAME].[EXTENSION]`\n- **Extension of result file** (OPTIONAL) - Optional extension of the result files.\n\n\n### Example\nLet `input.csv` be input mapping of table with colums `[VALUE,INDEX_COL]` and 2 rows:\n\n| VALUE | INDEX_COL\n|--|--|\n| VAL1 | index1|\n| VAL2 | index2|\n\nFollowing configuration:\n\n**Source table name** : `input.csv`;\n**Column name** : `VALUE`\n**Result file prefix col** : `INDEX_COL`\n**Extension of result file** : `xml`\n\nWill result in 2 files stored in the `out/files/` folder:\n\n - `index1_1_input.csv.xml`\n - `index2_2_input.csv.xml`\n\nContaining the values of the `VALUE` column respectively.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.app-column-to-files","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.app-column-to-files","name":"developer-portal-v2/kds-team.app-column-to-files","tag":"0.0.5","options":{},"digest":"sha256:b1a061813405af20c48e99f52f491fe9ea5501b1b1c48dbe11d690f06eeee650"},"publishingStatus":"public","icon":{"32":null,"64":null,"128":null}},{"id":"kds-team.app-component-runner","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":145,"name":"Component Runner","type":"application","shortDescription":"Run jobs of other Keboola components with custom variables. Trigger component executions with parameters defined manually or loaded from an input table.","longDescription":"The Component Runner allows you to trigger and run jobs of other Keboola components with custom variables. This is useful for orchestrating complex workflows where you need to run components with different parameter sets or chain component executions together.\nAllows to\nRun any component: Execute any Keboola component by specifying its Component ID and Configuration ID\nVariable support: Pass custom variables to the component run, either defined manually or loaded from an input table\nMultiple run modes: Run with variables from a table (all rows or first row only) or use manually defined variables\nCross-stack support: Run components on any Keboola stack (AWS US, AWS EU, Azure, GCP, or custom stacks)\nWait for completion: Optionally wait for the triggered job to finish before continuing","licenseUrl":"https://github.com/keboola/component-component-runner/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/component-component-runner/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/component-component-runner","requiredMemory":null,"processTimeout":10800,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"easy","category":null,"categories":["API"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Configuration Schema","properties":{"run_parameters":{"type":"object","title":"Run parameters","properties":{"variables":{"type":"array","items":{"type":"object","title":"Variable","properties":{"name":{"type":"string","title":"Variable Name","description":"The exact name of the variable as defined in the target component configuration."},"value":{"type":"string","title":"Value","description":"The value to assign to this variable for the component run."}}},"title":"Variables","format":"table","options":{"dependencies":{"use_variables":true,"variable_mode":"self_defined"}},"description":"Define the variables to pass to the component run. Each variable needs a name (matching the variable name in the target configuration) and a value.","uniqueItems":true,"propertyOrder":50},"use_variables":{"type":"boolean","title":"Use variables","format":"checkbox","description":"Enable this to pass variables to the component run. Variables can be defined manually below or loaded from an input table.","propertyOrder":30},"variable_mode":{"enum":["self_defined","from_file_run_all","from_file_run_first"],"type":"string","title":"Variable mode","default":"from_file_run_first","options":{"enum_titles":["Variables Defined in Configuration","Variables Defined by Input Table - run all","Variables Defined by Input Table - run only first row"],"dependencies":{"use_variables":true}},"required":true,"description":"Choose how variables are provided: manually defined in this configuration, or loaded from an input table (where column names are variable names and each row triggers a separate run).","propertyOrder":40},"wait_until_finish":{"type":"boolean","title":"Wait until finish","format":"checkbox","description":"If checked, the Component Runner will wait for the triggered job to complete before finishing. This is useful when you need to ensure the job succeeded before continuing in a flow.","propertyOrder":10}},"description":"Configure how the component job should be executed and whether to use variables.","propertyOrder":60},"component_parameters":{"type":"object","title":"Component parameters","required":["#sapi_token","component_id","config_id"],"properties":{"config_id":{"enum":[],"type":"string","title":"Configuration ID","format":"select","options":{"async":{"label":"Re-load configurations","action":"list_configurations"}},"description":"Select the configuration to run. Click 'Re-load configurations' after selecting a component to fetch its available configurations.","uniqueItems":true,"propertyOrder":40},"#sapi_token":{"type":"string","title":"KBC Storage API token","format":"password","description":"<a href=\"https://help.keboola.com/management/project/tokens/#limited-access-to-components\">Limited Access SAPI Token</a> with restricted access to the component you wish to run in the project you wish to run it in.","propertyOrder":10},"component_id":{"enum":[],"type":"string","title":"Component ID","format":"select","options":{"async":{"label":"Re-load components","action":"list_components"}},"description":"Select the component you want to run. Click 'Re-load components' to fetch available components from the selected stack using your SAPI token.","uniqueItems":true,"propertyOrder":30},"custom_stack":{"type":"string","title":"Custom Stack","options":{"dependencies":{"keboola_stack":"Custom Stack"}},"description":"The name of your stack in connection.{CUSTOM_STACK}.keboola.cloud","propertyOrder":25},"keboola_stack":{"enum":[" ","eu-central-1.","north-europe.azure.","europe-west3.gcp.","us-east4.gcp.","Custom Stack"],"type":"string","title":"KBC Stack","options":{"enum_titles":["AWS US East – connection.keboola.com","AWS EU Central – connection.eu-central-1.keboola.com","Azure North Europe – connection.north-europe.azure.keboola.com","GCP EU – connection.europe-west3.gcp.keboola.com","GCP US – connection.us-east4.gcp.keboola.com","Custom Stack"]},"required":true,"description":"Select the Keboola stack where the target component configuration exists. Choose 'Custom Stack' for private or single-tenant deployments.","propertyOrder":20}},"description":"Configure which component and configuration to run, along with the target Keboola stack.","propertyOrder":10}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"configuration description","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["list_components","list_configurations"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.app-component-runner","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.app-component-runner","name":"developer-portal-v2/kds-team.app-component-runner","tag":"1.0.5","options":{},"digest":"sha256:f11c941b856ca1138748118d9a146df0d0e908a52555bafac8b57de0657d0a93"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-component-runner/32/1667383934051.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-component-runner/64/1667383934051.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-component-runner/128/1667383934051.png"}},{"id":"kds-team.processor-compress","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":39,"name":"Compress","type":"processor","shortDescription":"Compress file to specified format.","longDescription":"# Compress processor\n\nThis processor allows to compress files with one of the formats `gz`, `7z` or `zip`. The processor uses bash libraries to compress these files.\nAll of the files from `./in/files/` and `./in/tables/` folders are compressed, with exception of manifests. Compressed files are outputted to their respective `/out/` directory.\n\n## Usage\n\nSupports optional parameters:\n- `compression` - must be one of `gz`/`gzip`, `7z` or `zip`. Default value is `gz`.\n- `#password` - can be used only with `compression` = `7z`. Arbitrary string used for locking the file.\n\n### Sample configurations\n\nDefault parameters:\n\n```\n{\n  \"definition\": {\n    \"component\": \"kds-team.processor-compress\"\n  }\n}\n```\n\nChoose compression type:\n\n```\n{\n  \"definition\": {\n    \"component\": \"kds-team.processor-compress\"\n  },\n  \"parameters\": {\n    \"compression\": \"gzip\"\n  }\n}\n```\n\nEncrypt files:\n```\n{\n  \"definition\": {\n    \"component\": \"kds-team.processor-compress\"\n  },\n  \"parameters\": {\n    \"compression\": \"7z\",\n    \"#password\": \"BigBaldWolf\"\n  }\n}\n```","licenseUrl":"https://bitbucket.org/kds_consulting_team/kds-team.processor-compress/src/master/LICENSE.md","documentationUrl":"https://bitbucket.org/kds_consulting_team/kds-team.processor-compress/src/master/README.md","sourceCodeUrl":"https://bitbucket.org/kds_consulting_team/kds-team.processor-compress/src/master/","requiredMemory":"1g","processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":[],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":39,"uri":"docker/kds-team.processor-compress","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.processor-compress","name":"developer-portal-v2/kds-team.processor-compress","tag":"0.0.4","options":{},"digest":"sha256:6a2676d831a296d36d6d461bcad83101f9ce4535900bd1f97c60f1bd4c1a9a8a"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.processor-compress/32/1.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.processor-compress/64/1.png","128":null}},{"id":"keboola.app-configuration-migration-tool","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":46,"name":"Configuration Migration Tool","type":"application","shortDescription":"Migration tool for moving configurations of selected components from one component to another (only for preconfigured components).","longDescription":"The component migrates configurations from one component to another. It is used when users need to move configurations after a completely new component is released to replace an old one. To use it, a migration must be prepared in advance within this tool, so only specific components are allowed for migration.","licenseUrl":"https://github.com/keboola/component-configuration-migration-tool/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/component-configuration-migration-tool/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/component-configuration-migration-tool","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":true,"forwardTokenDetails":true,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Transformation Migration Configuration","format":"grid-strict","required":["source_branch","destination_branch","source_type","destination_type","source_transformations"],"properties":{"debug":{"type":"boolean","title":"Debug Mode","format":"checkbox","default":false,"options":{"grid_columns":12},"description":"If enabled, the component will produce detailed logs","propertyOrder":7},"source_type":{"enum":["snowflake","duckdb","bigquery"],"type":"string","title":"Source Transformation Type","format":"select","default":"snowflake","options":{"enum_titles":["Snowflake","DuckDB","BigQuery"],"grid_columns":6},"propertyOrder":3},"source_branch":{"enum":[],"type":"string","title":"Source Branch","format":"select","default":"default","options":{"tags":true,"async":{"label":"Load branches","action":"list_branches"},"grid_columns":6},"description":"Branch to migrate from","propertyOrder":1},"destination_type":{"enum":["snowflake","duckdb","bigquery"],"type":"string","title":"Destination Transformation Type","format":"select","default":"duckdb","options":{"enum_titles":["Snowflake","DuckDB","BigQuery"],"grid_columns":6},"propertyOrder":4},"destination_branch":{"enum":[],"type":"string","title":"Destination Branch","format":"select","default":"default","options":{"tags":true,"async":{"label":"Load branches","action":"list_branches"},"creatable":true,"grid_columns":6},"description":"Branch name (existing or new)","propertyOrder":2},"source_transformations":{"type":"array","items":{"enum":[],"type":"string"},"title":"Transformations to Migrate","format":"select","options":{"async":{"label":"Load transformations","action":"list_transformations"},"grid_columns":12},"minItems":1,"description":"Select transformations to migrate","uniqueItems":true,"propertyOrder":5},"destination_config_name":{"type":"string","title":"Destination Config Name Pattern","default":"%s","options":{"grid_columns":12},"description":"Pattern for destination config names. Use %s as placeholder for source config name","propertyOrder":6}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"Configuration description.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["status","supported-migrations"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.app-configuration-migration-tool","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.app-configuration-migration-tool","name":"developer-portal-v2/keboola.app-configuration-migration-tool","tag":"0.0.3","options":{},"digest":"sha256:be59702c7be9ef8022cbb2c130fc6da3434a9f4c0f0684369cfe12402ad91452"},"publishingStatus":"public","icon":{"32":null,"64":null,"128":null}},{"id":"kds-team.ex-confluence","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":128,"name":"Confluence","type":"extractor","shortDescription":"Extract content from collaborative documentation and knowledge-sharing platform by Atlassian.","longDescription":"This component enables you to access content from your Atlassian Confluence workspace, including pages, blog posts, and spaces. Extract structured data such as page metadata and content to integrate seamlessly into your Keboola data workflows.\nUsers must provide valid Confluence account credentials and have appropriate permissions configured within their Atlassian workspace. Data can be imported incrementally to optimize performance and ensure up-to-date insights. Perfect for leveraging organizational knowledge, analytics, and monitoring documentation practices across your teams.","licenseUrl":"https://github.com/keboola/component-confluence/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-confluence/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-confluence","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"extractor configuration","required":["url","username","#api_token"],"properties":{"url":{"type":"string","title":"Confluence URL","propertyOrder":1},"username":{"type":"string","title":"Username","propertyOrder":2},"#api_token":{"type":"string","title":"API token","format":"token","propertyOrder":3},"destination_options":{"title":"Destination Options","properties":{"beautify":{"type":"boolean","title":"Beautify text","format":"checkbox","propertyOrder":11},"incremental":{"type":"boolean","title":"Incremental","format":"checkbox","propertyOrder":12}},"propertyOrder":10}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"Configuration description.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":128,"uri":"docker/kds-team.ex-confluence","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-confluence","name":"developer-portal-v2/kds-team.ex-confluence","tag":"0.0.6","options":{},"digest":"sha256:13c62e3b1d886ec25e16c85153759d3cbeb11df5b0fb26858b45ba4b28bd58d6"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-confluence/32/1697633367415.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-confluence/64/1697633367415.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-confluence/128/1697633367415.png"}},{"id":"keboola.ex-cosmosdb","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":43,"name":"CosmosDB SQL API","type":"extractor","shortDescription":"Extracts documents from Azure Cosmos DB.","longDescription":"Azure Cosmos DB is a fully managed NoSQL database for modern APP DEV.\n\nThis component imports data from [Azure CosmosDB](https://azure.microsoft.com/en-us/free/cosmos-db) database using the SQL CORE API.\n\nIncremental load is supported.","licenseUrl":"https://github.com/keboola/ex-cosmosdb/blob/master/LICENSE.md","documentationUrl":"https://help.keboola.com/components/extractors/database/cosmosdb/","sourceCodeUrl":"https://github.com/keboola/ex-cosmosdb","requiredMemory":"1024m","processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Database"],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Configuration Parameters","properties":{"db":{"type":"object","title":"Database","properties":{"#key":{"type":"string","title":"Key","format":"password","default":"","minLength":1,"description":"Primary or secondary CosmosDB key. The value will be encrypted when saved.","propertyOrder":3},"endpoint":{"type":"string","title":"Endpoint","default":"","minLength":1,"description":"Eg. \"https://my-instance.documents.azure.com\"","propertyOrder":1},"databaseId":{"type":"string","title":"Database ID","default":"","minLength":1,"description":"Eg. \"my-database\"","propertyOrder":2}}}}},"configurationRowSchema":{"type":"object","title":"Configuration Parameters","properties":{"mode":{"enum":["mapping","raw"],"type":"string","title":"Mode","default":"raw","options":{"enum_titles":["Mapping - Documents are exported using specified mapping","Raw - Documents are exported as plain JSON strings"]},"propertyOrder":6},"query":{"type":"string","title":"Query","options":{"dependencies":{"advanced_query":true}},"description":"eg. SELECT f.name FROM Families f","propertyOrder":5},"output":{"type":"string","title":"Storage Table Name","default":"","options":{"inputAttributes":{"placeholders":"asd"}},"minLength":1,"description":"Names have to be unique across all exports in the current configuration. Only alphanumeric characters, dash, and underscores are allowed.","propertyOrder":1},"mapping":{"type":"object","title":"Mapping","format":"editor","default":"{}","options":{"editor":{"mode":"application/json"},"dependencies":{"mode":"mapping"},"input_height":"150px"},"description":"Mapping to define the structure of exported tables. See <a href='https://developers.keboola.com/extend/generic-extractor/configuration/config/mappings/' target='_blank'>Mapping documentation</a> for all possible attributes.","propertyOrder":7},"containerId":{"type":"string","title":"Container ID","default":"","minLength":1,"description":"Container is similar to table in the relational db, or collection in the CosmosDB.","propertyOrder":2},"ignoredKeys":{"type":"array","items":{"type":"string"},"title":"Ignore Keys","format":"select","options":{"tags":true},"description":"CosmosDB automatically adds some metadata keys when the item is inserted.","uniqueItems":true,"propertyOrder":3},"incremental":{"enum":[false,true],"type":"boolean","title":"Load type","default":false,"options":{"enum_titles":["Full Load","Incremental Update"]},"description":"If set to Incremental update, the result tables will be updated based on primary key and new records will be fetched. Full load overwrites the destination table each time.","propertyOrder":8},"advanced_query":{"type":"boolean","title":"Custom Query","format":"checkbox","default":false,"description":"You can set a custom query using parameter","propertyOrder":4},"incremental_fetching":{"type":"boolean","title":"Incremental fetch","format":"checkbox","default":false,"description":"Fetch records that have been updated since the last run of the component with a specified field\n\n","propertyOrder":9},"incrementalFetchingKey":{"type":"string","links":[{"rel":"Incremental Fetching Documentation","href":"https://help.keboola.com/components/extractors/database/#incremental-fetching"}],"title":"Incremental Field","default":"","options":{"dependencies":{"advanced_query":false,"incremental_fetching":true}},"description":"Name of key for Incremental Fetching","propertyOrder":10}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["testConnection"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":43,"uri":"docker/keboola.ex-cosmosdb","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-cosmosdb","name":"developer-portal-v2/keboola.ex-cosmosdb","tag":"1.4.2","options":{},"digest":"sha256:ff1b63002bc6ab6849f4da33f1e4eeee03747f623af39591457005becc97d085"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-cosmosdb/32/1606394258013.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-cosmosdb/64/1606394258013.png","128":null}},{"id":"kds-team.processor-create-file-manifest","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":186,"name":"Create File Manifest","type":"processor","shortDescription":"Update File output manifest and set tags and other properties. Takes all files in `/data/in/files` and creates or updates the manifest file move all files to `/data/out/files`. ","longDescription":"Takes all files in `/data/in/files` and creates or updates the manifest file move all files to `/data/out/files`. \n\nAdds or updates these manifest attributes\n\n - `tags` --  Required array of tags, Assigns one or more tags to the file.\n - `is_permanent` -- DEFAULT `false` If is_permanent is false, the file will be automatically deleted after 15 days.\n - `notify` -- When notify is true, the members of the project will be notified that a file has been uploaded to the project. \n - `encrypted` -- If true, the file content will be encrypted in the S3 storage. Default: false\n - `tag_functions`: Optional list of functions to be applied to the filename to retrieve tags\n - `is_public`: Optional if true, the file will be publicly accessible via link\n- `keep_tables`: Optional, if true tables generated by the input component are transferred to out intact. Otherwise,\n  everything in `in/tables` will be ignored.\n \n Supports dynamic nestable functions to process the filename into tags.\n\n\n## Sample configurations\n\nAll parameters:\n\n```\n{  \n    \"definition\": {\n        \"component\": \"kds-team.processor-create-file-manifest\"\n    },\n    \"parameters\": {\n        \"keep_tables\": true,\n        \"tags\": [\"my_tag\"],\n        \"is_permanent\":false,\n         \"notify\": false,\n         \"encrypted\": false,\n    \"tag_functions\": [\n      {\n        \"function\": \"filename_split\",\n        \"args\": [\n          \"_\"\n        ],\n        \"optional_args\": {\n          \"position\": 1,\n          \"tag_prefix\": \"FILENAME_PART\"\n        }\n      }\n    ]\n    }\n}\n```","licenseUrl":"https://bitbucket.org/kds_consulting_team/kds-team.processor-create-file-manifest/src/master/LICENSE.md","documentationUrl":"https://bitbucket.org/kds_consulting_team/kds-team.processor-create-file-manifest/src/master/README.md","sourceCodeUrl":"https://bitbucket.org/kds_consulting_team/kds-team.processor-create-file-manifest/src/master/","requiredMemory":"512m","processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":[],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":186,"uri":"docker/kds-team.processor-create-file-manifest","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.processor-create-file-manifest","name":"developer-portal-v2/kds-team.processor-create-file-manifest","tag":"1.1.2","options":{},"digest":"sha256:c62dc479760922436935f21bab408ce1f682ded839feb74a8a2bc2a0e8360b81"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.processor-create-file-manifest/32/1674036826635.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.processor-create-file-manifest/64/1674036826635.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.processor-create-file-manifest/128/1674036826635.png"}},{"id":"keboola.processor-create-manifest","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":58,"name":"Create Manifest","type":"processor","shortDescription":"Create a manifest for the output files or tables, detect or create CSV headers","longDescription":"Create a manifest for the output files or tables, detect or create CSV headers.","licenseUrl":"https://github.com/keboola/processor-create-manifest/blob/master/LICENSE","documentationUrl":"https://github.com/keboola/processor-create-manifest/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/processor-create-manifest","requiredMemory":"256m","processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":[],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":null,"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.processor-create-manifest","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.processor-create-manifest","name":"developer-portal-v2/keboola.processor-create-manifest","tag":"1.0.5","options":{"region":"us-east-1"},"digest":"sha256:017a16fb5f9f1cb69df4be5f8385aa7bf5004ba09f4e43b8ea75dd29b2befd56"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.processor-create-manifest/32/1576251896088.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.processor-create-manifest/64/1576251896088.png","128":null}},{"id":"kds-team.ex-criteo","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":285,"name":"Criteo","type":"extractor","shortDescription":"Extracts report data from the Criteo Marketing Solutions API.","longDescription":"This extractor allows users to extract data reports from the Criteo Marketing Solutions API.","licenseUrl":"https://github.com/keboola/component-criteo/blob/main/LICENSE.md","documentationUrl":"https://help.keboola.com/components/extractors/marketing-sales/criteo/","sourceCodeUrl":"https://github.com/keboola/component-criteo","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Analytics","Advertisement"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Authorization settings","required":["#client_id","#client_secret"],"properties":{"#client_id":{"type":"string","title":"Client ID","format":"password","propertyOrder":1},"#client_secret":{"type":"string","title":"Client secret","format":"password","propertyOrder":2}}},"configurationRowSchema":{"type":"object","title":"Report configuration","required":["out_table_name","dimensions","metrics","date_range"],"properties":{"date_to":{"type":"string","title":"Date to","options":{"dependencies":{"date_range":"Custom"}},"description":"End date of the report eg. 1 day ago","propertyOrder":50},"metrics":{"type":"string","title":"Metrics","minLength":1,"description":"Metrics to fetch for report eg. Clicks, Displays, AdvertiserCost","propertyOrder":20},"currency":{"type":"string","title":"Currency","default":"EUR","minLength":1,"description":"Currency for report, default EUR","propertyOrder":25},"date_from":{"type":"string","title":"Date from","options":{"dependencies":{"date_range":"Custom"}},"description":"Start date of the report eg. 3 days ago","propertyOrder":40},"date_range":{"enum":["Last week (sun-sat)","Last month","Custom"],"type":"string","title":"Date range type","propertyOrder":30},"dimensions":{"type":"string","title":"Dimensions","minLength":1,"description":"Dimensions to fetch for report eg. CampaignId, Day, Category","propertyOrder":10},"out_table_name":{"type":"string","title":"Output name","description":"Name of output table in storage eg. CampaignReport","propertyOrder":1},"loading_options":{"type":"object","title":"Loading Options","required":["incremental"],"properties":{"pkey":{"type":"array","items":{"type":"string","title":"Primary key column"},"title":"Primary key","default":[],"propertyOrder":5000},"incremental":{"enum":[0,1],"type":"integer","title":"Load type","default":0,"options":{"enum_titles":["Full Load","Incremental Update"]},"description":"If set to Incremental update, the result tables will be updated based on primary key and new records will be fetched. Full load overwrites the destination table each time.","propertyOrder":200}},"propertyOrder":100}}},"createConfigurationRowSchema":null,"configurationDescription":"### Note\n\nWhen performing incremental fetches it is best practice to set \nthe custom date range for fetching at least 5 days, as\n[Data latency is typically 2-8 hours, but may have minor adjustments through the 120th hour before finalization](https://developers.criteo.com/retail-media/docs/reports).","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":285,"uri":"docker/kds-team.ex-criteo","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-criteo","name":"developer-portal-v2/kds-team.ex-criteo","tag":"1.1.7","options":{},"digest":"sha256:22ef6378e97216cefb0f441a9f950ae7f987ba24b4ced1784a457b1f53ae1b20"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-criteo/32/1625133155660.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-criteo/64/1625133155660.png","128":null}},{"id":"kds-team.ex-csob-ceb","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":52,"name":"CSOB CEB","type":"extractor","shortDescription":"Download bank statements from CSOB CEB Business Connector service.","longDescription":"Download bank statements from CSOB CEB  Business Connector service. Supports [TXT format](https://www.csob.cz/portal/documents/10710/1927786/ceb-vypisy-format-txt.pdf) bank statements. These need to be enabled in the CEB UI.\n\n**Prerequisites:**\n\n- enable the CSOB CEB service\n- get the authentication certificate\n- register the certificate in the portal\n- configure the CSOB service - enable bank statements via API in the `TXT (BB-TXT)` [format](https://www.csob.cz/portal/documents/10710/1927786/ceb-vypisy-format-txt.pdf).","licenseUrl":"https://github.com/keboola/component-csob-ceb/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-csob-ceb/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-csob-ceb","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","appInfo.dataIn"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"CEB Connector configuration","required":["#cert","contract_nr","period_from","relative_period"],"properties":{"#cert":{"type":"string","title":"CEB certificate","format":"textarea","description":"Client certificate enabled in CEB portal. It has to be in pem format and contain both private and public key. Json escaped","propertyOrder":200},"contract_nr":{"type":"string","title":"CSOB contract number","propertyOrder":300},"period_from":{"type":"string","title":"Period from date","format":"date","propertyOrder":600},"relative_period":{"type":"string","title":"Relative period from now (utc)","description":"Relative period in format: '5 hours ago', 'yesterday','3 days ago', '4 months ago', '2 years ago', 'today'. Overrides `from` parameter.","propertyOrder":710}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"In order to make this connector work you need to follow the instructions \ndescribed in section `2` in the [CEB Connector implementation guide](https://www.csob.cz/portal/documents/10710/15532355/csob-business-connector-implementacni-prirucka.pdf) \n\nNamely you need to:\n\n- enable the CSOB CEB service\n- get the authentication certificate\n- register the certificate in the portal\n- configure the CSOB service - enable bank statements via API in the `TXT (BB-TXT)` [format](https://www.csob.cz/portal/documents/10710/1927786/ceb-vypisy-format-txt.pdf).","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"normal","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":52,"uri":"docker/kds-team.ex-csob-ceb","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-csob-ceb","name":"developer-portal-v2/kds-team.ex-csob-ceb","tag":"0.2.0","options":{},"digest":"sha256:8377648375c18483bc89821a4633182b0cf64c7bbdebae153e9e942526eccb11"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-csob-ceb/32/2.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-csob-ceb/64/2.png","128":null}},{"id":"kds-team.processor-csv2xls","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":36,"name":"CSV to XLSX","type":"processor","shortDescription":"Convert CSV files into XLSX format.","longDescription":"Convert CSV files into XLSX format. Merge into single file using single or multiple sheets or split into separate files.","licenseUrl":"https://bitbucket.org/kds_consulting_team/kds-team.processor-csv2xls/src/master/LICENSE.md","documentationUrl":"https://bitbucket.org/kds_consulting_team/kds-team.processor-csv2xls/src/master/README.md","sourceCodeUrl":"https://bitbucket.org/kds_consulting_team/kds-team.processor-csv2xls/src/master/","requiredMemory":"2000m","processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":[],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":null,"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{"definition":{"component":"kds-team.processor-csv2xlsx"},"parameters":{"export_mode":"separate_files"}},"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"none","200":"normal","250":"normal","300":"normal","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":36,"uri":"docker/kds-team.processor-csv2xls","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.processor-csv2xls","name":"developer-portal-v2/kds-team.processor-csv2xls","tag":"1.1.2","options":{},"digest":"sha256:2ef85eba80d5f0308ca7d1448154d9941add61bec1149cbab9fd75bc8e27a668"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.processor-csv2xls/32/1571414432582.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.processor-csv2xls/64/1571414432582.png","128":null}},{"id":"kds-team.processor-csv-to-json","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":140,"name":"csv-to-json","type":"processor","shortDescription":"CSV to JSON converter","longDescription":"## Usage\nThis processor allows for converting CSV files located in `data/in/tables` to JSON files that will be stored in `data/out/files`.\n\n## Config\n\nYou need to specify the delimiter. The delimiter can be a multicharacter string (e.g. '||'). You can also specify the column types, currently there are four supported data types - number, string, bool, and object. If you don't specify these, the processor will attempt to identify the datatype by itself. You can also specify the datatype only for a subset of the columns.\n\nThe value of delimiter will be the character you want to nest on - ie. if you had columns _adress\\_street_ and _adress\\_city_ and you set the delimiter to `_`, the result would be a `[{address:{street:street_value, city:city_value}}]`. If there are two delimiters next to each other (e.g. _adress\\_\\_street_), the extractor will return a user error.\n\n## Sample Config\n\nFor sample config please refer to here: https://bitbucket.org/kds_consulting_team/kds-team.processor-csv-to-json/src/master/README.md","licenseUrl":"https://github.com/keboola/processor-csv-to-json/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/processor-csv-to-json/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/processor-csv-to-json","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":[],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"extractor configuration","required":["project_id","#api_token","period_from","period_to","relative_period","metrics","backfill_mode"],"properties":{"metrics":{"type":"array","items":{"type":"object","title":"Items of array, multiple objects","format":"grid","required":["metric","modificator"],"properties":{"metric":{"enum":["NoVt","TotTm","NoPV"],"type":"string","title":"Metric","default":"NoPV","description":"First object, enum of strings","propertyOrder":1000},"modificator":{"enum":["none","change","share","share_in_total","change_in_percentage"],"type":"string","title":"Mdificator","default":"daily","description":"Second object","propertyOrder":2000}}},"title":"Example array of group of string objects","description":"Group of string objects alligned in grid"},"period_to":{"type":"string","title":"Period to date [excluding]","format":"date","propertyOrder":400},"#api_token":{"type":"string","title":"API token","format":"password","propertyOrder":200},"project_id":{"type":"string","title":"Project ID","propertyOrder":100},"period_from":{"type":"string","title":"Period from date [including]","format":"date","propertyOrder":300},"backfill_mode":{"enum":[0,1],"type":"number","title":"Backfill mode","default":0,"options":{"enum_titles":["No","Yes"]},"description":"If backfill mode is enabled, each consecutive run of the component will continue from the end of the last run period, until current date is reached. The From and To date parameters are used to define Start date of the back-fill and also relative window of each run.","propertyOrder":455},"relative_period":{"type":"string","title":"Relative period from now (utc)","description":"Relative period in format: '5 hours ago', 'yesterday','3 days ago', '4 months ago', '2 years ago', 'today'. Overrides `from` and `to` parameters.","propertyOrder":450}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"Testing configuration description.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":140,"uri":"docker/kds-team.processor-csv-to-json","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.processor-csv-to-json","name":"developer-portal-v2/kds-team.processor-csv-to-json","tag":"0.5.8","options":{},"digest":"sha256:90e616b947e1a75d3d025d68825e2e6279f23839683a617364941dd3ac6ba1ea"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.processor-csv-to-json/32/1571497902942.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.processor-csv-to-json/64/1571497902942.png","128":null}},{"id":"kds-team.app-custom-python","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":293,"name":"Custom Python","type":"application","shortDescription":"Run custom Python code within Keboola to create lightweight integrations and applications that connect with external systems, exchange data, or use secure credentials—without registering a standalone component.","longDescription":"This component lets you run custom Python code directly within Keboola. Its main purpose is to enable fast creation of\ncustom integrations (connectors) that can be configured and executed inside Keboola—removing the need to build and\nmaintain a separate dedicated component.\n\n### Comparison to Python Transformations\n\n- **[Python Transformations](https://help.keboola.com/transformations/python-plain/)**: Focused purely on transforming\n  data already in Keboola Storage, with results written back into storage.\n- **Custom Python Component**: Suited for integrations or applications that interact with external systems, fetch or\n  push data, or require secure parameters (e.g., API keys, passwords).\n\n> **Note:** Do not use Python Transformations for external integrations requiring secure parameters.\n\n### Key Features\n\n- **Secure Parameters**: Provide sensitive values (API keys, tokens, passwords) safely via the Keboola UI using\n  encrypted `#` parameters.\n- **Customizable Environment**:\n    - Clean container image to install only the dependencies you need.\n    - Support for multiple Python versions.\n- **Flexible Execution**: Run code from a public/private Git repository or directly within the Keboola UI configuration.  ","licenseUrl":"https://github.com/keboola/component-custom-python/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-custom-python/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-custom-python","requiredMemory":"8192m","processTimeout":86400,"features":["dev-branch-configuration-unsafe","organization-github-app-auth"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":true,"forwardTokenDetails":true,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput","genericDockerUI-fileInput","genericDockerUI-tableOutput","genericDockerUI-fileOutput","genericDockerUI-processors","genericDockerUI-authorization"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Configuration","required":["venv","user_properties","source"],"properties":{"git":{"type":"object","title":"Git Repository Source Settings","options":{"dependencies":{"source":"git"}},"required":["url","auth"],"properties":{"url":{"type":"string","title":"Repository URL","propertyOrder":70},"auth":{"enum":["none","pat","ssh"],"type":"string","title":"Repository Visibility & Authentication","format":"radio","default":"none","options":{"enum_titles":["None (public repository or organization GitHub App)","Private – Personal Access Token","Private – SSH Key"]},"propertyOrder":80},"#token":{"type":"string","title":"Personal Access Token","options":{"dependencies":{"auth":"pat"}},"propertyOrder":90},"branch":{"enum":[],"type":"string","title":"Branch Name","options":{"async":{"cache":false,"label":"List Branches","action":"listBranches","autoload":["git.url"]},"tooltip":"If left empty, the default value `main` will be used."},"propertyOrder":110},"authType":{"enum":["","organization"],"type":"string","title":"Organization GitHub App","default":"","options":{"enum_titles":["Not used","Use the organization's GitHub App"]},"propertyOrder":75},"filename":{"enum":[],"type":"string","title":"Script Filename","options":{"async":{"cache":false,"label":"List Files","action":"listFiles","autoload":["git.branch"]},"tooltip":"If left empty, the default value `main.py` will be used."},"propertyOrder":120},"ssh_keys":{"type":"object","format":"ssh-editor","options":{"only_keys":true,"dependencies":{"auth":"ssh"}},"propertyOrder":100},"github_app_note":{"type":"string","title":"GitHub App authentication","format":"info","options":{"dependencies":{"authType":"organization"}},"description":"Your organization's GitHub App must be connected to Keboola and installed for the repository. The repository URL must be an https:// URL without credentials. Set Repository Visibility & Authentication to \"None (public repository or organization GitHub App)\".","propertyOrder":77}},"propertyOrder":60},"code":{"type":"string","title":"Python Code","format":"editor","default":"from keboola.component import CommonInterface\n\nci = CommonInterface()\n# access user parameters\nprint(ci.configuration.parameters)","options":{"editor":{"mode":"text/x-python","lineNumbers":true,"input_height":"100px"},"dependencies":{"source":"code"}},"propertyOrder":50},"venv":{"enum":["3.14","3.13","3.12","base"],"type":"string","title":"Python Version & Environment Isolation","format":"radio","default":"","options":{"tooltip":"- **Isolated environment** takes a couple of seconds to start, but gives you the opportuninty to pick one of the latest versions of Python. It's also a safer choice as it prevents package collisions.\n- Non-isolated environment (used to be the default choice) might start a bit faster, but can lead to issues mentioned above. It will also become a subject to deprecation in the future.\n- We recommmend you **update the code regularly** to make sure it runs with the latest versions of all packages. This will help you avoid issues with abandoned packages and **security vulnerabilities**.","enum_titles":["Python 3.14 – Isolated environment (just the packages of your choice) – This is the recommended choice 🐙","Python 3.13 – Isolated environment","Python 3.12 – Isolated environment","Python 3.10 – Shared environment (contains many pre-installed packages in legacy versions) – This used to be the default choice"]},"propertyOrder":10},"source":{"enum":["code","git"],"type":"string","title":"Source Code & Dependencies","format":"radio","default":"code","options":{"tooltip":"If you choose to provide the code to be ran via Git repository, any custom packages to be installed have to be specified:\n\n- in a **pyproject.toml** file accompanied with its corresponding **uv.lock file** (the modern way), or\n- in a **requirements.txt** file (the old way).\n\nThese files need to be present in the root folder of your repository. When all the aforementioned files are present, the modern way takes precedence.","enum_titles":["Enter manually into text areas below","Get from Git repository"]},"propertyOrder":30},"packages":{"type":"array","items":{"type":"string"},"title":"Python Packages","format":"select","options":{"tags":true,"dependencies":{"source":"code"}},"description":"Learn more about package installation, usage, and the list of pre-installed packages in our <a href=\"https://help.keboola.com/transformations/\">documentation</a>.","uniqueItems":true,"propertyOrder":40},"user_properties":{"type":"object","title":"User Parameters","format":"editor","default":{"debug":false},"options":{"editor":{"lint":true,"mode":"application/json","lineNumbers":true,"input_height":"100px"},"tooltip":"User parameters will be inserted in the `/data/config.json` file. They can be accessed in the code via `keboola.component.CommonInterface`, see an example in the documentation or when creating a new configuration."},"propertyOrder":20}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"This component uses the latest version of our [Python Transformation backend](https://help.keboola.com/transformations/python/#environment).\nIt includes the same packages, and the code runs in the same environment. Any code runing in a Python transformation will work here and vice versa.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["listBranches","listFiles"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"verbose","200":"verbose","250":"verbose","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.app-custom-python","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.app-custom-python","name":"developer-portal-v2/kds-team.app-custom-python","tag":"0.3.16","options":{},"digest":"sha256:1b4f5da71a4a9a1910f719efd8a6b448f3923deb5396cd675030baf4ce39d527"},"publishingStatus":"public","icon":{"32":null,"64":null,"128":null}},{"id":"kds-team.ex-customer-io","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":150,"name":"Customer.io","type":"extractor","shortDescription":"Extracts customers, campaigns, segments, messages, and activities from Customer.io.","longDescription":"Fetch customers, campaigns, segments and activites from your Customer.io account.","licenseUrl":"https://github.com/keboola/component-customer-io/blob/main/LICENSE.md","documentationUrl":"https://help.keboola.com/components/extractors/marketing-sales/customerio/","sourceCodeUrl":"https://github.com/keboola/component-customer-io","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Marketing"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-processors","appInfo.dataIn","genericDockerUI-resetState"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Configuration","required":["#api_secret","api_region","incremental_output","campaigns","segments","activities","messages","customers"],"properties":{"messages":{"type":"array","items":{"type":"object","title":"Setup","required":["types","incremental_output"],"properties":{"types":{"type":"array","items":{"enum":["email","webhook","twilio","urban_airship","slack","push"],"type":"string"},"title":"Types","format":"select","description":"Message types","uniqueItems":true,"propertyOrder":360},"incremental_output":{"type":"boolean","title":"Continue since last run","format":"checkbox","default":false}}},"title":"Messages","maxItems":1,"description":"Download messages.","propertyOrder":4000},"segments":{"type":"boolean","title":"Download Segments","format":"checkbox","default":false,"propertyOrder":40},"campaigns":{"type":"boolean","title":"Download Campaigns","format":"checkbox","default":false,"propertyOrder":30},"customers":{"type":"array","items":{"type":"object","title":"Setup","required":["filters","attributes"],"properties":{"filters":{"type":"string","title":"Filter","format":"textarea","description":"Optional JSON encoded json filter, as defined in https://customer.io/docs/api-triggered-data-format#general-syntax. If left empty, all users are donwnloaded","propertyOrder":1},"attributes":{"type":"string","title":"Attributes","format":"textarea","options":{"input_height":"100px"},"description":"Comma separated list of required customer attributes. Each customer may have different set of columns, this is to limit only to attributes you need. All attributes are downloaded if left empty.","uniqueItems":true,"propertyOrder":700}}},"title":"Customers","maxItems":1,"description":"Download Customers.","propertyOrder":4000},"activities":{"type":"array","items":{"type":"object","title":"Setup","required":["types","mode","delete"],"properties":{"mode":{"enum":["PARSED_DATA","SINGLE_TABLE"],"type":"string","title":"Mode of result parsing.","description":"PARSED_DATA will generate structured table for each activity type. SINGLE_TABLE will populate single activities_all table with data unparsed as column.","propertyOrder":1},"types":{"type":"array","items":{"enum":["page","event","attribute_change","failed_attribute_change","stripe_event","drafted_email","failed_email","dropped_email","sent_email","spammed_email","bounced_email","delivered_email","triggered_email","opened_email","clicked_email","converted_email","unsubscribed_email","attempted_email","undeliverable_email","device_change","attempted_action","drafted_action","sent_action","delivered_action","bounced_action","failed_action","converted_action","undeliverable_action","opened_action","secondary:dropped_email","secondary:spammed_email","secondary:bounced_email","secondary:delivered_email","secondary:opened_email","secondary:clicked_email","secondary:failed_email"],"type":"string"},"title":"Types","format":"select","description":"Activity types","uniqueItems":true,"propertyOrder":360},"delete":{"type":"boolean","title":"Include deleted records","format":"checkbox","default":false}}},"title":"Activities","maxItems":1,"description":"Download activities.","propertyOrder":4000},"api_region":{"enum":["us","eu"],"type":"string","title":"API Region","default":"us","propertyOrder":2},"#api_secret":{"type":"string","title":"API key","format":"password","description":"Your bearer token.","propertyOrder":1},"incremental_output":{"enum":[0,1],"type":"number","title":"Load type","default":1,"options":{"enum_titles":["Full Load","Incremental Update"]},"description":"If set to Incremental update, the result tables will be updated based on primary key consisting of all selected dimensions. Full load overwrites the destination table each time, with no primary keys.","propertyOrder":4}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"To get started generate your API key:\n\nYou can generate a bearer token, known as an App API Key, with a defined scope in [your account settings](https://fly.customer.io/settings/api_credentials?keyType=app)\n. [Learn more about bearer authorization in Customer.io.](https://customer.io/docs/managing-credentials)","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":150,"uri":"docker/kds-team.ex-customer-io","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-customer-io","name":"developer-portal-v2/kds-team.ex-customer-io","tag":"1.2.2","options":{},"digest":"sha256:86ab2d1d7ce20c5b973e04345ec9197c4a2189d3c14a48191ce565b356c828de"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-customer-io/32/1593533811933.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-customer-io/64/1593533811933.png","128":null}},{"id":"keboola.ex-daktela","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":157,"name":"Daktela","type":"extractor","shortDescription":"Extracts data from Daktela CRM/Contact Center API v6.","longDescription":"This component extracts data from the Daktela CRM/Contact Center API v6 and loads it into Keboola Storage tables.\n\n### Supported Endpoints\n\nThe component can extract data from the following Daktela API endpoints:\n\n- **accounts** - Account information\n- **activities** - General activity records\n- **activitiesCall** - Phone call activities\n- **activitiesCallChannels** - Call channel activities\n- **activitiesCallFlow** - Call flow activities\n- **activitiesChat** - Chat conversation activities\n- **activitiesEmail** - Email activities\n- **campaignsRecords** - Campaign records\n- **contacts** - Customer and contact information\n- **crmRecords** - CRM records\n- **groups** - User groups\n- **pauses** - Pause records\n- **queues** - Queue information\n- **statuses** - Status definitions\n- **templates** - Template configurations\n- **tickets** - Support tickets and cases\n- **users** - User accounts\n\n### Key Features\n\n- **Incremental loading** with automatic state management for efficient data synchronization\n- **Date range filtering** to extract data for specific time periods\n- **Parallel extraction** of multiple endpoints with configurable concurrency limits","licenseUrl":"https://github.com/keboola/component-daktela/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/component-daktela/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/component-daktela","requiredMemory":"1024m","processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","appInfo.experimental"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Daktela Extractor Configuration","required":["connection"],"properties":{"advanced":{"type":"object","title":"Advanced Settings","format":"grid","properties":{"batch_size":{"type":"integer","title":"Batch Size","default":1000,"maximum":1000,"minimum":100,"description":"Number of records to request per API page and to flush to CSV in one chunk. Note: Daktela API has a maximum page size of 1000, so values above 1000 will be automatically capped.","propertyOrder":1},"max_concurrent_requests":{"type":"integer","title":"Max Concurrent Requests","default":10,"maximum":50,"minimum":1,"description":"Maximum number of concurrent API requests. Controls how many HTTP calls can run in parallel. Increase for faster extraction, decrease if experiencing rate limiting.","propertyOrder":2}},"description":"Advanced performance settings. Adjust these if you experience timeouts or memory issues.","propertyOrder":200},"connection":{"type":"object","title":"Connection","required":["url","username","#password"],"properties":{"url":{"type":"string","title":"URL","description":"Daktela base URL (e.g., 'https://mycompany.daktela.com')","propertyOrder":1},"username":{"type":"string","title":"Username","description":"Daktela account username","propertyOrder":2},"#password":{"type":"string","title":"Password","format":"password","description":"Daktela account password (encrypted)","propertyOrder":3},"verify_ssl":{"type":"boolean","title":"Verify SSL Certificates","format":"checkbox","default":true,"description":"Enable SSL certificate verification. Disable only for testing with self-signed certificates. WARNING: Disabling SSL verification is insecure.","propertyOrder":4},"test_connection":{"type":"button","format":"test-connection","options":{"async":{"label":"Test Connection","action":"testConnection"}},"propertyOrder":5}},"propertyOrder":100}}},"configurationRowSchema":{"type":"object","title":"Endpoint Extraction Configuration","required":["endpoint","date_from","date_to"],"properties":{"fields":{"type":"array","items":{"type":"string"},"title":"Fields to Extract","format":"select","options":{"tags":true},"description":"Specify which fields to extract for this endpoint (leave empty to extract all fields). You can type field names manually or use the 'Discover Available Fields' button above.","uniqueItems":true,"propertyOrder":500},"date_to":{"type":"string","title":"Date To","default":"today","description":"End date for extraction. Supported formats: 'today', 'yesterday', '5 hours ago', '3 days ago', '4 months ago', '2 years ago'. Used as filter for tickets, contacts, and activities endpoints.","propertyOrder":300},"endpoint":{"enum":["accounts","activities","activitiesCall","activitiesCallChannels","activitiesCallFlow","activitiesChat","activitiesEmail","campaignsRecords","contacts","crmRecords","queues","statuses","tickets","users","groups","pauses","templates"],"type":"string","title":"Endpoint","description":"Select the API endpoint to extract","propertyOrder":100},"date_from":{"type":"string","title":"Date From","default":"7 days ago","description":"Start date for extraction. Supported formats: 'today', 'yesterday', '5 hours ago', '3 days ago', '4 months ago', '2 years ago'. Used as filter for tickets, contacts, and activities endpoints.","propertyOrder":200},"destination":{"type":"object","title":"Destination","format":"group","properties":{"load_type":{"enum":["full_load","incremental_load"],"type":"string","title":"Load Type","default":"full_load","description":"Full load replaces existing data. Incremental load appends new data.","propertyOrder":1},"primary_key":{"type":"array","items":{"type":"string"},"title":"Primary Key","format":"select","options":{"tags":true,"dependencies":{"load_type":"incremental_load"}},"description":"Column(s) used as primary key for deduplication. Required for incremental load.","uniqueItems":true,"propertyOrder":2}},"propertyOrder":600},"discover_fields":{"type":"button","title":"Discover Available Fields","format":"sync-action","options":{"async":{"label":"Discover Available Fields","action":"listFields","description":"Click to discover all available fields for this endpoint. The result will help you fill in the 'Fields to Extract' below."}},"propertyOrder":400}}},"createConfigurationRowSchema":null,"configurationDescription":"Configuration description.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["listFields","testConnection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-daktela","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-daktela","name":"developer-portal-v2/keboola.ex-daktela","tag":"0.1.0","options":{},"digest":"sha256:60db7f560190b64e8e94f056ba0e006168ff0fc2248eeaeea84118a555186cb5"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-daktela/32/1768916350739.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-daktela/64/1768916350739.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-daktela/128/1768916350739.png"}},{"id":"revolt-bi.app-daktela","vendor":{"id":"revolt-bi","name":"Revolt BI","address":"Pobřežní 249/46,\nPraha 8-Karlín,\n186 00","email":"support@revolt.bi","type":"other"},"version":295,"name":"Daktela","type":"extractor","shortDescription":"Contact center data from Daktela using Daktela REST API V6.","longDescription":"Daktela contact center is a cloud-based solution of call center with native support for many communication channels \"OmniChannel\" in one Web application - phone, email, helpdesk, Webchat, SMS and social networks.\n\nThis component extracts and transforms data from Daktela using the Daktela API.\n\nThis application is built according to the [Daktela API V6](https://www.daktela.com/api/v6/) docs. \n\nNeed help?\n\nIf you have any questions about the data, would like to check our Daktela reporting solution or ask questions about the data feel free to contact us at: support@revolt.bi, check our other solutions at [our website](https://www.revolt.bi) or find other components at https://components.keboola.com/components\n\n---\n\n## Operation\n\n**Output tables:**\n\n- activities\n- activitiesCall\n- activitiesChat\n- activitiesEmail\n- activities_statuses\n- accounts\n- contacts\n- groups\n- loginSessions\n- pauses\n- pauseSessions\n- queues\n- queueSessions\n- readySessions\n- recordsCampaigns\n- statuses\n- templates\n- tickets\n- timeConditions\n- npsSurveys\n\n**Incremental load:**\n\nAll tables contain an `id` column which serves as a unique primary key. In reality, it is an MD5 hash of the real primary keys.\nFor most tables, the attribute `name` serves as the primary key. The exceptions are the Activity item tables (Calls, Emails, Chats etc. ), where the primary keys are columns `activities_name` and `item_name`.\n\n---\n\n## Data issues\n* Sometimes, Daktela returns orphaned items. Activities of type \"Call\" can exist without any call associated to them. These items are deleted by the app to keep referential integrity.  \n* The app only downloads records created at least 30 minutes ago to avoid downloading unfinished calls.\n\n**Data transformation**\n* All rows in key columns have a Daktela server name prefix, e.g. `myDaktelaServer_activities_573dj57`.\n* All table names have a Daktela server name prefix, e.g. `myDaktelaServer_activities.csv`.\n* The extractor only downloads the first level of attributes returned as a nested JSON. Other attributes among hundreds from lower levels were chosen manually.\n* The script omits items without an activity from the operator. These include mostly spam emails or abandoned calls.\nIf you encounter any problems, contact us on support@revolt.bi.","licenseUrl":"https://github.com/RevoltBI/Licences/blob/master/README.md","documentationUrl":"https://revoltbi.github.io/app-daktela/","sourceCodeUrl":null,"requiredMemory":"400m","processTimeout":43200,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["CRM"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","appInfo.experimental"],"imageParameters":{"limit":1000,"fields":[{"name":"default","columns":{"users":{"keys":[],"columns":["name","title","alias","description","call_steering_description","extension","extension_state","clid","static","allowRecordingInterruption","recordAtCallStart","email","emailAuth","icon","emoji","nps_score","backoffice_user","forwarding_number","deleted","deactivated"],"filters":[],"primary_keys":["name"],"requested_json":"users","secondary_keys":[]},"groups":{"keys":[],"columns":["name","title","description","type","deleted","membersName"],"filters":[],"list_columns":["membersName"],"primary_keys":["name","membersName"],"requested_json":"groups","secondary_keys":[]},"pauses":{"keys":[],"columns":["name","title","paid","type","max_duration","calculated_from","auto_pause","deleted"],"filters":[],"primary_keys":["name"],"requested_json":"pauses","secondary_keys":[]},"queues":{"keys":[],"columns":["name","title","description","type","direction","deactivated","deleted","usersCount"],"filters":[],"primary_keys":["name"],"requested_json":"queues","secondary_keys":[]},"tickets":{"keys":[],"columns":["name","title","email","description","stage","priority","sla_deadtime","sla_change","sla_notify","sla_duration","sla_custom","reopen","deleted","created","edited","first_answer","first_answer_duration","closed","category.name"],"filters":[{"field":"edited","value":"","operator":"gte"},{"field":"edited","value":"","operator":"lte"}],"primary_keys":["name"],"requested_json":"tickets","secondary_keys":["category.name"]},"accounts":{"keys":[],"columns":["name","title","survey","description","deleted"],"filters":[],"primary_keys":["name"],"requested_json":"accounts","secondary_keys":[]},"attempts":{"keys":[],"columns":["attempt","activity.name","queue.name","user.name","time"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"}],"primary_keys":["attempt"],"requested_json":"attempts","secondary_keys":["activity.name","queue.name","user.name"]},"contacts":{"keys":["user.name"],"columns":["name","title","firstname","lastname","account","description","created","edited","user.name"],"filters":[],"primary_keys":["name"],"requested_json":"contacts","secondary_keys":[]},"statuses":{"keys":[],"columns":["name","title","validation","nextcall","blacklist_database","blacklist_expiration_time","color","deleted"],"filters":[],"primary_keys":["name"],"requested_json":"statuses","secondary_keys":[]},"qaReviews":{"keys":[],"columns":["qareview","name","qaform","activity","created_by","created","edited_by","edited","rel_score","abs_score","max_score","note","qareviewAnswers"],"filters":[],"primary_keys":["name"],"requested_json":"qaReviews","secondary_keys":[]},"templates":{"keys":[],"columns":["name","title","description","format","usingtype","content","deleted","id_template"],"filters":[],"primary_keys":["name"],"requested_json":"templates","secondary_keys":[]},"activities":{"keys":["ticket.name","queue.name","user.name","contact.name"],"columns":["name","time","ticket.name","queue.name","user.name","contact.name","title","action","type","priority","description","time_wait","time_open","time_close","important","survey"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"}],"primary_keys":["name"],"requested_json":"activities","secondary_keys":[]},"npsSurveys":{"keys":[],"columns":["name","created","evaluated","deleted","score","note","user.name","user.nps_score","activity.name","activity.type"],"filters":[{"logic":"or","filters":[{"logic":"and","filters":[{"field":"created","value":"","operator":"gte"},{"field":"created","value":"","operator":"lte"}]},{"logic":"and","filters":[{"field":"evaluated","value":"","operator":"gte"},{"field":"evaluated","value":"","operator":"lte"}]}]}],"primary_keys":["name"],"requested_json":"npssurveys","secondary_keys":[],"no_prefix_columns":[]},"activitiesFbm":{"keys":["queue.name"],"columns":["name","queue.name","time","item.name","item.sender","item.direction","item.time","item.wait_time","item.duration","item.answered","item.full_name","title","action"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"},{"field":"type","value":"FBM","operator":"eq"}],"primary_keys":["item.name"],"requested_json":"activities","secondary_keys":["name"]},"loginSessions":{"keys":[],"columns":["id_agent.name","start_time","end_time","duration"],"filters":[{"field":"start_time","value":"","operator":"gte"},{"field":"start_time","value":"","operator":"lte"}],"list_columns":[],"primary_keys":["id_agent.name","start_time"],"requested_json":"loginSessions","secondary_keys":[],"no_prefix_columns":["start_time"]},"pauseSessions":{"keys":[],"columns":["id_agent.name","start_time","end_time","duration","pause.name"],"filters":[{"field":"start_time","value":"","operator":"gte"},{"field":"start_time","value":"","operator":"lte"}],"list_columns":[],"primary_keys":["id_agent.name","start_time"],"requested_json":"pauseSessions","secondary_keys":["pause.name"],"no_prefix_columns":["start_time"]},"queueSessions":{"keys":[],"columns":["id_agent.name","start_time","end_time","duration","queue.name"],"filters":[{"field":"start_time","value":"","operator":"gte"},{"field":"start_time","value":"","operator":"lte"}],"list_columns":[],"primary_keys":["id_agent.name","start_time"],"requested_json":"queueSessions","secondary_keys":["queue.name"],"no_prefix_columns":["start_time"]},"readySessions":{"keys":[],"columns":["id_agent.name","start_time","end_time","duration"],"filters":[{"field":"start_time","value":"","operator":"gte"},{"field":"start_time","value":"","operator":"lte"}],"list_columns":[],"primary_keys":["id_agent.name","start_time"],"requested_json":"readySessions","secondary_keys":[],"no_prefix_columns":["start_time"]},"activitiesCall":{"keys":["queue.name"],"columns":["name","queue.name","time","item.id_call","item.direction","item.answered","item.clid","item.call_time","item.waiting_time","item.duration"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"},{"field":"type","value":"CALL","operator":"eq"}],"primary_keys":["item.id_call"],"requested_json":"activities","secondary_keys":["name"]},"activitiesChat":{"keys":["queue.name"],"columns":["name","queue.name","queue.title","time","item.title","item.email","item.wait_time","item.duration","item.answered","item.disconnection","item.time","item.name","item.options.ipaddress","item.options.geoip","item.options.referer"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"},{"field":"type","value":"CHAT","operator":"eq"}],"primary_keys":["item.name"],"requested_json":"activities","secondary_keys":["name"]},"timeConditions":{"keys":[],"columns":["id","description","details.timegroupid","details.time","details.type"],"filters":[],"primary_keys":["id","details.time"],"requested_json":"timeconditionsGroups","secondary_keys":[],"no_prefix_columns":["details.time"],"list_of_dicts_columns":["details"]},"activitiesEmail":{"keys":["queue.name"],"columns":["name","queue.name","time","item.name","item.address","item.direction","item.duration","item.answered","item.time","title"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"},{"field":"type","value":"EMAIL","operator":"eq"}],"primary_keys":["item.name"],"requested_json":"activities","secondary_keys":["name"]},"campaignsRecords":{"keys":[],"columns":["name","activity","title","number","action","created","edited","queue.name","queue.title"],"filters":[{"field":"edited","value":"","operator":"gte"},{"field":"edited","value":"","operator":"lte"}],"primary_keys":["name"],"requested_json":"campaignsRecords","secondary_keys":["activity"]},"ticketsSnapshots":{"keys":[],"columns":["snapshot","ticket.name","time","title","description","stage","priority","interaction_activity_count","reopen","first_answer","first_answer_duration","closed","user.name","user.title","edited_by.name","edited_by.title"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"}],"primary_keys":["snapshot"],"requested_json":"ticketsSnapshots","secondary_keys":["ticket.name","time","user.name"],"no_prefix_columns":["time"]},"ticketsCategories":{"keys":[],"columns":["name","title","sla.title","sla.response_low","sla.response_medium","sla.response_high","sla.solution_low","sla.solution_medium","sla.solution_high","timecondition.id"],"filters":[],"primary_keys":["name"],"requested_json":"ticketsCategories","secondary_keys":["timecondition.id"]},"activities_statuses":{"keys":[],"columns":["name","statuses.name"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"},{"field":"statuses","value":"[]","operator":"neq"}],"primary_keys":["name","statuses.name"],"requested_json":"activities","secondary_keys":[],"list_of_dicts_columns":["statuses"]}},"project_ids":[]},{"name":"legacy","columns":{"users":{"keys":[],"columns":["name","title","alias","description","call_steering_description","extension","extension_state","clid","static","allowRecordingInterruption","recordAtCallStart","nps_score","email","emailAuth","icon","emoji","backoffice_user","forwarding_number","deleted","deactivated"],"filters":[],"primary_keys":["name"],"requested_json":"users","secondary_keys":[]},"groups":{"keys":[],"columns":["name","title","description","type","deleted","membersName"],"filters":[],"list_columns":["membersName"],"primary_keys":["name","membersName"],"requested_json":"groups","secondary_keys":[]},"pauses":{"keys":[],"columns":["name","title","paid","type","max_duration","calculated_from","auto_pause","deleted"],"filters":[],"primary_keys":["name"],"requested_json":"pauses","secondary_keys":[]},"queues":{"keys":[],"columns":["name","title","description","type","direction","deactivated","deleted","usersCount"],"filters":[],"primary_keys":["name"],"requested_json":"queues","secondary_keys":[]},"tickets":{"keys":[],"columns":["name","title","email","description","stage","priority","sla_deadtime","sla_change","sla_notify","sla_duration","sla_custom","survey","survey_offered","satisfaction","satisfaction_comment","reopen","deleted","created","edited","first_answer","first_answer_duration","closed","unread","has_attachment","isBookmarked","category.name"],"filters":[{"field":"edited","value":"","operator":"gte"},{"field":"edited","value":"","operator":"lte"}],"primary_keys":["name"],"requested_json":"tickets","secondary_keys":["category.name"]},"accounts":{"keys":[],"columns":["name","title","survey","description","deleted"],"filters":[],"primary_keys":["name"],"requested_json":"accounts","secondary_keys":[]},"attempts":{"keys":[],"columns":["attempt","activity.name","queue.name","user.name","time"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"}],"primary_keys":["attempt"],"requested_json":"attempts","secondary_keys":["activity.name","queue.name","user.name"]},"contacts":{"keys":["user.name"],"columns":["name","title","firstname","lastname","account","description","created","edited","user.name"],"filters":[],"primary_keys":["name"],"requested_json":"contacts","secondary_keys":[]},"statuses":{"keys":[],"columns":["name","title","validation","nextcall","blacklist_database","blacklist_expiration_time","color","deleted"],"filters":[],"primary_keys":["name"],"requested_json":"statuses","secondary_keys":[]},"templates":{"keys":[],"columns":["name","title","description","format","usingtype","content","deleted","id_template"],"filters":[],"primary_keys":["name"],"requested_json":"templates","secondary_keys":[]},"activities":{"keys":["ticket.name","queue.name","user.name","contact.name"],"columns":["name","time","ticket.name","queue.name","user.name","contact.name","record.customFields.hodnoceni","record.customFields.operator","record.customFields.id_hovoru","title","action","type","survey","record","priority","description","time_wait","time_open","time_close","important"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"}],"primary_keys":["name"],"requested_json":"activities","secondary_keys":[]},"npsSurveys":{"keys":[],"columns":["name","created","evaluated","deleted","score","note","user.name","user.nps_score","activity.name","activity.type"],"filters":[],"primary_keys":["name"],"requested_json":"npssurveys","secondary_keys":[],"no_prefix_columns":[]},"activitiesFbm":{"keys":["queue.name"],"columns":["name","queue.name","time","item.name","item.sender","item.direction","item.time","item.wait_time","item.duration","item.answered","item.full_name","title","action"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"},{"field":"type","value":"FBM","operator":"eq"}],"primary_keys":["item.name"],"requested_json":"activities","secondary_keys":["name"]},"loginSessions":{"keys":[],"columns":["id_agent.name","start_time","end_time","duration"],"filters":[{"field":"start_time","value":"","operator":"gte"},{"field":"start_time","value":"","operator":"lte"}],"list_columns":[],"primary_keys":["id_agent.name","start_time"],"requested_json":"loginSessions","secondary_keys":[],"no_prefix_columns":["start_time"]},"pauseSessions":{"keys":[],"columns":["id_agent.name","start_time","end_time","duration","pause.name"],"filters":[{"field":"start_time","value":"","operator":"gte"},{"field":"start_time","value":"","operator":"lte"}],"list_columns":[],"primary_keys":["id_agent.name","start_time"],"requested_json":"pauseSessions","secondary_keys":["pause.name"],"no_prefix_columns":["start_time"]},"queueSessions":{"keys":[],"columns":["id_agent.name","start_time","end_time","duration","queue.name"],"filters":[{"field":"start_time","value":"","operator":"gte"},{"field":"start_time","value":"","operator":"lte"}],"list_columns":[],"primary_keys":["id_agent.name","start_time"],"requested_json":"queueSessions","secondary_keys":["queue.name"],"no_prefix_columns":["start_time"]},"readySessions":{"keys":[],"columns":["id_agent.name","start_time","end_time","duration"],"filters":[{"field":"start_time","value":"","operator":"gte"},{"field":"start_time","value":"","operator":"lte"}],"list_columns":[],"primary_keys":["id_agent.name","start_time"],"requested_json":"readySessions","secondary_keys":[],"no_prefix_columns":["start_time"]},"activitiesCall":{"keys":["queue.name"],"columns":["name","queue.name","time","item.id_call","item.call_time","item.direction","item.answered","item.clid","item.prefix_clid_name","item.did","item.waiting_time","item.ringing_time","item.hold_time","item.duration","item.orig_pos","item.position","item.disposition_cause","item.disconnection_cause","item.pressed_key","item.missed_call","item.missed_call_time","item.attempts","item.score","item.note"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"},{"field":"type","value":"CALL","operator":"eq"}],"primary_keys":["item.id_call"],"requested_json":"activities","secondary_keys":["name"]},"activitiesChat":{"keys":["queue.name"],"columns":["name","queue.name","time","item.title","item.email","item.wait_time","item.duration","item.answered","item.disconnection","item.time","item.name","item.ip","item.country_code","item.country_name","item.region_code","item.region_name","item.city","item.zip_code","item.time_zone","item.latitude","item.longitude","item.metro_code","item.queue_title","item.referer"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"},{"field":"type","value":"CHAT","operator":"eq"}],"primary_keys":["item.name"],"requested_json":"activities","secondary_keys":["name"]},"timeConditions":{"keys":[],"columns":["id","description","details.timegroupid","details.time","details.type"],"filters":[],"primary_keys":["id","details.time"],"requested_json":"timeconditionsGroups","secondary_keys":[],"no_prefix_columns":["details.time"],"list_of_dicts_columns":["details"]},"activitiesEmail":{"keys":["queue.name"],"columns":["name","queue.name","time","item.name","item.address","item.direction","item.wait_time","item.duration","item.answered","item.text","item.time","title"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"},{"field":"type","value":"EMAIL","operator":"eq"}],"primary_keys":["item.name"],"requested_json":"activities","secondary_keys":["name"]},"campaignsRecords":{"keys":[],"columns":["name","activity","title","number","action","created","edited","queue.name","queue.title","customFields.hodnoceni","customFields.id_hovoru","customFields.operator"],"filters":[{"field":"created","value":"","operator":"gte"},{"field":"created","value":"","operator":"lte"}],"primary_keys":["name"],"requested_json":"campaignsRecords","secondary_keys":["activity"]},"ticketsSnapshots":{"keys":[],"columns":["snapshot","ticket.name","time","title","description","stage","priority","interaction_activity_count","reopen","first_answer","first_answer_duration","closed","user.name","user.title","edited_by.name","edited_by.title"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"}],"primary_keys":["snapshot"],"requested_json":"ticketsSnapshots","secondary_keys":["ticket.name","time","user.name"],"no_prefix_columns":["time"]},"ticketsCategories":{"keys":[],"columns":["name","title","sla.title","sla.response_low","sla.response_medium","sla.response_high","sla.solution_low","sla.solution_medium","sla.solution_high","timecondition.id"],"filters":[],"primary_keys":["name"],"requested_json":"ticketsCategories","secondary_keys":["timecondition.id"]},"activities_statuses":{"keys":[],"columns":["name","statuses.name"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"},{"field":"statuses","value":"[]","operator":"neq"}],"primary_keys":["name","statuses.name"],"requested_json":"activities","secondary_keys":[],"list_of_dicts_columns":["statuses"]}},"project_ids":["connection.eu-central-1.keboola.com-166","connection.eu-central-1.keboola.com-410"]},{"name":"mall","columns":{"users":{"keys":[],"columns":["name","title","description","algo","email","nps_score","backoffice_user","deleted"],"filters":[],"primary_keys":["name"],"requested_json":"users","secondary_keys":[]},"groups":{"keys":[],"columns":["name","title","description","type","deleted","membersName"],"filters":[],"list_columns":["membersName"],"primary_keys":["name","membersName"],"requested_json":"groups","secondary_keys":[]},"pauses":{"keys":[],"columns":["name","title","paid","type","max_duration","calculated_from","auto_pause","deleted"],"filters":[],"primary_keys":["name"],"requested_json":"pauses","secondary_keys":[]},"queues":{"keys":[],"columns":["name","title","description","type","direction","deactivated","deleted","usersCount"],"filters":[],"primary_keys":["name"],"requested_json":"queues","secondary_keys":[]},"tickets":{"keys":[],"columns":["name","title","email","description","stage","priority","sla_deadtime","sla_change","sla_notify","sla_duration","sla_custom","survey","survey_offered","satisfaction","satisfaction_comment","reopen","deleted","created","edited","first_answer","first_answer_duration","closed","unread","has_attachment","isBookmarked","category.name","statuses.name","customFields.objednavky"],"filters":[{"field":"edited","value":"","operator":"gte"},{"field":"edited","value":"","operator":"lte"}],"primary_keys":["name"],"requested_json":"tickets","secondary_keys":["category.name"],"list_of_dicts_columns":["statuses"]},"accounts":{"keys":[],"columns":["name","title","sla","user.name","description","cretated","edited","customFields.partner_id"],"filters":[],"primary_keys":["name"],"requested_json":"accounts","secondary_keys":[]},"attempts":{"keys":[],"columns":["attempt","activity.name","queue.name","user.name","time"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"}],"primary_keys":["attempt"],"requested_json":"attempts","secondary_keys":["activity.name","queue.name","user.name"]},"contacts":{"keys":["user.name"],"columns":["name","title","firstname","lastname","account.name","description","nps_score","duplicateContacts","notDuplicateContacts","created","edited","user.name","customFields.partner_id"],"filters":[{"field":"customFields.partner_id","value":"[]","operator":"neq"}],"primary_keys":["name"],"requested_json":"contacts","secondary_keys":[]},"statuses":{"keys":[],"columns":["name","title","validation","nextcall","blacklist_database","blacklist_expiration_time","color","deleted"],"filters":[],"primary_keys":["name"],"requested_json":"statuses","secondary_keys":[]},"templates":{"keys":[],"columns":["name","title","description","format","usingtype","content","deleted","id_template"],"filters":[],"primary_keys":["name"],"requested_json":"templates","secondary_keys":[]},"activities":{"keys":["ticket.name","queue.name","user.name","contact.name"],"columns":["name","time","ticket.name","queue.name","user.name","contact.name","record.customFields.hodnoceni","record.customFields.operator","record.customFields.id_hovoru","title","action","type","survey","record","priority","description","time_wait","time_open","time_close","important","record.customFields.objednavky"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"}],"primary_keys":["name"],"requested_json":"activities","secondary_keys":[]},"npsSurveys":{"keys":[],"columns":["name","created","evaluated","deleted","score","note","user.name","user.nps_score","activity.name","activity.type"],"filters":[],"primary_keys":["name"],"requested_json":"npssurveys","secondary_keys":[],"no_prefix_columns":[]},"ticketsAll":{"keys":[],"columns":["name","title","email","description","contact.name","stage","priority","sla_deadtime","sla_change","sla_notify","sla_duration","sla_custom","survey","survey_offered","satisfaction","satisfaction_comment","reopen","deleted","created","edited","edited_by.name","last_activity","last_activity_operator","last_activity_client","first_answer","first_answer_duration","closed","unread","has_attachment","isBookmarked","category.name","customFields.objednavky","customFields.lvl_1","customFields.lvl1_checkout","customFields.lvl2_dorucovani_drive","customFields.lvl2_dorucovani","customFields.lvl2_komunikace","customFields.lvl2_nedoruceno","customFields.lvl2_priplatkove_sluzby","customFields.lvl2_reklamace","customFields.lvl2_vouchery","customFields.lvl2_vraceni_platby","customFields.lvl2_web","customFields.lvl2_zbozi","customFields.lvl2_zasilka","customFields.lvl3_checkout","customFields.lvl_3","customFields.lvl3_vouchery","customFields.lvl3_zbozi"],"filters":[{"field":"edited","value":"","operator":"gte"},{"field":"edited","value":"","operator":"lte"}],"primary_keys":["name"],"requested_json":"tickets","secondary_keys":["category.name"]},"activitiesFbm":{"keys":["queue.name"],"columns":["name","queue.name","time","item.name","item.sender","item.direction","item.time","item.wait_time","item.duration","item.answered","item.full_name","title","action"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"},{"field":"type","value":"FBM","operator":"eq"}],"primary_keys":["item.name"],"requested_json":"activities","secondary_keys":["name"]},"loginSessions":{"keys":[],"columns":["id_agent.name","start_time","end_time","duration"],"filters":[{"field":"start_time","value":"","operator":"gte"},{"field":"start_time","value":"","operator":"lte"}],"list_columns":[],"primary_keys":["id_agent.name","start_time"],"requested_json":"loginSessions","secondary_keys":[],"no_prefix_columns":["start_time"]},"pauseSessions":{"keys":[],"columns":["id_agent.name","start_time","end_time","duration","pause.name"],"filters":[{"field":"start_time","value":"","operator":"gte"},{"field":"start_time","value":"","operator":"lte"}],"list_columns":[],"primary_keys":["id_agent.name","start_time"],"requested_json":"pauseSessions","secondary_keys":["pause.name"],"no_prefix_columns":["start_time"]},"queueSessions":{"keys":[],"columns":["id_agent.name","start_time","end_time","duration","queue.name"],"filters":[{"field":"start_time","value":"","operator":"gte"},{"field":"start_time","value":"","operator":"lte"}],"list_columns":[],"primary_keys":["id_agent.name","start_time"],"requested_json":"queueSessions","secondary_keys":["queue.name"],"no_prefix_columns":["start_time"]},"readySessions":{"keys":[],"columns":["id_agent.name","start_time","end_time","duration"],"filters":[{"field":"start_time","value":"","operator":"gte"},{"field":"start_time","value":"","operator":"lte"}],"list_columns":[],"primary_keys":["id_agent.name","start_time"],"requested_json":"readySessions","secondary_keys":[],"no_prefix_columns":["start_time"]},"activitiesCall":{"keys":["queue.name"],"columns":["name","queue.name","time","item.id_call","item.call_time","item.direction","item.answered","item.clid","item.prefix_clid_name","item.did","item.waiting_time","item.ringing_time","item.hold_time","item.duration","item.orig_pos","item.position","item.disposition_cause","item.disconnection_cause","item.pressed_key","item.missed_call","item.missed_call_time","item.attempts","item.score","item.note"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"},{"field":"type","value":"CALL","operator":"eq"}],"primary_keys":["item.id_call"],"requested_json":"activities","secondary_keys":["name"]},"activitiesChat":{"keys":["queue.name"],"columns":["name","queue.name","time","item.title","item.email","item.wait_time","item.duration","item.answered","item.disconnection","item.time","item.name","item.ip","item.country_code","item.country_name","item.region_code","item.region_name","item.city","item.zip_code","item.time_zone","item.latitude","item.longitude","item.metro_code","item.queue_title","item.referer"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"},{"field":"type","value":"CHAT","operator":"eq"}],"primary_keys":["item.name"],"requested_json":"activities","secondary_keys":["name"]},"campaignsTypes":{"keys":[],"columns":["name","title","description","created","queue.name"],"filters":[{"field":"created","value":"","operator":"gte"},{"field":"created","value":"","operator":"lte"}],"primary_keys":["name"],"requested_json":"campaignsTypes","secondary_keys":[]},"timeConditions":{"keys":[],"columns":["id","description","details.timegroupid","details.time","details.type"],"filters":[],"primary_keys":["id","details.time"],"requested_json":"timeconditionsGroups","secondary_keys":[],"no_prefix_columns":["details.time"],"list_of_dicts_columns":["details"]},"activitiesEmail":{"keys":["queue.name"],"columns":["name","queue.name","time","item.name","item.address","item.direction","item.wait_time","item.duration","item.answered","item.text","item.time","title"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"},{"field":"type","value":"EMAIL","operator":"eq"}],"primary_keys":["item.name"],"requested_json":"activities","secondary_keys":["name"]},"activitiesFbmAll":{"keys":[],"columns":["name","title","state","queue.name","queue.title","user.name","user.title","contact.name","external_contact.name","external_contact.full_name","sender","time","answered"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"}],"primary_keys":["name"],"requested_json":"activitiesFbm","secondary_keys":[]},"campaignsRecords":{"keys":[],"columns":["name","activity","title","number","action","created","edited","queue.name","queue.title","customFields.hodnoceni","customFields.id_hovoru","customFields.operator","record_type.name"],"filters":[{"field":"created","value":"","operator":"gte"},{"field":"created","value":"","operator":"lte"}],"primary_keys":["name"],"requested_json":"campaignsRecords","secondary_keys":["activity"]},"ticketsSnapshots":{"keys":[],"columns":["snapshot","ticket.name","time","title","description","stage","priority","interaction_activity_count","reopen","first_answer","first_answer_duration","closed","user.name","user.title","edited_by.name","edited_by.title"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"}],"primary_keys":["snapshot"],"requested_json":"ticketsSnapshots","secondary_keys":["ticket.name","time","user.name"],"no_prefix_columns":["time"]},"ticketsCategories":{"keys":[],"columns":["name","title","sla.title","sla.response_low","sla.response_medium","sla.response_high","sla.solution_low","sla.solution_medium","sla.solution_high","timecondition.id"],"filters":[],"primary_keys":["name"],"requested_json":"ticketsCategories","secondary_keys":["timecondition.id"]},"tickets_followers":{"keys":[],"columns":["name","followers.name"],"filters":[{"field":"edited","value":"","operator":"gte"},{"field":"edited","value":"","operator":"lte"}],"primary_keys":["name"],"requested_json":"tickets","secondary_keys":[],"list_of_dicts_columns":["followers"]},"activities_statuses":{"keys":[],"columns":["name","statuses.name"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"},{"field":"statuses","value":"[]","operator":"neq"}],"primary_keys":["name","statuses.name"],"requested_json":"activities","secondary_keys":[],"list_of_dicts_columns":["statuses"]},"activitiesFbm_activities":{"keys":[],"columns":["name","activities.name"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"}],"primary_keys":["name"],"requested_json":"activitiesFbm","secondary_keys":[],"list_of_dicts_columns":["activities"]}},"project_ids":["connection.eu-central-1.keboola.com-87"]},{"name":"sportisimo","columns":{"users":{"keys":[],"columns":["name","title","description","algo","email","nps_score","backoffice_user","deleted"],"filters":[],"primary_keys":["name"],"requested_json":"users","secondary_keys":[]},"groups":{"keys":[],"columns":["name","title","description","type","deleted","membersName"],"filters":[],"list_columns":["membersName"],"primary_keys":["name","membersName"],"requested_json":"groups","secondary_keys":[]},"pauses":{"keys":[],"columns":["name","title","paid","type","max_duration","calculated_from","auto_pause","deleted"],"filters":[],"primary_keys":["name"],"requested_json":"pauses","secondary_keys":[]},"queues":{"keys":[],"columns":["name","title","description","type","direction","deactivated","deleted","usersCount"],"filters":[],"primary_keys":["name"],"requested_json":"queues","secondary_keys":[]},"tickets":{"keys":[],"columns":["name","title","email","description","stage","priority","sla_deadtime","sla_change","sla_notify","sla_duration","sla_custom","survey","survey_offered","satisfaction","satisfaction_comment","reopen","deleted","created","edited","first_answer","first_answer_duration","closed","unread","has_attachment","isBookmarked","category.name"],"filters":[{"field":"edited","value":"","operator":"gte"},{"field":"edited","value":"","operator":"lte"}],"primary_keys":["name"],"requested_json":"tickets","secondary_keys":["category.name"]},"accounts":{"keys":[],"columns":["name","title","survey","description","deleted"],"filters":[],"primary_keys":["name"],"requested_json":"accounts","secondary_keys":[]},"attempts":{"keys":[],"columns":["attempt","activity.name","queue.name","user.name","time"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"}],"primary_keys":["attempt"],"requested_json":"attempts","secondary_keys":["activity.name","queue.name","user.name"]},"contacts":{"keys":["user.name"],"columns":["name","title","firstname","lastname","account","description","created","edited","user.name"],"filters":[{"field":"edited","value":"","operator":"gte"},{"field":"edited","value":"","operator":"lte"}],"primary_keys":["name"],"requested_json":"contacts","secondary_keys":[]},"statuses":{"keys":[],"columns":["name","title","validation","nextcall","blacklist_database","blacklist_expiration_time","color","deleted"],"filters":[],"primary_keys":["name"],"requested_json":"statuses","secondary_keys":[]},"templates":{"keys":[],"columns":["name","title","description","format","usingtype","content","deleted","id_template"],"filters":[],"primary_keys":["name"],"requested_json":"templates","secondary_keys":[]},"activities":{"keys":["ticket.name","queue.name","user.name","contact.name"],"columns":["name","time","ticket.name","queue.name","user.name","contact.name","record.customFields.hodnoceni","record.customFields.operator","record.customFields.id_hovoru","title","action","type","survey","record","priority","description","time_wait","time_open","time_close","important"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"}],"primary_keys":["name"],"requested_json":"activities","secondary_keys":[]},"npsSurveys":{"keys":[],"columns":["name","created","evaluated","deleted","score","note","user.name","user.nps_score","activity.name","activity.type"],"filters":[{"logic":"or","filters":[{"logic":"and","filters":[{"field":"created","value":"","operator":"gte"},{"field":"created","value":"","operator":"lte"}]},{"logic":"and","filters":[{"field":"evaluated","value":"","operator":"gte"},{"field":"evaluated","value":"","operator":"lte"}]}]}],"primary_keys":["name"],"requested_json":"npssurveys","secondary_keys":[],"no_prefix_columns":[]},"activitiesFbm":{"keys":["queue.name"],"columns":["name","queue.name","time","item.name","item.sender","item.direction","item.time","item.wait_time","item.duration","item.answered","item.full_name","title","action"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"},{"field":"type","value":"FBM","operator":"eq"}],"primary_keys":["item.name"],"requested_json":"activities","secondary_keys":["name"]},"activitiesWap":{"keys":["queue.name"],"columns":["name","queue.name","time","item.name","item.sender","item.direction","item.time","item.wait_time","item.duration","item.answered","item.full_name","title","action"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"},{"field":"type","value":"WAP","operator":"eq"}],"primary_keys":["item.name"],"requested_json":"activities","secondary_keys":["name"]},"activitiesWeb":{"keys":["queue.name","user.name"],"columns":["name","time","title","queue.name","user.name","activities.name"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"}],"primary_keys":["name"],"requested_json":"activitiesWeb","secondary_keys":["activities.name"],"no_prefix_columns":["name"],"list_of_dicts_columns":["activities"]},"loginSessions":{"keys":[],"columns":["id_agent.name","start_time","end_time","duration"],"filters":[{"field":"start_time","value":"","operator":"gte"},{"field":"start_time","value":"","operator":"lte"}],"list_columns":[],"primary_keys":["id_agent.name","start_time"],"requested_json":"loginSessions","secondary_keys":[],"no_prefix_columns":["start_time"]},"pauseSessions":{"keys":[],"columns":["id_agent.name","start_time","end_time","duration","pause.name"],"filters":[{"field":"start_time","value":"","operator":"gte"},{"field":"start_time","value":"","operator":"lte"}],"list_columns":[],"primary_keys":["id_agent.name","start_time"],"requested_json":"pauseSessions","secondary_keys":["pause.name"],"no_prefix_columns":["start_time"]},"queueSessions":{"keys":[],"columns":["id_agent.name","start_time","end_time","duration","queue.name"],"filters":[{"field":"start_time","value":"","operator":"gte"},{"field":"start_time","value":"","operator":"lte"}],"list_columns":[],"primary_keys":["id_agent.name","start_time"],"requested_json":"queueSessions","secondary_keys":["queue.name"],"no_prefix_columns":["start_time"]},"readySessions":{"keys":[],"columns":["id_agent.name","start_time","end_time","duration"],"filters":[{"field":"start_time","value":"","operator":"gte"},{"field":"start_time","value":"","operator":"lte"}],"list_columns":[],"primary_keys":["id_agent.name","start_time"],"requested_json":"readySessions","secondary_keys":[],"no_prefix_columns":["start_time"]},"activitiesCall":{"keys":["queue.name"],"columns":["name","queue.name","time","item.id_call","item.call_time","item.direction","item.answered","item.clid","item.prefix_clid_name","item.did","item.waiting_time","item.ringing_time","item.hold_time","item.duration","item.orig_pos","item.position","item.disposition_cause","item.disconnection_cause","item.pressed_key","item.missed_call","item.missed_call_time","item.attempts","item.score","item.note"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"},{"field":"type","value":"CALL","operator":"eq"}],"primary_keys":["item.id_call"],"requested_json":"activities","secondary_keys":["name"]},"activitiesChat":{"keys":["queue.name"],"columns":["name","queue.name","queue.title","time","item.title","item.email","item.wait_time","item.duration","item.answered","item.disconnection","item.time","item.name","item.options.ipaddress","item.options.geoip","item.options.referer"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"},{"field":"type","value":"CHAT","operator":"eq"}],"primary_keys":["item.name"],"requested_json":"activities","secondary_keys":["name"]},"timeConditions":{"keys":[],"columns":["id","description","details.timegroupid","details.time","details.type"],"filters":[],"primary_keys":["id","details.time"],"requested_json":"timeconditionsGroups","secondary_keys":[],"no_prefix_columns":["details.time"],"list_of_dicts_columns":["details"]},"activitiesEmail":{"keys":["queue.name"],"columns":["name","queue.name","time","item.name","item.address","item.direction","item.wait_time","item.duration","item.answered","item.text","item.time","title"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"},{"field":"type","value":"EMAIL","operator":"eq"}],"primary_keys":["item.name"],"requested_json":"activities","secondary_keys":["name"]},"campaignsRecords":{"keys":[],"columns":["name","activity","title","number","action","created","edited","queue.name","queue.title","customFields.hodnoceni","customFields.id_hovoru","customFields.operator"],"filters":[{"field":"created","value":"","operator":"gte"},{"field":"created","value":"","operator":"lte"}],"primary_keys":["name"],"requested_json":"campaignsRecords","secondary_keys":["activity"]},"ticketsCategories":{"keys":[],"columns":["name","title","sla.title","sla.response_low","sla.response_medium","sla.response_high","sla.solution_low","sla.solution_medium","sla.solution_high","timecondition.id"],"filters":[],"primary_keys":["name"],"requested_json":"ticketsCategories","secondary_keys":["timecondition.id"]},"activities_statuses":{"keys":[],"columns":["name","statuses.name"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"},{"field":"statuses","value":"[]","operator":"neq"}],"primary_keys":["name","statuses.name"],"requested_json":"activities","secondary_keys":[],"list_of_dicts_columns":["statuses"]},"activitiesWebMessages":{"keys":[],"columns":["name","time_created","time_read","text","type","result","interaction.name"],"filters":[{"field":"time_created","value":"","operator":"gte"},{"field":"time_created","value":"","operator":"lte"}],"primary_keys":["name"],"requested_json":{"child":"messages","parent":"activitiesWeb","requirements":{"table":"activitiesWeb","column":"name"}},"secondary_keys":["interaction.name"],"no_prefix_columns":["interaction.name"]}},"project_ids":["connection.eu-central-1.keboola.com-401","XX-0"]},{"name":"astratex","columns":{"users":{"keys":[],"columns":["name","title","alias","description","call_steering_description","extension","extension_state","clid","static","allowRecordingInterruption","recordAtCallStart","email","emailAuth","icon","emoji","nps_score","backoffice_user","forwarding_number","deleted","deactivated"],"filters":[],"primary_keys":["name"],"requested_json":"users","secondary_keys":[]},"groups":{"keys":[],"columns":["name","title","description","type","deleted","membersName"],"filters":[],"list_columns":["membersName"],"primary_keys":["name","membersName"],"requested_json":"groups","secondary_keys":[]},"pauses":{"keys":[],"columns":["name","title","paid","type","max_duration","calculated_from","auto_pause","deleted"],"filters":[],"primary_keys":["name"],"requested_json":"pauses","secondary_keys":[]},"queues":{"keys":[],"columns":["name","title","description","type","direction","deactivated","deleted","usersCount"],"filters":[],"primary_keys":["name"],"requested_json":"queues","secondary_keys":[]},"tickets":{"keys":[],"columns":["name","title","email","description","stage","priority","sla_deadtime","sla_change","sla_notify","sla_duration","sla_custom","reopen","deleted","created","edited","first_answer","first_answer_duration","closed","category.name","user.name"],"filters":[{"field":"edited","value":"","operator":"gte"},{"field":"edited","value":"","operator":"lte"}],"primary_keys":["name"],"requested_json":"tickets","secondary_keys":["category.name","user.name"]},"accounts":{"keys":[],"columns":["name","title","survey","description","deleted"],"filters":[],"primary_keys":["name"],"requested_json":"accounts","secondary_keys":[]},"attempts":{"keys":[],"columns":["attempt","activity.name","queue.name","user.name","time"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"}],"primary_keys":["attempt"],"requested_json":"attempts","secondary_keys":["activity.name","queue.name","user.name"]},"contacts":{"keys":["user.name"],"columns":["name","title","firstname","lastname","account","description","created","edited","user.name"],"filters":[],"primary_keys":["name"],"requested_json":"contacts","secondary_keys":[]},"statuses":{"keys":[],"columns":["name","title","validation","nextcall","blacklist_database","blacklist_expiration_time","color","deleted"],"filters":[],"primary_keys":["name"],"requested_json":"statuses","secondary_keys":[]},"templates":{"keys":[],"columns":["name","title","description","format","usingtype","content","deleted","id_template"],"filters":[],"primary_keys":["name"],"requested_json":"templates","secondary_keys":[]},"activities":{"keys":["ticket.name","queue.name","user.name","contact.name"],"columns":["name","time","ticket.name","queue.name","user.name","contact.name","title","action","type","priority","description","time_wait","time_open","time_close","important","survey"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"}],"primary_keys":["name"],"requested_json":"activities","secondary_keys":[]},"npsSurveys":{"keys":[],"columns":["name","created","evaluated","score","note","user.name","user.nps_score","activity.name","activity.type","contact.name"],"filters":[{"logic":"or","filters":[{"logic":"and","filters":[{"field":"created","value":"","operator":"gte"},{"field":"created","value":"","operator":"lte"}]},{"logic":"and","filters":[{"field":"evaluated","value":"","operator":"gte"},{"field":"evaluated","value":"","operator":"lte"}]}]}],"primary_keys":["name"],"requested_json":"npssurveys","secondary_keys":[],"no_prefix_columns":[]},"activitiesFbm":{"keys":["queue.name"],"columns":["name","queue.name","time","item.name","item.sender","item.direction","item.time","item.wait_time","item.duration","item.answered","item.full_name","title","action"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"},{"field":"type","value":"FBM","operator":"eq"}],"primary_keys":["item.name"],"requested_json":"activities","secondary_keys":["name"]},"loginSessions":{"keys":[],"columns":["id_agent.name","start_time","end_time","duration"],"filters":[{"field":"start_time","value":"","operator":"gte"},{"field":"start_time","value":"","operator":"lte"}],"list_columns":[],"primary_keys":["id_agent.name","start_time"],"requested_json":"loginSessions","secondary_keys":[],"no_prefix_columns":["start_time"]},"pauseSessions":{"keys":[],"columns":["id_agent.name","start_time","end_time","duration","pause.name"],"filters":[{"field":"start_time","value":"","operator":"gte"},{"field":"start_time","value":"","operator":"lte"}],"list_columns":[],"primary_keys":["id_agent.name","start_time"],"requested_json":"pauseSessions","secondary_keys":["pause.name"],"no_prefix_columns":["start_time"]},"queueSessions":{"keys":[],"columns":["id_agent.name","start_time","end_time","duration","queue.name"],"filters":[{"field":"start_time","value":"","operator":"gte"},{"field":"start_time","value":"","operator":"lte"}],"list_columns":[],"primary_keys":["id_agent.name","start_time"],"requested_json":"queueSessions","secondary_keys":["queue.name"],"no_prefix_columns":["start_time"]},"readySessions":{"keys":[],"columns":["id_agent.name","start_time","end_time","duration"],"filters":[{"field":"start_time","value":"","operator":"gte"},{"field":"start_time","value":"","operator":"lte"}],"list_columns":[],"primary_keys":["id_agent.name","start_time"],"requested_json":"readySessions","secondary_keys":[],"no_prefix_columns":["start_time"]},"activitiesCall":{"keys":["queue.name"],"columns":["name","queue.name","time","item.id_call","item.direction","item.answered","item.clid","item.call_time","item.waiting_time","item.duration"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"},{"field":"type","value":"CALL","operator":"eq"}],"primary_keys":["item.id_call"],"requested_json":"activities","secondary_keys":["name"]},"activitiesChat":{"keys":["queue.name"],"columns":["name","queue.name","queue.title","time","item.title","item.email","item.wait_time","item.duration","item.answered","item.disconnection","item.time","item.name","item.options.ipaddress","item.options.geoip","item.options.referer"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"},{"field":"type","value":"CHAT","operator":"eq"}],"primary_keys":["item.name"],"requested_json":"activities","secondary_keys":["name"]},"timeConditions":{"keys":[],"columns":["id","description","details.timegroupid","details.time","details.type"],"filters":[],"primary_keys":["id","details.time"],"requested_json":"timeconditionsGroups","secondary_keys":[],"no_prefix_columns":["details.time"],"list_of_dicts_columns":["details"]},"activitiesEmail":{"keys":["queue.name"],"columns":["name","queue.name","time","item.name","item.address","item.direction","item.duration","item.answered","item.time","title"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"},{"field":"type","value":"EMAIL","operator":"eq"}],"primary_keys":["item.name"],"requested_json":"activities","secondary_keys":["name"]},"campaignsRecords":{"keys":[],"columns":["name","activity","title","number","action","created","edited","queue.name","queue.title"],"filters":[{"field":"edited","value":"","operator":"gte"},{"field":"edited","value":"","operator":"lte"}],"primary_keys":["name"],"requested_json":"campaignsRecords","secondary_keys":["activity"]},"ticketsSnapshots":{"keys":[],"columns":["snapshot","ticket.name","time","title","description","stage","priority","interaction_activity_count","reopen","first_answer","first_answer_duration","closed","user.name","user.title","edited_by.name","edited_by.title"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"}],"primary_keys":["snapshot"],"requested_json":"ticketsSnapshots","secondary_keys":["ticket.name","time","user.name"],"no_prefix_columns":["time"]},"ticketsCategories":{"keys":[],"columns":["name","title","sla.title","sla.response_low","sla.response_medium","sla.response_high","sla.solution_low","sla.solution_medium","sla.solution_high","timecondition.id"],"filters":[],"primary_keys":["name"],"requested_json":"ticketsCategories","secondary_keys":["timecondition.id"]},"activities_statuses":{"keys":[],"columns":["name","statuses.name"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"},{"field":"statuses","value":"[]","operator":"neq"}],"primary_keys":["name","statuses.name"],"requested_json":"activities","secondary_keys":[],"list_of_dicts_columns":["statuses"]}},"project_ids":["connection.eu-central-1.keboola.com-544"]},{"name":"rohlik_countries","columns":{"users":{"keys":[],"columns":["name","title","alias","description","call_steering_description","extension","extension_state","clid","static","allowRecordingInterruption","recordAtCallStart","email","emailAuth","icon","emoji","nps_score","backoffice_user","forwarding_number","deleted","deactivated"],"filters":[],"primary_keys":["name"],"requested_json":"users","secondary_keys":[]},"groups":{"keys":[],"columns":["name","title","description","type","deleted","membersName"],"filters":[],"list_columns":["membersName"],"primary_keys":["name","membersName"],"requested_json":"groups","secondary_keys":[]},"pauses":{"keys":[],"columns":["name","title","paid","type","max_duration","calculated_from","auto_pause","deleted"],"filters":[],"primary_keys":["name"],"requested_json":"pauses","secondary_keys":[]},"queues":{"keys":[],"columns":["name","title","description","type","direction","deactivated","deleted","usersCount"],"filters":[],"primary_keys":["name"],"requested_json":"queues","secondary_keys":[]},"tickets":{"keys":[],"columns":["name","title","email","description","stage","priority","sla_deadtime","sla_change","sla_notify","sla_duration","sla_custom","reopen","deleted","created","edited","first_answer","first_answer_duration","closed","category.name"],"filters":[{"field":"edited","value":"","operator":"gte"},{"field":"edited","value":"","operator":"lte"}],"primary_keys":["name"],"requested_json":"tickets","secondary_keys":["category.name"]},"accounts":{"keys":[],"columns":["name","title","survey","description","deleted"],"filters":[],"primary_keys":["name"],"requested_json":"accounts","secondary_keys":[]},"attempts":{"keys":[],"columns":["attempt","activity.name","queue.name","user.name","time"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"}],"primary_keys":["attempt"],"requested_json":"attempts","secondary_keys":["activity.name","queue.name","user.name"]},"contacts":{"keys":["user.name"],"columns":["name","title","firstname","lastname","account","description","created","edited","user.name"],"filters":[],"primary_keys":["name"],"requested_json":"contacts","secondary_keys":[]},"statuses":{"keys":[],"columns":["name","title","validation","nextcall","blacklist_database","blacklist_expiration_time","color","deleted"],"filters":[],"primary_keys":["name"],"requested_json":"statuses","secondary_keys":[]},"templates":{"keys":[],"columns":["name","title","description","format","usingtype","content","deleted","id_template"],"filters":[],"primary_keys":["name"],"requested_json":"templates","secondary_keys":[]},"activities":{"keys":["ticket.name","queue.name","user.name","contact.name"],"columns":["name","time","ticket.name","queue.name","user.name","contact.name","title","action","type","priority","description","time_wait","time_open","time_close","important","survey"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"}],"primary_keys":["name"],"requested_json":"activities","secondary_keys":[]},"npsSurveys":{"keys":[],"columns":["name","created","evaluated","deleted","score","note","user.name","user.nps_score","activity.name","activity.type"],"filters":[{"logic":"or","filters":[{"logic":"and","filters":[{"field":"created","value":"","operator":"gte"},{"field":"created","value":"","operator":"lte"}]},{"logic":"and","filters":[{"field":"evaluated","value":"","operator":"gte"},{"field":"evaluated","value":"","operator":"lte"}]}]}],"primary_keys":["name"],"requested_json":"npssurveys","secondary_keys":[],"no_prefix_columns":[]},"activitiesFbm":{"keys":["queue.name"],"columns":["name","queue.name","time","item.name","item.sender","item.direction","item.time","item.wait_time","item.duration","item.answered","item.full_name","title","action"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"},{"field":"type","value":"FBM","operator":"eq"}],"primary_keys":["item.name"],"requested_json":"activities","secondary_keys":["name"]},"loginSessions":{"keys":[],"columns":["id_agent.name","start_time","end_time","duration"],"filters":[{"field":"start_time","value":"","operator":"gte"},{"field":"start_time","value":"","operator":"lte"}],"list_columns":[],"primary_keys":["id_agent.name","start_time"],"requested_json":"loginSessions","secondary_keys":[],"no_prefix_columns":["start_time"]},"pauseSessions":{"keys":[],"columns":["id_agent.name","start_time","end_time","duration","pause.name"],"filters":[{"field":"start_time","value":"","operator":"gte"},{"field":"start_time","value":"","operator":"lte"}],"list_columns":[],"primary_keys":["id_agent.name","start_time"],"requested_json":"pauseSessions","secondary_keys":["pause.name"],"no_prefix_columns":["start_time"]},"queueSessions":{"keys":[],"columns":["id_agent.name","start_time","end_time","duration","queue.name"],"filters":[{"field":"start_time","value":"","operator":"gte"},{"field":"start_time","value":"","operator":"lte"}],"list_columns":[],"primary_keys":["id_agent.name","start_time"],"requested_json":"queueSessions","secondary_keys":["queue.name"],"no_prefix_columns":["start_time"]},"readySessions":{"keys":[],"columns":["id_agent.name","start_time","end_time","duration"],"filters":[{"field":"start_time","value":"","operator":"gte"},{"field":"start_time","value":"","operator":"lte"}],"list_columns":[],"primary_keys":["id_agent.name","start_time"],"requested_json":"readySessions","secondary_keys":[],"no_prefix_columns":["start_time"]},"activitiesCall":{"keys":["queue.name"],"columns":["name","queue.name","time","item.id_call","item.direction","item.answered","item.clid","item.call_time","item.waiting_time","item.duration","item.disconnection_cause"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"},{"field":"type","value":"CALL","operator":"eq"}],"primary_keys":["item.id_call"],"requested_json":"activities","secondary_keys":["name"]},"activitiesChat":{"keys":["queue.name"],"columns":["name","queue.name","queue.title","time","item.title","item.email","item.wait_time","item.duration","item.answered","item.disconnection","item.time","item.name","item.options.ipaddress","item.options.geoip","item.options.referer"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"},{"field":"type","value":"CHAT","operator":"eq"}],"primary_keys":["item.name"],"requested_json":"activities","secondary_keys":["name"]},"timeConditions":{"keys":[],"columns":["id","description","details.timegroupid","details.time","details.type"],"filters":[],"primary_keys":["id","details.time"],"requested_json":"timeconditionsGroups","secondary_keys":[],"no_prefix_columns":["details.time"],"list_of_dicts_columns":["details"]},"activitiesEmail":{"keys":["queue.name"],"columns":["name","queue.name","time","item.name","item.address","item.direction","item.duration","item.answered","item.time","title"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"},{"field":"type","value":"EMAIL","operator":"eq"}],"primary_keys":["item.name"],"requested_json":"activities","secondary_keys":["name"]},"campaignsRecords":{"keys":[],"columns":["name","activity","title","number","action","created","edited","queue.name","queue.title"],"filters":[{"field":"edited","value":"","operator":"gte"},{"field":"edited","value":"","operator":"lte"}],"primary_keys":["name"],"requested_json":"campaignsRecords","secondary_keys":["activity"]},"ticketsSnapshots":{"keys":[],"columns":["snapshot","ticket.name","time","title","description","stage","priority","interaction_activity_count","reopen","first_answer","first_answer_duration","closed","user.name","user.title","edited_by.name","edited_by.title"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"}],"primary_keys":["snapshot"],"requested_json":"ticketsSnapshots","secondary_keys":["ticket.name","time","user.name"],"no_prefix_columns":["time"]},"ticketsCategories":{"keys":[],"columns":["name","title","sla.title","sla.response_low","sla.response_medium","sla.response_high","sla.solution_low","sla.solution_medium","sla.solution_high","timecondition.id"],"filters":[],"primary_keys":["name"],"requested_json":"ticketsCategories","secondary_keys":["timecondition.id"]},"activities_statuses":{"keys":[],"columns":["name","statuses.name"],"filters":[{"field":"time","value":"","operator":"gte"},{"field":"time","value":"","operator":"lte"},{"field":"statuses","value":"[]","operator":"neq"}],"primary_keys":["name","statuses.name"],"requested_json":"activities","secondary_keys":[],"list_of_dicts_columns":["statuses"]}},"project_ids":["connection.eu-central-1.keboola.com-2806","connection.eu-central-1.keboola.com-2807","connection.eu-central-1.keboola.com-2819","connection.eu-central-1.keboola.com-2854"]},{"name":"mall_test","columns":{"accounts":{"keys":[],"columns":["name","title","sla","user.name","description","cretated","edited","customFields.partner_id"],"filters":[],"primary_keys":["name"],"requested_json":"accounts","secondary_keys":[]},"contacts":{"keys":["user.name"],"columns":["name","title","firstname","lastname","account.name","description","nps_score","duplicateContacts","notDuplicateContacts","created","edited","user.name","customFields.partner_id"],"filters":[{"field":"customFields.partner_id","value":"[]","operator":"neq"}],"primary_keys":["name"],"requested_json":"contacts","secondary_keys":[]}},"project_ids":["connection.eu-central-1.keboola.com-68"]}]},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Daktela Application Configuration","required":["username","#password","url","server","from","to","incremental","tables"],"properties":{"to":{"type":"string","title":"End Date","default":"today","description":"End date of extraction. Standard fixed format, e.g. '2000-12-31', or 'today'.","propertyOrder":6},"url":{"type":"string","title":"URL","minLength":1,"description":"Full URL, e.g. 'https://myserver.daktela.com'.","propertyOrder":3},"from":{"type":"string","title":"Start Date","default":"-7","description":"Start date of extraction. Standard fixed format, e.g. '2000-01-13', or a number like '-7'.","propertyOrder":5},"server":{"type":"string","title":"Server","minLength":1,"description":"Server name without spaces nor special characters, used as a prefix, e.g. myserver","propertyOrder":4},"tables":{"type":"string","title":"List of Tables","default":"accounts, users, groups, pauses, queues, statuses, templates, tickets, ticketsCategories, timeConditions, pauseSessions, loginSessions, readySessions, queueSessions, activitiesCall, activitiesChat, activitiesEmail, activities, activities_statuses, qaReviews","minLength":1,"description":"Names of tables to be extracted, separated by a comma; default set to all tables possible","propertyOrder":8},"username":{"type":"string","title":"Username","minLength":1,"propertyOrder":1},"#password":{"type":"string","title":"Password","format":"password","minLength":1,"propertyOrder":2},"incremental":{"type":"boolean","title":"Incremental","format":"checkbox","default":false,"propertyOrder":7}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":295,"uri":"docker/revolt-bi.app-daktela","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/revolt-bi.app-daktela","name":"developer-portal-v2/revolt-bi.app-daktela","tag":"2.0.0","options":{},"digest":"sha256:741c31b36c0ce8780ba33615d3019e141a24064b15fd90200a9f09ee3137e036"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/revolt-bi.app-daktela/32/125.png","64":"https://ui.keboola-assets.com/developer-portal/icons/revolt-bi.app-daktela/64/125.png","128":null}},{"id":"kds-team.processor-data-anonymization","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":210,"name":"Data Anonymization","type":"processor","shortDescription":"Anonymizes specified table columns.","longDescription":"This processor enables you to anonymize specified columns of an input table.","licenseUrl":"https://github.com/keboola/kds-team.processor-data-anonymization/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/kds-team.processor-data-anonymization/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/kds-team.processor-data-anonymization","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":[],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"extractor configuration","required":["print_hello"],"properties":{"debug":{"type":"boolean","title":"Debug"},"print_hello":{"type":"boolean","title":"Print Hello"}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":210,"uri":"docker/kds-team.processor-data-anonymization","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.processor-data-anonymization","name":"developer-portal-v2/kds-team.processor-data-anonymization","tag":"1.3.2","options":{},"digest":"sha256:8b5f1509106a88dcfc80eb724a82c46874ae104e73c1edb1ae4a5305ae91612c"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.processor-data-anonymization/32/1644321671490.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.processor-data-anonymization/64/1644321671490.png","128":null}},{"id":"keboola.app-databricks-job-runner","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":33,"name":"Databricks Job Runner","type":"application","shortDescription":"Trigger Databricks jobs directly from Keboola Connection","longDescription":"Application to trigger Databricks jobs from Keboola Connection flows.","licenseUrl":"https://github.com/keboola/component-databricks-job-runner/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-databricks-job-runner/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-databricks-job-runner","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","appInfo.experimental"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Configuration Schema","required":["base_url","job_id"],"properties":{"job_id":{"enum":[],"type":"string","title":"Job ID","format":"select","options":{"async":{"label":"Load jobs","action":"list_jobs"},"creatable":true},"description":"ID of the Databricks job to trigger. Pick it from the list, or type the ID manually if you don't have permission to list jobs.","propertyOrder":30},"base_url":{"type":"string","title":"Base URL","default":"https://adb-2153812530704740.0.azuredatabricks.net","description":"Base URL of the Databricks API instance.","propertyOrder":20},"auth_type":{"enum":["token","service_principal"],"type":"string","title":"Authentication method","default":"token","options":{"enum_titles":["Personal Access Token","Service Principal (OAuth M2M)"]},"description":"How the component authenticates against Databricks.","propertyOrder":5},"client_id":{"type":"string","title":"Client ID","options":{"dependencies":{"auth_type":"service_principal"}},"description":"Application (client) ID of the Databricks service principal.","propertyOrder":12},"#api_token":{"type":"string","title":"Databricks API token","format":"password","options":{"dependencies":{"auth_type":"token"}},"description":"Personal Access Token used to authenticate against the Databricks API.","propertyOrder":10},"ssl_verify":{"type":"boolean","title":"SSL verify","format":"checkbox","default":true,"description":"If false, SSL verification will be turned off and untrusted certificates may be used.","propertyOrder":40},"#client_secret":{"type":"string","title":"Client secret","format":"password","options":{"dependencies":{"auth_type":"service_principal"}},"description":"OAuth secret generated for the Databricks service principal.","propertyOrder":14},"job_parameters":{"type":"array","items":{"type":"object","title":"Parameter","required":["key"],"properties":{"key":{"type":"string","title":"Key","propertyOrder":1},"value":{"type":"string","title":"Value","propertyOrder":2}}},"title":"Job parameters","description":"Optional key-value parameters passed to the Databricks job run (forwarded as run-now `job_parameters`). Values support Keboola {{variables}} and override the job's default parameter values.","propertyOrder":35},"wait_for_finish":{"type":"boolean","title":"Wait for job to finish","format":"checkbox","default":true,"description":"If enabled, the component waits until the triggered job finishes and fails when the job does not end with SUCCESS. If disabled, the component triggers the job and finishes immediately without checking the result.","propertyOrder":36}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"First, provide the URL of your DBX instance and your PAT token.\nThen select the job you wish to trigger.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["list_jobs"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.app-databricks-job-runner","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.app-databricks-job-runner","name":"developer-portal-v2/keboola.app-databricks-job-runner","tag":"0.2.2","options":{},"digest":"sha256:c524beb8e1883573011444407200e1051841115c3178f3d3fa63e8e4b4abd7c7"},"publishingStatus":"public","icon":{"32":null,"64":null,"128":null}},{"id":"kds-team.ex-dbt-cloud-api","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":22,"name":"dbt Cloud API","type":"extractor","shortDescription":"The dbt Cloud API makes it possible to fetch data from your dbt Cloud account and programmatically run and monitor dbt jobs.","longDescription":"Extract data from dbt cloud API. The dbt Cloud API makes it possible to fetch data from your dbt Cloud account and programmatically run and monitor dbt jobs. [Further documentation here](https://docs.getdbt.com/dbt-cloud/api-v2).","licenseUrl":"https://github.com/keboola/kbc-ui-templates/blob/main/LICENSE","documentationUrl":"https://github.com/keboola/kbc-ui-templates/blob/main/resources/kds-team.ex-dbt-cloud-api/templates/README.md","sourceCodeUrl":"https://github.com/keboola/generic-extractor","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericTemplatesUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Configuration","required":["config"],"properties":{"config":{"type":"object","title":"Parameters","required":["#token"],"properties":{"#token":{"type":"string","title":"Token","format":"password","default":"","minLength":1,"propertyOrder":2}}}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"Extractor uses [dbt Cloud API](https://docs.getdbt.com/blog/dbt-cloud-api-postman-collection-announcement) to fetch data from your [dbt Cloud Account](https://cloud.getdbt.com). \n\nYou can find out how to obtain token [here](https://docs.getdbt.com/docs/dbt-cloud/dbt-cloud-api/service-tokens#:~:text=Generating%20service%20account%20tokens%E2%80%8B,save%20your%20token%20somewhere%20safe.).","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":22,"uri":"docker/kds-team.ex-dbt-cloud-api","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/ex-generic-v2","name":"developer-portal-v2/ex-generic-v2","tag":"latest","options":{},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-dbt-cloud-api/32/1674037199108.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-dbt-cloud-api/64/1674037199108.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-dbt-cloud-api/128/1674037199108.png"}},{"id":"kds-team.app-dbt-cloud-job-trigger","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":408,"name":"dbt Cloud Job Trigger","type":"application","shortDescription":"Triggers a dbt Cloud job.","longDescription":"Requirements:\n\n - API key\n - Account ID\n - Job ID\n\nOptional:\n\n - DBT Cloud URL\n\n#### Output\n\nTables (data is going to be imported incrementally):  \n - in.c-dbt-cloud-job-trigger-{config_id}.dbt_cloud_trigger - response from [api-v2#tag/Jobs/operation/triggerRun](https://docs.getdbt.com/dbt-cloud/api-v2#tag/Jobs/operation/triggerRun)\n - in.c-dbt-cloud-job-trigger-{config_id}.dbt_cloud_run - response from [api-v2#tag/Runs/operation/getRunById](https://docs.getdbt.com/dbt-cloud/api-v2#tag/Runs/operation/getRunById)\n\nArtifacts:  \n\nSaves all artifacts from https://docs.getdbt.com/dbt-cloud/api-v2#tag/Runs/operation/getArtifactsByRunId into Keboola storage.","licenseUrl":"https://github.com/keboola/component-dbt-cloud-job-trigger/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-dbt-cloud-job-trigger/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-dbt-cloud-job-trigger","requiredMemory":null,"processTimeout":7200,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"extractor configuration","required":["account_id","job_id","#api_key","cause","wait_for_result"],"properties":{"cause":{"type":"string","title":"Cause","default":"Triggered from Keboola","description":"String identifier which will be sent along with job trigger request.","propertyOrder":4},"job_id":{"type":"integer","title":"Job ID","description":"Numeric ID of the job","propertyOrder":2},"#api_key":{"type":"string","title":"API Key","format":"password","description":"API Key string, How to get one is explained <a href='https://docs.getdbt.com/docs/dbt-cloud/dbt-cloud-api/user-tokens'>here</a>","propertyOrder":3},"account_id":{"type":"integer","title":"Account ID","description":"Numeric ID of the account","propertyOrder":1},"dbt_cloud_url":{"type":"string","title":"DBT Cloud URL","default":"https://cloud.getdbt.com","description":"Optional - default is https://cloud.getdbt.com, more information about Dbt URLs <a href='https://docs.getdbt.com/docs/cloud/about-cloud/access-regions-ip-addresses'>here</a>","propertyOrder":5},"max_wait_time":{"type":"integer","title":"Max wait time","default":60,"options":{"dependencies":{"wait_for_result":true}},"description":"Max time to wait. Used only when parameter Wait for result is set to true.","propertyOrder":7},"wait_for_result":{"type":"boolean","title":"Wait for result","format":"checkbox","description":"Select this if you want the component to wait until defined job finishes and then store artifacts.","propertyOrder":6},"ignore_artifacts":{"type":"boolean","title":"Don't store artifacts","format":"checkbox","default":false,"description":"Select this if you want the component to ignore artifacts.","propertyOrder":6}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"Triggers dbt Cloud job. Optionally, saves job info at trigger time and after the job is done.  \n\nNext, saves response from https://docs.getdbt.com/dbt-cloud/api-v2#tag/Jobs/operation/triggerRun into table **dbt_cloud_trigger**.\n\nIf the parameter \"wait_for_result\" is set to true, waits for the job to complete for the maximum time set via parameter \"max_wait_time\" then stores result of https://docs.getdbt.com/dbt-cloud/api-v2#tag/Runs/operation/getRunById into table **dbt_cloud_run** and stores all available artifacts.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":408,"uri":"docker/kds-team.app-dbt-cloud-job-trigger","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.app-dbt-cloud-job-trigger","name":"developer-portal-v2/kds-team.app-dbt-cloud-job-trigger","tag":"1.0.6","options":{},"digest":"sha256:2e84cee47a4169e0552880916852b9ae577a5cf475b565ac1e5d77b8e5e9e36a"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-dbt-cloud-job-trigger/32/1674037217028.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-dbt-cloud-job-trigger/64/1674037217028.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-dbt-cloud-job-trigger/128/1674037217028.png"}},{"id":"keboola.dbt-transformation","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":124,"name":"dbt Core","type":"transformation","shortDescription":"Runs a dbt project against the project's own Snowflake workspace.","longDescription":null,"licenseUrl":null,"documentationUrl":"https://help.keboola.com/transformations/dbt/","sourceCodeUrl":"https://github.com/keboola/dbt-transformation","requiredMemory":"512m","processTimeout":57600,"features":["allow-tag-override","organization-github-app-auth"],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"out","forwardToken":true,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableOutput","appInfo.beta","genericDockerUI-tableInput"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":null,"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{"artifacts":{"options":{"zip":false}},"parameters":{"dbt":{"freshness":{"warn_after":{"count":1,"active":true,"period":"day"},"error_after":{"count":2,"active":true,"period":"day"}},"executeSteps":[{"step":"dbt build","active":false},{"step":"dbt run","active":true},{"step":"dbt docs generate","active":false},{"step":"dbt test","active":false},{"step":"dbt source freshness","active":false},{"step":"dbt seed","active":false}]},"showExecutedSqls":true}},"emptyConfigurationRow":null,"actions":["dbtDocs","dbtRunResults","gitRepository","dbtCompile"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"workspace-snowflake","stagingStorageOutput":"workspace-snowflake","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":124,"uri":"docker/keboola.dbt-transformation","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.dbt-transformation","name":"developer-portal-v2/keboola.dbt-transformation","tag":"4.14.0-1.8.6","options":{},"digest":"sha256:ebe5053b782466f341395f982f1b56daeabcf62650c023f2d33b009d59c51b84"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.dbt-transformation/32/1677064027960.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.dbt-transformation/64/1677064027960.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.dbt-transformation/128/1677064027960.png"}},{"id":"keboola.dbt-transformation-local-bigquery","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":32,"name":"dbt Core","type":"transformation","shortDescription":"Runs a dbt project against the project's own BigQuery workspace.","longDescription":null,"licenseUrl":null,"documentationUrl":"https://help.keboola.com/transformations/dbt/","sourceCodeUrl":"https://github.com/keboola/dbt-transformation","requiredMemory":"512m","processTimeout":57600,"features":["allow-tag-override","organization-github-app-auth"],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"out","forwardToken":true,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput","genericDockerUI-tableOutput","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":null,"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{"artifacts":{"options":{"zip":false}},"parameters":{"dbt":{"freshness":{"warn_after":{"count":1,"active":true,"period":"day"},"error_after":{"count":2,"active":true,"period":"day"}},"executeSteps":[{"step":"dbt build","active":false},{"step":"dbt run","active":true},{"step":"dbt docs generate","active":false},{"step":"dbt test","active":false},{"step":"dbt source freshness","active":false},{"step":"dbt seed","active":false}]},"showExecutedSqls":true}},"emptyConfigurationRow":null,"actions":["dbtDocs","dbtRunResults","gitRepository","dbtCompile"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"workspace-bigquery","stagingStorageOutput":"workspace-bigquery","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":32,"uri":"docker/keboola.dbt-transformation-local-bigquery","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.dbt-transformation-local-bigquery","name":"developer-portal-v2/keboola.dbt-transformation-local-bigquery","tag":"4.14.0-1.8.6","options":{},"digest":"sha256:0e2cd92538f2fc4a1a775cef0792392751cfda9a1fc40e9c1f14859078372b1f"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.dbt-transformation-local-bigquery/32/1708004824671.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.dbt-transformation-local-bigquery/64/1708004824671.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.dbt-transformation-local-bigquery/128/1708004824671.png"}},{"id":"keboola.dbt-transformation-remote-bigquery","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":93,"name":"dbt Remote Google BigQuery","type":"transformation","shortDescription":"Runs a dbt project against a remote Google BigQuery data warehouse.","longDescription":null,"licenseUrl":null,"documentationUrl":"https://help.keboola.com/transformations/dbt/","sourceCodeUrl":"https://github.com/keboola/dbt-transformation","requiredMemory":"1024m","processTimeout":57600,"features":["allow-tag-override","organization-github-app-auth"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":true,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":null,"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{"artifacts":{"options":{"zip":false}},"parameters":{"dbt":{"freshness":{"warn_after":{"count":1,"active":true,"period":"day"},"error_after":{"count":2,"active":true,"period":"day"}},"executeSteps":[{"step":"dbt build","active":false},{"step":"dbt run","active":true},{"step":"dbt docs generate","active":false},{"step":"dbt test","active":false},{"step":"dbt source freshness","active":false},{"step":"dbt seed","active":false}]},"remoteDwh":{"type":"bigquery","method":"service-account"},"showExecutedSqls":true}},"emptyConfigurationRow":null,"actions":["dbtDocs","dbtRunResults","gitRepository","dbtCompile"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":93,"uri":"docker/keboola.dbt-transformation-remote-bigquery","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.dbt-transformation-remote-bigquery","name":"developer-portal-v2/keboola.dbt-transformation-remote-bigquery","tag":"4.14.0-1.8.6","options":{},"digest":"sha256:43709a7627bdb7d3d2f6a3d3f85ecf1be16a3a663eb42fdecc4aea82bf6878e7"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.dbt-transformation-remote-bigquery/32/1677064000301.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.dbt-transformation-remote-bigquery/64/1677064000301.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.dbt-transformation-remote-bigquery/128/1677064000301.png"}},{"id":"keboola.dbt-transformation-remote-mssql","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":90,"name":"dbt Remote Microsoft SQL Server","type":"transformation","shortDescription":"Runs a dbt project against a remote Microsoft SQL Server data warehouse.","longDescription":null,"licenseUrl":null,"documentationUrl":"https://help.keboola.com/transformations/dbt/","sourceCodeUrl":"https://github.com/keboola/dbt-transformation","requiredMemory":null,"processTimeout":57600,"features":["allow-tag-override","organization-github-app-auth"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":true,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":null,"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{"artifacts":{"options":{"zip":false}},"parameters":{"dbt":{"freshness":{"warn_after":{"count":1,"active":true,"period":"day"},"error_after":{"count":2,"active":true,"period":"day"}},"executeSteps":[{"step":"dbt build","active":false},{"step":"dbt run","active":true},{"step":"dbt docs generate","active":false},{"step":"dbt test","active":false},{"step":"dbt source freshness","active":false},{"step":"dbt seed","active":false}]},"remoteDwh":{"type":"sqlserver"},"showExecutedSqls":true}},"emptyConfigurationRow":null,"actions":["dbtDocs","dbtRunResults","gitRepository","dbtCompile"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":90,"uri":"docker/keboola.dbt-transformation-remote-mssql","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.dbt-transformation-remote-mssql","name":"developer-portal-v2/keboola.dbt-transformation-remote-mssql","tag":"4.14.0-1.8.6","options":{},"digest":"sha256:fc593c74d0e2bb8967330138cbba1d4c7e33bcddd744c290a2e8d7ac6762b13c"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.dbt-transformation-remote-mssql/32/1677063935428.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.dbt-transformation-remote-mssql/64/1677063935428.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.dbt-transformation-remote-mssql/128/1677063935428.png"}},{"id":"keboola.dbt-transformation-remote-postgresql","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":90,"name":"dbt Remote PostgreSQL","type":"transformation","shortDescription":"Runs a dbt project against a remote PostgreSQL data warehouse.","longDescription":null,"licenseUrl":null,"documentationUrl":"https://help.keboola.com/transformations/dbt/","sourceCodeUrl":"https://github.com/keboola/dbt-transformation","requiredMemory":null,"processTimeout":57600,"features":["allow-tag-override","organization-github-app-auth"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":true,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":null,"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{"artifacts":{"options":{"zip":false}},"parameters":{"dbt":{"freshness":{"warn_after":{"count":1,"active":true,"period":"day"},"error_after":{"count":2,"active":true,"period":"day"}},"executeSteps":[{"step":"dbt build","active":false},{"step":"dbt run","active":true},{"step":"dbt docs generate","active":false},{"step":"dbt test","active":false},{"step":"dbt source freshness","active":false},{"step":"dbt seed","active":false}]},"remoteDwh":{"type":"postgres"},"showExecutedSqls":true}},"emptyConfigurationRow":null,"actions":["dbtDocs","dbtRunResults","gitRepository","dbtCompile"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":90,"uri":"docker/keboola.dbt-transformation-remote-postgresql","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.dbt-transformation-remote-postgresql","name":"developer-portal-v2/keboola.dbt-transformation-remote-postgresql","tag":"4.14.0-1.8.6","options":{},"digest":"sha256:e6245f95238580a280d26c84e215620e6c0b0e2c002f07998e1f227a9f1c6062"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.dbt-transformation-remote-postgresql/32/1677063830037.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.dbt-transformation-remote-postgresql/64/1677063830037.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.dbt-transformation-remote-postgresql/128/1677063830037.png"}},{"id":"keboola.dbt-transformation-remote-redshift","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":92,"name":"dbt Remote Redshift","type":"transformation","shortDescription":"Runs a dbt project against a remote Amazon Redshift data warehouse.","longDescription":null,"licenseUrl":null,"documentationUrl":"https://help.keboola.com/transformations/dbt/","sourceCodeUrl":"https://github.com/keboola/dbt-transformation","requiredMemory":null,"processTimeout":57600,"features":["allow-tag-override","organization-github-app-auth"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":true,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":null,"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{"artifacts":{"options":{"zip":false}},"parameters":{"dbt":{"freshness":{"warn_after":{"count":1,"active":true,"period":"day"},"error_after":{"count":2,"active":true,"period":"day"}},"executeSteps":[{"step":"dbt build","active":false},{"step":"dbt run","active":true},{"step":"dbt docs generate","active":false},{"step":"dbt test","active":false},{"step":"dbt source freshness","active":false},{"step":"dbt seed","active":false}]},"remoteDwh":{"type":"redshift"},"showExecutedSqls":true}},"emptyConfigurationRow":null,"actions":["dbtDocs","dbtRunResults","gitRepository","dbtCompile"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":92,"uri":"docker/keboola.dbt-transformation-remote-redshift","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.dbt-transformation-remote-redshift","name":"developer-portal-v2/keboola.dbt-transformation-remote-redshift","tag":"4.14.0-1.8.6","options":{},"digest":"sha256:1af0eb3d0c07830f8b35428a0417251aea416eecef43a69f469fdd139ceaa629"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.dbt-transformation-remote-redshift/32/1677063881472.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.dbt-transformation-remote-redshift/64/1677063881472.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.dbt-transformation-remote-redshift/128/1677063881472.png"}},{"id":"keboola.dbt-transformation-remote-snowflake","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":93,"name":"dbt Remote Snowflake","type":"transformation","shortDescription":"Runs a dbt project against a remote Snowflake data warehouse.","longDescription":null,"licenseUrl":null,"documentationUrl":"https://help.keboola.com/transformations/dbt/","sourceCodeUrl":"https://github.com/keboola/dbt-transformation","requiredMemory":"512m","processTimeout":57600,"features":["allow-tag-override","organization-github-app-auth"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":true,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":null,"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{"artifacts":{"options":{"zip":false}},"parameters":{"dbt":{"freshness":{"warn_after":{"count":1,"active":true,"period":"day"},"error_after":{"count":2,"active":true,"period":"day"}},"executeSteps":[{"step":"dbt build","active":false},{"step":"dbt run","active":true},{"step":"dbt docs generate","active":false},{"step":"dbt test","active":false},{"step":"dbt source freshness","active":false},{"step":"dbt seed","active":false}]},"remoteDwh":{"type":"snowflake"},"showExecutedSqls":true}},"emptyConfigurationRow":null,"actions":["dbtDocs","dbtRunResults","gitRepository","dbtCompile"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":93,"uri":"docker/keboola.dbt-transformation-remote-snowflake","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.dbt-transformation-remote-snowflake","name":"developer-portal-v2/keboola.dbt-transformation-remote-snowflake","tag":"4.14.0-1.8.6","options":{},"digest":"sha256:91641e049c7577221993523952b7539f195c2157f70d27259aff13a8d8637253"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.dbt-transformation-remote-snowflake/32/1674037571650.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.dbt-transformation-remote-snowflake/64/1674037571650.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.dbt-transformation-remote-snowflake/128/1674037571650.png"}},{"id":"keboola.processor-decompress","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":41,"name":"Decompress","type":"processor","shortDescription":"Decompress GZIP, ZIP and ZLIB files","longDescription":"Decompress GZIP, ZIP and ZLIB files","licenseUrl":"https://github.com/keboola/processor-unzip/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/processor-unzip/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/processor-unzip","requiredMemory":"8192m","processTimeout":21600,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":[],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":null,"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.processor-decompress","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.processor-decompress","name":"developer-portal-v2/keboola.processor-decompress","tag":"v4.3.0","options":{},"digest":"sha256:12000010ac552e7286a37b33cdd27f0c6620779265c09fc29d96cf4507f2ae3f"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.processor-decompress/32/1576251905384.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.processor-decompress/64/1576251905384.png","128":null}},{"id":"keboola.processor-decompress-v2","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":21,"name":"Decompress V2","type":"processor","shortDescription":"Simple processor unzipping files in the data/in/files and storing results in data/out/files. It supports formats '.zip', '.7z', '.tar.bz2', '.tbz2', '.gz', '.tar.gz', '.tgz', '.tar', '.tar.xz', '.txz', '.zlib', '.deflate' and '.snappy'","longDescription":"Simple processor decompressing archives in the `data/in/files` and storing results in `data/out/files`.\r\nIt combines functionality of the old `keboola.processor-decompress` and `kds-team.processor-unzip`.\r\n\r\n### Supported file formats:\r\n- .7z\r\n- .tar.bz2\r\n- .tbz2\r\n- .gz\r\n- .tar.gz\r\n- .tgz\r\n- .tar\r\n- .tar.xz\r\n- .txz\r\n- .zip\r\n- .deflate\r\n- .zlib\r\n- .snappy\r\n\r\n**Table of contents:**\r\n\r\n[TOC]\r\n\r\n# Configuration\r\n\r\n### Sample configuration\r\n\r\n```json\r\n{\r\n    \"definition\": {\r\n        \"component\": \"keboola.processor-decompress-v2\"\r\n    },\r\n    \"parameters\": {\r\n        // parameters are described below\r\n    }\r\n}\r\n```\r\n### Parameters\r\n- **extract_to_folder** - boolean to indicate if zipped folders should be extracted to folders within `data/out/files`\r\n  or if files within the zipped folder should be added directly to the `data/out/files`. Default is True\r\n- **graceful** - If the processor encounters unsupported file format or corupted file, it's run will end with an error. Using this boolean parameter you can disable this behaviour and then the processor just logs a warning.\r\n- **compression_type** - By default, the processor try to determine the format using autodetection of the file extension. With this parameter you can specify what file format will the processor be working with, which is useful, when the input files don't have file extension.\r\n- **zlib_window_size** - int for determining of wbits value for decompression of zlib/deflate files.\r\nDefault is 15 for zlib and -15 deflate.\r\n- **password_7z** - string with password for 7z archives. Default is None\r\n- **remove_ext** - when extract_to_folder is true, by this parameter you can select if the file extesion\r\n will be part of the folder name in the output (e.g. `data/in/files/input.zip` will be in output `data/out/files/input/...`). By default the processor leave the extension as part of the output folder name.\r","licenseUrl":"https://github.com/keboola/processor-decompress-v2/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/processor-decompress-v2/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/processor-decompress-v2","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"extractor configuration","required":["print_hello"],"properties":{"debug":{"type":"boolean","title":"Debug"},"print_hello":{"type":"boolean","title":"Print Hello"}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"Configuration description.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.processor-decompress-v2","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.processor-decompress-v2","name":"developer-portal-v2/keboola.processor-decompress-v2","tag":"1.0.2","options":{},"digest":"sha256:d3ff4bb77577fa1465250e2beef07647a8b8210b954e6436c16c4a8cd88ad895"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.processor-decompress-v2/32/1754635365434.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.processor-decompress-v2/64/1754635365434.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.processor-decompress-v2/128/1754635365434.png"}},{"id":"kds-team.processor-deduplicate-headers","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":51,"name":"Deduplicate Headers","type":"processor","shortDescription":"Deduplicate table headers","longDescription":"Takes all tables in `out/tables/` and deduplicates any duplicated columns by adding an index. All other tables \nthat do not contain duplicated headers are moved to out unmodified.","licenseUrl":"https://github.com/keboola/kds-team.processor-deduplicate-headers/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/kds-team.processor-deduplicate-headers/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/kds-team.processor-deduplicate-headers","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":[],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":null,"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.processor-deduplicate-headers","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.processor-deduplicate-headers","name":"developer-portal-v2/kds-team.processor-deduplicate-headers","tag":"1.1.2","options":{},"digest":"sha256:f1dc0c6bf6a6bcb587a2ed988ffabbe85714f95c30dd16a575c0c8db70f48c23"},"publishingStatus":"public","icon":{"32":null,"64":null,"128":null}},{"id":"kds-team.app-deepnote-notebook-trigger","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":89,"name":"Deepnote Notebook Trigger","type":"application","shortDescription":"Triggers a Deepnote notebook run.","longDescription":"This component enables you to trigger the running of a specified notebook in Deepnote.","licenseUrl":"https://github.com/keboola/component-deepnote-notebook-trigger/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-deepnote-notebook-trigger/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-deepnote-notebook-trigger","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Deepnote Trigger configuration","required":["#api_token","project_id","notebook_id"],"properties":{"#api_token":{"type":"string","title":"API Key","format":"password","description":"API key generated in Deepnote","propertyOrder":10},"project_id":{"type":"string","title":"Project ID","description":"ID of the project which contains the notebook","propertyOrder":20},"notebook_id":{"type":"string","title":"Notebook ID","description":"The ID of the Notebook to be run","propertyOrder":30}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"_Note: To use this component, you need access to Deepnote API, which is only available to Team and Enterprise plans._\n\nTo generate the API key, go to the Settings & members > General settings. See [API documentation](https://deepnote.com/docs/deepnote-api) for more details.\n\nThe Notebook and Project ID can be obtained via the URL path to the notebook, described in the [Execute API reference](https://deepnote.com/docs/api-execute-notebook).\n\n`https://deepnote.com/workspace/{workspace name}-{workspace ID}/project/{project name}-{project ID}/notebook/{notebook name}-{notebook ID}`\n\n_The project ID is a UUID with dashes (e.g. 25fcb3b2-cf3d-4c08-9b24-4306f1518caa) and the notebook ID is a UUID without dashes (e.g. abaf726ac4c34589961a588de29cd665)._","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":89,"uri":"docker/kds-team.app-deepnote-notebook-trigger","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.app-deepnote-notebook-trigger","name":"developer-portal-v2/kds-team.app-deepnote-notebook-trigger","tag":"0.1.0","options":{},"digest":"sha256:60df7543d0259b8c54139c0f71b784c4a536c413b13fbff69f951e2155e89f51"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-deepnote-notebook-trigger/32/1665812147968.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-deepnote-notebook-trigger/64/1665812147968.png","128":null}},{"id":"keboola.ex-delta-lake","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":76,"name":"Delta Tables","type":"extractor","shortDescription":"Extracts data from Delta Lake tables.","longDescription":"# Delta Tables Extractor\n\nThis component extracts data from Delta tables stored either in your cloud storage (AWS S3, Azure Blob Storage, Google Cloud Storage) or in Unity Catalog and loads it into Keboola.\n\nComponent supports downloading entire tables, selecting specific columns, or executing custom SQL queries to retrieve the desired data.\n\nWhen loading data as Keboola Table the Full Load, Incremental Load, and Append Load modes are supported. You can also choose to store the extracted data as Parquet files in the file storage.\n\nComplete documentation is available in the [README](https://github.com/keboola/component-delta-lake-extractor/blob/main/README.md)","licenseUrl":"https://github.com/keboola/component-delta-lake-extractor/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-delta-lake-extractor/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-delta-lake-extractor","requiredMemory":"1024m","processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","appInfo.experimental"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Authorization","required":["provider"],"properties":{"provider":{"enum":["s3","abs","gcs"],"type":"string","title":"Cloud Storage","default":"full_sync","options":{"enum_titles":["AWS S3","Azure Blob Storage","Google Cloud Storage"],"dependencies":{"access_method":"direct_storage"}},"required":true,"description":"Select the cloud storage provider.","propertyOrder":2},"auth_type":{"enum":["pat","service_principal"],"type":"string","title":"Authentication Type","default":"pat","options":{"enum_titles":["Personal Access Token","Service Principal (OAuth M2M)"],"dependencies":{"access_method":"unity_catalog"}},"description":"Choose how to authenticate to Unity Catalog.","propertyOrder":4},"aws_key_id":{"type":"string","title":"Access key ID","options":{"dependencies":{"provider":"s3"}},"propertyOrder":6},"aws_region":{"type":"string","title":"AWS Region","options":{"dependencies":{"provider":"s3"}},"description":"The AWS region where the bucket is located for example 'eu-central-1' or 'us-east-1'.","propertyOrder":5},"gcp_hmac_id":{"type":"string","title":"HMAC Key Access ID","options":{"dependencies":{"provider":"gcs"}},"propertyOrder":6},"access_method":{"enum":["unity_catalog","direct_storage"],"type":"string","title":"Data Access Method","default":"direct_storage","options":{"enum_titles":["Unity Catalog","Direct Storage Access"]},"required":true,"propertyOrder":1},"#abs_sas_token":{"type":"string","title":"SAS token","format":"password","options":{"dependencies":{"provider":"abs"}},"propertyOrder":4},"#aws_key_secret":{"type":"string","title":"Secret Access Key","format":"password","options":{"dependencies":{"provider":"s3"}},"propertyOrder":7},"#gcp_hmac_secret":{"type":"string","title":"HMAC Key Secret","format":"password","options":{"dependencies":{"provider":"gcs"}},"propertyOrder":9},"abs_account_name":{"type":"string","title":"Storage Account Name","options":{"dependencies":{"provider":"abs"}},"propertyOrder":3},"unity_catalog_url":{"type":"string","title":"Unity Catalog URL","options":{"dependencies":{"access_method":"unity_catalog"}},"propertyOrder":3},"#unity_catalog_token":{"type":"string","title":"PAT token","format":"password","options":{"dependencies":{"auth_type":"pat","access_method":"unity_catalog"}},"propertyOrder":5},"unity_catalog_client_id":{"type":"string","title":"Client ID","options":{"dependencies":{"auth_type":"service_principal","access_method":"unity_catalog"}},"description":"The service principal's Application (client) ID.","propertyOrder":6},"#unity_catalog_client_secret":{"type":"string","title":"Client Secret","format":"password","options":{"dependencies":{"auth_type":"service_principal","access_method":"unity_catalog"}},"description":"The service principal's OAuth secret.","propertyOrder":7}}},"configurationRowSchema":{"type":"object","title":"Component configuration","required":["source","data_selection","destination","debug"],"properties":{"debug":{"type":"boolean","title":"Debug mode","format":"checkbox","default":false,"description":"If enabled, the component will produce detailed logs","propertyOrder":5},"source":{"type":"object","title":"Data source","required":[],"properties":{"table":{"enum":[],"type":"string","title":"Table","format":"select","options":{"async":{"label":"Load tables","action":"list_uc_tables"},"dependencies":{"helper_access_method":"unity_catalog"}},"propertyOrder":25},"catalog":{"enum":[],"type":"string","title":"Catalog","format":"select","options":{"async":{"label":"Load catalogs","action":"list_uc_catalogs"},"dependencies":{"helper_access_method":"unity_catalog"}},"propertyOrder":23},"blob_name":{"type":"string","title":"Blob name","options":{"dependencies":{"helper_access_method":"direct_storage"}},"propertyOrder":22},"schema_name":{"enum":[],"type":"string","title":"Schema","format":"select","options":{"async":{"label":"Load schemas","action":"list_uc_schemas"},"dependencies":{"helper_access_method":"unity_catalog"}},"propertyOrder":24},"table_preview":{"type":"button","format":"sync-action","options":{"async":{"label":"Table preview","action":"table_preview"}},"propertyOrder":500},"container_name":{"type":"string","title":"Container name","options":{"dependencies":{"helper_access_method":"direct_storage"}},"propertyOrder":21},"helper_access_method":{"type":"string","title":"Helper Access Method","watch":{"val":"_metadata_.root.parameters.access_method"},"options":{"hidden":true},"template":"{{val}}","propertyOrder":20}},"propertyOrder":2},"destination":{"type":"object","title":"Destination","required":["load_type"],"properties":{"file_name":{"type":"string","title":"File name","default":"","options":{"dependencies":{"parquet_output":true}},"description":"(Optional) Specify the file name (without the filetype) if you leave this field empty, the default name container-blob or catalog-schema-table will be used. The resulting file will be named `<table_name>.parquet`","propertyOrder":45},"load_type":{"enum":["incremental_load","full_load"],"type":"string","title":"Load Type","default":"incremental_load","options":{"enum_titles":["Incremental Load","Full Load"],"dependencies":{"parquet_output":false}},"description":"If Full load is used, the destination table will be overwritten every run. If Incremental Load is used, data will be upserted into the destination table based on the primary key. Append modes do not contain any primary keys and are not deduplicated.","propertyOrder":42},"table_name":{"type":"string","title":"Table name","default":"","options":{"dependencies":{"parquet_output":false}},"description":"(Optional) Specify the table name (without the filetype) if you leave this field empty, the default name container_blob will be used.","propertyOrder":44},"primary_key":{"type":"array","items":{"enum":[],"type":"string"},"title":"Primary key","format":"select","options":{"tags":true,"async":{"label":"Re-load columns","action":"list_columns"},"dependencies":{"parquet_output":false}},"uniqueItems":true,"propertyOrder":43},"parquet_output":{"type":"boolean","title":"Store result as parquet","format":"checkbox","default":false,"description":"If enabled, the extractor will store result as parquet file into file storage instead of table","propertyOrder":41},"preserve_insertion_order":{"type":"boolean","title":"Preserve insertion order","format":"checkbox","default":true,"description":"If enabled, the extractor will preserve the order of the rows in the destination table, when encountering OOM error, disabling this option may help","propertyOrder":46}},"propertyOrder":4},"data_selection":{"type":"object","title":"Data selection","required":["mode"],"properties":{"mode":{"enum":["all_data","select_columns","custom_query","workspace_query"],"type":"string","title":"Load Type","default":"all_data","options":{"enum_titles":["All Data","Select Columns","Custom Query","Databricks SQL Query (multi-table)"]},"propertyOrder":31},"query":{"type":"string","title":"Query","options":{"tooltip":"For query preview, a LIMIT 10 is automatically added to ensure completion within the 30-second time limit for sync actions. When the query is run as a job, it is executed without any modifications.","dependencies":{"mode":["custom_query","workspace_query"]}},"description":"The SQL query used to extract data. In 'Custom Query' mode use the placeholder `in_table` to reference the source table (e.g. `SELECT * FROM in_table WHERE is_active = true`). In 'Databricks SQL Query' mode write standard SQL referencing full `catalog.schema.table` names; it runs on the selected SQL Warehouse and may join multiple tables.","propertyOrder":32},"columns":{"type":"array","items":{"enum":[],"type":"string"},"title":"Columns to extract","format":"select","options":{"tags":true,"async":{"label":"Re-load columns","action":"list_columns"},"dependencies":{"mode":"select_columns"}},"uniqueItems":true,"propertyOrder":34},"warehouse_id":{"enum":[],"type":"string","title":"SQL Warehouse","format":"select","options":{"async":{"label":"Load warehouses","action":"list_warehouses"},"dependencies":{"mode":"workspace_query"}},"description":"Databricks SQL warehouse used to run this query. Different rows may use different warehouses (e.g. small vs large).","propertyOrder":33},"table_preview":{"type":"button","format":"sync-action","options":{"async":{"label":"Query preview","action":"query_preview"},"dependencies":{"mode":"custom_query"}},"propertyOrder":33},"workspace_query_preview":{"type":"button","format":"sync-action","options":{"async":{"label":"Query preview","action":"workspace_query_preview"},"dependencies":{"mode":"workspace_query"}},"propertyOrder":34}},"propertyOrder":3}}},"createConfigurationRowSchema":null,"configurationDescription":"Configuration description.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["list_columns","list_uc_catalogs","list_uc_schemas","list_uc_tables","list_warehouses","query_preview","table_preview","workspace_query_preview"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-delta-lake","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-delta-lake","name":"developer-portal-v2/keboola.ex-delta-lake","tag":"0.1.1","options":{},"digest":"sha256:7fcf2e39cadff774821264afee26d8ee4455f5bdf44f634e5b8fb362eff6eaca"},"publishingStatus":"public","icon":{"32":null,"64":null,"128":null}},{"id":"keboola.wr-delta-lake","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":177,"name":"Delta Tables","type":"writer","shortDescription":"Writes data to Delta Lake tables.","longDescription":"# Delta Tables Writer\n\nThis component writes data to Delta tables stored either in your cloud storage (AWS S3, Azure Blob Storage, Google Cloud Storage) or in Unity Catalog.\n\nComponent supports partitioned tables and allows you to choose between different load types such as Append, Overwrite, and Upsert (supported only for native tables using the primary key from the input table).\n\nComplete documentation is available in the [README](https://github.com/keboola/component-delta-lake-writer/blob/main/README.md)","licenseUrl":"https://github.com/keboola/component-delta-lake-writer/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-delta-lake-writer/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-delta-lake-writer","requiredMemory":"256m","processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":true,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-tableInput","genericDockerUI-fileInput","appInfo.experimental"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Authorization","required":["access_method"],"properties":{"provider":{"enum":["s3","abs","gcs"],"type":"string","title":"Cloud Storage","default":"full_sync","options":{"enum_titles":["AWS S3","Azure Blob Storage","Google Cloud Storage"],"dependencies":{"access_method":"direct_storage"}},"required":true,"description":"Select the cloud storage provider.","propertyOrder":7},"auth_type":{"enum":["pat","service_principal"],"type":"string","title":"Authentication Type","default":"pat","options":{"enum_titles":["Personal Access Token","Service Principal (OAuth M2M)"],"dependencies":{"access_method":"unity_catalog"}},"description":"Choose how to authenticate to Unity Catalog.","propertyOrder":3},"aws_key_id":{"type":"string","title":"Access key ID","options":{"dependencies":{"provider":"s3"}},"propertyOrder":11},"aws_region":{"type":"string","title":"AWS Region","options":{"dependencies":{"provider":"s3"}},"description":"The AWS region where the bucket is located for example 'eu-central-1' or 'us-east-1'.","propertyOrder":10},"access_method":{"enum":["unity_catalog","direct_storage"],"type":"string","title":"Data Access Method","default":"direct_storage","options":{"enum_titles":["Unity Catalog","Direct Storage Access"]},"required":true,"propertyOrder":1},"#abs_sas_token":{"type":"string","title":"SAS token","format":"password","options":{"dependencies":{"provider":"abs"}},"propertyOrder":9},"#aws_key_secret":{"type":"string","title":"Secret Access Key","format":"password","options":{"dependencies":{"provider":"s3"}},"propertyOrder":12},"abs_account_name":{"type":"string","title":"Storage Account Name","options":{"dependencies":{"provider":"abs"}},"propertyOrder":8},"unity_catalog_url":{"type":"string","title":"Unity Catalog URL","options":{"dependencies":{"access_method":"unity_catalog"}},"propertyOrder":2},"#unity_catalog_token":{"type":"string","title":"PAT token","format":"password","options":{"dependencies":{"auth_type":"pat","access_method":"unity_catalog"}},"propertyOrder":4},"unity_catalog_client_id":{"type":"string","title":"Client ID","options":{"dependencies":{"auth_type":"service_principal","access_method":"unity_catalog"}},"description":"The service principal's Application (client) ID.","propertyOrder":5},"#gcp_service_account_key":{"type":"string","title":"Service Account Key","format":"password","options":{"dependencies":{"provider":"gcs"}},"description":"Copy & paste the whole JSON of the Google service account key file. For instructions on how to create the service account, see the <a href=\"https://help.keboola.com/components/writers/database/bigquery/#create-service-account\"> documentation.</a>","propertyOrder":13},"#unity_catalog_client_secret":{"type":"string","title":"Client Secret","format":"password","options":{"dependencies":{"auth_type":"service_principal","access_method":"unity_catalog"}},"description":"The service principal's OAuth secret.","propertyOrder":6}}},"configurationRowSchema":{"type":"object","title":"Component configuration","required":["destination","preserve_insertion_order","debug"],"properties":{"debug":{"type":"boolean","title":"Debug mode","format":"checkbox","default":false,"description":"If enabled, the component will produce detailed logs","propertyOrder":4},"batch_size":{"type":"integer","title":"Batch size","default":25000,"options":{"dependencies":{"helper_access_method":"direct_storage"}},"description":"By default, the extractor will load data in batches of 25 000 rows. You can adjust this value to optimize the performance (or solve OOM) of the writer.","propertyOrder":2},"destination":{"type":"object","title":"Data Destination","required":["container_name","blob_name"],"properties":{"mode":{"enum":["error","append","overwrite","upsert"],"type":"string","title":"Load Type","default":"append","options":{"enum_titles":["Raise error if existing (supported only by Direct Storage tables)","Append","Overwrite","Upsert (supported only by Native tables)"]},"propertyOrder":7},"table":{"enum":[],"type":"string","title":"Table","format":"select","options":{"tags":true,"async":{"cache":false,"label":"Load tables","action":"list_uc_tables","autoload":["parameters.destination.schema_name"]},"creatable":true,"dependencies":{"helper_access_method":"unity_catalog"}},"propertyOrder":5},"catalog":{"enum":[],"type":"string","title":"Catalog","format":"select","options":{"async":{"label":"Load catalogs","action":"list_uc_catalogs"},"dependencies":{"helper_access_method":"unity_catalog"}},"propertyOrder":3},"blob_name":{"type":"string","title":"Blob name","options":{"dependencies":{"helper_access_method":"direct_storage"}},"propertyOrder":2},"warehouse":{"enum":[],"type":"string","title":"Warehouse used to load table","format":"select","options":{"async":{"label":"Load warehouses","action":"list_warehouses"},"tooltip":"If not specified, the component will use the 1st returned warehouse","dependencies":{"table_type":"native"}},"propertyOrder":26},"table_type":{"enum":["external","native"],"type":"string","title":"Table Type","default":"External","options":{"enum_titles":["External","Native"],"dependencies":{"helper_access_method":"unity_catalog"}},"propertyOrder":6},"compression":{"enum":["UNCOMPRESSED","SNAPPY","GZIP","BROTLI","LZ4","ZSTD","LZ4_RAW"],"type":"string","title":"Compression","default":"UNCOMPRESSED","options":{"enum_titles":["UNCOMPRESSED","SNAPPY","GZIP","BROTLI","LZ4","ZSTD","LZ4_RAW"],"dependencies":{"helper_access_method":"direct_storage"}},"required":true,"propertyOrder":9},"schema_name":{"enum":[],"type":"string","title":"Schema","format":"select","options":{"async":{"cache":false,"label":"Load schemas","action":"list_uc_schemas","autoload":["parameters.destination.catalog"]},"dependencies":{"helper_access_method":"unity_catalog"}},"propertyOrder":4},"partition_by":{"type":"array","items":{"type":"string"},"title":"Columns to partition by","format":"select","options":{"tags":true,"async":{"cache":false,"label":"Re-load columns","action":"list_table_columns"}},"uniqueItems":true,"propertyOrder":8},"container_name":{"type":"string","title":"Container name","options":{"dependencies":{"helper_access_method":"direct_storage"}},"propertyOrder":1},"helper_access_method":{"type":"string","title":"Helper Access Method","watch":{"val":"_metadata_.root.parameters.access_method"},"options":{"hidden":true},"template":"{{val}}","propertyOrder":20}},"propertyOrder":1},"preserve_insertion_order":{"type":"boolean","title":"Preserve insertion order","format":"checkbox","default":true,"options":{"dependencies":{"helper_access_method":"direct_storage"}},"description":"If enabled, the writer will preserve the order of the rows in the destination table, when encountering OOM error, disabling this option may help","propertyOrder":3}}},"createConfigurationRowSchema":null,"configurationDescription":"Configuration description.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["list_table_columns","list_uc_catalogs","list_uc_schemas","list_uc_tables","list_warehouses"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"abs","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.wr-delta-lake","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-delta-lake","name":"developer-portal-v2/keboola.wr-delta-lake","tag":"1.0.0","options":{},"digest":"sha256:f737acd2e52f4c45dee796a51b72202e7cb6e760ed2a9850bc0b8a77158af8d5"},"publishingStatus":"public","icon":{"32":null,"64":null,"128":null}},{"id":"revolt-bi.processor-batchify","vendor":{"id":"revolt-bi","name":"Revolt BI","address":"Pobřežní 249/46,\nPraha 8-Karlín,\n186 00","email":"support@revolt.bi","type":"other"},"version":33,"name":"Divide CSV into Batches","type":"processor","shortDescription":"Divides large CSV tables into multiple smaller CSV tables.","longDescription":"# processor-batchify\n\nConverts any CSV file that ends with `.csv` and is located in `/data/in/files` or `/data/in/tables` into several batches of CSV files with a header. Then, it moves all files from `/data/in` to `/data/out`. This processor *ignores manifest files,* and considers the first line as the header.\n \n# Usage\n\n## Sample configuration\n\n```\n{  \n    \"definition\": {\n        \"component\": \"revolt-bi.processor-batchify\"\n    },\n    \"parameters\": {\n        \"batch_size\": 200,\n        \"timestamp\": true\n    }\n}\n```\n## Parameters\n\n### batch_size\n\nThe number of lines (excluding the header line) of one CSV.\nThe first batch always contains at most `batch_size - 1` rows.\n\n### timestamp\n\nIf this parameter is set to `true`, the component will add a timestamp suffix of the format `_YYYY-MM-DD_HH-MM-SS` to each CSV file.\nThe `.csv` suffix is added after the timestamp suffix.\n\n## Example\n\nWith `batch_size = 100` and `timestamp = false`, the processor converts a table `/data/in/files/example.csv` of 2019+1 rows into 21 tables `/data/in/files/example00000.csv ... /data/in/files/example00020.csv`. The first table consists of 99 rows and a header, the next 19 tables consist of 100 rows and a header, and the last table consists of 20 rows and a header.\n\nIf you encounter any problems, contact us on support@revolt.bi.\n\nPrepared by\n\n![alt text](https://www.revolt.bi/wp-content/uploads/2018/08/mail-logo-zluta.png \"revolt.bi\")","licenseUrl":"https://github.com/RevoltBI/Licences/blob/master/README.md","documentationUrl":"https://revoltbi.github.io/processor-batchify/","sourceCodeUrl":null,"requiredMemory":"512m","processTimeout":10800,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":[],"imageParameters":{"compauth_url":"https://authorization.revolt.bi","compauth_user_token":"99sG5vMeRR9ZYPwcNMYB0KbVlrcTPd8f9MAT-mjFjQZ5jNepPmM78K8bxeufGp-F","compauth_license_token":"E8i0CM_HJfyAoAZ6C3A-5WL2KauuL1tOqyjINwQf2MKUUiEUW4I8BUhiP8Q_dYE9","compauth_tokens_in_image":true},"stackParameters":{},"testConfiguration":null,"configurationSchema":null,"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":33,"uri":"docker/revolt-bi.processor-batchify","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/revolt-bi.processor-batchify","name":"developer-portal-v2/revolt-bi.processor-batchify","tag":"0.2.1","options":{},"digest":"sha256:138a24199bf20d04e1fe44d4bcb0bd180555042c7a6fe498a07aae1bca5ea767"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/revolt-bi.processor-batchify/32/25.png","64":"https://ui.keboola-assets.com/developer-portal/icons/revolt-bi.processor-batchify/64/25.png","128":null}},{"id":"drive-cx.ex-drive-cx","vendor":{"id":"drive-cx","name":"Drive CX","address":"887 Great Northern Way suite 101, Vancouver BC, V5T 4T5","email":"jessica.bailey@gravit-e.ca","type":"other"},"version":33,"name":"Drive CX","type":"extractor","shortDescription":"Downloads Drive CX data about locations, purchase details, employees, and surveys.","longDescription":"*Make sure every customer leaves happy. Invite customers to share good reviews. Improve team productivity.*\n\nWith [Drive CX](https://drivecx.com/), you can offer a better payment experience for your customers by making it comfortable for guests to tell\nyou what they really think.\n\nManagers solve problems before they impact the bottom line. Servers make one trip to the table and continue serving tables while customers view, pay, and give feedback on the payment device, resulting in better\nservice and labor efficiencies.","licenseUrl":"https://github.com/keboola/kbc-ui-templates/tree/master/resources/drive-cx.ex-drive-cx/templates/LICENSE","documentationUrl":"https://github.com/keboola/kbc-ui-templates/tree/master/resources/drive-cx.ex-drive-cx/templates","sourceCodeUrl":"https://github.com/keboola/kbc-ui-templates/tree/master/resources/drive-cx.ex-drive-cx/templates","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericTemplatesUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["config"],"properties":{"config":{"type":"object","title":"Drive CX Settings","required":["#api_key","client_id"],"properties":{"#api_key":{"type":"string","title":"Drive CX Secret Key","format":"password","default":"","minLength":1,"description":"The secret key is generated in the Drive UI under Setup -> Integrations","propertyOrder":1},"client_id":{"type":"string","title":"Client ID","default":"","minLength":1,"propertyOrder":2},"date_added_end":{"type":"string","title":"Date to ((YYYY-MM-DD HH:MM:SS)","default":"","minLength":1,"description":"Applicable only for Purchase Detail option. Please, leave blank if you're using other options.","propertyOrder":4},"date_added_start":{"type":"string","title":"Date from (YYYY-MM-DD HH:MM:SS)","default":"","minLength":1,"description":"Applicable only for Purchase Detail option. Please, leave blank if you're using other options.","propertyOrder":3}}}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"### Authentication and Secret Key\n\nAll requests are authenticated by using a signature that is calculated using a client-specific secret key. The secret key is generated in the Drive UI under Setup -> Integrations.\n\nAn example key: 5N2E4Y2Q0OTUxNDE3N2Y5MTgwMjM5NDkzNGQwYj=","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":33,"uri":"docker/drive-cx.ex-drive-cx","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/ex-generic-v2","name":"developer-portal-v2/ex-generic-v2","tag":"latest","options":{},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/drive-cx.ex-drive-cx/32/1581101852086.png","64":"https://ui.keboola-assets.com/developer-portal/icons/drive-cx.ex-drive-cx/64/1581101852086.png","128":null}},{"id":"kds-team.processor-drop-columns","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":100,"name":"Drop Columns","type":"processor","shortDescription":"Drop specified columns from output / input tables before they get into the platform or to the destination.","longDescription":"\nTakes all tables in `in/tables/` and removes specified columns in specified tables. Result is moved to `out/tables/` All\nother tables that are not specified or columns that are not specified are moved unchanged.\n\nFiles folder `in/files` is moved unchanged.\n\nManifest files are respected and transferred / modified as well.\n\n**Table of contents:**\n\n[TOC]\n\n## Configuration\n\nlist table names in `table_mapping` and list columns to remove, all others are kept\n\n```\n\"table_mapping\": {\n      \"test.csv\": [\n        \"Location\",\n        \"Type\"\n      ]\n    }\n```\n\n**NOTE**: Simple `*` wildcard is supported at the end of table name, e.g.:\n\n```\n\"table_mapping\": {\n      \"test*\": [\n        \"Location\",\n        \"Type\"\n      ]\n    }\n```\n\nThe above will remove columns `\"Location\", \"Type\"` in table `test.csv`.\n\n### Sample configuration\n\n```json\n{\n  \"definition\": {\n    \"component\": \"kds-team.processor-drop-columns\"\n  },\n  \"parameters\": {\n    \"table_mapping\": {\n      \"test*\": [\n        \"Location\",\n        \"Type\"\n      ]\n    }\n  }\n}\n```","licenseUrl":"https://bitbucket.org/kds_consulting_team/kds-team.processor-drop-columns/src/master/LICENSE.md","documentationUrl":"https://bitbucket.org/kds_consulting_team/kds-team.processor-drop-columns/src/master/README.md","sourceCodeUrl":"https://bitbucket.org/kds_consulting_team/kds-team.processor-drop-columns","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":[],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"Configuration description.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":100,"uri":"docker/kds-team.processor-drop-columns","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.processor-drop-columns","name":"developer-portal-v2/kds-team.processor-drop-columns","tag":"1.1.0","options":{},"digest":"sha256:995a08ba13a2f2f34a049ae10e665e83d417a63f582ff41c78b367cea662b604"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.processor-drop-columns/32/1670514246502.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.processor-drop-columns/64/1670514246502.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.processor-drop-columns/128/1670514246502.png"}},{"id":"keboola.ex-dropbox-v2","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":68,"name":"Dropbox","type":"extractor","shortDescription":"Downloads files from Dropbox share links into Keboola Storage as CSV tables, with support for multiple links and custom buckets.","longDescription":"The Dropbox Extractor allows you to easily integrate files stored in Dropbox into your Keboola workflows.\n\nProvide one or more public Dropbox share links, and the component will automatically download each file and save it as a table in Keboola Storage. All downloads are converted into CSV format and come with automatically generated manifest files, ensuring seamless integration into your data pipelines.\n\nYou can optionally choose the target bucket where the tables will be stored, giving you flexibility in organizing your datasets. The extractor handles multiple files in one run and safely masks sensitive tokens in logs to protect your data.\n\nThis component is designed as a modern replacement for the older Node.js Dropbox Extractor. It preserves compatibility with existing configurations while improving performance, security, and maintainability.\n\nUse the Dropbox Extractor to quickly bring external files from Dropbox into Keboola for further transformation, analysis, or export to downstream systems.","licenseUrl":"https://github.com/keboola/component-dropbox/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/component-dropbox/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/component-dropbox","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Dropbox Extractor Configuration (API v2)","required":["dropbox_links"],"properties":{"dropbox_links":{"type":"array","items":{"type":"object","title":"Dropbox Link","required":["download_url","table_name"],"properties":{"table_name":{"type":"string","title":"Table Name","description":"Name of the output table in Keboola Storage.","propertyOrder":2},"download_url":{"type":"string","title":"Dropbox Download URL","description":"Paste the Dropbox share link to download your file.","propertyOrder":1}}},"title":"Dropbox Links","format":"table","propertyOrder":1}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"Configure the Dropbox Extractor by specifying one or more Dropbox share links and how you’d like the resulting files stored in Keboola.\n\n- **Dropbox Links** (Required)  \n  Add one or more entries, each with:\n    - **Download URL**: A public Dropbox share link to the file you want to download.  \n    - **Table Name**: The name for the output table in Keboola Storage. Only letters, numbers, dots, underscores, and hyphens are allowed.\n\nAll files are saved as CSV tables in Keboola Storage, with automatically generated manifests. Ensure your Dropbox links are accessible via public sharing and end with `dl=0` or similar. The extractor will automatically adjust the link for download.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":68,"uri":"docker/keboola.ex-dropbox-v2","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-dropbox-v2","name":"developer-portal-v2/keboola.ex-dropbox-v2","tag":"0.0.5","options":{},"digest":"sha256:5093bb0458e8b0ddbe2a52c36e0fd6078baf7bd531b9a3c05ad6e4a99044fb6f"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-dropbox-v2/32/1752092833303.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-dropbox-v2/64/1752092833303.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-dropbox-v2/128/1752092833303.png"}},{"id":"keboola.wr-dropbox-v2","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":40,"name":"Dropbox","type":"writer","shortDescription":"Uploads files and tables to Dropbox.","longDescription":"This component exports tables as CSV or other files from Keboola Connection Storage into a single [Dropbox](https://www.dropbox.com/) account.","licenseUrl":"https://github.com/keboola/dropbox-writer-v2/blob/master/LICENSE","documentationUrl":"https://help.keboola.com/writers/storage/dropbox/","sourceCodeUrl":"https://github.com/keboola/dropbox-writer-v2","requiredMemory":null,"processTimeout":null,"features":["container-root-user","dev-branch-configuration-unsafe"],"encryption":true,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI-tableInput","genericDockerUI-fileInput","genericDockerUI-authorization","genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Upload Parameters","required":["mode","folder"],"properties":{"mode":{"enum":["rewrite","create new"],"type":"string","title":"Resolve names conflict strategy","default":"create new"},"folder":{"type":"string","title":"Destination folder name within the application folder","description":"The folder name must not start and end with a slash, use e.g. 'test/test2'."}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.wr-dropbox-v2","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-dropbox-v2","name":"developer-portal-v2/keboola.wr-dropbox-v2","tag":"0.4.0","options":{},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-dropbox-v2/32/1576509831981.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-dropbox-v2/64/1576509831981.png","128":null}},{"id":"keboola.duckdb-transformation","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":238,"name":"DuckDB","type":"transformation","shortDescription":"DuckDB SQL transformation component with block-based orchestration, parallel execution, and automatic dependency detection.","longDescription":"Advanced DuckDB SQL transformation component for Keboola platform that provides sophisticated data processing capabilities with intelligent execution planning.\n\n**Key Features:**\n\n**Block-Based Orchestration**\n- Execute SQL queries in consecutive blocks for logical separation\n- Parallel execution of independent queries within each block\n- Automatic dependency detection and execution planning\n\n**Performance Optimization**\n- Configurable parallel thread execution\n- Automatic system resource detection (CPU/memory)\n- Optimized DuckDB configuration for maximum performance\n\n**SQL Processing**\n- Advanced SQL parsing with SQLGlot integration\n- Automatic dependency analysis between queries\n- Syntax validation with detailed error reporting\n- Support for complex SQL operations and CTEs\n\n**Data Handling**\n- Local CSV and Parquet file support\n- Automatic data type inference for CSV files\n- Snowflake INTEGER column optimization for Parquet files\n- Flexible input/output table mapping\n\n**Development Tools**\n- SQL syntax checking without execution\n- Data lineage visualization\n- Execution plan visualization\n- Expected input tables analysis\n\n**System Integration**\n- Automatic resource detection from cgroup limits\n- Configurable memory and thread limits\n- Debug logging and performance monitoring\n- Comprehensive error handling and reporting\n\nThis component is designed for high-performance data transformations with intelligent execution planning, making it ideal for complex ETL workflows requiring parallel processing and dependency management.","licenseUrl":"https://github.com/component-duckdb-transformation.git/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/component-duckdb-transformation/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-duckdb-transformation","requiredMemory":"16000m","processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"out","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput","genericDockerUI-fileInput","genericDockerUI-tableOutput","genericDockerUI-fileOutput","genericCodeBlocksUI","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"Configuration description.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["execution_plan_visualization","expected_input_tables","lineage_visualization","syntax_check"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.duckdb-transformation","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.duckdb-transformation","name":"developer-portal-v2/keboola.duckdb-transformation","tag":"0.1.7","options":{},"digest":"sha256:9f5219fb41401a9b5eb47f1ed34c03858719d603e4bbf623c8808c142152b3cf"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.duckdb-transformation/32/1751448940569.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.duckdb-transformation/64/1751448940569.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.duckdb-transformation/128/1751448940569.png"}},{"id":"keboola.processor-duckdb","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":95,"name":"DuckDB","type":"processor","shortDescription":"The DuckDB processor allows custom transformations using SQL.","longDescription":"# DuckDB Processor\n\nThe DuckDB processor is a component that allows you to run SQL queries on a DuckDB database. For more information about DuckDB, visit the [DuckDB Documentation](https://duckdb.org/docs/).\n\n## Configuration\n\nThe component supports two **modes of operation**:\n- Simple (default)\n- Advanced\n\n### Simple Mode\nIn simple mode, each query operates on a single table in DuckDB. This table can be created from a specific table defined by name or from multiple tables matching a pattern (along with an arbitrary number of files). \nThe query output is exported using the name of the input table.\n\n![simple.png](../docs/imgs/simple.png)\n\nIn simple mode, the parameter **queries** is an array of queries to be executed. Each query has its own input, query, and output and is executed in isolation.\nEach query can use the following parameters:\n\n- **input:** A string specifying the name of the table, or an object containing the following parameters:\n  - **input_pattern** (required): The name of the table or a [glob pattern](https://duckdb.org/docs/data/multiple_files/overview#glob-syntax).\n  - **duckdb_destination** (required when using a glob pattern in the previous parameter): The name of the table in DuckDB.\n  - **dtypes_mode:** Determines how data types are handled. Options are:\n    - all_varchar (default): Treats all columns as text.\n    - auto_detect: Automatically infers data types.\n    - from_manifest: Uses data types from the input manifest (if a wildcard is used, the manifest of the first table is used).\n  - **skip_lines:** The number of lines to skip.\n  - **delimiter:** A string specifying the delimiter.\n  - **quotechar:** A string specifying the quote character.\n  - **column_names:** A list of column names.\n  - **date_format:** A string specifying the date format.\n  - **timestamp_format:** A string specifying the timestamp format.\n  - **add_filename_column:** A boolean indicating whether the filename should be added as a column.\n- **query** (required): The SQL query to be executed.\n- **output:** A string specifying the output table name, or an object containing the following parameters:\n  - **kbc_destination:** The name of the output table.\n  - **primary_key:** A list of primary key columns.\n  - **incremental:** A boolean indicating whether the data should be loaded incrementally.\n\n\n### Advanced Mode\n\nIn advanced mode, the [relations](https://duckdb.org/docs/api/python/relational_api) are created from all specified input tables.\nThen, all defined queries are processed. Finally, the output tables specified in out_tables are exported to Keboola Storage.\n\n![advanced.png](../docs/imgs/advanced.png)\n\nParameters:\n - **input:** An array of input tables from Keboola, defined either as a string containing the name or as an object containing the following parameters:\n    - **input_pattern** (required): The name of the table or a [glob pattern](https://duckdb.org/docs/data/multiple_files/overview#glob-syntax).\n    - **duckdb_destination** (required when using a glob pattern): The name of the table in DuckDB.\n    - **dtypes_mode:** Determines how data types are handled. Options are:\n      - all_varchar (default): Treats all columns as text.\n      - auto_detect: Automatically infers data types.\n      - from_manifest: Uses data types from the input manifest (if a wildcard is used, the manifest of the first table is used).\n    - **skip_lines:** The number of lines to skip.\n    - **delimiter:** A string specifying the delimiter.\n    - **quotechar:** A string specifying the quote character.\n    - **column_names:** A list of column names.\n    - **date_format:** A string specifying the date format.\n    - **timestamp_format:** A string specifying the timestamp format.\n    - **add_filename_column:** A boolean indicating whether the filename should be added as a column.\n- **queries:** A list of SQL queries to be executed.\n- **output:** An array of output tables, defined either as a string specifying the output table name or as an object containing the following parameters:\n  - **kbc_destination:** The name of the output table.\n  - **primary_key:** A list of primary keys.\n  - **incremental:** A boolean indicating whether the data should be loaded incrementally.\n\nExamples of configurations for both modes can be found in the [README.md](../README.md) or in the [tests directory](../tests/).","licenseUrl":"https://github.com/keboola/processor-duckdb/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/processor-duckdb/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/processor-duckdb","requiredMemory":"2048m","processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"keboola.processor-duckdb — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","examples":[{"mode":"simple","queries":[{"input":"sales.csv","query":"SELECT sales_representative, SUM(turnover) AS total_turnover FROM 'sales.csv' GROUP BY sales_representative"}]},{"mode":"simple","queries":[{"input":{"delimiter":",","dtypes_mode":"auto_detect","input_pattern":"/data/in/tables/*.csv","duckdb_destination":"products","add_filename_column":true},"query":"SELECT p.*, cat.name AS category_name FROM products AS p LEFT JOIN '/data/in/files/categories.parquet' AS cat ON p.category_id = cat.id ORDER BY p.id","output":{"incremental":true,"primary_key":["id"],"kbc_destination":"out-products"}}]},{"mode":"advanced","input":["sales1.csv","sales2.csv"],"output":["sales_all"],"queries":["CREATE VIEW sales_all AS SELECT * FROM 'sales1.csv' UNION ALL SELECT * FROM 'sales2.csv'","COPY sales_all TO '/data/out/files/sales_all.parquet' (FORMAT PARQUET)"]},{"mode":"advanced","input":[{"dtypes_mode":"auto_detect","input_pattern":"/data/in/tables/*.csv","duckdb_destination":"products"}],"output":[{"incremental":true,"primary_key":["id"],"duckdb_source":"out","kbc_destination":"out"},"category"],"queries":["CREATE TABLE category AS SELECT * FROM '/data/in/files/categories.parquet'","CREATE VIEW out AS SELECT p.*, category.name AS category_name FROM products AS p LEFT JOIN category ON p.category_id = category.id ORDER BY p.id"]},{"mode":"advanced","output":["cars"],"queries":["CREATE VIEW cars AS SELECT * FROM 'https://example.com/countries.csv'"]},{"mode":"advanced","output":["orders"],"queries":["CREATE VIEW orders AS SELECT o.id AS id, o.cust_name AS customer_name FROM (SELECT unnest(root_el.orders) AS o FROM read_json('/data/in/files/orders_*.json'))"]}],"required":["queries"],"properties":{"mode":{"enum":["simple","advanced"],"type":"string","default":"simple","description":"Selects the configuration shape. 'simple': 'queries' is an array of query OBJECTS ({input, query, output}); do not use top-level 'input'/'output'. 'advanced': 'queries' is an array of SQL STRINGS; declare inputs in top-level 'input' and outputs in top-level 'output'."},"input":{"type":"array","items":{"$ref":"#/definitions/inputTable"},"description":"Top-level list of input tables, used in ADVANCED mode — each table is loaded as a DuckDB relation and given as a table-name string or an input object. In SIMPLE mode the input is not set here but per query, inside each queries[] object (queries[].input)."},"output":{"type":"array","items":{"$ref":"#/definitions/outputTable"},"description":"Top-level list of output tables, used in ADVANCED mode — the named DuckDB tables/views are exported to Keboola Storage, each given as a name string or an output object. In SIMPLE mode the output is not set here but per query, inside each queries[] object (queries[].output)."},"queries":{"type":"array","items":{"$ref":"#/definitions/query"},"description":"SIMPLE mode: array of query OBJECTS, each with its own 'input', 'query' and 'output'. ADVANCED mode: array of SQL STRINGS executed in order (e.g. CREATE VIEW …, COPY …)."}},"definitions":{"query":{"type":["string","object"],"required":["query"],"properties":{"input":{"$ref":"#/definitions/inputTable"},"query":{"type":"string","description":"The SQL query to execute (simple mode: usually a SELECT over the query's input)."},"output":{"$ref":"#/definitions/outputTable"}},"description":"ADVANCED mode: a SQL query STRING. SIMPLE mode: a query OBJECT with 'input' (string or input object), 'query' (the SQL SELECT), and optional 'output' (string or output object)."},"inputTable":{"type":["string","object"],"required":["input_pattern"],"properties":{"delimiter":{"type":"string","description":"Field delimiter."},"quotechar":{"type":"string","description":"Quote character."},"has_header":{"type":"boolean","description":"Whether the input file has a header row."},"skip_lines":{"type":["integer","string"],"description":"Number of lines to skip at the start of the file."},"date_format":{"type":"string","description":"Date format used when parsing dates."},"dtypes_mode":{"enum":["all_varchar","auto_detect","from_manifest"],"type":"string","default":"all_varchar","description":"How column data types are handled: 'all_varchar' treats all columns as text (default), 'auto_detect' infers types, 'from_manifest' uses types from the input manifest (first table's manifest when a glob is used)."},"incremental":{"type":"boolean","description":"Legacy input-level incremental flag."},"primary_key":{"type":"array","items":{"type":"string"},"description":"Legacy input-level primary key."},"column_names":{"type":"array","items":{"type":"string"},"description":"Explicit list of column names."},"detect_dtypes":{"type":"boolean","description":"Legacy flag for automatic data-type detection (superseded by 'dtypes_mode')."},"input_pattern":{"type":"string","description":"The input-mapping table name or a glob pattern (https://duckdb.org/docs/data/multiple_files/overview#glob-syntax)."},"timestamp_format":{"type":"string","description":"Timestamp format used when parsing timestamps."},"duckdb_destination":{"type":"string","description":"Name of the resulting table in DuckDB. Required when 'input_pattern' is a glob pattern."},"add_filename_column":{"type":"boolean","description":"Whether to add the source filename as a column."}},"description":"An input table. As a STRING it is the input-mapping table name (e.g. 'sales.csv'). As an OBJECT it describes how to load the file(s) into DuckDB."},"outputTable":{"type":["string","object"],"properties":{"incremental":{"type":"boolean","description":"Whether to load the data incrementally."},"primary_key":{"type":"array","items":{"type":"string"},"description":"Primary key columns of the output table."},"duckdb_source":{"type":"string","description":"Name of the source DuckDB table/view to export. Used for output OBJECTS in advanced mode (in simple mode the source is the query's input)."},"kbc_destination":{"type":"string","description":"Destination table name in Keboola Storage."},"legacy_manifest":{"type":"boolean","description":"Legacy flag to write an older manifest format."}},"description":"An output table. As a STRING it is the DuckDB table/view name to export (also used as the Storage table name). As an OBJECT it controls the Storage destination, primary key and incremental load."}},"description":"DuckDB processor. Runs SQL queries on a temporary DuckDB database over the tables and files passing through the processor.\n\nIMPORTANT — this is a Keboola PROCESSOR, not a standalone component. Do NOT create a standalone configuration for it. It is attached to a PARENT component's or transformation's configuration inside the 'processors' block ('before' or 'after', usually 'after'), as an entry {\"definition\":{\"component\":\"keboola.processor-duckdb\"},\"parameters\":{...}}. This schema describes ONLY that 'parameters' object. Via the Keboola MCP, attach it with the processors_after (or processors_before) argument of create_config / update_config on the parent configuration — not by calling create_config with component_id 'keboola.processor-duckdb'.\n\nBoth modes use 'input', 'query'/'queries' and 'output' — the difference is only WHERE input and output are declared and whether a query is an object or a SQL string.\n\nThere are TWO modes, selected by the 'mode' field:\n\n1) SIMPLE mode (mode='simple', the default). 'queries' is an array of OBJECTS; each object carries its OWN 'input', 'query' and 'output' and runs in isolation (one input table or glob → one SELECT → one output table). Here input and output are set PER QUERY (queries[].input, queries[].output); there is no top-level 'input'/'output'. Any input tables/files not matched by a query are passed through to the output unchanged.\nExample: {\"mode\":\"simple\",\"queries\":[{\"input\":\"sales.csv\",\"query\":\"SELECT sales_representative, SUM(turnover) AS total FROM 'sales.csv' GROUP BY sales_representative\",\"output\":\"agg.csv\"}]}\n\n2) ADVANCED mode (mode='advanced'). Inputs are declared once in the TOP-LEVEL 'input' array (each loaded as a DuckDB relation). 'queries' is an array of SQL STRINGS executed in order (typically CREATE VIEW/TABLE ... or COPY ...). The tables/views named in the TOP-LEVEL 'output' array are exported to Keboola Storage. Inputs may be omitted when a query reads directly from files/URLs (e.g. read_json, read_csv, http). In advanced mode 'queries' elements are strings, NOT objects.\nExample: {\"mode\":\"advanced\",\"input\":[\"sales1.csv\",\"sales2.csv\"],\"queries\":[\"CREATE VIEW sales_all AS SELECT * FROM 'sales1.csv' UNION ALL SELECT * FROM 'sales2.csv'\"],\"output\":[\"sales_all\"]}\n\nIn both modes an 'input' or 'output' entry may be a plain table-name string or an object for finer control (glob patterns, dtypes, delimiter, primary key, incremental load, …). See the embedded 'examples' below and the DuckDB docs: https://duckdb.org/docs/"},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.processor-duckdb","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.processor-duckdb","name":"developer-portal-v2/keboola.processor-duckdb","tag":"1.4.33","options":{},"digest":"sha256:41cb6fe8352dfd7ea4e86d4de1fd866e6d2d130c749756605fede8801a214332"},"publishingStatus":"public","icon":{"32":null,"64":null,"128":null}},{"id":"keboola.ex-dynamics-365-business-central","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":81,"name":"Dynamics 365 Business Central","type":"extractor","shortDescription":"Extracts data from any Microsoft Dynamics 365 Business Central OData endpoint.","longDescription":"This component integrates with Microsoft Dynamics 365 Business Central using the OData API to import entity data into Keboola Storage.\n\nIt supports sync actions for listing environments, organizations, and endpoints, simplifying configuration.\n\nData can be downloaded from endpoints with incremental loading, maintaining state in Keboola Storage for efficient updates.\n\nThe component also supports schema evolution, automatically adapting to changes in endpoint structures.","licenseUrl":"https://github.com/keboola/component-ms-dynamics365-business-central/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-ms-dynamics365-business-central/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-ms-dynamics365-business-central","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-authorization"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Dynamics 365 Business Central Configuration","required":["connection"],"properties":{"connection":{"type":"object","title":"Connection","required":["tenant_id"],"properties":{"tenant_id":{"type":"string","title":"Tenant ID","description":"Can be found in https://businesscentral.dynamics.com/__TENANT_ID__/Production","propertyOrder":1},"company_id":{"enum":[],"type":"string","title":"Company ID","format":"select","default":"","options":{"async":{"label":"Load companies","action":"list_companies"}},"description":"GUID of the company to extract data from","propertyOrder":2},"environment":{"enum":[],"type":"string","title":"Environment","format":"select","default":"","options":{"async":{"label":"Load environments","action":"list_environments"}},"description":"Business Central environment name (e.g. Production, Sandbox)","propertyOrder":3},"test_connection":{"type":"button","format":"test-connection","propertyOrder":4}},"propertyOrder":100}}},"configurationRowSchema":{"type":"object","title":"Dynamics 365 Business Central Row Configuration","required":["source","destination"],"properties":{"debug":{"type":"boolean","title":"Debug Logging","format":"checkbox","default":false,"description":"Enable verbose logging for troubleshooting","propertyOrder":3},"source":{"type":"object","title":"Source","required":["endpoint"],"properties":{"endpoint":{"enum":[],"type":"string","title":"Endpoint","format":"select","default":"","options":{"async":{"label":"Load endpoint","action":"list_endpoints"}},"description":"API endpoint to extract data from (e.g. customers, items, salesOrders)","propertyOrder":1},"initial_since":{"type":"string","title":"Initial Since Value","description":"Since which date to download data for the first run (e.g. 2024-01-01T00:00:00Z), following runs will use the last run time stored in the state file.","propertyOrder":7},"expand_children":{"type":"array","items":{"enum":[],"type":"string"},"title":"Expand Properties","format":"select","options":{"tags":true,"async":{"label":"Load properties","action":"list_navigation_properties"},"tooltip":"Pulls the selected related collections of each record (line items, attachments, dimension sets, …) into a separate `<table>_<child>` table — the parent table name plus the collection, e.g. `salesInvoices_salesInvoiceLines` — linked back by a `parent_id` column. Each record is fetched together with these collections in one request (OData `$expand`), and they include all their fields. Handy for child data such as `…lines` endpoints marked *(filter required)*, which you can then get for a whole date range instead of filtering record-by-record. Leave empty to extract only this endpoint's own fields."},"description":"Related record collections to pull into their own tables","uniqueItems":true,"propertyOrder":3},"selected_columns":{"type":"array","items":{"enum":[],"type":"string"},"title":"Selected Columns","format":"select","options":{"tags":true,"async":{"label":"Re-load columns","action":"list_columns"}},"description":"Specific columns to extract (leave empty for all columns)","uniqueItems":true,"propertyOrder":2},"custom_url_suffix":{"type":"string","title":"Custom URL Suffix","description":"Custom path to append after the endpoint (e.g. 'applyVendorEntries(123)' for endpoints that require IDs in the URL path)","propertyOrder":5},"filter_expression":{"type":"string","title":"Filter Expression","format":"textarea","options":{"input_height":"100px"},"description":"OData filter expression to limit results (e.g. displayName eq 'John') - see <a href='https://docs.oasis-open.org/odata/odata/v4.0/errata03/os/complete/part1-protocol/odata-v4.0-errata03-os-part1-protocol-complete.html#_The_$filter_System'>documentation</a>  for supported operators","propertyOrder":4},"incremental_field":{"type":"string","title":"Incremental Field","description":"Field to use for incremental loading, for example lastModifiedDateTime","propertyOrder":6}},"propertyOrder":1},"destination":{"type":"object","title":"Destination","required":["load_type"],"properties":{"load_type":{"enum":["full_load","incremental_load"],"type":"string","title":"Load Type","default":"incremental_load","options":{"enum_titles":["Full Load","Incremental Load"]},"description":"If Full load is used, the destination table will be overwritten every run. If Incremental Load is used, data will be upserted into the destination table based on the primary key.","propertyOrder":2},"table_name":{"type":"string","title":"Table Name","description":"Name for the output table in Keboola Storage (defaults to endpoint name if empty)","propertyOrder":1},"primary_key":{"type":"array","items":{"enum":[],"type":"string"},"title":"Primary Key","format":"select","options":{"tags":true,"async":{"label":"Re-load columns","action":"list_columns"}},"description":"List of columns that form the primary key by default: id","uniqueItems":true,"propertyOrder":3}},"propertyOrder":2}}},"createConfigurationRowSchema":null,"configurationDescription":"Configuration description.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["list_columns","list_companies","list_endpoints","list_environments","list_navigation_properties","testConnection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-dynamics-365-business-central","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-dynamics-365-business-central","name":"developer-portal-v2/keboola.ex-dynamics-365-business-central","tag":"0.1.0","options":{},"digest":"sha256:2622ed246c0502e95f033a6d27fcb55b6ff2c7c06b8370172c7310cee8a6653c"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-dynamics-365-business-central/32/1760692938850.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-dynamics-365-business-central/64/1760692938850.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-dynamics-365-business-central/128/1760692938850.png"}},{"id":"keboola.wr-dynamics-365-business-central","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":44,"name":"Dynamics 365 Business Central","type":"writer","shortDescription":"Writes records to Microsoft Dynamics 365 Business Central.","longDescription":"The Dynamics 365 Business Central Writer enables you to write data from Keboola Storage to your Microsoft Dynamics 365 Business Central instance.\n\n**Key Features:**\n- **OAuth 2.0 Authentication**: Secure authentication with automatic refresh token rotation\n- **Create & Update Modes**: Insert new records or update existing ones by key field\n- **Dynamic Schema Discovery**: Automatically discover available endpoints and writable fields from your Business Central instance via OData metadata\n- **Flexible Field Mapping**: Map input table columns to Business Central fields, including nested fields via dot notation (e.g. `address.city`)\n- **Auto Field Mapping**: Use \"Re-load Mapping\" to automatically match input columns to API fields with fuzzy name matching\n- **Error Handling**: Detailed per-record error reporting with optional partial success support — failed records are written to `failed_records.csv`\n\nPerfect for syncing master data, updating financial records, or pushing processed data back into Business Central from your Keboola pipelines.","licenseUrl":"https://github.com/keboola/component-ms-dynamics365-business-central-writer/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/component-ms-dynamics365-business-central-writer/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/component-ms-dynamics365-business-central-writer","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"out","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-authorization","genericDockerUI-simpleTableInput","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Dynamics 365 Business Central Writer Configuration","required":["connection"],"properties":{"connection":{"type":"object","title":"Connection","required":["tenant_id"],"properties":{"tenant_id":{"type":"string","title":"Tenant ID","description":"Can be found in https://businesscentral.dynamics.com/__TENANT_ID__/Production","propertyOrder":1},"company_id":{"enum":[],"type":"string","title":"Company ID","format":"select","default":"","options":{"async":{"label":"Load companies","action":"list_companies"}},"description":"GUID of the company to write data to","propertyOrder":3},"environment":{"enum":[],"type":"string","title":"Environment","format":"select","default":"","options":{"async":{"label":"Load environments","action":"list_environments"}},"description":"Business Central environment name (e.g. Production, Sandbox)","propertyOrder":2},"test_connection":{"type":"button","format":"test-connection","propertyOrder":4}},"propertyOrder":1}}},"configurationRowSchema":{"type":"object","title":"Dynamics 365 Business Central Writer Configuration","required":[],"properties":{"debug":{"type":"boolean","title":"Debug Mode","format":"checkbox","default":false,"description":"Enable debug logging for troubleshooting","propertyOrder":8},"endpoint":{"enum":[],"type":"string","title":"Endpoint","format":"select","options":{"async":{"label":"Re-load endpoints","action":"list_endpoints"}},"description":"Business Central API endpoint to write to (e.g. customers, vendors)","propertyOrder":2},"key_field":{"type":"string","title":"Key Field","options":{"dependencies":{"write_mode":"update"}},"description":"Business Central field used as record identifier for updates (e.g. id, number)","propertyOrder":4},"_metadata_":{"type":"object","options":{"hidden":true},"properties":{"api_fields":{"type":"array"}}},"write_mode":{"enum":["create","update"],"type":"string","title":"Write Mode","format":"select","default":"create","options":{"enum_titles":["Create","Update"]},"description":"Create: insert new records. Update: modify existing records by key.","propertyOrder":3},"load_mapping":{"type":"button","title":"Re-load Mapping","format":"sync-action","options":{"async":{"cache":false,"label":"Re-load mapping","action":"load_field_mapping","autoload":["endpoint"]}},"propertyOrder":6},"field_mapping":{"type":"array","items":{"type":"object","required":["source_column","destination_field"],"properties":{"source_column":{"type":"string","title":"Source Column","options":{"readOnly":true}},"destination_field":{"type":"string","title":"Destination Field","watch":{"api_fields":"_metadata_.api_fields"},"format":"select","options":{"tags":true},"enumSource":[{"title":"{{item.label}}","value":"{{item.field_name}}","source":"api_fields"}]}}},"title":"Field Mapping","format":"table","description":"Map input table columns to Business Central fields. Use 'Re-load mapping' to add missing columns - existing rows are preserved.","propertyOrder":5},"continue_on_error":{"type":"boolean","title":"Continue on Error","format":"checkbox","default":false,"description":"When checked, failed records are written to 'failed_records.csv' instead of failing the job.","propertyOrder":7}}},"createConfigurationRowSchema":null,"configurationDescription":"Select a Business Central endpoint and map your input table columns to the corresponding API fields. Use \"Re-load Mapping\" to automatically populate the field mapping from your input table.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["list_companies","list_endpoints","list_environments","load_field_mapping","testConnection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.wr-dynamics-365-business-central","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-dynamics-365-business-central","name":"developer-portal-v2/keboola.wr-dynamics-365-business-central","tag":"0.1.1","options":{},"digest":"sha256:150257c5ac7e492f1631d2479dffbefd6e836b9d02bc20437b92b9e1d63312ad"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-dynamics-365-business-central/32/1774441284034.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-dynamics-365-business-central/64/1774441284034.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-dynamics-365-business-central/128/1774441284034.png"}},{"id":"kds-team.wr-dynamodb","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":85,"name":"DynamoDB","type":"writer","shortDescription":"Writes table rows to an existing Amazon DynamoDB table.","longDescription":"Write data to DynamoDB using batch processing. Amazon DynamoDB is a key-value and document database that delivers single-digit millisecond performance at any scale. \nIt's a fully managed, multiregion, multimaster database with built-in security, backup and restore, \nand in-memory caching for internet-scale applications.","licenseUrl":"https://github.com/keboola/component-dynamodb/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-dynamodb/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-dynamodb","requiredMemory":null,"processTimeout":21600,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Database"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Configuration","required":["region","#access_key_secret","access_key_id","table_name","column_config"],"properties":{"region":{"enum":["us-east-2","us-east-2","us-east-1","us-west-1","us-west-2","ap-east-1","ap-south-1","ap-northeast-3","ap-northeast-2","ap-southeast-1","ap-southeast-2","ap-northeast-1","ca-central-1","cn-north-1","cn-northwest-1","eu-central-1","eu-west-1","eu-west-2","eu-west-3","eu-north-1","sa-east-1","us-gov-east-1","us-gov-west-1"],"type":"string","title":"Region","format":"string","default":"us-east-1","description":"AWS Region","propertyOrder":300},"table_name":{"type":"string","title":"Destination Table name","format":"string","description":"Exact name of an existing DynamoDB table","propertyOrder":400},"access_key_id":{"type":"string","title":"AWS Access Key ID","description":"Your AWS Access Key ID","propertyOrder":100},"column_config":{"type":"array","items":{"type":"object","title":"Column","format":"grid","required":["name","type"],"properties":{"name":{"type":"string","title":"Column Name","description":"The name must match exactly the source and destination table column.","propertyOrder":1000},"type":{"enum":["scalar","object","gzip"],"type":"string","title":"Type","default":"scalar","propertyOrder":2000}}},"title":"Column Configuration","description":"Configuration of input table columns. The names must match exactly the names of the input table and the output table. \n Scalar type is any single value. Object type expect a valid JSON string or a JSON array string. Gzip type will compress any value and store as a Binary type."},"#access_key_secret":{"type":"string","title":"AWS Access Key Secret","format":"password","description":"Your AWS Access Key Secret.","propertyOrder":200}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"\nThe writer takes a single table on the input.\n\n- The table needs to contain column names exactly as they appear in destination Table.\n- The table has to contain all Key attributes and all Attributes required by the destination table schema\n- Other attributes may be included as required.\n- The column should contain either a `scalar` value single string, number, etc. Or an `object` value -> a valid JSON String or a JSON array string.\n  - `scalar` type - the column contains a single value [e.g. string, number, ...\n  - `object` type - the column contains a valid JSON string. This allows exporting of a nested structures -> \nthe nested structures must be serialized within the column values. e.g. \n\n```json\n    {\n    \"name\": \"Test\",\n    \"value\": \"1\"\n    }\n```\nor a valid JSON array e.g. \n\n```json\n    [\"val1\", \"val2\"]\n```\n  - `gzip` type - any content in the column will be gzipped and stored as `Binary` value\n\n  ","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"none","200":"normal","250":"normal","300":"normal","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":85,"uri":"docker/kds-team.wr-dynamodb","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.wr-dynamodb","name":"developer-portal-v2/kds-team.wr-dynamodb","tag":"1.0.1","options":{},"digest":"sha256:79d2ba3ee474af9962797bc5186df753f83d88d75146a249ea016ed0e3d25efd"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.wr-dynamodb/32/1576490848344.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.wr-dynamodb/64/1576490848344.png","128":null}},{"id":"keboola.ex-dynamodb","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":58,"name":"DynamoDB","type":"extractor","shortDescription":"Extracts data from Amazon DynamoDB tables.","longDescription":"This component fetches data from the [Amazon DynamoDB](https://aws.amazon.com/dynamodb/) database. \n\nData fetching is done using a Scan method. Optionally, you can use a `dateFilter` to filter documents which will be downloaded.\n\nThe extractor must be configured [manually](https://github.com/keboola/dynamodb-extractor/blob/master/CONFIG.md). To configure it, you must be familiar with JSON.\n","licenseUrl":"https://github.com/keboola/dynamodb-extractor/blob/master/LICENSE","documentationUrl":"https://github.com/keboola/dynamodb-extractor/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/dynamodb-extractor","requiredMemory":"2048m","processTimeout":172800,"features":["container-root-user"],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"hard","category":null,"categories":["Database"],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","appInfo.beta","genericDockerUI-processors"],"imageParameters":{},"stackParameters":{},"testConfiguration":{},"configurationSchema":{"type":"object","title":"Amazon DynamoDB Extractor — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","required":["db","exports"],"properties":{"db":{"type":"object","title":"DynamoDB Connection","required":["endpoint","accessKeyId","#secretAccessKey","regionName"],"properties":{"endpoint":{"type":"string","title":"Endpoint","options":{"tooltip":"The regional DynamoDB service endpoint, in the form `https://dynamodb.REGION.amazonaws.com`. It has to point at the same region as the Region field below.","inputAttributes":{"placeholder":"https://dynamodb.eu-central-1.amazonaws.com"}},"minLength":1,"description":"DynamoDB service endpoint","propertyOrder":10},"regionName":{"type":"string","title":"Region","options":{"tooltip":"AWS region code, e.g. `eu-central-1` or `us-east-1`. It is shown next to the table in the AWS DynamoDB console.","inputAttributes":{"placeholder":"eu-central-1"}},"minLength":1,"description":"AWS region the table lives in","propertyOrder":20},"accessKeyId":{"type":"string","title":"Access Key ID","options":{"tooltip":"Create an access key for an IAM user that is allowed to read the table, in the AWS console under IAM → Users → Security credentials → Create access key."},"minLength":1,"description":"Access key ID of the AWS user reading the table","propertyOrder":30},"#secretAccessKey":{"type":"string","title":"Secret Access Key","format":"password","options":{"tooltip":"AWS shows this value only once, at the moment the access key is created. If it was not saved then, create a new access key. The value is stored encrypted."},"minLength":1,"description":"Secret access key belonging to the access key ID","propertyOrder":40}},"description":"AWS credentials and endpoint shared by all exports","propertyOrder":10,"additionalProperties":true},"exports":{"type":"array","items":{"type":"object","allOf":[{"if":{"required":["mode"],"properties":{"mode":{"const":"query"}}},"else":{"allOf":[{"not":{"required":["indexName"]}},{"not":{"required":["keyConditionExpression"]}},{"not":{"required":["expressionAttributeNames"]}},{"not":{"required":["expressionAttributeValues"]}}]},"then":{"not":{"required":["dateFilter"]},"required":["keyConditionExpression"]}}],"title":"Export","required":["id","name","table","incremental","mapping"],"properties":{"id":{"type":"integer","title":"Export ID","options":{"tooltip":"Any whole number that is unique within this configuration. It is never sent to DynamoDB — it only distinguishes exports from one another."},"description":"Unique whole number identifying this export","propertyOrder":10},"mode":{"enum":["scan","query"],"type":"string","title":"Read Mode","options":{"tooltip":"**Scan** walks the whole table or index and can be narrowed with a date filter. **Query** fetches only the documents matching a key condition, which is far cheaper on large tables but needs a partition key value. Scan and Query accept different fields — a field belonging to the other mode makes the job fail.","enum_titles":["Scan","Query"]},"description":"How documents are read; omitting it means Scan","propertyOrder":40},"name":{"type":"string","title":"Output Table Name","options":{"tooltip":"This becomes the name of the output table in Storage (slugified). It must be unique across exports — a duplicate fails the job with `Please remove duplicate export names`."},"minLength":1,"description":"Names the output Storage table; must be unique across exports","propertyOrder":20},"index":{"type":"string","title":"Index","options":{"tooltip":"Scan mode only. Reads a secondary index instead of the table's own key. In Query mode use the Secondary Index field instead.","dependencies":{"mode":"scan"}},"minLength":1,"description":"Secondary index to scan instead of the table itself","propertyOrder":60},"limit":{"type":"integer","title":"Limit","minimum":1,"options":{"tooltip":"Omit to export every matching document. Documents are always fetched in batches of up to 1000; the limit only caps the total."},"description":"Maximum number of documents to export","propertyOrder":120},"table":{"type":"string","title":"Table","options":{"tooltip":"Exact, case-sensitive table name as listed in the AWS DynamoDB console."},"minLength":1,"description":"DynamoDB table to read from","propertyOrder":50},"enabled":{"enum":[true,false],"type":"boolean","title":"Enabled","options":{"tooltip":"A disabled export is skipped without failing the job. If every export is disabled the job fails with `Please enable at least one export`.","enum_titles":["Enabled","Disabled"]},"description":"Whether this export runs; omitting it means enabled","propertyOrder":30},"mapping":{"type":"object","title":"Mapping","format":"editor","options":{"tooltip":"A [php-csvmap](https://github.com/keboola/php-csvmap) definition. Use `\"source.path\": \"column\"` for a plain column, and an object with `\"type\": \"table\"` to break a nested structure out into a child table:\n\n```json\n{\n  \"title\": \"title\",\n  \"info.rating\": \"rating\",\n  \"info\": {\n    \"type\": \"table\",\n    \"destination\": \"info\",\n    \"tableMapping\": { \"rating\": \"rating\" }\n  }\n}\n```\n\nA path that resolves to an object or array without a table mapping fails the job."},"description":"Maps document fields onto output columns","minProperties":1,"propertyOrder":150,"additionalProperties":true},"indexName":{"type":"string","title":"Secondary Index","options":{"tooltip":"Leave empty to query the table's own primary key. Query mode only — setting it on a Scan export fails the job.","dependencies":{"mode":"query"}},"description":"Secondary index to query instead of the table's own key","propertyOrder":70},"dateFilter":{"type":"object","title":"Date Filter (Scan Mode)","options":{"tooltip":"Scan mode only — setting it on a Query export fails the job. All three fields have to be filled in together. The filter applied is `field >= date(format, strtotime(value))`, so the table needs a field holding a comparable date string.","dependencies":{"mode":"scan"}},"required":["field","format","value"],"properties":{"field":{"type":"string","title":"Field","options":{"tooltip":"Name of a field present on every document, holding a date in the format below.","inputAttributes":{"placeholder":"createdTime"}},"description":"Document field the filter compares","propertyOrder":10},"value":{"type":"string","title":"From Date","options":{"tooltip":"Parsed with PHP `strtotime()`, so both relative values (`-2 days`, `today`, `-10 hours`) and absolute ones (`2018-01-01`) work. A value `strtotime()` cannot parse fails the job.","inputAttributes":{"placeholder":"-2 days"}},"description":"Keep only documents dated on or after this; a date or a relative expression","propertyOrder":30},"format":{"type":"string","title":"Date Format","options":{"tooltip":"A PHP `date()` format string matching how the field is stored, for example `Y-m-d`, `Y-m-d H:i:s` or `Y` for a bare year.","inputAttributes":{"placeholder":"Y-m-d"}},"description":"PHP date format the stored values use","propertyOrder":20}},"description":"Keeps only documents at or after a date computed at run time","propertyOrder":110,"additionalProperties":true},"primaryKey":{"type":"array","items":{"type":"string"},"title":"Primary Key","options":{"tags":true,"tooltip":"Type each primary-key column and press Enter to add it. Every name has to be a destination column produced by the mapping, otherwise the job fails with `Primary keys do not match columns`. Needed for an incremental load to deduplicate rows.","inputAttributes":{"placeholder":"Type a destination column name and press Enter"}},"description":"Output columns forming the table's primary key","uniqueItems":true,"propertyOrder":140},"incremental":{"enum":[false,true],"type":"boolean","title":"Load Type","options":{"tooltip":"Incremental load appends rows and updates existing ones matched by the primary key. Full load replaces the table contents on every run.","enum_titles":["Full Load","Incremental Load"]},"description":"How the output table is written to Storage","propertyOrder":130},"keyConditionExpression":{"type":"string","title":"Key Condition Expression","options":{"tooltip":"Required in Query mode. Compares key attributes against placeholders defined in Expression Attribute Values:\n\n```\ntitle = :a\n$yr = :a AND title = :b\n```\n\nUse a `$`-prefixed token for any attribute name that needs escaping and declare it in Expression Attribute Names.","dependencies":{"mode":"query"}},"description":"DynamoDB key condition — which partition/sort key values to fetch","propertyOrder":80},"expressionAttributeNames":{"type":"object","title":"Expression Attribute Names","format":"editor","options":{"tooltip":"Needed when an attribute name collides with a DynamoDB reserved word, such as `year`. DynamoDB tokens normally start with `#`, but Keboola encrypts every `#`-prefixed key, so write `$` instead — the component rewrites it to `#` before calling AWS:\n\n```json\n{ \"$yr\": \"year\" }\n```\n\nQuery mode only.","dependencies":{"mode":"query"}},"description":"Substitution tokens for attribute names used in the key condition","propertyOrder":90,"additionalProperties":true},"expressionAttributeValues":{"type":"object","title":"Expression Attribute Values","format":"editor","options":{"tooltip":"Every placeholder used in the key condition has to be defined here, keyed by its `:` name:\n\n```json\n{ \":a\": \"2013\" }\n```\n\nQuery mode only.","dependencies":{"mode":"query"}},"description":"Values substituted into the key condition placeholders","propertyOrder":100,"additionalProperties":true}},"additionalProperties":true},"title":"Exports","minItems":1,"description":"One entry per exported table; at least one has to be enabled","propertyOrder":20}},"description":"Reads documents from Amazon DynamoDB tables and stores them as Storage tables. One set of AWS credentials in `db` is shared by every entry in `exports`; each export reads one table, either by scanning it or by querying it with a key condition, and maps the resulting documents onto CSV columns. This component is not row-based — all exports live in this root configuration.","additionalProperties":true},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":["testConnection"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-dynamodb","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-dynamodb","name":"developer-portal-v2/keboola.ex-dynamodb","tag":"v1.0.2","options":{},"digest":"sha256:28a81d07373f60cc8e30aea2a53798f4d5579ac6d66dfec33cfa6eddb0dd049c"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-dynamodb/32/1576251240379.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-dynamodb/64/1576251240379.png","128":null}},{"id":"kds-team.ex-dynamodb-streams","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":120,"name":"DynamoDB Streams","type":"extractor","shortDescription":"Extracts data from AWS DynamoDB Streams incrementally.","longDescription":"Fetches data from DynamoDBStreams. Supports back-fill mode and also incremental fetches.\nUses statefile to fetch data in increments. This is useful when used with Keboola orchestrations.","licenseUrl":"https://bitbucket.org/kds_consulting_team/kds-team.ex-dynamodb-streams/src/a9b69ef5f0f3eb954361fec43b9ce2c5c8f6433d/LICENSE.md","documentationUrl":"https://help.keboola.com/components/extractors/other/dynamodb-streams/#main-header","sourceCodeUrl":"https://bitbucket.org/kds_consulting_team/kds-team.ex-dynamodb-streams/src/a9b69ef5f0f3eb954361fec43b9ce2c5c8f6433d/?at=release%2Fmaster","requiredMemory":"512m","processTimeout":21600,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Dynamo Streams Extractor","properties":{"maxRuntime":{"type":"integer","title":"Maximum Runtime (minutes)","default":30,"description":"When maximum runtime is reached the component will not continue to fetch data from the next shard.","propertyOrder":4},"regionName":{"type":"string","title":"Region Name","description":"AWS account Region Name","propertyOrder":3},"accessKeyId":{"type":"string","title":"Access Key ID","description":"Access Key ID for account authorized to access Streams in row configuration. Obtained using the steps explained  <a href='https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html'>here</a>","propertyOrder":1},"#secretAccessKey":{"type":"string","title":"Secret Access Key","format":"password","description":"Secret access Key ID for account authorized to access Streams in row configuration. Obtained using the steps explained  <a href='https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html'>here</a>","propertyOrder":2}}},"configurationRowSchema":{"type":"object","title":"Dynamo Streams Extractor","required":["attributes"],"properties":{"table":{"type":"string","title":"Table Name","description":"DynamoDB Table Name","propertyOrder":10},"attributes":{"type":"string","title":"Attributes","description":"Comma separated list of attributes","propertyOrder":20}}},"createConfigurationRowSchema":null,"configurationDescription":"### Dynamo Streams Extractor\n - Access Key ID (accessKeyId) - [OPT] Access Key ID for account authorized to access Streams in row configuration. Obtained using the steps explained  <a href='https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html'>here</a>\n - Secret Access Key (#secretAccessKey) - [OPT] Secret access Key ID for account authorized to access Streams in row configuration. Obtained using the steps explained  <a href='https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html'>here</a>\n - Region Name (regionName) - [OPT] AWS account Region Name\n - Maximum Runtime (minutes) (maxRuntime) - [OPT] When maximum runtime is reached the component will not continue to fetch data from the next shard.\n\n\n### Dynamo Streams Extractor Row Configuration\n - Table Name (table) - [OPT] DynamoDB Table Name\n - Attributes (attributes) - [OPT] Comma separated list of attributes","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":120,"uri":"docker/kds-team.ex-dynamodb-streams","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-dynamodb-streams","name":"developer-portal-v2/kds-team.ex-dynamodb-streams","tag":"0.1.3","options":{},"digest":"sha256:344b494508ba7951ca72fe2d68e4e5d890c8d5d09636cc59d228a0cefde14179"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-dynamodb-streams/32/1671026870583.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-dynamodb-streams/64/1671026870583.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-dynamodb-streams/128/1671026870583.png"}},{"id":"keboola.ex-currency","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":41,"name":"ECB Currency Rates","type":"extractor","shortDescription":"Exports predefined currency exchange-rate datasets from Keboola's Shared Data project.","longDescription":"This component uses the [Fixer API](https://fixer.io/documentation) to extract currency exchange rates as published by the European Central Bank (ECB).\n\nThe exchange rates are available from a base currency, either USD, EUR or GBP, to 42 destination currencies for all **working days** from 4th January 1999.\n\nAvailable destination currencies:\nAED, AUD, BGN, BRL, CAD, CHF, CNY, CYP, CZK, DKK, EEK, GBP, HKD, HRK, HUF, IDR, ILS, INR, ISK, JPY, KRW, LTL, LVL, MTL, MXN, MYR, NOK, NZD, PHP, PLN, ROL, RON, RUB, SEK, SGD, SIT, SKK, THB, TRL, TRY, USD, ZAR and UAH.","licenseUrl":null,"documentationUrl":"https://help.keboola.com/extractors/other/currency-rates/","sourceCodeUrl":"https://github.com/keboola/curated-data-extractor","requiredMemory":"100m","processTimeout":3600,"features":[],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"easy","category":null,"categories":["API"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{"#storage_token":"KBC::ComponentEncrypted==GV3qojgsO3KogaNOJ5QkL0gz5G2/fO7pAUFREUdofGpTgZcuBuixPbqhSEOKyJ8ICMkT9a9Kd/7K6FY1JYF22+sQC5T7lhq6pGLc87WXTGCIEliRtP/UnGa4JbOig3udnzAzZcJV3ycVUHY6W1lV2Q=="},"stackParameters":{"connection.keboola.com":{"storage_url":"https://connection.keboola.com/","#storage_token":"KBC::ComponentSecure::eJwBXwGg/mE6Mjp7aTowO3M6MTM1OiLe9QIAwVc3HYR3DDhxFVefrHBYSGsS9psG4wvWd8/SI2haEiAQCMCqjBv0A+Vkz+goH1lJgo1zoYSWzYv3K1I9iv7VhQJZgknDJi+IPjRzQ7ka4r3+XK2mN8LwWWO8OgVIxB1FaTuF9J2wj/NXQd159UEBw3oDm6uWus8Y3hnw5hhZp+BhFdciO2k6MTtzOjE4NDoiAQIDAHhlXs9v5x5d+klIkL9bzyaH5qzvWHJt2fGW9czDhWdtwAGBAS7MFfkZXtURY02RvVTlAAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMx+eh4EBmqj87fJXPAgEQgDtNsdBAZIrRnlIWido28urSfq1TrEDzmFs2zG7mzhigyVo2ND16oUB0XY1QcdYOI00MoCjbLBEq1fVlHCI7fU6MkXg="},"connection.eu-central-1.keboola.com":{"storage_url":"https://connection.eu-central-1.keboola.com/","#storage_token":"KBC::ComponentSecure::eJwBXwGg/mE6Mjp7aTowO3M6MTM1OiLe9QIATma8F0WcXjPI1mcmOv8iSVRMOTqgvCsrmVQjtH8bCcME6uT6LMMePayeCNMbzWWyBiqADDCQOR7iYILSvSkFAvNvofT7FSPzsVMfAfHOM48mXNR45Btx8CgJ4ukF1X/Bfzx3oz+ZLCYkrum3mTEJKQ98MQtUFlpCFMXm1y5GfKNAh5EiO2k6MTtzOjE4NDoiAQIDAHgnCmavCe8cyL4f29jZwBY0RNPSDhp56xkxc7WSeqIfzgGjW+IsR7WbBlCSwjouMCCTAAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMaFpmJtxBvHiTWwd0AgEQgDt0CtDKEjoNJXNETnz40Kwh+JmrLz+xzqQRRMq777vCKEEv9H9HlpUt/E7q2k56fJIUjjQHmAdkPl7WMSI7fW/BhfI="},"connection.us-east4.gcp.keboola.com":{"storage_url":"https://connection.keboola.com/","#storage_token":"KBC::ComponentSecureGKMS::eJwBgwF8/mE6Mjp7aToxO3M6MTM2OiLe9QIAy9Dvon15GWVpCYL4EnRBqlzLnx84F04CS90ge3Pa0NyUfS4yV8Y9MckoJG56rCm/5FsdIycynHE2DVgnZrI6suaMVwhq512Ir7/TR5OQP9Sssb8Zp8SZrGmnkrvZqpvtNlKeXs/NYBjkTUMmgjlRKYZ+yg9/5JMq9G/36weWCIeLz5IYIjtpOjA7czoyMTk6IgokAGqzy+A6P5nx7bkuFESafoYsov199sDWUW8UfRB2NsRBp3p+ErIBAHTZCBrkS3u2Hf6cL4BtVSFvzyCShVCKVFRaDJogp62XimQ3X6L/Ts0EhO2ktHVYNqLGotXKFuPuIPLa+W0IQNjG/V8KLC+PXty+4FccX/+HzKSRA1nZ5ygRT2SQIDLbuOj8MqngPqOAqgy/C1kR5g+BVhvXLbfigKFFFQN2HHeQWGwgWLeUbD6ZdK5vOKXYgTmramEYXqPM6lSfBHzurQxVkNWbkNp2tbwA7GFSv94IlCI7fRoys30="},"connection.europe-west3.gcp.keboola.com":{"storage_url":"https://connection.keboola.com/","#storage_token":"KBC::ComponentSecureGKMS::eJwBggF9/mE6Mjp7aToxO3M6MTM1OiLe9QIAYcAFJY400AQfdVQwXNqWAT3G553mNKruwp1mNnSxlZyusK9B51YHuBdvJgYvi3UWBu2Oek04/A9XpyZ0vOdHSieEvxgvaYCq5K4fykei6H+Dag8FR8W3CM2b+a9KdpumELkMjxVyrD6naapHHw+V5XtVJFUUrSGNmggCDdLk272SkxUiO2k6MDtzOjIxOToiCiQALjJ1J/Kk4YIS2Z/LCboakSA2lUOEFfRQpOa7aXEs54Rf1/cSsgEAv8jBxxE9A0fGqbo3CVifPN7nAIa6dWCCd0AWNCEV16ThynpBMPfnpyZQz13zX59kG6KVZCnhq4vZyyXDZInG7mj4cMNo9VNk44GHlSeCitrmreXqBkY9rE4HVfjTjdLFGl+fuw+PlVIpk95L6lWI7qGbCm60G6zdyl//BBj89hkFuAHpZAhmCbAVJZBeuQl9YA2V6U8YTzDd15EhQU2at5SVeeP8z5L4T4T1qS88xmgMIjt9YvKxpQ=="},"connection.north-europe.azure.keboola.com":{"storage_url":"https://connection.keboola.com/","#storage_token":"KBC::ComponentSecureKV::eJwB7AAT/2E6Mzp7aToyO3M6MTM1OiLe9QIAfgapvEG4CaufU4u0z36Azbym3sKoI4aV2hLAj9sMpH9BZglaaM3hyxhpY2S2jLnDSiK4KGWdPyVPOhl29o/BisgzJzTvXqqU2tBwawfwEolQ/+SE95EVaXZ712Zy+WYN/nVXYpbXqR2JRrKorspvnYG/kQ+84FTKZCzQ4EVZEptGek8iO2k6MztzOjI2OiJnZW4tZW5jcnlwdG9yNWZhNTQ3ZDhkMDU2ZiI7aTo0O3M6MzI6IjhmNWIwMzliMjcwNDQ3YWVhYTZmMDE5NDc2Yzg5MDgwIjt9IRRg2w=="}},"testConfiguration":{},"configurationSchema":{"type":"object","title":"Configuration schema","required":["dataset"],"properties":{"dataset":{"enum":["","in.c-ex-currency.rates","in.c-ex-currency.rates-usd","in.c-ex-currency.rates-gbp"],"type":"string","title":"Source Currency:","options":{"enum_titles":["","EUR","USD","GBP"]}}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"You only need to select the source currency. The name of the output table will be automatically generated (in.c-keboola-ex-currency-XXX.rates). \n\nThe output table contains the following columns:\n\n- id – primary key of the table\n- date – date for which the rate is valid in YYYY-MM-DD format\n- fromCurrency ('USD', 'EUR', or 'GBP', depending on what you select)\n- toCurrency – code of the destination currency\n- rate – exchange rate\n- source – always 'ECB'\n\nThe reference rates are usually updated around 16:00 CET on **every working day**, except on TARGET closing days. They are based on a regular daily concertation procedure between central banks across Europe, which normally takes place at 14:15 CET.","configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":["list"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-currency","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-curated-data","name":"developer-portal-v2/keboola.ex-curated-data","tag":"1.1.1","options":{},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-currency/32/1623157654639.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-currency/64/1623157654639.png","128":null}},{"id":"kds-team.ex-ehub-public","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":66,"name":"eHUB Public","type":"extractor","shortDescription":"Extracts campaign and voucher data from eHUB affiliate marketing public endpoints.","longDescription":"This component allows you to fetch data from the Public endpoints of the eHUB marketing service. There is no need to provide any credentials.\n\nThe documentation of the Ehub API itself can be found here: https://ehub.docs.apiary.io/#","licenseUrl":"https://github.com/keboola/component-ehub-public/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-ehub-public/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-ehub-public","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"extractor configuration","required":["fetch_campaigns","fetch_vouchers"],"properties":{"fetch_vouchers":{"type":"boolean","title":"Fetch Vouchers","format":"checkbox","default":true,"description":"Fetch all public voucher data","propertyOrder":20},"fetch_campaigns":{"type":"boolean","title":"Fetch Campaigns","format":"checkbox","default":true,"description":"Fetch all public campaign data","propertyOrder":10},"destination_settings":{"type":"object","title":"Destination","properties":{"load_mode":{"enum":["full_load","incremental_load"],"type":"string","title":"Load Mode","default":"incremental_load","options":{"enum_titles":["Full Load","Incremental Load"]},"required":true,"description":"If Full load is used, the destination table will be overwritten every run. If incremental load is used, data will be upserted into the destination table. Tables with a primary key will have rows updated, tables without a primary key will have rows appended.","propertyOrder":20}},"propertyOrder":50}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.ex-ehub-public","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-ehub-public","name":"developer-portal-v2/kds-team.ex-ehub-public","tag":"0.1.0","options":{},"digest":"sha256:2cdbe15e1859c4db7697a72bd704e61b47dd4c4857dae61adaedd39cb9d1f859"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-ehub-public/32/1674070447014.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-ehub-public/64/1674070447014.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-ehub-public/128/1674070447014.png"}},{"id":"kds-team.ex-ehub-publisher","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":154,"name":"eHUB Publisher","type":"extractor","shortDescription":"Extracts publisher campaign, voucher, creative, and transaction data from the eHub affiliate marketing API.","longDescription":"This component allows you to fetch data from the  Publisher endpoints of the eHub API. In order to use the API, users need to get API token and also enter their Publisher IDs. For more information and a link to the API interface, please refer to the component documentation.\n\nThe documentation of the Ehub API itself can be found here: https://ehub.docs.apiary.io/#","licenseUrl":"https://github.com/keboola/component-ehub-publisher/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-ehub-publisher/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-ehub-publisher","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"eHUB Authorization","required":["#api_token","publisher_ids"],"properties":{"#api_token":{"type":"string","title":"API Key","format":"password","propertyOrder":10},"publisher_ids":{"type":"string","title":"Publisher IDs","description":"Comma separated list of Publisher IDs","propertyOrder":20},"test_connection":{"type":"button","format":"test-connection","propertyOrder":30}}},"configurationRowSchema":{"id":"rootschema","type":"object","required":["fetch_campaigns","fetch_vouchers","fetch_creatives","fetch_transactions"],"properties":{"fetch_vouchers":{"type":"boolean","title":"Fetch Vouchers","format":"checkbox","default":true,"description":"Fetch all publisher voucher data","propertyOrder":30},"fetch_campaigns":{"type":"boolean","title":"Fetch Campaigns","format":"checkbox","default":true,"description":"Fetch all publisher campaign data","propertyOrder":20},"fetch_creatives":{"type":"boolean","title":"Fetch Creatives","format":"checkbox","default":true,"description":"Fetch all publisher creatives data","propertyOrder":40},"fetch_transactions":{"type":"boolean","title":"Fetch Transactions","format":"checkbox","default":true,"description":"Fetch all publisher transaction data","propertyOrder":50},"transaction_options":{"type":"object","title":"Transactions Fetching Options","options":{"dependencies":{"fetch_transactions":true}},"properties":{"date_to":{"type":"string","title":"Fetch To Date","default":"now","options":{"dependencies":{"fetch_mode":["incremental_fetch"]}},"description":"Used for fetching the data with the dateInsertedTo filter. The date should be in YYYY-MM-DD format or relative date i.e. 5 days ago, yesterday, etc.","propertyOrder":40},"date_from":{"type":"string","title":"Fetch From Date","default":"1 week ago","options":{"dependencies":{"fetch_mode":["incremental_fetch"]}},"description":"Used for fetching the data with the dateInsertedFrom filter. The date should be in YYYY-MM-DD format or relative date i.e. 5 days ago, yesterday, etc.","propertyOrder":30},"fetch_mode":{"enum":["full_fetch","incremental_fetch"],"type":"string","title":"Fetch Mode","default":true,"options":{"enum_titles":["Fetch all data","Fetch data incrementally"]},"required":true,"propertyOrder":10}},"propertyOrder":60},"destination_settings":{"type":"object","title":"Destination","properties":{"load_mode":{"enum":["full_load","incremental_load"],"type":"string","title":"Load Mode","default":"incremental_load","options":{"enum_titles":["Full Load","Incremental Load"]},"required":true,"description":"If Full load is used, the destination table will be overwritten every run. If incremental load is used, data will be upserted into the destination table. Tables with a primary key will have rows updated, tables without a primary key will have rows appended.","propertyOrder":20}},"propertyOrder":70}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":{"parameters":{"fetch_vouchers":true,"fetch_campaigns":true,"fetch_creatives":true,"fetch_transactions":true}},"actions":["testConnection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.ex-ehub-publisher","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-ehub-publisher","name":"developer-portal-v2/kds-team.ex-ehub-publisher","tag":"0.1.2","options":{},"digest":"sha256:982ba4fae97f34df3680ce21e8800cce04c9018fea9e1f715f21d31089107f2c"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-ehub-publisher/32/1674070475786.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-ehub-publisher/64/1674070475786.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-ehub-publisher/128/1674070475786.png"}},{"id":"kds-team.ex-elasticsearch","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":407,"name":"Elasticsearch","type":"extractor","shortDescription":"Extracts data from Elasticsearch indexes.","longDescription":"# Elasticsearch Extractor\n\nElasticsearch is a search engine based on the Lucene library. It provides a distributed, multitenant-capable full-text search engine with an HTTP web interface and schema-free JSON documents.\n\nThe component allows to download data from indexes in an Elasticseach engine directly to Keboola without complicated setup.\n\n\n# Notes on functionality\n\nThe extractor utilizes Elasticsearch [Search API](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-search.html) to download the data from an index. Users are able to define their own request by specifying a JSON request body, which will be appended to a request. For all allowed request body specifications, please refer to [Request Body in Search API](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-search.html#search-search-api-request-body) documentation.","licenseUrl":"https://github.com/keboola/component-elasticsearch/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-elasticsearch/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-elasticsearch","requiredMemory":"1024m","processTimeout":14400,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Database"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Authorization","required":["db"],"properties":{"db":{"type":"object","title":"Database","required":["hostname","port"],"properties":{"port":{"type":"integer","title":"Port","default":9200,"propertyOrder":20},"hostname":{"type":"string","title":"Hostname","propertyOrder":10}},"propertyOrder":1},"scheme":{"enum":["http","https"],"type":"string","title":"Scheme","default":"http","propertyOrder":4},"ssh_options":{"type":"object","format":"ssh-editor","propertyOrder":5},"authentication":{"title":"Authentication","properties":{"#api_key":{"type":"string","title":"API Key","format":"password","options":{"dependencies":{"auth_type":"api_key"}},"propertyOrder":5},"username":{"type":"string","title":"Username","options":{"dependencies":{"auth_type":"basic"}},"propertyOrder":2},"#password":{"type":"string","title":"Password","format":"password","options":{"dependencies":{"auth_type":"basic"}},"propertyOrder":3},"auth_type":{"enum":["basic","api_key","no_auth"],"type":"string","title":"Authentication Type","default":"no_auth","options":{"enum_titles":["Basic","API key","No Authentication"]},"propertyOrder":1},"api_key_id":{"type":"string","title":"API Key ID","options":{"dependencies":{"auth_type":"api_key"}},"propertyOrder":4}},"propertyOrder":2}}},"configurationRowSchema":{"type":"object","title":"Index","required":["date","storage_table","primary_keys","incremental"],"properties":{"date":{"type":"object","title":"Date Placeholder Replacement","format":"grid-strict","required":["shift","format","time_zone"],"properties":{"shift":{"type":"string","title":"Date Shift","default":"yesterday","options":{"grid_columns":6},"description":"Specify date in absolute format (YYYY-MM-DD) or relative format (yesterday, 3 days ago, etc.).","propertyOrder":200},"format":{"type":"string","title":"Date Format","default":"%Y-%m-%d","options":{"grid_columns":6},"description":"Specifies the date format, in which the date placeholder will be replaced. See <a href='https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes' target='_blank'>strftime</a> documentation for supported formats.","propertyOrder":300},"time_zone":{"enum":["Africa/Abidjan","Africa/Accra","Africa/Algiers","Africa/Bissau","Africa/Cairo","Africa/Casablanca","Africa/Ceuta","Africa/El_Aaiun","Africa/Johannesburg","Africa/Juba","Africa/Khartoum","Africa/Lagos","Africa/Maputo","Africa/Monrovia","Africa/Nairobi","Africa/Ndjamena","Africa/Sao_Tome","Africa/Tripoli","Africa/Tunis","Africa/Windhoek","America/Adak","America/Anchorage","America/Araguaina","America/Argentina/Buenos_Aires","America/Argentina/Catamarca","America/Argentina/Cordoba","America/Argentina/Jujuy","America/Argentina/La_Rioja","America/Argentina/Mendoza","America/Argentina/Rio_Gallegos","America/Argentina/Salta","America/Argentina/San_Juan","America/Argentina/San_Luis","America/Argentina/Tucuman","America/Argentina/Ushuaia","America/Asuncion","America/Atikokan","America/Bahia","America/Bahia_Banderas","America/Barbados","America/Belem","America/Belize","America/Blanc-Sablon","America/Boa_Vista","America/Bogota","America/Boise","America/Cambridge_Bay","America/Campo_Grande","America/Cancun","America/Caracas","America/Cayenne","America/Chicago","America/Chihuahua","America/Costa_Rica","America/Creston","America/Cuiaba","America/Curacao","America/Danmarkshavn","America/Dawson","America/Dawson_Creek","America/Denver","America/Detroit","America/Edmonton","America/Eirunepe","America/El_Salvador","America/Fort_Nelson","America/Fortaleza","America/Glace_Bay","America/Goose_Bay","America/Grand_Turk","America/Guatemala","America/Guayaquil","America/Guyana","America/Halifax","America/Havana","America/Hermosillo","America/Indiana/Indianapolis","America/Indiana/Knox","America/Indiana/Marengo","America/Indiana/Petersburg","America/Indiana/Tell_City","America/Indiana/Vevay","America/Indiana/Vincennes","America/Indiana/Winamac","America/Inuvik","America/Iqaluit","America/Jamaica","America/Juneau","America/Kentucky/Louisville","America/Kentucky/Monticello","America/La_Paz","America/Lima","America/Los_Angeles","America/Maceio","America/Managua","America/Manaus","America/Martinique","America/Matamoros","America/Mazatlan","America/Menominee","America/Merida","America/Metlakatla","America/Mexico_City","America/Miquelon","America/Moncton","America/Monterrey","America/Montevideo","America/Nassau","America/New_York","America/Nipigon","America/Nome","America/Noronha","America/North_Dakota/Beulah","America/North_Dakota/Center","America/North_Dakota/New_Salem","America/Nuuk","America/Ojinaga","America/Panama","America/Pangnirtung","America/Paramaribo","America/Phoenix","America/Port-au-Prince","America/Port_of_Spain","America/Porto_Velho","America/Puerto_Rico","America/Punta_Arenas","America/Rainy_River","America/Rankin_Inlet","America/Recife","America/Regina","America/Resolute","America/Rio_Branco","America/Santarem","America/Santiago","America/Santo_Domingo","America/Sao_Paulo","America/Scoresbysund","America/Sitka","America/St_Johns","America/Swift_Current","America/Tegucigalpa","America/Thule","America/Thunder_Bay","America/Tijuana","America/Toronto","America/Vancouver","America/Whitehorse","America/Winnipeg","America/Yakutat","America/Yellowknife","Antarctica/Casey","Antarctica/Davis","Antarctica/DumontDUrville","Antarctica/Macquarie","Antarctica/Mawson","Antarctica/Palmer","Antarctica/Rothera","Antarctica/Syowa","Antarctica/Troll","Antarctica/Vostok","Asia/Almaty","Asia/Amman","Asia/Anadyr","Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat","Asia/Atyrau","Asia/Baghdad","Asia/Baku","Asia/Bangkok","Asia/Barnaul","Asia/Beirut","Asia/Bishkek","Asia/Brunei","Asia/Chita","Asia/Choibalsan","Asia/Colombo","Asia/Damascus","Asia/Dhaka","Asia/Dili","Asia/Dubai","Asia/Dushanbe","Asia/Famagusta","Asia/Gaza","Asia/Hebron","Asia/Ho_Chi_Minh","Asia/Hong_Kong","Asia/Hovd","Asia/Irkutsk","Asia/Jakarta","Asia/Jayapura","Asia/Jerusalem","Asia/Kabul","Asia/Kamchatka","Asia/Karachi","Asia/Kathmandu","Asia/Khandyga","Asia/Kolkata","Asia/Krasnoyarsk","Asia/Kuala_Lumpur","Asia/Kuching","Asia/Macau","Asia/Magadan","Asia/Makassar","Asia/Manila","Asia/Nicosia","Asia/Novokuznetsk","Asia/Novosibirsk","Asia/Omsk","Asia/Oral","Asia/Pontianak","Asia/Pyongyang","Asia/Qatar","Asia/Qostanay","Asia/Qyzylorda","Asia/Riyadh","Asia/Sakhalin","Asia/Samarkand","Asia/Seoul","Asia/Shanghai","Asia/Singapore","Asia/Srednekolymsk","Asia/Taipei","Asia/Tashkent","Asia/Tbilisi","Asia/Tehran","Asia/Thimphu","Asia/Tokyo","Asia/Tomsk","Asia/Ulaanbaatar","Asia/Urumqi","Asia/Ust-Nera","Asia/Vladivostok","Asia/Yakutsk","Asia/Yangon","Asia/Yekaterinburg","Asia/Yerevan","Atlantic/Azores","Atlantic/Bermuda","Atlantic/Canary","Atlantic/Cape_Verde","Atlantic/Faroe","Atlantic/Madeira","Atlantic/Reykjavik","Atlantic/South_Georgia","Atlantic/Stanley","Australia/Adelaide","Australia/Brisbane","Australia/Broken_Hill","Australia/Darwin","Australia/Eucla","Australia/Hobart","Australia/Lindeman","Australia/Lord_Howe","Australia/Melbourne","Australia/Perth","Australia/Sydney","Etc/GMT","Etc/GMT+1","Etc/GMT+10","Etc/GMT+11","Etc/GMT+12","Etc/GMT+2","Etc/GMT+3","Etc/GMT+4","Etc/GMT+5","Etc/GMT+6","Etc/GMT+7","Etc/GMT+8","Etc/GMT+9","Etc/GMT-1","Etc/GMT-10","Etc/GMT-11","Etc/GMT-12","Etc/GMT-13","Etc/GMT-14","Etc/GMT-2","Etc/GMT-3","Etc/GMT-4","Etc/GMT-5","Etc/GMT-6","Etc/GMT-7","Etc/GMT-8","Etc/GMT-9","UTC","Europe/Amsterdam","Europe/Andorra","Europe/Astrakhan","Europe/Athens","Europe/Belgrade","Europe/Berlin","Europe/Brussels","Europe/Bucharest","Europe/Budapest","Europe/Chisinau","Europe/Copenhagen","Europe/Dublin","Europe/Gibraltar","Europe/Helsinki","Europe/Istanbul","Europe/Kaliningrad","Europe/Kiev","Europe/Kirov","Europe/Lisbon","Europe/London","Europe/Luxembourg","Europe/Madrid","Europe/Malta","Europe/Minsk","Europe/Monaco","Europe/Moscow","Europe/Oslo","Europe/Paris","Europe/Prague","Europe/Riga","Europe/Rome","Europe/Samara","Europe/Saratov","Europe/Simferopol","Europe/Sofia","Europe/Stockholm","Europe/Tallinn","Europe/Tirane","Europe/Ulyanovsk","Europe/Uzhgorod","Europe/Vienna","Europe/Vilnius","Europe/Volgograd","Europe/Warsaw","Europe/Zaporozhye","Europe/Zurich","Factory","Indian/Chagos","Indian/Christmas","Indian/Cocos","Indian/Kerguelen","Indian/Mahe","Indian/Maldives","Indian/Mauritius","Indian/Reunion","Pacific/Apia","Pacific/Auckland","Pacific/Bougainville","Pacific/Chatham","Pacific/Chuuk","Pacific/Easter","Pacific/Efate","Pacific/Enderbury","Pacific/Fakaofo","Pacific/Fiji","Pacific/Funafuti","Pacific/Galapagos","Pacific/Gambier","Pacific/Guadalcanal","Pacific/Guam","Pacific/Honolulu","Pacific/Kiritimati","Pacific/Kosrae","Pacific/Kwajalein","Pacific/Majuro","Pacific/Marquesas","Pacific/Nauru","Pacific/Niue","Pacific/Norfolk","Pacific/Noumea","Pacific/Pago_Pago","Pacific/Palau","Pacific/Pitcairn","Pacific/Pohnpei","Pacific/Port_Moresby","Pacific/Rarotonga","Pacific/Tahiti","Pacific/Tarawa","Pacific/Tongatapu","Pacific/Wake","Pacific/Wallis"],"type":"string","title":"Time Zone","default":"UTC","options":{"grid_columns":12},"description":"Specifies the time zone, at which the replacement date should be evaluated.</br>If not specified, defaults to \"UTC\"."}},"description":"If placeholder <strong>{{date}}</strong> is used in the index name, it will be automatically replaced by settings specified below.","propertyOrder":300},"index_name":{"type":"string","title":"Index Name","description":"Specify a name of the index, which will be downloaded from Elasticsearch instance. Use placeholder <strong>{{date}}</strong> to replace the placeholder with date value.","propertyOrder":100},"incremental":{"type":"boolean","title":"Load Type","default":true,"options":{"enum_titles":["Incremental Load","Full Load"]},"description":"Whether to load data into storage incrementally, or utilizing the full load.","propertyOrder":600},"primary_keys":{"type":"array","items":{"type":"string"},"title":"Primary Keys","format":"select","options":{"tags":true},"description":"Specify primary keys for the storage table.","uniqueItems":true,"propertyOrder":500},"request_body":{"type":"string","title":"Query","format":"textarea","options":{"input_height":"150px"},"description":"Query (in JSON), which will be sent together with a request. Allows to specify returned columns and other useful parameters. See <a href='https://www.elastic.co/guide/en/elasticsearch/reference/7.x/search-search.html#search-search-api-request-body' target='_blank'>Search API documentation</a> for all possible attributes.</br>You can also specify <a href='https://www.elastic.co/guide/en/elasticsearch/reference/current/scroll-api.html#scroll-api-query-params' target='_blank'><scroll>scroll</scroll></a> parameter to manage scroll length.","propertyOrder":200},"search_method":{"enum":["scroll","search_after"],"type":"string","title":"Search Method","default":"scroll","options":{"enum_titles":["Scroll API","PIT + search_after"]},"description":"Choose the pagination method for extracting data. <strong>Scroll API</strong> is the legacy default. <strong>PIT + search_after</strong> uses Point-in-Time snapshots and is recommended for Elasticsearch 7.10+ as it is more efficient for large datasets and avoids keeping scroll contexts open.","propertyOrder":800},"storage_table":{"type":"string","title":"Output Table Name","description":"Name of the output table in storage.","propertyOrder":400},"pit_keep_alive":{"type":"string","title":"PIT Keep Alive","default":"5m","options":{"dependencies":{"search_method":"search_after"}},"description":"How long the Point-in-Time snapshot should be kept alive between pagination requests (e.g. <code>5m</code>, <code>10m</code>). Only applies when using <strong>PIT + search_after</strong> method.","propertyOrder":900},"include_meta_fields":{"type":"boolean","title":"Include Meta Fields","default":false,"description":"When enabled, Elasticsearch metadata fields (<code>_id</code>, <code>_index</code>, <code>_type</code>, <code>_score</code>, <code>_ignored</code>) are merged into each output row.","propertyOrder":700}}},"createConfigurationRowSchema":null,"configurationDescription":"The sample `/data` folder can be found in the [component's repository](https://bitbucket.org/kds_consulting_team/kds-team.ex-elasticsearch/src/master/component_config/sample-config/). The [config.json](https://bitbucket.org/kds_consulting_team/kds-team.ex-elasticsearch/src/master/component_config/sample-config/config.json) file represents the configuration, that should be passed to the component in order for the component to run successfully.\n\nIn Keboola, the component is set up as a row-based component and thus certain parameters (SSH & DB settings) have to be configured only once, while index specific settings can be configured for each index separately.\n\n## Database and SSH Settings\n\nElasticsearch extractor currently supports only connection to the Elasticsearch instance over SSH tunnel. For successful connection, all database and SSH properties must be configured.\n\n### Database (`db`) settings\n\nThe database host and port need to be provided to correctly connect to the engine and download index data.\n\nRequired parameters are:\n\n- **Hostname** (`db.hostname`) - specifies the IP address or URL at which the database is located;\n- **Port** (`db.port`) - specifies the accompanying port to the hostname.\n\nThe correct JSON specification of the database settings then takes the following form.\n\n```json\n{\n  ...\n  \"db\": {\n      \"hostname\": \"127.0.0.1\",\n      \"port\": 8080\n    }\n  ...\n}\n```\n\n### SSH (`ssh`) settings\n\nConnection to the Elasticsearch instance via an SSH server is supported by the extractor\n\nRequired parameters for SSH section of the configuration are:\n\n- **SSH Hostname** (`ssh.hostname`) - a SSH host, to which a connection shall be made;\n- **SSH Port** (`ssh.port`) - an accompanying SSH port to `ssh.hostname`;\n- **SSH Username** (`ssh.username`) - a user, which will be used for SSH authentication;\n- **SSH Private Key** (`ssh.#private_key`) - an SSH private key.\n\nThe final SSH configuration should then look like the one below.\n\n```json\n{\n  ...\n  \"ssh\": {\n      \"hostname\": \"ssh-host-url.cz\",\n      \"port\": 22,\n      \"username\": \"user-ssh\",\n      \"#private_key\": \"-----BEGIN OPENSSH PRIVATE KEY-----\\nENCRYPTED\\nSSH\\nKEY\\n-----END OPENSSH PRIVATE KEY-----\"\n    }\n  ...\n}\n```\n\n*Note:* If you're using a predefined JSON configuration schema, the new lines in SSH private key will be automatically replaced by `\\n`. However, if you're using the raw JSON to configure the component, you need to escape all new lines by `\\n`, in order to inject the private key into the configuration properly.\n\n\n## Row (index) configuration\n\nIndex configuration is tied to a specific index you'd like to download. Users are able to configure the extraction according to their needs by specifying a request body, which will be sent along with the request. Additionally, a `{{date}}` placeholder can be used for a specified date to be injected into an index name (please see **Date** section for more information).\n\n### Index Name (`index_name`)\n\nThe `index_name` parameter specifies the name of the index in an Elasticsearch index, which will be downloaded. [Search API](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-search.html) is utilized to download all data from an index. You can use `{{date}}` placeholder to be replaced by settings specified in the placeholder settings section.\n\n### Request Body (`request_body`)\n\nIn `request_body`, users are able to specify their custom JSON request body, which will be sent along with a request. For a list of all available attributes, which can be specified in the request body, please see [Request body in Search API](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-search.html) documentation.\n\nIt's also possible to specify `size` and `scroll` parameters, to control size of the returned page and length of its availability. If `size` or `scroll` are not specified, default values are used for either of the parameters.\n\nAn example of sepcifying a request body may be shown by using the `_source` parameter to only extract requested fields. The request body would then take the following form:\n\n```json\n{\n    \"_source\": [\n        \"_id\",\n        \"_index\",\n        \"_score\",\n        \"_type\",\n        \"click.clicked_at\",\n        \"click.result.display_text\",\n        \"click.result.serp_position\",\n        \"click.result.uri\",\n        \"event\",\n        \"market\",\n        \"offset\",\n        \"query.current_value\",\n        \"query.entered_at\",\n        \"serp.displayed_at\",\n        \"session_id\",\n        \"user_hash\"\n    ]\n}\n```\n\n### Date Placeholder Replacement (`date`)\n\nA date placeholder `{{date}}` can be used in specifying an index name. This is especially useful if name of your index changes each day (e.g. data for each day are stored in a separate index).\n\nThe date placeholder will be automatically replaced based on the specification of the parameters below.\n\nParameters:\n\n- **Date Shift** (`shift`) - a date in absolute (`YYYY-MM-DD`) format, or relative format (e.g. today, yesterday, 3 days ago, etc.), specifying by which date the placeholder will be replaced;\n- **Date Format** (`format`) - the format of date, which will replace the date placeholder. Accepted formats are listed in [Python strftime documentation](https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes).\n- **Time Zone** (`time_zone`) - a time zone, at which the date replacement will be evaluated. Accepted format is any standard [DB timezone specification](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List).\n\n\n### Output Table Name (`storage_table`)\n\nName of the output table, under which the downloaded index will be stored in Keboola storage.\n\n### Primary Keys (`primary_keys`)\n\nAn array of columns, specifying a primary key for the storage table inside Keboola.\n\n### Load Type (`incremental`)\n\nSpecifies, whether to use incremental load (`true`) or full load (`false`).","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":407,"uri":"docker/kds-team.ex-elasticsearch","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-elasticsearch","name":"developer-portal-v2/kds-team.ex-elasticsearch","tag":"1.4.10","options":{},"digest":"sha256:a34d4df2446a3b294417c86f2991ca2cc83bf7d9cd99706780a71c756f31f367"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-elasticsearch/32/1606916244368.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-elasticsearch/64/1606916244368.png","128":null}},{"id":"keboola.wr-elasticsearch","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":38,"name":"Elasticsearch","type":"writer","shortDescription":"Writes tables to Elasticsearch indexes.","longDescription":"This component exports tables in the form of JSON documents from Keboola Connection Storage to [Elasticsearch](https://www.elastic.co/).  \n\nThe writer is configured manually; you must be familiar with JSON. Read the [configuration documentation](https://github.com/keboola/elastic-writer/blob/master/README.md) for more information.","licenseUrl":"https://github.com/keboola/elastic-writer/blob/master/LICENSE","documentationUrl":"https://github.com/keboola/elastic-writer/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/elastic-writer","requiredMemory":"2048m","processTimeout":32400,"features":["container-root-user","dev-branch-configuration-unsafe"],"encryption":true,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Database"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-simpleTableInput"],"imageParameters":{},"stackParameters":{},"testConfiguration":{},"configurationSchema":{"type":"object","title":"DB & SSH","required":["elastic"],"properties":{"elastic":{"type":"object","title":"Database","required":["host","port"],"properties":{"ssh":{"type":"object","title":"SSH","options":{"dependencies":{"use_ssh":true}},"required":["sshHost","sshPort","user","keys"],"properties":{"keys":{"type":"object","title":"Keys","required":["#private"],"properties":{"#private":{"type":"string","title":"SSH Private Key","format":"textarea","options":{"input_height":"120px"},"propertyOrder":500}},"propertyOrder":500},"user":{"type":"string","title":"SSH Username","propertyOrder":400},"sshHost":{"type":"string","title":"SSH Hostname","propertyOrder":200},"sshPort":{"type":"integer","title":"SSH Port","default":22,"propertyOrder":300}},"propertyOrder":240},"host":{"type":"string","title":"Hostname","propertyOrder":100},"port":{"type":"integer","title":"Port","default":9200,"propertyOrder":150},"use_ssh":{"type":"boolean","title":"Use SSH configuration","format":"checkbox","propertyOrder":220},"username":{"type":"string","title":"Username","options":{"dependencies":{"use_basic_auth":true}},"propertyOrder":170},"#password":{"type":"string","title":"Password","options":{"dependencies":{"use_basic_auth":true}},"propertyOrder":180},"use_basic_auth":{"type":"boolean","title":"Use Basic Auth","format":"checkbox","propertyOrder":155}},"propertyOrder":100}},"description":"Set-up shared database and SSH settings."},"configurationRowSchema":{"type":"object","title":"Table configuration","required":["items"],"properties":{"type":{"type":"string","title":"Type","description":"Type of the data, determines the type in Elastic Search","propertyOrder":200},"index":{"type":"string","title":"Index","description":"Index name in Elastic Search","propertyOrder":100},"items":{"type":"array","items":{"type":"object","title":"Column","required":["name","dbName","type","nullable"],"properties":{"name":{"type":"string","title":"Source Column","watch":{"columns":"_metadata_.table.columns"},"enumSource":"columns","propertyOrder":1},"type":{"enum":["string","integer","date","double","boolean","BIGINT","binary","byte","float","half_float","ip","null","scaled_float","short","text","version","IGNORE"],"type":"string","title":"Type","propertyOrder":200},"dbName":{"type":"string","title":"Destination Column","propertyOrder":100},"nullable":{"type":"boolean","title":"Nullable","format":"checkbox","propertyOrder":300}}},"title":"Columns","format":"table","propertyOrder":600}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.wr-elasticsearch","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-elasticsearch","name":"developer-portal-v2/keboola.wr-elasticsearch","tag":"1.0.2","options":{},"digest":"sha256:e10fca3f1762a0fccd47b033e1862c795dd313ba749a4fca38f239196f9a5bfd"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-elasticsearch/32/1.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-elasticsearch/64/1.png","128":null}},{"id":"keboola.ex-email-attachments","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":38,"name":"Email Attachments","type":"extractor","shortDescription":"Importing CSV files from email attachments.","longDescription":"The component provides an email mailbox and monitors it for incoming CSV files in message attachments. It imports the data to Keboola Connection. It can also be used instead of repeated manual imports of CSV files.\n\nWhen running, the extractor imports all emails received since its previous run. It is useful to set up the extractor in a scheduled orchestration. If there is more than one email attachment they will be imported into separate tables.\n\nTo configure this extractor, you need to have one or more CSV files ready to be sent to the generated email address.\n\nIncremental load is optional.\n","licenseUrl":"https://github.com/keboola/ex-email-attachments/blob/master/LICENSE","documentationUrl":"https://help.keboola.com/extractors/communication/email-attachments/","sourceCodeUrl":"https://github.com/keboola/ex-email-attachments","requiredMemory":null,"processTimeout":null,"features":["container-root-user"],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"medium","category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{"connection.keboola.com":{"bucket":"ex-email-attachments-us-east-1-emails","region":"us-east-1","rule_set":"default-rule-set","stack_name":"ex-email-attachments","dynamo_table":"ex-email-attachments-us-east-1-emails","email_domain":"import.keboola.com","access_key_id":"AKIASE4SHFLWYHMLQHXJ","#secret_access_key":"KBC::ComponentSecure::eJwBVAGr/mE6Mjp7aTowO3M6MTI0OiLe9QIAeauvHue5Khxe8gwHQ+dFi84Tb2Yw0ueu61fyFdVPD7XLXIxW+OQ+B0l0yb5BH+T6yHky4lrJBP6fqS7FjhqdALbsNGpfF2InIy2YbDsYGfbYLah+3TVQtj6FFN64QBz41tE4Nzvk4xjGmG1rvVf41QzAiDFZMSzfIjtpOjE7czoxODQ6IgECAwB4ZV7Pb+ceXfpJSJC/W88mh+as71hybdnxlvXMw4VnbcABFJUaoVYMSvADhgPxDyNgMgAAAH4wfAYJKoZIhvcNAQcGoG8wbQIBADBoBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDE+0lm4O/nK/ZoBb3AIBEIA715OgFRxlqqUyRY7GchSGQOPniyntfDk2wLalETg3IrVG8ypAA60n+V+tr6nAlm5WYMP4wkpQg/bi100iO32/Zo0z"},"connection.eu-central-1.keboola.com":{"bucket":"ex-email-attachments-eu-central-1-emails","region":"eu-central-1","rule_set":"default-rule-set","stack_name":"ex-email-attachments","dynamo_table":"ex-email-attachments-eu-central-1-emails","email_domain":"import.eu-central-1.keboola.com","access_key_id":"AKIASE4SHFLWRIIOAJXP","#secret_access_key":"KBC::ComponentSecure::eJwBVAGr/mE6Mjp7aTowO3M6MTI0OiLe9QIABuYy3+m7U6oU7nV3CvptRhj2RqX94bisPmco9pnLUYDS6NiG+NFoedYAmYBpeiV3p6/e1ypZV99EiPjZJy1t4vgqbQhDZg4aEwyKcnTIhVRDt+e/88cw3D4aR5xEOAkk2xy6XhQCdJ5t0oC8aG/rhKQj9zFFVsq2IjtpOjE7czoxODQ6IgECAwB4JwpmrwnvHMi+H9vY2cAWNETT0g4aeesZMXO1knqiH84BOLCUep2IthitCezoHSxPdQAAAH4wfAYJKoZIhvcNAQcGoG8wbQIBADBoBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDJQtojsZa4KJ6n3GFgIBEIA7b1gcqaEb4Uo8OhX7uWYoHtpG2hv0vdIo58medb/V/24cBozufCHPj01HUZqNQ7eGxZUFLjOj9/wGEVEiO33hG4u5"}},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Email attachments configuration","required":["email","incremental","enclosure","delimiter"],"properties":{"email":{"type":"string","title":"Email generated by Email attachments"},"delimiter":{"type":"string","title":"Field delimiter used in CSV files","default":""},"enclosure":{"type":"string","title":"Field enclosure used in CSV files","default":""},"incremental":{"type":"boolean","title":"Incremental load","default":false}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"You have to generate an email address using the `add` action first.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["list","get"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-email-attachments","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-email-attachments","name":"developer-portal-v2/keboola.ex-email-attachments","tag":"1.7.4","options":{"region":"us-east-1"},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-email-attachments/32/3.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-email-attachments/64/3.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-email-attachments/128/3.png"}},{"id":"kds-team.app-email-smtp-sender","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":1420,"name":"Email SMTP Sender","type":"application","shortDescription":"Sends templated emails with attachments via SMTP or Microsoft 365.","longDescription":"This component enables users to send emails with custom subject, message body and attachments from Keboola platform via SMTP protocol.","licenseUrl":"https://github.com/keboola/component-email-smtp-sender/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-email-smtp-sender/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-email-smtp-sender","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":true,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-tableInput","genericDockerUI-fileInput","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Connection Config","required":["connection_config"],"properties":{"connection_config":{"type":"object","title":"Connection Config","properties":{"use_oauth":{"type":"boolean","title":"Use O365 OAuth","format":"checkbox","default":false,"description":"if checked - authenticate via OAuth","propertyOrder":1},"creds_config":{"type":"object","title":"Credentials Config","format":"grid-strict","options":{"dependencies":{"use_oauth":false}},"properties":{"server_host":{"type":"string","title":"SMTP Server Host","options":{"grid_columns":6},"propertyOrder":4},"server_port":{"type":"integer","title":"SMTP Server Port (typically 25, 465, 587)","default":465,"options":{"grid_columns":6},"propertyOrder":5},"without_login":{"type":"boolean","title":"Use connection without login","format":"checkbox","default":false,"description":"if checked - connection to the SMTP server will be established without login, password will be ignored","propertyOrder":8},"#sender_password":{"type":"string","title":"Sender App Password","format":"password","options":{"grid_columns":6},"propertyOrder":3},"use_proxy_server":{"type":"boolean","title":"Use Proxy Server","format":"checkbox","default":false,"description":"if checked - connection to the SMTP server will be established via your proxy server","propertyOrder":7},"connection_protocol":{"enum":["SSL","TLS","Unencrypted"],"type":"string","title":"Connection Protocol","propertyOrder":6},"proxy_server_config":{"type":"object","title":"Proxy Server Config","format":"grid-strict","options":{"dependencies":{"use_proxy_server":true}},"properties":{"proxy_server_host":{"type":"string","title":"Proxy Server Host","options":{"grid_columns":6},"propertyOrder":1},"proxy_server_port":{"type":"integer","title":"Proxy Server Port","options":{"grid_columns":6},"propertyOrder":2},"proxy_server_username":{"type":"string","title":"Username","options":{"grid_columns":6},"propertyOrder":3},"#proxy_server_password":{"type":"string","title":"Password","options":{"grid_columns":6},"propertyOrder":4}},"propertyOrder":9},"sender_email_address":{"type":"string","title":"Sender Email Address","options":{"grid_columns":6},"propertyOrder":2}},"propertyOrder":2},"oauth_config":{"type":"object","title":"OAuth Config","options":{"dependencies":{"use_oauth":true}},"properties":{"client_id":{"type":"string","title":"Application (client) ID","propertyOrder":3},"tenant_id":{"type":"string","title":"Directory (tenant) ID","propertyOrder":2},"#client_secret":{"type":"string","title":"Application (client) Secret","propertyOrder":4},"sender_email_address":{"type":"string","title":"Sender Email Address","propertyOrder":1}},"propertyOrder":2},"test_smtp_server_connection":{"type":"button","format":"sync-action","options":{"async":{"cache":false,"label":"TEST SMTP SERVER CONNECTION","action":"testConnection"}},"propertyOrder":9}},"propertyOrder":1}}},"configurationRowSchema":{"type":"object","title":"SMTP sender configuration","properties":{"dry_run":{"type":"boolean","title":"Dry run","format":"checkbox","default":false,"description":"If checked, only builds emails, but doesn't send them (useful because it will output results table containing what would be sent).","propertyOrder":7},"basic_options":{"type":"object","title":"Basic Options","options":{"dependencies":{"configuration_type":"basic"}},"properties":{"subject":{"type":"string","title":"Subject","format":"textarea","default":"Example subject","options":{"input_height":"100px"},"propertyOrder":4},"message_body":{"type":"string","title":"Message Body","format":"textarea","default":"Example message body.","options":{"input_height":"100px"},"propertyOrder":5},"cc_email_addresses":{"type":"string","title":"Cc Email Addresses","options":{"tooltip":"Enter one or more Cc email addresses separated by commas or semicolons. These recipients will receive a copy of the email and will be visible to all other recipients.","dependencies":{"send_to_all_recipients":true}},"propertyOrder":2},"bcc_email_addresses":{"type":"string","title":"Bcc Email Addresses","options":{"tooltip":"Enter one or more Bcc email addresses separated by commas or semicolons. Bcc recipients are hidden from To and Cc recipients by the mail server.","dependencies":{"send_to_all_recipients":true}},"propertyOrder":3},"include_attachments":{"type":"boolean","title":"Include Attachments","format":"checkbox","default":true,"description":"If checked, all tables and files in input mapping will be used as attachments.","propertyOrder":6},"recipient_email_addresses":{"type":"string","title":"Recipient Email Addresses (To)","options":{"tooltip":"Enter one or more email addresses separated by commas or semicolons.\nUse the **Send as Single Email** checkbox to control whether they receive one shared email or individual separate emails."},"propertyOrder":1}},"propertyOrder":3},"advanced_options":{"type":"object","title":"Advanced Options","format":"grid-strict","options":{"dependencies":{"configuration_type":"advanced"}},"properties":{"subject_config":{"type":"object","title":"Subject","format":"grid-strict","options":{"grid_columns":12},"properties":{"subject_column":{"enum":[],"type":"string","items":{"enum":[],"type":"string"},"title":"Subject Column","format":"select","options":{"async":{"label":"Re-load columns","action":"load_input_table_columns","autoload":["parameters.advanced_options.email_data_table_name"]},"dependencies":{"subject_source":"from_table"},"grid_columns":8},"uniqueItems":true,"propertyOrder":2},"subject_source":{"enum":["from_table","from_template_definition"],"type":"string","title":"Source","options":{"tooltip":"**From Table** - specify column which contains subject template/text in Jinja2 format \n- example use case - You want to have different subject for different recipients.\n\n**From Template Definition** - paste the subject template/text into the text area field \n- example use case - You want all recipients to receive similar subject template/text","enum_titles":["From Table","From Template Definition"],"grid_columns":4},"propertyOrder":1},"validate_subject":{"type":"button","format":"sync-action","options":{"async":{"label":"Validate Subject","action":"validate_subject"},"grid_columns":12},"description":"Checks whether all placeholders in your subject template are contained in the input table.","propertyOrder":7},"subject_template_definition":{"type":"string","title":"Plaintext Subject Template","format":"textarea","default":"Example subject","options":{"dependencies":{"subject_source":"from_template_definition"},"grid_columns":12,"input_height":"100px"},"propertyOrder":3}},"propertyOrder":5},"validate_config":{"type":"button","format":"sync-action","options":{"async":{"label":"Validate Config","action":"validate_config"},"grid_columns":12},"description":"Validates the whole config.","propertyOrder":20},"attachments_config":{"type":"object","title":"Data Options","format":"grid-strict","options":{"dependencies":{"include_attachments":true},"grid_columns":12},"properties":{"sort_order":{"enum":["asc","desc"],"type":"string","title":"Order","default":"asc","options":{"enum_titles":["Ascending","Descending"],"dependencies":{"sort_enabled":true,"attachments_source":"single_table","include_csv_sample":true},"grid_columns":4},"propertyOrder":9},"sort_column":{"enum":[],"type":"string","items":{"enum":[],"type":"string"},"title":"By Column","format":"select","options":{"async":{"label":"Re-load columns","action":"load_source_table_columns","autoload":["parameters.advanced_options.attachments_config.source_table"]},"dependencies":{"sort_enabled":true,"attachments_source":"single_table","include_csv_sample":true},"grid_columns":8},"uniqueItems":true,"propertyOrder":10},"sort_enabled":{"type":"boolean","title":"Sort Sample","format":"checkbox","default":false,"options":{"dependencies":{"attachments_source":"single_table","include_csv_sample":true},"grid_columns":12},"propertyOrder":8},"source_table":{"enum":[],"type":"string","items":{"enum":[],"type":"string"},"title":"Source Table","format":"select","options":{"async":{"label":"Re-load tables","action":"load_input_table_selection","autoload":[]},"dependencies":{"attachments_source":"single_table"},"grid_columns":8},"description":"Input table to use as data source.","uniqueItems":true,"propertyOrder":3},"sample_info_text":{"type":"string","title":"Sample Note","format":"textarea","default":"Attachment contains {n} of {total} records.","options":{"dependencies":{"attachments_source":"single_table","include_csv_sample":true},"grid_columns":12,"input_height":"100px"},"description":"Text appended to email body. Use {n} for sample rows, {total} for total rows.","propertyOrder":11},"sample_row_limit":{"type":"integer","title":"Sample Row Limit","default":100,"maximum":1000,"minimum":1,"options":{"dependencies":{"attachments_source":"single_table","include_csv_sample":true},"grid_columns":4},"description":"Number of rows to include in sample (1-1000).","propertyOrder":6},"attachments_column":{"enum":[],"type":"string","items":{"enum":[],"type":"string"},"title":"Data Column","format":"select","options":{"async":{"label":"Re-load columns","action":"load_input_table_columns","autoload":["parameters.advanced_options.email_data_table_name"]},"dependencies":{"attachments_source":"from_table"},"grid_columns":8},"description":"Column expects JSON list of attachment filenames in input mapping, associated with specific recipients.","uniqueItems":true,"propertyOrder":2},"attachments_source":{"enum":["from_table","single_table","all_input_files"],"type":"string","title":"Data Source","options":{"tooltip":"**Table Column** - each recipient gets specific attachments defined in a column (JSON list of filenames)\n- example: personalized attachments per recipient\n\n**Single Input Table** - attach a CSV sample and/or link to a selected input table\n- example: send preview of processed data or link to full table in Storage\n\n**All Input Files** - all recipients receive all non-template files in the input mapping","enum_titles":["Table Column","Single Input Table","All Input Files and Tables"],"grid_columns":4},"propertyOrder":1},"include_csv_sample":{"type":"boolean","title":"Include CSV Sample","format":"checkbox","default":true,"options":{"dependencies":{"attachments_source":"single_table"},"grid_columns":12},"description":"Include a CSV file with the first N rows from the source table.","propertyOrder":5},"validate_attachments":{"type":"button","format":"sync-action","options":{"async":{"label":"Validate Attachments","action":"validate_attachments"},"dependencies":{"attachments_source":"from_table"},"grid_columns":12},"description":"Validates all attachments are present in file input mapping (excluding template files).","propertyOrder":12},"include_snapshot_link":{"type":"boolean","title":"Include Link to Data Snapshot","format":"checkbox","default":false,"options":{"dependencies":{"attachments_source":"single_table"},"grid_columns":12},"description":"Uploads the source table to File Storage and includes a download link in the email body. The snapshot file expires after 15 days.","propertyOrder":4},"sample_attachment_filename":{"type":"string","title":"Sample Filename","default":"{table_name}_sample.csv","options":{"dependencies":{"attachments_source":"single_table","include_csv_sample":true},"grid_columns":8},"description":"Filename for the CSV sample. Use {table_name} placeholder.","propertyOrder":7}},"propertyOrder":8},"include_attachments":{"type":"boolean","title":"Attach Data","format":"checkbox","default":true,"options":{"grid_columns":12},"propertyOrder":7},"message_body_config":{"type":"object","title":"Message Body","format":"grid-strict","options":{"grid_columns":12},"properties":{"use_html_template":{"type":"boolean","title":"Use HTML Template","format":"checkbox","default":true,"options":{"grid_columns":12},"description":"HTML version is the primary displayed message. If recipient's inbox doesn't support HTML, the message defaults to the plaintext version.","propertyOrder":7},"message_body_source":{"enum":["from_table","from_template_file","from_template_definition"],"type":"string","title":"Source","options":{"tooltip":"**From Table** - specify column which contains template in Jinja2 format \n- example use case - You want to have different template/message for different recipients.\n\n**From Template File** - specify input file name containing the template in Jinja2 format \n- example use case - you want each recipient to receive similar template (with differently filled placeholders), and have an orchestration which spawns this template, so that this configuration has the template updated automatically\n\n**From Template Definition** - paste the template text into the text area field \n- example use case - You want all recipients to receive similar template and it will not be changed often.","enum_titles":["From Table","From Template File","From Template Definition"],"grid_columns":4},"propertyOrder":1},"html_template_column":{"enum":[],"type":"string","items":{"enum":[],"type":"string"},"title":"HTML Template Column","format":"select","options":{"async":{"label":"Re-load columns","action":"load_input_table_columns","autoload":["parameters.advanced_options.email_data_table_name"]},"dependencies":{"use_html_template":true,"message_body_source":"from_table"},"grid_columns":12},"uniqueItems":true,"propertyOrder":8},"html_template_filename":{"type":"string","title":"HTML Template Filename","default":"template.html","options":{"dependencies":{"use_html_template":true,"message_body_source":"from_template_file"},"grid_columns":8},"propertyOrder":8},"validate_html_template":{"type":"button","format":"sync-action","options":{"async":{"label":"Validate HTML Template","action":"validate_html_template"},"dependencies":{"use_html_template":true},"grid_columns":12},"description":"Checks whether all placeholders in your HTML template are contained in the input table.","propertyOrder":9},"html_template_definition":{"type":"string","title":"HTML Template","format":"textarea","default":"<h3>Example message body title</h3><p>Example message body paragraph.</p>","options":{"dependencies":{"use_html_template":true,"message_body_source":"from_template_definition"},"grid_columns":12,"input_height":"100px"},"propertyOrder":8},"plaintext_template_column":{"enum":[],"type":"string","items":{"enum":[],"type":"string"},"title":"Plaintext Template Column","format":"select","options":{"async":{"label":"Re-load columns","action":"load_input_table_columns","autoload":["parameters.advanced_options.email_data_table_name"]},"dependencies":{"message_body_source":"from_table"},"grid_columns":8},"uniqueItems":true,"propertyOrder":2},"plaintext_template_filename":{"type":"string","title":"Plaintext Template Filename","default":"template.txt","options":{"dependencies":{"message_body_source":"from_template_file"},"grid_columns":8},"propertyOrder":4},"validate_plaintext_template":{"type":"button","format":"sync-action","options":{"async":{"label":"Validate Plaintext Template","action":"validate_plaintext_template"},"grid_columns":12},"description":"Checks whether all placeholders in your plaintext template are contained in the input table.","propertyOrder":7},"plaintext_template_definition":{"type":"string","title":"Plaintext Template","format":"textarea","default":"Example message body.","options":{"dependencies":{"message_body_source":"from_template_definition"},"grid_columns":12,"input_height":"100px"},"propertyOrder":6}},"propertyOrder":6},"email_data_table_name":{"enum":[],"type":"string","items":{"enum":[],"type":"string"},"title":"Email Data Table","format":"select","options":{"async":{"label":"Re-load tables","action":"load_input_table_selection","autoload":[]},"tooltip":"Name of the table with recipient email addresses, placeholders, and other columns depending on your configuration.","grid_columns":6},"uniqueItems":true,"propertyOrder":1},"cc_email_address_column":{"enum":[],"type":"string","items":{"enum":[],"type":"string"},"title":"Cc Column","format":"select","options":{"async":{"label":"Re-load columns","action":"load_input_table_columns","autoload":["parameters.advanced_options.email_data_table_name"]},"tooltip":"Optional column containing Cc email addresses (comma or semicolon separated). Recipients will be visible to all.","dependencies":{"send_to_all_recipients":true},"grid_columns":6},"uniqueItems":true,"propertyOrder":3},"bcc_email_address_column":{"enum":[],"type":"string","items":{"enum":[],"type":"string"},"title":"Bcc Column","format":"select","options":{"async":{"label":"Re-load columns","action":"load_input_table_columns","autoload":["parameters.advanced_options.email_data_table_name"]},"tooltip":"Optional column containing Bcc email addresses (comma or semicolon separated). Bcc recipients are hidden from To and Cc recipients by the mail server.","dependencies":{"send_to_all_recipients":true},"grid_columns":6},"uniqueItems":true,"propertyOrder":4},"recipient_email_address_column":{"enum":[],"type":"string","items":{"enum":[],"type":"string"},"title":"Recipient Column (To)","format":"select","options":{"async":{"label":"Re-load columns","action":"load_input_table_columns","autoload":["parameters.advanced_options.email_data_table_name"]},"grid_columns":6},"uniqueItems":true,"propertyOrder":2}},"propertyOrder":4},"continue_on_error":{"type":"boolean","title":"Continue On Error","format":"checkbox","default":true,"description":"If checked, component doesn't crash on invalid emails, but tries to send the rest of them.","propertyOrder":8},"configuration_type":{"enum":["basic","advanced"],"type":"string","title":"Configuration Type","options":{"enum_titles":["Basic","Advanced"]},"propertyOrder":2},"send_to_all_recipients":{"type":"boolean","title":"Send as Single Email (enables Cc and Bcc fields)","format":"checkbox","default":false,"options":{"tooltip":"When checked, all To addresses are grouped into a single email — Cc and Bcc fields become available, working just like composing a message in Outlook. When unchecked (default), each To address receives its own individual email."},"propertyOrder":1}}},"createConfigurationRowSchema":null,"configurationDescription":"# SMTP Sender Application\n- Component enabling users to send emails with custom subject, message body and attachments from keboola platform\n\n## Config fields\n\n**Connection Config**\n - **Sender Email Address** - Sender Email Address\n - **Sender App Password** - certain SMTP server providers require you to generate an app password instead of the account one (typically when MFA is enabled)\n - **SMTP Server Host** - SMTP Server Host\n - **SMTP Server Port** - SMTP Server Port\n - **Connection Protocol** - specifies, whether to connect via SSL or TLS\n - **Use Proxy Server** - Use Proxy Server\n - **Proxy Server Config**\n   - **Proxy Server Host** - Proxy Server Host\n   - **Proxy Server Port** - Proxy Server Host\n   - **Proxy Server Username** - Proxy Server Username\n   - **Proxy Server Password** - Proxy Server Password\n\n**Recipient Email Address Column** - Recipient email address column name\n\n**Subject Config**\n- **Subject Source** - `From Table`, `From Template Definition`\n- **Subject Column** - Subject column name (Subject Source = `From Table`)\n- **Plaintext Subject Template** - Jinja2 formatted subject (Subject Source = `From Template Definition`)\n\n**Message Body Config**\n- **Message Body Source** - `From Table`,`From Template File`, `From Template Definition`\n- **Use HTML Alternative** - Checkbox indicating, whether you want to provide HTML version of message body\n- **Plaintext Message Body Column** - Plaintext message body column name (Message Body Source = `From Table`)\n- **HTML Message Body Column** - HTML message body column name (Message Body Source = `From Table`)\n- **Plaintext Template File** - Plaintext message body template filename (Message Body Source = `From Template File`)\n- **HTML Template File** - HTML message body template filename (Message Body Source = `From Template File`)\n- **Plaintext Message Body Template** - Jinja2 formatted plaintext message body (Message Body Source = `From Template Definition`)\n- **HTML Message Body Template** - Jinja2 formatted html message body (Message Body Source = `From Template Definition`)\n\n**Attachments Config**\n- **Attachments Source** - `From Table`, `All Input Files`\n- **Attachments Column** - Attachments column name - json list containing input filenames, so that each recipient can receive a specific subset of attachments (Attachments Source = `From Table`)\n- **Shared attachments** - if checked, all non-template files in the files input mapping will be attached to the email for all recipients (Attachments Source = `All Input Files`)\n\n**Dry Run** - if checked - emails are built, but not sent\n\n - arbitrary number of attachment files - attachment can be of any file type (certain SMTP server providers forbid some types since they are considered potentially dangerous)\n## Required Input Tables\n - `arbitrary_table_name`\n\n **columns:**\n - recipient_email_address\n - subject_column (depends on config)\n - plaintext_template_column (depends on config)\n - html_template_column (depends on config)\n - attachments_column (depends on config)\n - columns with names corresponding to placeholder names in your template(s)\n\n## Output Table\n - `results`\n\n **columns:**\n - `status` - `OK` or `ERROR`\n - `recipient_email_address` - recipient_email_address\n - `sender_email_address` - sender_email_address\n - `subject` - subject\n - `plaintext_message_body` - plaintext_message_body\n - `html_message_body` - html_message_body\n - `attachment_filenames` - attachment_filenames\n - `error_message` - error_message\n\n## Sync Actions\n - `TEST SMTP SERVER CONNECTION` - tests, whether connection can be established\n - `VALIDATE SUBJECT` - validates, that all placeholders in the provided subject template are present in the input table\n - `VALIDATE PLAINTEXT TEMPLATE` - validates, that all placeholders in the provided message body plaintext template are present in the input table\n - `VALIDATE HTML TEMPLATE` - validates, that all placeholders in the provided message body HTML template are present in the input table\n - `VALIDATE ATTACHMENTS` - validates, that all attachment files are present in the file input mapping\n - `VALIDATE CONFIG` - runs all tests and validations above","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["load_input_table_columns","load_input_table_selection","load_source_table_columns","testConnection","validate_attachments","validate_config","validate_html_template","validate_plaintext_template","validate_single_table","validate_subject"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.app-email-smtp-sender","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.app-email-smtp-sender","name":"developer-portal-v2/kds-team.app-email-smtp-sender","tag":"1.2.7","options":{},"digest":"sha256:468e5ae72fd3c6a4abea10e7fab1b057e315ef117e99088d384cd4d9275c7860"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-email-smtp-sender/32/1714477403351.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-email-smtp-sender/64/1714477403351.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-email-smtp-sender/128/1714477403351.png"}},{"id":"kds-team.app-email-validator","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":55,"name":"Email Validator","type":"application","shortDescription":"Email validation performs checks on validity and bounce probabilities of emails.","longDescription":"This component enables users to validate emails from tables in Keboola for their uses in email marketing or other\nusecases. The validator returns estimates on validity and performed checks. This component supports the following APIs : Sendgrid Email Address validation.\nFor another API to be added to this application, contact support. ","licenseUrl":"https://bitbucket.org/kds_consulting_team/kds-team.app-email-validator/src/master/LICENSE.md","documentationUrl":"https://bitbucket.org/kds_consulting_team/kds-team.app-email-validator/src/master/README.md","sourceCodeUrl":"https://bitbucket.org/kds_consulting_team/kds-team.app-email-validator/src/master/","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"extractor configuration","required":["#api_key","email","api_service"],"properties":{"email":{"type":"string","title":"Email column","default":"email","minLength":1,"description":"Column name of email in input table","propertyOrder":20},"source":{"type":"string","title":"Source column","default":"","description":"(Optional) The column name that contains the origin of the email, ex: newsletter, supscription, etc..","propertyOrder":30},"#api_key":{"type":"string","title":"API Key","format":"password","minLength":1,"description":"API key of validation service","propertyOrder":10},"api_service":{"enum":["SendGrid"],"type":"string","title":"API service","description":"Name of service to validate emails","propertyOrder":1},"loading_options":{"type":"object","title":"Loading Options","required":["incremental"],"properties":{"pkey":{"type":"array","items":{"type":"string","title":"Primary key column"},"title":"Primary key","default":["email"],"propertyOrder":5000},"incremental":{"enum":[0,1],"type":"integer","title":"Load type","default":1,"options":{"enum_titles":["Full Load","Incremental Update"]},"description":"If set to Incremental update, the result tables will be updated based on primary key and new records will be fetched. Full load overwrites the destination table each time.","propertyOrder":200}},"propertyOrder":100}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":55,"uri":"docker/kds-team.app-email-validator","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.app-email-validator","name":"developer-portal-v2/kds-team.app-email-validator","tag":"0.0.4","options":{},"digest":"sha256:33bd60ed5c88eeaa25f2a4d44f7a26251e476134bb523ad76b7cdfe0e89b674f"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-email-validator/32/1716289672929.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-email-validator/64/1716289672929.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-email-validator/128/1716289672929.png"}},{"id":"keboola.processor-escape-character","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":20,"name":"Escape Character","type":"processor","shortDescription":"Remove escape character from CSV files","longDescription":"Remove escape character from CSV files.","licenseUrl":"https://github.com/keboola/processor-escape-character/blob/master/LICENSE","documentationUrl":"https://github.com/keboola/processor-escape-character/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/processor-escape-character","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":[],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":null,"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.processor-escape-character","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.processor-escape-character","name":"developer-portal-v2/keboola.processor-escape-character","tag":"v0.0.2","options":{},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.processor-escape-character/32/1576251911065.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.processor-escape-character/64/1576251911065.png","128":null}},{"id":"kds-team.wr-exasol","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":246,"name":"Exasol","type":"writer","shortDescription":"Writes data to the Exasol analytics database.","longDescription":"This component enables you to write data into an exasol schema. If tables exist you can overwrite them, append to them,\nor update them. If tables do not exist they can be created","licenseUrl":"https://bitbucket.org/kds_consulting_team/kds-team.wr-exasol/src/master/LICENSE.md","documentationUrl":"https://help.keboola.com/components/writers/database/exasol/","sourceCodeUrl":"https://bitbucket.org/kds_consulting_team/kds-team.wr-exasol/src/master/","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Database"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-tableInput"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","$defs":{"credentials":{"type":"object","required":["host","port","user","schema"],"properties":{"host":{"type":"string"},"port":{"type":["string","integer"],"default":8563},"user":{"type":"string"},"driver":{"type":"string"},"schema":{"type":"string"},"database":{"type":"string"},"#password":{"type":"string"},"#refresh_token":{"type":"string"}}}},"title":"kds-team.wr-exasol — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","required":["db"],"properties":{"db":{"$ref":"#/$defs/credentials"},"items":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"size":{"type":["string","integer","null"]},"type":{"type":"string"},"dbName":{"type":"string"},"default":{"type":["string","null"]},"nullable":{"type":"boolean"}}}},"dbName":{"type":"string"},"tableId":{"type":"string"},"primaryKey":{"type":"array","items":{"type":"string"}},"incremental":{"type":"boolean"},"caseSensitive":{"type":"string"}}},"configurationRowSchema":{"type":"object","title":"kds-team.wr-exasol — Row Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"items":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"size":{"type":["string","integer","null"]},"type":{"type":"string"},"dbName":{"type":"string"},"default":{"type":["string","null"]},"nullable":{"type":"boolean"}}}},"dbName":{"type":"string"},"tables":{"type":"array","options":{"async":{"label":"Re-load tables","action":"getTables"}}},"tableId":{"type":"string"},"primaryKey":{"type":"array","items":{"type":"string"}},"incremental":{"type":"boolean"},"caseSensitive":{"type":"string"}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":246,"uri":"docker/kds-team.wr-exasol","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.wr-exasol","name":"developer-portal-v2/kds-team.wr-exasol","tag":"1.0.0","options":{},"digest":"sha256:788fe283abb007e3145e7539db0ae26b9a86e3c02f7ce9b32ad8ba0ac812c0c3"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.wr-exasol/32/1636640169392.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.wr-exasol/64/1636640169392.png","128":null}},{"id":"kds-team.app-exasol-cluster-starter","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":151,"name":"Exasol Cluster Starter","type":"application","shortDescription":"Starts an Exasol database cluster before downstream jobs run.","longDescription":"This component enables you to start and stop Exasol clusters for databases","licenseUrl":"https://bitbucket.org/kds_consulting_team/kds-team.app-exasol-cluster-starter/src/master/LICENSE.md","documentationUrl":"https://bitbucket.org/kds_consulting_team/kds-team.app-exasol-cluster-starter/src/master/README.md","sourceCodeUrl":"https://bitbucket.org/kds_consulting_team/kds-team.app-exasol-cluster-starter/src/master/src/component.py","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe","container-root-user"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Exasol configuration","required":["#personal_access_token","account_id","host","cluster_action"],"properties":{"host":{"type":"string","title":"Database host","propertyOrder":30},"account_id":{"type":"string","title":"Account ID","propertyOrder":20},"cluster_action":{"enum":["Start","Stop"],"type":"string","title":"Cluster Action","propertyOrder":40},"#personal_access_token":{"type":"string","title":"Personal Access Token","format":"password","propertyOrder":10}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":151,"uri":"docker/kds-team.app-exasol-cluster-starter","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.app-exasol-cluster-starter","name":"developer-portal-v2/kds-team.app-exasol-cluster-starter","tag":"1.1.1","options":{},"digest":"sha256:34cd3dd9a34866ee33e93a0d9cd132c920525e748293044a87d737cdb1ff9701"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-exasol-cluster-starter/32/1643882665640.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-exasol-cluster-starter/64/1643882665640.png","128":null}},{"id":"keboola.ex-facebook-pages","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":240,"name":"Facebook Pages V2","type":"extractor","shortDescription":"Extracts Facebook Pages data from the Facebook Graph API.","longDescription":"This component uses the [Facebook Graph API](https://developers.facebook.com/docs/graph-api) to extract your Facebook Pages [feed](https://developers.facebook.com/docs/graph-api/reference/page/feed) (including comments, likes, etc.), as well as page and post [insights](https://developers.facebook.com/docs/graph-api/reference/v3.0/insights).  \n\nTo generate Insights, your Facebook Page needs to have **over 100 people** that like it. Also, demographic metrics, such as age, gender and location, are available in Page Insights once there is data for more than 100 people. The Insights API only offers two years retention.\n\nTo extract Facebook Ad Account ads (including ad sets and campaigns), as well as ads insights, use the Facebook Ads extractor.","licenseUrl":"https://github.com/keboola/component-meta/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/component-meta/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/component-meta","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Social"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-authorization"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["accounts","adaccounts","igaccounts"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-facebook-pages","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-facebook-pages","name":"developer-portal-v2/keboola.ex-facebook-pages","tag":"0.1.5","options":{},"digest":"sha256:b6331f9b6f577d1f6f87674866ca191cfb2ddecc7e677dfc4ea239832ec947de"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-facebook-pages/32/1752569418968.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-facebook-pages/64/1752569418968.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-facebook-pages/128/1752569418968.png"}},{"id":"keboola.fakturoid-writer","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":52,"name":"Fakturoid","type":"writer","shortDescription":"Writes invoices and invoice line items to the Fakturoid accounting API.","longDescription":"With two tables (invoice and invoice-items) you'll be able to create invoices in you favorite invoicing system Fakturoid.","licenseUrl":"https://github.com/keboola/fakturoid-writer/blob/master/LICENSE","documentationUrl":"https://github.com/keboola/fakturoid-writer/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/fakturoid-writer","requiredMemory":"128m","processTimeout":3600,"features":["container-root-user","dev-branch-configuration-unsafe"],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Accounting"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":null,"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.fakturoid-writer","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.fakturoid-writer","name":"developer-portal-v2/keboola.fakturoid-writer","tag":"v2.0.2","options":{},"digest":"sha256:eed07a5cf1b21a2c42e35d3472af6a41c9ce6b00b8c8dd67de207ff93"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.fakturoid-writer/32/5.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.fakturoid-writer/64/5.png","128":null}},{"id":"data-based.ex-fakturoid-api-v3","vendor":{"id":"data-based","name":"data-based s.r.o.","address":"Rybná 716/24, Staré Město, 110 00 Praha 1, CZ","email":"dev@data-based.io","type":"other"},"version":15,"name":"Fakturoid v3","type":"extractor","shortDescription":"Online invoicing and accounting tool for small & medium companies.","longDescription":"### Fakturoid API v3 Extractor\nThis component built upon [Generic extractor](https://developers.keboola.com/extend/generic-extractor/) uses [Fakturoid API v3](https://www.fakturoid.cz/api/v3) to extract data from various endpoints for a specified [Fakturoid ](https://www.fakturoid.cz/) account. \n\n\n#### Instructions\n1. Create a new configuration\n2. Replace default values (`Account ID`, `Client ID`, `Client Secret`) in the input fields\n3. Select a template (which data you want to load)\n4. Run the initial job without specifying `Since` (leave blank) to get the whole history.\n5. After successful initial load start pulling the data incrementally. Set relative date (e.g. -7 days) in `Since`. This will load only data created/updated since the respective date.\n6. Run it regularly within your orchestration. \n\n\n*Switch to JSON editor if you want to adjust the output.*\n\n\nDo you miss anything or have any questions? \nLet us know [dev@data-based.io](mailto:dev@data-based.io)\n\n","licenseUrl":"https://github.com/keboola/kbc-ui-templates/blob/main/resources/data-based.ex-fakturoid-api-v3/templates/LICENCE","documentationUrl":"https://github.com/keboola/kbc-ui-templates/tree/main/resources/data-based.ex-fakturoid-api-v3/templates","sourceCodeUrl":"https://github.com/keboola/kbc-ui-templates/tree/main/resources/data-based.ex-fakturoid-api-v3/templates","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericTemplatesUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["config"],"properties":{"config":{"type":"object","title":"Config","required":["client_id","#client_secret","slug","since","debug","incrementalOutput"],"properties":{"slug":{"type":"string","title":"Account ID","format":"string","default":"applecorp","propertyOrder":1},"debug":{"type":"boolean","title":"Debug mode","format":"checkbox","default":false,"propertyOrder":0},"since":{"type":"string","title":"Since","default":"-3 days","description":"Absolute or relative date (e.g. -3 days), leave blank if you want to do the first initial load","propertyOrder":5},"client_id":{"type":"string","title":"Client ID","format":"string","default":"Client ID","propertyOrder":2},"#client_secret":{"type":"string","title":"Client Secret","format":"password","default":"Client Secret","propertyOrder":3},"incrementalOutput":{"type":"boolean","title":"Incremental Load","format":"checkbox","default":true,"propertyOrder":4}}}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"Replace default inputs with your values\n* **Debug mode** - set true if you need to see a detailed log\n* **Account ID** - account ID (slug) in URL `app.fakturoid.cz/{accountId}/`\n* **Client ID**  - copy & paste API v3 oauth client id from `app.fakturoid.cz/{accountId}/user`\n* **Client Secret**  - copy & paste API v3 oauth client secret from `app.fakturoid.cz/{accountId}/user`\n* **Since** - absolute or relative date, leave blank if you want to do the first initial load\n* Select a template \n\nSwitch to JSON editor if you want to adjust the output.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":15,"uri":"docker/data-based.ex-fakturoid-api-v3","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/ex-generic-v2","name":"developer-portal-v2/ex-generic-v2","tag":"3.11.0","options":{},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/data-based.ex-fakturoid-api-v3/32/1742395852968.png","64":"https://ui.keboola-assets.com/developer-portal/icons/data-based.ex-fakturoid-api-v3/64/1742395852968.png","128":"https://ui.keboola-assets.com/developer-portal/icons/data-based.ex-fakturoid-api-v3/128/1742395852968.png"}},{"id":"kds-team.ex-filemaker","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":317,"name":"FileMaker","type":"extractor","shortDescription":"Extracts FileMaker layout data and metadata.","longDescription":"Extract layout data from [FileMaker](https://www.claris.com/filemaker/) relational database via [FileMaker Data API](https://help.claris.com/en/data-api-guide/content/write-data-api-calls.html).","licenseUrl":"https://github.com/keboola/component-filemaker/blob/main/LICENSE.md","documentationUrl":"https://help.keboola.com/components/extractors/database/filemaker/","sourceCodeUrl":"https://github.com/keboola/component-filemaker","requiredMemory":"512m","processTimeout":10800,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"FileMaker Credentials","format":"table","$schema":"http://json-schema.org/draft-04/schema#","required":["username","#password"],"properties":{"base_url":{"type":"string","title":"Host URL of the FileMaker server.","default":"","minLength":1,"propertyOrder":1},"username":{"type":"string","title":"User Name","default":"","minLength":1,"propertyOrder":10},"#password":{"type":"string","title":"Password","format":"password","default":"","minLength":1,"propertyOrder":20},"ssl_verify":{"type":"boolean","title":"Verify SSL certificate.","format":"checkbox","default":true,"description":"Set to false to disable SSL (https) certificate verification. Use with caution.","propertyOrder":30}}},"configurationRowSchema":{"type":"object","title":"Query Configuration","required":["object_type"],"properties":{"query":{"type":"array","items":{"type":"array","items":{"type":"object","title":"Query","properties":{"field_name":{"type":"string","title":"Field Name","propertyOrder":15},"find_criteria":{"type":"string","title":"Find Criteria","options":{"input_width":"450px"},"propertyOrder":30}}},"title":"Query Group","format":"table","minItems":1,"propertyOrder":11},"title":"Query Group","format":"table","options":{"dependencies":{"object_type":"Layout"}},"description":"Groups of filter criteria. 'OR' logical operation is applied to each group. 'AND' logical operation is applied to each set of queries. Note that if you include field used for incremental fetching, the incremental fetching will not work as expected. One key can be specified only once per (AND) group, see <a href=\"https://fmhelp.filemaker.com/help/18/fmp/en/#page/FMP_Help%2Ffinding-ranges.html%23\"><ocumentation</a>","propertyOrder":10},"database":{"type":"string","title":"Database","options":{"dependencies":{"object_type":"Layout"}},"description":"FileMaker database name","propertyOrder":3},"page_size":{"type":"integer","title":"Page size","default":1000,"options":{"dependencies":{"object_type":"Layout"}},"description":"Number of records retrieved in single API call. Note that to large page size may affect load on the destination database","propertyOrder":60},"layout_name":{"type":"string","title":"FileMaker layout name","options":{"dependencies":{"object_type":"Layout"}},"propertyOrder":5},"object_type":{"enum":["Metadata","Layout"],"type":"string","title":"Object type","default":"Layout","propertyOrder":1},"field_metadata":{"type":"array","items":{"type":"object","title":"Layout","format":"grid","properties":{"database":{"type":"string","title":"Database","options":{"input_width":"450px"},"description":"FileMaker file/database name","propertyOrder":3},"layout_name":{"type":"string","title":"FileMaker layout name","options":{"input_width":"450px"},"description":"FileMaker layout name","propertyOrder":5}}},"title":"Field Metadata","format":"table","options":{"dependencies":{"object_type":"Metadata"}},"description":"Download schemas of selected layouts. If left empty only list of available databases and layouts is downloaded.","propertyOrder":5},"loading_options":{"type":"object","title":"Loading Options","options":{"dependencies":{"object_type":"Layout"}},"required":["incremental"],"properties":{"pkey":{"type":"array","items":{"type":"string","title":"Primary key column"},"title":"Primary key","default":["Id"],"description":"List of the primary key column names.","propertyOrder":5000},"incremental":{"enum":[0,1],"type":"integer","title":"Load type","default":0,"options":{"enum_titles":["Full Load","Incremental Update"]},"description":"If set to Incremental update, the result tables will be updated based on primary key and new records will be fetched. Full load overwrites the destination table each time.","propertyOrder":200},"incremental_fetch":{"type":"boolean","title":"Incremental fetch","format":"checkbox","default":false,"options":{"dependencies":{"incremental":1}},"description":"Fetch records that have been updated since the last run of the component with a specified field","propertyOrder":250},"incremental_fields":{"type":"array","items":{"type":"string","title":"Field Name","propertyOrder":300},"title":"Incremental Fields","default":["_Timestamp_Modified"],"options":{"dependencies":{"incremental":1,"incremental_fetch":true}},"maxItems":1,"description":"List of column names to use for incremental fetching.","propertyOrder":300}},"propertyOrder":100}}},"createConfigurationRowSchema":null,"configurationDescription":"**NOTE** The columns prefixed `_` are prefixed with `hsh` prefix in the result table. This is because the Keboola Connection Storage does not allow to store columns prefixed with underscore. \nSo the column `_Timestamp` will be stored as `hsh_Timestamp` in the resulting table.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":317,"uri":"docker/kds-team.ex-filemaker","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-filemaker","name":"developer-portal-v2/kds-team.ex-filemaker","tag":"1.0.3","options":{},"digest":"sha256:acee00b5697436121f770153b93d801bea56479604d51cf7ea5a191ff5270f50"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-filemaker/32/1657699288754.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-filemaker/64/1657699288754.png","128":null}},{"id":"keboola.processor-filter-files","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":19,"name":"Filter Files","type":"processor","shortDescription":"Filter files matching a filename or glob pattern","longDescription":null,"licenseUrl":"https://github.com/keboola/processor-filter-files/blob/master/LICENSE","documentationUrl":"https://github.com/keboola/processor-filter-files/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/processor-filter-files","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":[],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":null,"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.processor-filter-files","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.processor-filter-files","name":"developer-portal-v2/keboola.processor-filter-files","tag":"v1.0.1","options":{},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.processor-filter-files/32/1576251918359.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.processor-filter-files/64/1576251918359.png","128":null}},{"id":"revolt-bi.ex-fingera","vendor":{"id":"revolt-bi","name":"Revolt BI","address":"Pobřežní 249/46,\nPraha 8-Karlín,\n186 00","email":"support@revolt.bi","type":"other"},"version":70,"name":"Fingera","type":"extractor","shortDescription":" Access control and attendance management system.","longDescription":"Fingera is a next-generation access control and attendance management system, built upon industry-leading biometric technology.\n\n## Following tables are currently accessible:\n1. day_schedules \n2. event_categories\n3. groups\n4. terminals\n5. users\n6. time_logs\n\n## All tables have following columns in common:\n*  id (integer) - unique identificator of record\n*  created_at (datetime) - time of record creation\n* updated_at (datetime) - time of last record update\n","licenseUrl":"https://github.com/TerezaLic/fingera/blob/master/LICENSE","documentationUrl":"https://github.com/TerezaLic/fingera/blob/master/README_KBC.md","sourceCodeUrl":null,"requiredMemory":"512m","processTimeout":null,"features":["container-root-user"],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{"compauth_url":"https://authorization.revolt.bi","compauth_user_token":"99sG5vMeRR9ZYPwcNMYB0KbVlrcTPd8f9MAT-mjFjQZ5jNepPmM78K8bxeufGp-F","compauth_license_token":"E8i0CM_HJfyAoAZ6C3A-5WL2KauuL1tOqyjINwQf2MKUUiEUW4I8BUhiP8Q_dYE9","compauth_tokens_in_image":true},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Fingera extractor configuration","required":["user","#password","daysInterval","url"],"properties":{"url":{"type":"string","title":"API - URL","propertyOrder":4000},"user":{"type":"string","title":"Fingera user account","propertyOrder":1000},"#password":{"type":"string","title":"Fingera password","format":"password","propertyOrder":2000},"daysInterval":{"type":"number","title":"Days interval","default":1,"description":"Define start date of downloaded stats","propertyOrder":3000}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{"storage":{"input":{"tables":[{"source":"time_logs_2.csv","destination":"","incremental":true}]}}},"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/revolt-bi.ex-fingera","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/revolt-bi.ex-fingera","name":"developer-portal-v2/revolt-bi.ex-fingera","tag":"1.0.1","options":{},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/revolt-bi.ex-fingera/32/44.png","64":"https://ui.keboola-assets.com/developer-portal/icons/revolt-bi.ex-fingera/64/44.png","128":"https://ui.keboola-assets.com/developer-portal/icons/revolt-bi.ex-fingera/128/44.png"}},{"id":"keboola.ex-db-firebird","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":53,"name":"Firebird","type":"extractor","shortDescription":"Extracts data from a Firebird database via the PDO Firebird driver.","longDescription":"This component imports data from selected tables or results from arbitrary SQL queries from the [Firebird](http://www.firebirdsql.org/) database. It connects to the database, executes your queries, and stores the results in Keboola Connection Storage.\n\nTo configure this extractor, you need to \n\n- provide database credentials, and \n- have a connection to the database you want to read, preferably [secure](https://help.keboola.com/extractors/database/#connecting-to-database).\n\nIncremental load is optional.\n","licenseUrl":"https://github.com/keboola/db-extractor-firebird/blob/master/LICENSE","documentationUrl":"https://help.keboola.com/extractors/database/sqldb/","sourceCodeUrl":"https://github.com/keboola/db-extractor-firebird","requiredMemory":"256m","processTimeout":18000,"features":["container-root-user"],"encryption":true,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"easy","category":null,"categories":["Database"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":{},"configurationSchema":{"type":"object","$defs":{"credentials":{"type":"object","required":["dbname","user","#password"],"properties":{"ssh":{"type":"object","properties":{"keys":{"type":"object","properties":{"public":{"type":"string"},"#private":{"type":"string"}}},"user":{"type":["string","null"]},"enabled":{"type":"boolean"},"sshHost":{"type":["string","null"]},"sshPort":{"type":["string","integer","null"],"default":22},"localPort":{"type":["string","integer"]},"remoteHost":{"type":"string"},"remotePort":{"type":["string","integer"]}}},"user":{"type":"string"},"dbname":{"type":"string"},"#password":{"type":"string"}}}},"title":"keboola.ex-db-firebird — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","required":["db"],"properties":{"db":{"$ref":"#/$defs/credentials"}}},"configurationRowSchema":{"type":"object","title":"keboola.ex-db-firebird — Row Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"id":{"type":["string","integer"]},"name":{"type":"string"},"query":{"type":"string"},"table":{"oneOf":[{"type":"string"},{"type":"object","properties":{"schema":{"type":"string"},"tableName":{"type":"string"}}}]},"tables":{"type":"array","options":{"async":{"label":"Re-load tables","action":"getTables"}}},"columns":{"type":"array","items":{"type":"string"}},"enabled":{"type":"boolean"},"primaryKey":{"type":"array","items":{"type":"string"}},"incremental":{"type":"boolean"},"outputTable":{"type":"string"},"advancedMode":{"type":"boolean"},"incrementalFetchingLimit":{"type":"integer"},"incrementalFetchingColumn":{"type":"string"}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":["testConnection"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-db-firebird","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-db-firebird","name":"developer-portal-v2/keboola.ex-db-firebird","tag":"3.9.0","options":{},"digest":"sha256:7aa2d255b23cb73f4ff1f23732c13faac0a7f533a16291a8fe7e858d5375aa15"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-db-firebird/32/1623156907416.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-db-firebird/64/1623156907416.png","128":null}},{"id":"kds-team.wr-firebolt","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":617,"name":"Firebolt","type":"writer","shortDescription":"Writes data to Firebolt tables and creates views over them.","longDescription":"Firebolt is the world’s fastest cloud data warehouse for data engineers, purpose-built for high-performance analytics. \nIt provides sub-second query performance at terabyte to petabyte scale, at a fraction of the cost compared to alternatives. \nCompanies adopting Firebolt have deployed high performance data analytics applications across internal BI as well as customer-facing use cases. \nGet started at [firebolt.io](https://www.firebolt.io/?utm_source=partner&utm_medium=referral&utm_campaign=keboola)\n\nThis component enables you to write data to a Firebolt table in a specified database.","licenseUrl":"https://bitbucket.org/kds_consulting_team/kds-team.wr-firebolt/src/master/LICENSE.md","documentationUrl":"https://help.keboola.com/components/writers/database/firebolt/","sourceCodeUrl":"https://bitbucket.org/kds_consulting_team/kds-team.wr-firebolt/src","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Database"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput","genericDockerUI-rows"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","$defs":{"credentials":{"type":"object","required":["database"],"properties":{"user":{"type":"string"},"driver":{"type":"string"},"database":{"type":"string"},"#password":{"type":"string"},"engine_name":{"type":"string"},"aws_api_key_id":{"type":"string"},"staging_bucket":{"type":"string"},"#aws_api_key_secret":{"type":"string"}}}},"title":"kds-team.wr-firebolt — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","required":["db"],"properties":{"db":{"$ref":"#/$defs/credentials"}}},"configurationRowSchema":{"type":"object","title":"kds-team.wr-firebolt — Row Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"items":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"size":{"type":["string","integer","null"]},"type":{"type":"string"},"dbName":{"type":"string"},"default":{"type":["string","null"]},"nullable":{"type":"boolean"}}}},"dbName":{"type":"string"},"tables":{"type":"array","options":{"async":{"label":"Re-load tables","action":"getTables"}}},"indexes":{"type":"array"},"tableId":{"type":"string"},"primaryKey":{"type":"array","items":{"type":"string"}},"table_type":{"type":"string"},"incremental":{"type":"boolean"},"join_indexes":{"type":"array"},"primaryIndex":{"type":"array","items":{"type":"string"}},"loading_options":{"type":"object","properties":{"load_type":{"type":"string"}}},"aggregation_indexes":{"type":"array"}}},"createConfigurationRowSchema":null,"configurationDescription":"Testing configuration description.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":617,"uri":"docker/kds-team.wr-firebolt","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.wr-firebolt","name":"developer-portal-v2/kds-team.wr-firebolt","tag":"1.4.6","options":{},"digest":"sha256:bb70b2ed9ae3180675e08b6fca665d091244fbac7b2319686cd85b00347bc827"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.wr-firebolt/32/1626122098022.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.wr-firebolt/64/1626122098022.png","128":null}},{"id":"keboola.processor-fit-into-storage","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":8,"name":"Fit Into Storage","type":"processor","shortDescription":"Wrap non-CSV files into CSV tables so that they can be imported into Storage.","longDescription":"Takes all files (or sliced tables) in /data/in/tables and /data/in/files, wraps the entire file into a CSV.\nThe result files are in /data/out/tables or /data/out/files depending on where the source was. \nManifests (if present) are copied without any change. Sliced files are supported. The processor is useful for\nimporting non-csv text (e.g. JSONs) files for later processing. The output CSV file will contain the columns:\n`contents`, `file`, `index`. ","licenseUrl":null,"documentationUrl":"https://github.com/keboola/processor-fit-into-storage/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/processor-fit-into-storage/blob/master/README.md","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":[],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":null,"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":8,"uri":"docker/keboola.processor-fit-into-storage","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.processor-fit-into-storage","name":"developer-portal-v2/keboola.processor-fit-into-storage","tag":"1.0.0","options":{},"digest":"sha256:cf5fcce32a0e0608b123d68b6881fc6bb400405cae64eade480d5bea642cb633"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.processor-fit-into-storage/32/1677062553228.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.processor-fit-into-storage/64/1677062553228.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.processor-fit-into-storage/128/1677062553228.png"}},{"id":"keboola.processor-flatten-folders","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":23,"name":"Flatten Folders","type":"processor","shortDescription":"Flatten folders structure","longDescription":"Flatten folders structure.","licenseUrl":"https://github.com/keboola/processor-flatten-folders/blob/master/LICENSE","documentationUrl":"https://github.com/keboola/processor-flatten-folders/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/processor-flatten-folders","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":[],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":null,"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.processor-flatten-folders","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.processor-flatten-folders","name":"developer-portal-v2/keboola.processor-flatten-folders","tag":"v1.2.0","options":{"region":"us-east-1"},"digest":"sha256:069d609f7f9ea49a3119ab50c4664a017dfa231adbd9497dfe1f931e3e1a1d71"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.processor-flatten-folders/32/1576251929299.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.processor-flatten-folders/64/1576251929299.png","128":null}},{"id":"keboola.ex-flexibee","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":20,"name":"FlexiBee","type":"extractor","shortDescription":"Extracts accounting data such as invoices from Abra FlexiBee via its REST API.","longDescription":"This component uses the [FlexiBee REST API](https://www.flexibee.eu/api/) to import accounting data from [Abra FlexiBee](https://www.flexibee.eu/) (invoices, etc.).\n\nTo configure this extractor, you need to provide FlexiBee\n\n- hostname,\n- company account,\n- login, and\n- password.\n\n*Note: The full [API documentation](https://www.flexibee.eu/api/dokumentace/) is available in Czech only.*","licenseUrl":"https://github.com/keboola/kbc-ui-templates/blob/main/LICENSE","documentationUrl":"https://github.com/keboola/generic-extractor","sourceCodeUrl":"https://github.com/keboola/kbc-ui-templates/tree/master/resources/keboola.ex-flexibee/templates","requiredMemory":"512m","processTimeout":10800,"features":["container-root-user"],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"easy","category":null,"categories":["CRM","ERP","Accounting"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericTemplatesUI"],"imageParameters":{"default_bucket":true},"stackParameters":{},"testConfiguration":{},"configurationSchema":{"type":"object","title":"Parameters","required":["config"],"properties":{"config":{"type":"object","title":"Config","required":["host","domain","username","#password"],"properties":{"host":{"type":"string","title":"FlexiBee Hostname","minLength":1,"description":"For example \"acme\" (acme.flexibee.eu...)","propertyOrder":1},"domain":{"type":"string","title":"FlexiBee Company Account","minLength":1,"description":"For example \"company\" (...flexibee.eu/c/company/...)","propertyOrder":2},"username":{"type":"string","title":"FlexiBee Login","minLength":1,"description":"","propertyOrder":3},"#password":{"type":"string","title":"FlexiBee Password","format":"password","minLength":1,"description":"","propertyOrder":4}}}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-flexibee","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/ex-generic-v2","name":"developer-portal-v2/ex-generic-v2","tag":"4.1.2","options":{},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-flexibee/32/1.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-flexibee/64/1.png","128":null}},{"id":"keboola.processor-format-csv","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":18,"name":"Format CSV","type":"processor","shortDescription":"Processes CSV files into exotic formats for writers.","longDescription":"Processes CSV files into exotic formats for writers. Typical use case is converting RFC4180 formated CSV from KBC into \"TSV without encapulators\" or \"pipe separated file\".\n\nDoes not support sliced tables. Does not allow to set custom escape character (double encapsulator is used automatically).","licenseUrl":"https://github.com/keboola/processor-format-csv/blob/master/LICENSE","documentationUrl":"https://github.com/keboola/processor-format-csv#usage","sourceCodeUrl":"https://github.com/keboola/processor-format-csv","requiredMemory":null,"processTimeout":null,"features":["container-root-user"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":[],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":null,"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.processor-format-csv","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.processor-format-csv","name":"developer-portal-v2/keboola.processor-format-csv","tag":"0.1.1","options":{},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.processor-format-csv/32/1576251935289.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.processor-format-csv/64/1576251935289.png","128":null}},{"id":"data-based.ex-freelo","vendor":{"id":"data-based","name":"data-based s.r.o.","address":"Rybná 716/24, Staré Město, 110 00 Praha 1, CZ","email":"dev@data-based.io","type":"other"},"version":55,"name":"Freelo","type":"extractor","shortDescription":"Project management and collaboration platform for your team and clients. ","longDescription":"### Freelo API Extractor\n\nThis component built upon [Generic extractor](https://developers.keboola.com/extend/generic-extractor/) uses [Freelo API v1](https://freelo.docs.apiary.io/) to extract data (users, projects, tasklists, tasks, tags, work reports) for a specified [Freelo](https://freelo.io/en?affid=databased) user account. \n\n#### Instructions\n1. Create a new configuration\n2. Replace default values (`E-mail`, `API key`) in the input fields\n3. Select a template (which data you want to load) or *Switch to JSON editor if you want to adjust the output*\n4. Run the initial job without specifying `Since` (leave blank) to get the whole history.\n5. After successful initial load start pulling the data incrementally. Set relative date (e.g. -3 days) in `Since`. This will load only data created/updated since the respective date in the past\n6. Run it regularly within your orchestration. \n\nDo you miss anything or have a question? Let us know [dev@data-based.io](mailto:dev@data-based.io)\n\n#### Promo code 10% discount\n**EN:** Use promo code  [DATABASED10](https://freelo.io/en?affid=databased)  to get 10% discount\n\n**CZ:** S promo kódem  [DATABASED10](https://freelo.io/?affid=databased) získáš 10% slevu","licenseUrl":"https://github.com/keboola/kbc-ui-templates/tree/master/resources/data-based.ex-freelo/templates/LICENCE","documentationUrl":"https://components.keboola.com/components/data-based.ex-freelo","sourceCodeUrl":"https://github.com/keboola/kbc-ui-templates/tree/master/resources/data-based.ex-freelo/templates","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Project Management"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericTemplatesUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["config"],"properties":{"config":{"type":"object","title":"Config","required":["username","#password","since","debug"],"properties":{"debug":{"enum":[true,false],"type":"boolean","title":"Debug mode","format":"checkbox","default":false,"propertyOrder":0},"since":{"type":"string","title":"Since date","format":"string","default":"-3 days","description":"Absolute or relative date (e.g. -3 days), leave blank if you want to do the first initial load","propertyOrder":4},"username":{"type":"string","title":"Email","format":"email","default":"example@email.com","propertyOrder":1},"#password":{"type":"string","title":"API key","format":"password","default":"12345","propertyOrder":2}}}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"Replace default inputs with your values\n* **Debug mode** - set true if you need to debug the behaviour\n* **E-mail**  - username used to log in\n* **API key**  - copy & paste it from [app.freelo.cz/profil/nastaveni](https://app.freelo.cz/profil/nastaveni)\n* **Since** - absolute or relative date, leave blank if you want to do the first initial load\n* Select a template \n\nSwitch to JSON editor if you want to adjust the output.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/data-based.ex-freelo","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/ex-generic-v2","name":"developer-portal-v2/ex-generic-v2","tag":"3.11.0","options":{},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/data-based.ex-freelo/32/1601917503969.png","64":"https://ui.keboola-assets.com/developer-portal/icons/data-based.ex-freelo/64/1601917503969.png","128":null}},{"id":"revolt-bi.ex-freshdesk","vendor":{"id":"revolt-bi","name":"Revolt BI","address":"Pobřežní 249/46,\nPraha 8-Karlín,\n186 00","email":"support@revolt.bi","type":"other"},"version":68,"name":"Freshdesk","type":"extractor","shortDescription":"Customer support platform REST API extractor.","longDescription":"Keboola Connection Extractor for [Freshdesk](https://freshdesk.com/).\n\n## Description\nThis is the documentation for a Keboola Connection extractor.\n\nThe extractor was created using the [Freshdesk REST API](https://developers.freshdesk.com/api/);  for additional information, check out its documentation.\n\nThe extractor is set to extract the table `tickets` using pagination with 100 tickets per page. `Conversations` are extracted per tickets and thus need the `tickets` table in the configuration and may exhaust the [API request limit](https://developers.freshdesk.com/api/#ratelimit).\n\n## Configuration\n* **Domain:** The first part of your url on which the Freshdesk server is set up, for example: `my_domain` where `my_domain.freshdesk.com` is your web page.\n* **API Token:** You can find this token in your profile settings on your Freshdesk web page.\n* **List of Tables:** Choose which tables should be downloaded from the list.\n* **Tickets:** The main table. Always uses filter `updated_since`.\n    * **Days Past:**  Fixed date in the format `YYYY-MM-DD`, dynamic number of days in the format `N` where N is a non-negative integer, or the word `today`. From this parameter, the extractor will compute a date in the format `YYYY-MM-DD` and add it to the `updated_since` filter as its value.\n    * **Max Pages:** Default value is set to the API limit of 300 pages. In case you need to download historic data, use this parameter as a substitute for the `to_date` parameter missing in the API.\n    * **Incremental:** Check the box if the data should be loaded to Keboola Storage incrementally.\n    * **Primary Keys:** Names of the columns in the extracted table that you consider as primary keys.\n    * **Include:** Choose additional data columns from the list. *Caution:* using this parameter consumes 2 additional API requests.\n* **Conversations:** Conversations for each ticket cost one API request.\n    * **Incremental:** Check the box if the data should be loaded to Keboola Storage incrementally.\n    * **Primary Keys:** Names of the columns in the extracted table that you consider as primary keys.\n\nNeed help?\n\nIf you have any questions, feel free to contact us at support@revolt.bi, check our other solutions at [our web page](https://www.revolt.bi) or find other components at [Keboola Developer Portal](https://components.keboola.com/components).\n\nPrepared by \n\n![alt text](https://www.revolt.bi/wp-content/uploads/2018/08/mail-logo-zluta.png \"revolt.bi\")","licenseUrl":"https://github.com/RevoltBI/Licences/blob/master/README.md","documentationUrl":"https://revoltbi.github.io/ex-freshdesk/","sourceCodeUrl":null,"requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["CRM"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{"tables":[{"name":"tickets","filters":[{"updated_since":""}],"paginate":true},{"name":"conversations","columns":["attachments","bcc_emails","body","body_text","category","cc_emails","created_at","email_failure_count","from_email","id","incoming","outgoing_failures","private","source","source_additional_info","source_additional_info_facebook_id","source_additional_info_facebook_type","source_additional_info_twitter_id","source_additional_info_twitter_requester_screen_name","source_additional_info_twitter_support_handle_id","source_additional_info_twitter_support_screen_name","source_additional_info_twitter_type","support_email","ticket_id","to_emails","updated_at","user_id"],"requires_table":"tickets"},{"name":"agents"},{"name":"contacts","filters":[{"_updated_since":""}],"paginate":true},{"name":"roles"},{"name":"groups"},{"name":"email_configs"},{"name":"business_hours"}],"compauth_url":"https://authorization.revolt.bi","compauth_user_token":"99sG5vMeRR9ZYPwcNMYB0KbVlrcTPd8f9MAT-mjFjQZ5jNepPmM78K8bxeufGp-F","compauth_license_token":"E8i0CM_HJfyAoAZ6C3A-5WL2KauuL1tOqyjINwQf2MKUUiEUW4I8BUhiP8Q_dYE9","compauth_tokens_in_image":true},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Configuration","required":["domain","#api_token","past","tables","tickets_pk","tickets_incremental","tickets_max_pages","tickets_include","conversations_pk","conversations_incremental","contacts_pk","contacts_incremental"],"properties":{"past":{"type":"string","title":"Tickets: Days Past","minLength":1,"description":"Value for ticket filter updated_since: date or days from today. Standard fixed format, e.g. '2000-01-13', or a number like '7'.","propertyOrder":4},"domain":{"type":"string","title":"Domain","minLength":1,"propertyOrder":1},"tables":{"type":"array","items":{"enum":["conversations","agents","contacts","roles","groups","email_configs","business_hours"],"type":"string","title":"Table"},"title":"List of Tables","format":"table","default":["conversations","agents","contacts","roles","groups","email_configs","business_hours"],"minLength":1,"description":"Tables to be extracted alongside the tickets table.","uniqueItems":true,"propertyOrder":3},"#api_token":{"type":"string","title":"API Token","format":"password","minLength":1,"propertyOrder":2},"tickets_pk":{"type":"string","title":"Tickets: Primary Keys","description":"Names of columns to be used as primary keys, separated by a comma.","propertyOrder":7},"contacts_pk":{"type":"string","title":"Contacts: Primary Keys","description":"Names of columns to be used as primary keys, separated by a comma.","propertyOrder":12},"tickets_include":{"enum":["","stats","requester","description"],"type":"string","title":"Tickets: Include","description":"Additional data columns for tickets table - costs two extra API requests per page.","propertyOrder":8},"conversations_pk":{"type":"string","title":"Conversations: Primary Keys","description":"Names of columns to be used as primary keys, separated by a comma.","propertyOrder":10},"tickets_max_pages":{"type":"integer","title":"Tickets: Max Pages","default":300,"maximum":300,"minimum":1,"description":"Maximal number of pages to extract - use for extracting historical data. Must be less than or equal to 300. 18 pages recommended for conversations extraction.","propertyOrder":5},"tickets_incremental":{"type":"boolean","title":"Tickets: Incremental","format":"checkbox","propertyOrder":6},"contacts_incremental":{"type":"boolean","title":"Contacts: Incremental","format":"checkbox","propertyOrder":11},"conversations_incremental":{"type":"boolean","title":"Conversations: Incremental","format":"checkbox","propertyOrder":9}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":68,"uri":"docker/revolt-bi.ex-freshdesk","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/revolt-bi.ex-freshdesk","name":"developer-portal-v2/revolt-bi.ex-freshdesk","tag":"1.1.5","options":{},"digest":"sha256:46ae5d7a11020729cafa77e2a25868962de1cba4eb6eba321def55a6ab1419dd"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/revolt-bi.ex-freshdesk/32/1.png","64":"https://ui.keboola-assets.com/developer-portal/icons/revolt-bi.ex-freshdesk/64/1.png","128":null}},{"id":"keboola.ex-ftp","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":111,"name":"FTP","type":"extractor","shortDescription":"Fetching data from an (S)FTP server.","longDescription":"This component loads CSV files from an FTP server and stores them in Keboola Connection Storage. Supported communication protocols are FTP, FTPS and SFTP. The extractor can download a single file or multiple files using a wildcard specified by the [GLOB syntax](https://en.wikipedia.org/wiki/Glob_(programming)). \nAdditional features, such as decompressing files from archive or loading only files added since the last run, are also available.\n\nTo configure this extractor, you need to have credentials (including port and protocol) for the FTP server.\n\nIncremental load is optional.\n","licenseUrl":null,"documentationUrl":"https://help.keboola.com/extractors/storage/ftp/","sourceCodeUrl":"https://github.com/keboola/ex-ftp","requiredMemory":"5000m","processTimeout":72000,"features":["container-root-user","has-sample-data"],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"medium","category":null,"categories":["File Storage"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableOutput"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"keboola.ex-ftp — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","required":["host","username"],"properties":{"ssh":{"type":"object","properties":{"keys":{"type":"object","properties":{"public":{"type":"string"},"#private":{"type":"string"}}},"user":{"type":["string","null"]},"enabled":{"type":"boolean"},"sshHost":{"type":["string","null"]},"sshPort":{"type":["string","integer","null"],"default":22},"localPort":{"type":["string","integer"]},"remoteHost":{"type":"string"},"remotePort":{"type":["string","integer"]}}},"host":{"type":"string"},"port":{"type":["string","integer"]},"username":{"type":"string"},"#password":{"type":"string"},"#privateKey":{"type":"string"},"connectionType":{"enum":["FTP","FTPS","SFTP"],"type":"string"},"ignorePassiveAddress":{"type":"boolean"}}},"configurationRowSchema":{"type":"object","title":"keboola.ex-ftp — Row Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"path":{"type":"string"},"onlyNewFiles":{"type":"boolean"}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["testConnection"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":111,"uri":"docker/keboola.ex-ftp","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-ftp","name":"developer-portal-v2/keboola.ex-ftp","tag":"3.1.3","options":{},"digest":"sha256:0b220018096ddb49d006492eae9edc2e36210311002f01a18c4ccc82910bd3b6"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-ftp/32/1576677101727.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-ftp/64/1576677101727.png","128":null}},{"id":"keboola.ex-ftp-v2","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":87,"name":"FTP v2","type":"extractor","shortDescription":"Extract files from FTP, SFTP, and FTPS servers with support for wildcard patterns, recursive matching, and incremental extraction.","longDescription":"# FTP / SFTP / FTPS Extractor\n\nExtract files from FTP servers supporting multiple protocols (FTP, SFTP, FTPS Explicit, FTPS Implicit) and save them to Keboola Storage.\n\n## Key Features\n\n- **Multiple Protocol Support**: Connect to FTP, SFTP, and FTPS servers\n- **Flexible File Selection**: Use wildcard patterns, specific paths, or interactive file picker\n- **Recursive Extraction**: Extract files from nested directories using `**` wildcards\n- **Incremental Mode**: Extract only new or modified files since last run\n- **SSH Key Authentication**: Support for key-based authentication for SFTP\n- **Custom Tags**: Add tags to extracted files for organization\n- **Output Control**: Flatten directory structure and/or append extraction timestamps\n\n## Use Cases\n\n- Extract daily reports from remote FTP servers\n- Download log files from multiple directories\n- Incrementally sync files from SFTP servers\n- Retrieve data exports with custom naming patterns\n\n## Configuration\n\n1. Select your protocol (FTP, SFTP, or FTPS)\n2. Enter connection credentials\n3. Choose file selection method (wildcard, specific paths, or interactive)\n4. Configure extraction options (flattening, timestamps, incremental mode)\n5. Optionally add tags for file organization\n\nAll extracted files are automatically saved to Keboola Storage with properly generated manifests.","licenseUrl":"https://github.com/keboola/component-ex-ftp-v2/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/component-ex-ftp-v2/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/component-ex-ftp-v2","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":true,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"FTP / SFTP / FTPS Extractor","required":["connection"],"properties":{"connection":{"type":"object","title":"Connection","required":["protocol","hostname","port","user","#pass"],"properties":{"ssh":{"type":"object","format":"ssh-editor","options":{"only_keys":true,"dependencies":{"protocol":"sftp"}},"propertyOrder":45},"port":{"type":"integer","title":"Host Port","default":22,"options":{"tooltip":"The default port number is 22 for SFTP, 21 for FTP, and 990 for Implicit FTPS."},"propertyOrder":20},"user":{"type":"string","title":"User Name","propertyOrder":30},"#pass":{"type":"string","title":"Password","format":"password","propertyOrder":40},"hostname":{"type":"string","title":"Host URL","propertyOrder":15},"protocol":{"enum":["sftp","ftp","ex-ftps","im-ftps"],"type":"string","title":"Protocol","default":"sftp","options":{"enum_titles":["SFTP","FTP","FTPS (Explicit)","FTPS (Implicit)"]},"propertyOrder":10},"#passphrase":{"type":"string","title":"SSH Key Passphrase (Optional)","format":"password","options":{"dependencies":{"protocol":"sftp"}},"description":"Passphrase for encrypted SSH private key","propertyOrder":42},"max_retries":{"type":"integer","title":"Maximum Retries","default":2,"description":"Maximum number of retry attempts for failed operations","propertyOrder":90},"passive_mode":{"type":"boolean","title":"Passive Mode","format":"checkbox","default":true,"options":{"dependencies":{"protocol":["ftp","ex-ftps","im-ftps"]}},"propertyOrder":70},"banner_timeout":{"type":"integer","title":"Banner Timeout (Optional)","default":120,"options":{"dependencies":{"protocol":"sftp"}},"description":"Timeout in seconds to wait for SSH banner. Default is 120 seconds. Increase this for slow or overloaded servers.","propertyOrder":60},"connection_timeout":{"type":"integer","title":"Connection Timeout (seconds)","default":30,"description":"Timeout for establishing connection to the server","propertyOrder":80},"disabled_algorithms":{"type":"string","title":"Algorithms to Disable (Optional)","options":{"dependencies":{"protocol":"sftp"}},"description":"Disabled algorithms in JSON format, e.g., {\"pubkeys\": [\"rsa-sha2-256\", \"rsa-sha2-512\"]}. See <a href='https://docs.paramiko.org/en/latest/api/transport.html'>Paramiko documentation</a>.","propertyOrder":50}},"propertyOrder":10},"test_connection":{"type":"button","format":"test-connection","propertyOrder":100}}},"configurationRowSchema":{"type":"object","title":"File Extraction Configuration","required":["files"],"properties":{"mode":{"enum":["file","table"],"type":"string","title":"Mode","default":"file","options":{"enum_titles":["File Mode","Table Mode"]},"description":"File Mode: Extract files to data/out/files. Table Mode: Extract single file to data/out/tables with manifest.","propertyOrder":5},"tags":{"type":"array","items":{"type":"string"},"title":"File Tags (Optional)","options":{"dependencies":{"mode":"file"}},"description":"Tags to add to extracted files in Keboola Storage","propertyOrder":80},"debug":{"type":"boolean","title":"Debug Mode","format":"checkbox","default":false,"description":"If enabled, the component will produce detailed logs","propertyOrder":90},"files":{"type":"array","items":{"enum":[],"type":"string","format":"select"},"title":"File Selection","format":"select","options":{"tags":true,"async":{"label":"Load files","action":"list_files","autoload":[]},"creatable":true,"dependencies":{"mode":"file"}},"description":"Select files from the server or enter file paths/patterns manually. Wildcards are supported (e.g., /data/*.csv, /logs/**/*.txt for recursive).","uniqueItems":true,"propertyOrder":10},"has_header":{"type":"boolean","title":"Has Header","format":"checkbox","default":true,"options":{"dependencies":{"mode":"table"}},"description":"If true, the first row contains column names. If false, you must define column names below.","propertyOrder":85},"table_file":{"enum":[],"type":"string","title":"Table File","format":"select","options":{"async":{"label":"Load files","action":"list_files","autoload":[]},"creatable":true,"dependencies":{"mode":"table"}},"description":"Select a single file from the server or enter file path manually. Wildcards are not allowed.","propertyOrder":15},"destination":{"type":"object","title":"Table Destination","options":{"dependencies":{"mode":"table"}},"properties":{"columns":{"type":"array","items":{"enum":[],"type":"string","format":"select"},"title":"Column Names","format":"select","options":{"tags":true,"creatable":true,"dependencies":{"helper_has_header":"false"}},"description":"Define column names in order (e.g., col1, col2, col3).","uniqueItems":true,"propertyOrder":40},"load_type":{"enum":["full_load","incremental_load"],"type":"string","title":"Load Type","default":"incremental_load","options":{"enum_titles":["Full Load","Incremental Load"]},"propertyOrder":20},"table_name":{"type":"string","title":"Table Name","description":"Name of the output table (optional, defaults to filename without extension)","propertyOrder":10},"primary_key":{"type":"array","items":{"enum":[],"type":"string","format":"select"},"title":"Primary Key","format":"select","options":{"tags":true,"async":{"label":"Load columns from CSV","action":"load_csv_columns"},"creatable":true},"description":"List of column names that form the primary key. Load from CSV or enter manually.","uniqueItems":true,"propertyOrder":30},"helper_has_header":{"type":"string","watch":{"val":"has_header"},"options":{"hidden":true},"template":"{{val}}","description":"Helper element to watch has_header for columns dependency"}},"description":"Configuration for table output","propertyOrder":87},"append_timestamp":{"type":"boolean","title":"Append Extraction Timestamp","format":"checkbox","default":false,"options":{"dependencies":{"mode":"file"}},"description":"If enabled, adds extraction timestamp to filename (e.g., file_20240108123456.csv)","propertyOrder":60},"incremental_mode":{"type":"boolean","title":"Incremental Extraction","format":"checkbox","default":false,"options":{"dependencies":{"mode":"file"}},"description":"If enabled, only extracts files that are new or modified since the last extraction","propertyOrder":70},"include_path_in_filename":{"type":"boolean","title":"Include Directory Path in Filename","format":"checkbox","default":false,"options":{"dependencies":{"mode":"file"}},"description":"Controls output filename format. If disabled (default), extracts only the filename (e.g., some-folder/file.txt -> file.txt). If enabled, preserves the path in the filename with underscores (e.g., some-folder/file.txt -> some-folder_file.txt). All files are always saved to the root of out/files/ directory.","propertyOrder":50}},"description":"Configure file extraction settings"},"createConfigurationRowSchema":null,"configurationDescription":"Configuration description.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["list_files","load_csv_columns","testConnection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-ftp-v2","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-ftp-v2","name":"developer-portal-v2/keboola.ex-ftp-v2","tag":"0.0.6","options":{},"digest":"sha256:5cee5b736352b6a0592b9397dec3f38c3e90cc8fdb16379ff04a2fbde56f8d90"},"publishingStatus":"public","icon":{"32":null,"64":null,"128":null}},{"id":"blueskydigital.wr-ftp","vendor":{"id":"blueskydigital","name":"Blue Sky Digital, LLC","address":"7585 E. Redfield Rd.\nSuite 209\nScottsdale AZ 85260\nUSA","email":"hello@bluesky.pro","type":"other"},"version":25,"name":"FTP/FTPS","type":"writer","shortDescription":"A FTP/FTPS writer for KBC Storage objects.","longDescription":"A FTP/FTPS Keboola Connect Writer component that handles data writing from KBC storage to a remote location via FTP/FTPS protocol.","licenseUrl":"https://github.com/radektomasek/keboola-wr-ftp-ftps/blob/master/LICENCE.md","documentationUrl":"https://github.com/radektomasek/keboola-wr-ftp-ftps/blob/master/README.md","sourceCodeUrl":null,"requiredMemory":"512m","processTimeout":3600,"features":["container-root-user","dev-branch-configuration-unsafe"],"encryption":true,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["File Storage"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput"],"imageParameters":{},"stackParameters":{},"testConfiguration":{},"configurationSchema":{"type":"object","title":"Parameters","required":["username","#password","remote_host","remote_path","protocol","port","append_datetime","datetime_format","placeholder","retries","verbose","timeout","upload_directory"],"properties":{"port":{"type":"integer","title":"Port","default":21,"maximum":65535,"minimum":1},"retries":{"type":"integer","title":"Connection retries","default":5,"maximum":10,"minimum":1},"timeout":{"type":"integer","title":"FTP Timeout","default":10000,"maximum":50000,"minimum":1000},"verbose":{"enum":[false,true],"type":"boolean","title":"Verbose","default":false},"protocol":{"enum":["ftp","ftps","ftps_debug"],"type":"string","title":"Protocol"},"username":{"type":"string","title":"Username","default":"","minLength":1},"#password":{"type":"string","title":"Password","format":"password","default":"","minLength":1},"placeholder":{"type":"string","title":"Placeholder","default":"","minLength":0},"remote_host":{"type":"string","title":"Remote host","default":"","minLength":1},"remote_path":{"type":"string","title":"Remote path","default":"/","minLength":1},"append_datetime":{"enum":[false,true],"type":"boolean","title":"Append datetime","default":false},"datetime_format":{"type":"string","title":"Datetime format","default":"YYYYMMDD_HHmmss","minLength":1},"upload_directory":{"enum":[false,true],"type":"boolean","title":"Upload the whole data dir at once","default":false}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/blueskydigital.wr-ftp","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/blueskydigital.wr-ftp","name":"developer-portal-v2/blueskydigital.wr-ftp","tag":"latest","options":{},"digest":"sha256:f73412eb28eaa1c4233d2f6f8c9a385c4f35d1ebe556f1aaf55cfb0ac3158244"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/blueskydigital.wr-ftp/32/1576677109421.png","64":"https://ui.keboola-assets.com/developer-portal/icons/blueskydigital.wr-ftp/64/1576677109421.png","128":null}},{"id":"geneea.nlp-analysis-v2","vendor":{"id":"geneea","name":"GENEEA Analytics s.r.o.","address":"Ostrovní 2064/5\n110 00 Praha 1\nCzech Republic","email":"info@geneea.com","type":"other"},"version":35,"name":"Geneea NLP Analysis","type":"application","shortDescription":"Analyze text: identify language, detect topics, find names of places, organizations or your custom entities, detect sentiment.\nThe app is free for a limited non-commercial trial. See documentation for more info on pricing.","longDescription":"## Geneea NLP Analysis\n\nAnalyze text: identify language, detect topics, find names of places, organizations or your custom entities, detect sentiment.\n\nDo you need to understand trends in a large stream of customer feedback? Detect unexpected problems your customers complain about? Quickly focus on negative reviews or find which competitors are mentioned in reviews? Thanks to Geneea App, you are able to do all of this in just a few clicks. \n\nFeel free to try the system in our [live demo](https://demo.geneea.com) or browse the [result of an analysis of a large dataset](https://frida.geneea.com/index.html#/airlines?s=eyJxIjoiKjoqIiwiZiI6W119).\n\n## Pricing\n\nYou can evaluate our app by analyzing up to 10 MB of text. Please contact us if you need a higher trial limit. Note that the purpose of this evaluation is exactly what it says: evaluation, i.e., the results cannot be used for any commercial purposes.\n\nFor pricing, contact us at info@geneea.com \n\n## Models and customizations\n\nPlease note that our standard models are optimized for three domains: news articles, hospitality customer care and transportation customer care. If used in other areas, the obtained results will not be as good as they could be. In order to ensure the best possible outcome for your domain, we will be happy to provide you with a customized model. We offer a basic customization for free. Contact us at info@geneea.com.\n\n## Features\n\n![alt Screenshot - Geneea Demo](https://github.com/Geneea/keboola-nlp-analysis/raw/master/img/demo-screenshot.png)\n\n### Identify Language\n\nDetect the language of a text. Our platform currently distinguishes more than 30 languages.\n\n### Topic Tagging\n\nThe objective of a topic tag is to describe the content of a text, whether an email, commercial\ncontract, or a news article. A tag can be _cancel subscription_, _safe car_, or _terrible cook_.\nAgain, we can easily adjust tags to your domain and to your needs.\n\n### Extract Entities\n\nSearch your texts for names of people, locations, products, dates, account numbers, etc.\nWe can adjust the detectors to your needs (e.g., taking into account your products) or even\nidentify a new type of entity, whether it should be financial products or offending expressions.\n\n### Relation Analysis\n\nExtract basic attributes of events and properties of things. Examples:\n\n  * _I can fully recommend their delicious scrambled eggs._ &rarr; `recommend(SUBJECT:I, OBJECT:scrambled eggs)`\n  * _My pizza was completely burned._ &rarr; `burn(OBJECT:pizza)`\n  * _They brought me a completely burnt pizza._ &rarr; `burnt(OBJECT:pizza)`\n\n### Detect Sentiment\n\nDetect the emotions contained in the text. Was the author happy (_I loved it._),\nneutral (_We went to London._) or unhappy (_The lunch was not good at all._) with their experience? You can detect sentiment of reviews, feedback or customer service inquiries.\n\n","licenseUrl":"https://www.geneea.com/terms.html","documentationUrl":"https://github.com/Geneea/keboola-nlp-analysis/blob/master/description.md","sourceCodeUrl":"https://github.com/Geneea/keboola-nlp-analysis","requiredMemory":"512m","processTimeout":21600,"features":["container-root-user","dev-branch-configuration-unsafe"],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"out","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["appInfo.dataOut","appInfo.dataIn","genericDockerUI","genericDockerUI-tableInput"],"imageParameters":{},"stackParameters":{"connection.keboola.com":{"#user_key":"KBC::ComponentSecure::eJwBTAGz/mE6Mjp7aTowO3M6MTE2OiLe9QIAudFCqrkP5+kEMACuRKTAqBqE6v3kH6fiKwI6IAxmcjFfpvsEKXTyxZQVwCTGWlnwKDHNg8CGogi/p7xWKAW67GT1Kk5RMbthJ2PYXDHR2CRMC5P8NOhNY3aAQ/1cXOxgVH3G+8hBy2jUzhCYp9c6vyI7aToxO3M6MTg0OiIBAgMAeGVez2/nHl36SUiQv1vPJofmrO9Ycm3Z8Zb1zMOFZ23AAWh+RJqAVqfLpA1RXZfPHMgAAAB+MHwGCSqGSIb3DQEHBqBvMG0CAQAwaAYJKoZIhvcNAQcBMB4GCWCGSAFlAwQBLjARBAyZU8xWureSA0sNFoICARCAO8JxOGpQoBJx+0vysVpDj/o8Xh9n1WcTytekmJ2Dllou48USBbnvr86G1KtUcyLz7E6NTlHJ8cu8rr5FIjt9nI2Npw=="},"connection.eu-central-1.keboola.com":{"#user_key":"KBC::ComponentSecure::eJwBTAGz/mE6Mjp7aTowO3M6MTE2OiLe9QIA+Uol+GB/FK8TGq/7k/Rw6SAa4MBtEmb7ID9n6yhVilO6Kc3s7V+QAMk6Hf6kBAr99Y71mpegVdisckpFtd3cSPC5+K2a0uRS0uT2fckaxU3CqRdQ3OjdkJkAkCgoNLwhRo4zLsuXakE2T6GHVMlnuSI7aToxO3M6MTg0OiIBAgMAeCcKZq8J7xzIvh/b2NnAFjRE09IOGnnrGTFztZJ6oh/OAbwJwGB60OsdtUxvfDJL8ZwAAAB+MHwGCSqGSIb3DQEHBqBvMG0CAQAwaAYJKoZIhvcNAQcBMB4GCWCGSAFlAwQBLjARBAw7vUKRTM+74hVsqucCARCAOx1LuzXQ0iC1gn1DfGim2jtzGlmVnsh/qXM4+62hzKUSJ4dukX4MUDV22O/pv94ssLAlH9MbyKvm5WDlIjt9zdqOjg=="},"connection.us-east4.gcp.keboola.com":{"#user_key":"KBC::ComponentSecureGKMS::eJwBbwGQ/mE6Mjp7aToxO3M6MTE2OiLe9QIAnK0HVXidOUnKYU+LNMTdVQWW6fixm6o/hBoEQvTk1fmVys3//5hwxRMBi+What2XMd6awhJUgc0TLWKVvLl7KKvrqQ0UglL6JW7goMqYMHH+AAMa40EqFYnNcZqEuw3M3IdLhjdbxQddfc3F6gR1bCI7aTowO3M6MjE5OiIKJABqs8vgnnjXnHQ04S/a/B9LuYG5IBZbut7jZtutNEhY+mijdRKyAQB02Qga6OckF/dimoUD+87Ux/f3+xXpN0lJ8Gq7ToxcvBjAd6BZf3bhPxt1d+TMraRhtAuB+nxP3ajZr1neUeE3ccEMAn/uC6FlcJ+Xeq/L/3mGZfoHl90xmtMOwpWJ0sAsbScBhDN8rYc2EP0M1v6bpzsyNMS+jaDOq6FFAojilQWPeJ+JjXXd6aM/ea+QpVUw7+oi3TdfkrhDHXLktsoGbm/4ytpoDEYJJo2h6pXi2o4iO32287We"},"connection.europe-west3.gcp.keboola.com":{"#user_key":"KBC::ComponentSecureGKMS::eJwBbwGQ/mE6Mjp7aToxO3M6MTE2OiLe9QIAusLuyldLyJHyKGzR949SH8LbY09OQ+sudVmpsh8Q/gl6DzE2THnzu7/v3nqyBtyZ54x9P261P2/6VOM/EA1FuaRDoJY5rXhQXJkGceTExuDfuUi26aJAsFhSYv5OtWHuj/jw34SK+6F27uR63Gr+nCI7aTowO3M6MjE5OiIKJAAuMnUnS2Sh8lkzmdNHmDhSimW+LCf/21zJijouRvgjsU9jUxKyAQA1Z5UUTAHF4yVpMaSDbb9PSClOlEiZTbx8tnN1OeOacQurcfLwSBN3cT7nlMW9V2P/mzIlAH2usYrKZvhob5GCWLeF/RSgKwYHiSR3+2O6hTf815hKgMppTgqW7sO0PcRVaO0N78GWACX6EqLJkUt5LZuQO84/B286vh7o0qbJfXVE07rn93rjRQ5UpprysTtLAVX7iAmJDbH2iLUiEj3Qvf28FY89hNCBHOQDSWbvppUiO32v77EA"},"connection.north-europe.azure.keboola.com":{"#user_key":"KBC::ComponentSecureKV::eJxLtDK2qs60MrIutjI0NLNSuveViYE53IZ9+j/vv0vqzZ68YdhUt3Pnx0Kz2VopLHfZNWrnKxnFPGGtY5q+LKNQPiw5Yt7XbYdW8/uf+ZiWq/ZhT0Ea07FrshrN54p6Ytw+/ev6P1PoTIKpzLtpwvfbW3Zz58y66qsXvstt7qNf689sOGNh0F01R0tZyTrTyhjoACOg/empebqpeclFlQUl+UVmRgYmKYmmSZaphimmIFUmQFXGRlZK5skGaSmWloYpaZaJJuZpJkmG5oYmpqZGSWYpqZZJBgZK1rUALxBVUA=="}},"testConfiguration":{},"configurationSchema":{},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"Input:\n* `id` - ID of the document\n* `text` - main text of the document\n* `title` - optional title of the document\n* `lead` - optional lead or abstract of the document\n\nInput options:\n* `language` - the language of the text; leave empty for automatic detection\n* `domain` - the domain or type of the text\n* `correction` - indicates whether common typos should be corrected before analysis\n* `diacritization` - before analysing Czech text where diacritics are missing, add all the wedges and accents. For example, _Muj ctyrnohy pritel_ is changed to _Můj čtyřnohý přítel_.\n* `use_beta` - use Geneea's beta server (use only when instructed to do so)\n* `advanced` - additional parameters as a JSON object (use only when instructed to do so)\n\n\nType of analysis:    \n    \n* `sentiment` - detect the emotions contained in the text. Was the author happy (_I loved it._), neutral (_We went to London._) or unhappy (_The lunch was not good at all._) with their experience? You can detect sentiment of reviews, feedback or customer service inquiries.\n\n* `entities` - search your texts for names of people, locations, products, dates, account numbers, etc. We can adjust the detectors to your needs (e.g. taking into account your products) or even identify a new type of entity whether it should be financial products or offending expressions.\n\n* `tags` - the objective of a topic tag is to describe the content of a text whether an email, commercial contract, or a news article. A tag can be _cancel subscription_, _safe car_, or _terrible cook_. Again, we can easily adjust tags to your domain and to your needs.\n\n* `relations` - extract basic attributes of events and properties of things, like `recommend(SUBJECT:I, OBJECT:scrambled eggs)` or `burnt(OBJECT:pizza)`.\n\n\nThe result contains four tables:\n\n* `analysis-result-documents.csv` with document-level results in the following columns:\n    * all `id` columns from the input table (used as primary keys)\n    * `language` detected language of the document, as ISO 639-1 language code\n    * `sentimentValue` detected sentiment of the document, from an interval _\\[-1.0; 1.0\\]_\n    * `sentimentPolarity` detected sentiment of the document (_-1_, _0_ or _1_)\n    * `sentimentLabel` sentiment of the document as a label (_negative_, _neutral_ or _positive_)\n    * `sentimentDetailedLabel` sentiment of the document as a detailed label\n    * `usedChars` the number of characters used by this document\n\n* `analysis-result-sentences.csv` with sentence-level results has the following columns:\n    * all `id` columns from the input table (used as primary keys)\n    * `index` zero-based index of the sentence in the document, (primary key)\n    * `segment` text segment where the sentence is located\n    * `text` the sentence text\n    * `sentimentValue` detected sentiment of the sentence, from an interval _\\[-1.0; 1.0\\]_\n    * `sentimentPolarity` detected sentiment of the sentence (_-1_, _0_ or _1_)\n    * `sentimentLabel` sentiment of the sentence as a label (_negative_, _neutral_ or _positive_)\n    * `sentimentDetailedLabel` sentiment of the sentence as a detailed label\n\n  There are multiple rows per one document. All `id` columns plus the `index` column are part of the primary key.\n\n* `analysis-result-entities.csv` with entity-level results has the following columns:\n    * all `id` columns from the input table (used as primary keys)\n    * `type` type of the found entity, e.g. _person_, _organization_ or _tag_, (primary key)\n    * `text` disambiguated and standardized form of the entity, e.g. _John Smith_, _Keboola_, _safe carseat_, (primary key)\n    * `score` relevance score of the entity, e.g. _0.8_\n    * `entityUid` unique ID of the entity, may be empty\n    * `sentimentValue` detected sentiment of the entity, from an interval _\\[-1.0; 1.0\\]_\n    * `sentimentPolarity` detected sentiment of the entity (_-1_, _0_ or _1_)\n    * `sentimentLabel` sentiment of the entity as a label (_negative_, _neutral_ or _positive_)\n    * `sentimentDetailedLabel` sentiment of the entity as a detailed label\n\n  There are multiple rows per one document. All `id` columns plus `type` and `text` columns are part of the primary key.\n\n  Note that the table also contains topic tags, marked as _tag_ in the `type` column.\n\n* `analysis-result-relations.csv` with relation-level results has the following columns:\n    * all `id` columns from the input table (used as primary keys)\n    * `type` type of the found relation, _VERB_ or _ATTR_, (primary key)\n    * `name` textual name of the relation, e.g. _buy_ or _smart_, (primary key)\n    * `negated` negation flag of the relation, _true_ or _false_, (primary key)\n    * `subject` possible subject of the relation (primary key)\n    * `object` possible object of the relation (primary key)\n    * `subjectType` type of the relation's subject\n    * `objectType` type of the relation's object\n    * `subjectUid` unique ID of the relation's subject\n    * `objectUid` unique ID of the relation's object\n    * `sentimentValue` detected sentiment of the relation, from an interval _\\[-1.0; 1.0\\]_\n    * `sentimentPolarity` detected sentiment of the relation (_-1_, _0_ or _1_)\n    * `sentimentLabel` sentiment of the relation as a label (_negative_, _neutral_ or _positive_)\n    * `sentimentDetailedLabel` sentiment of the relation as a detailed label\n\n  There are multiple rows per one document. All `id` columns plus `type`, `name`, `negated`, `subject`, `object` columns are part of the primary key.\n","configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":[],"fees":true,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/geneea.nlp-analysis-v2","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/geneea.nlp-analysis-v2","name":"developer-portal-v2/geneea.nlp-analysis-v2","tag":"v1.0.0","options":{},"digest":"sha256:b10850f5b2102f265190c6e13982b51ebfb04efa3a83b5b38ec3202211b9e3e8"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/geneea.nlp-analysis-v2/32/1.png","64":"https://ui.keboola-assets.com/developer-portal/icons/geneea.nlp-analysis-v2/64/1.png","128":null}},{"id":"kds-team.app-generative-ai","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":1060,"name":"Generative AI","type":"application","shortDescription":"Query OpenAI and Azure OpenAI services with data provided from your KBC project.","longDescription":"Transform your data with the power of leading AI language models! This Keboola component enables seamless integration with multiple AI providers including OpenAI (GPT-3.5, GPT-4), Azure OpenAI, Google's Gemini, Hugging Face models, and Anthropic's Claude.\r\n\r\n### Key Features\r\n\r\n- **Process Text at Scale**: Analyze, transform, and generate text content using state-of-the-art language models directly within your data pipeline\r\n\r\n- **Ready-to-Use Templates**: Jump-start your implementation with pre-built prompts for common use cases:\r\n  - Topic extraction\r\n  - Sentiment analysis\r\n  - Text summarization\r\n  - Grammar correction\r\n  - Date formatting\r\n  - Diacritics handling\r\n\r\n- **Flexible Configuration**:\r\n  - Fine-tune model parameters (temperature, tokens, etc.)\r\n  - Set token spending limits\r\n  - Configure batch processing\r\n  - Support for incremental loading\r\n\r\n- **Enterprise-Ready**:\r\n  - Seamless integration with your KBC project data\r\n  - Support for primary keys and incremental updates\r\n  - Configurable timeout handling\r\n  - Built-in error handling and retry mechanisms\r\n\r\n### Common Use Cases\r\n\r\n- Content Analysis & Generation\r\n- Data Enrichment\r\n- Text Classification\r\n- Language Translation\r\n- Data Extraction & Transformation\r\n- Sentiment Analysis\r\n- Text Summarization\r\n\r\nWhether you're looking to enhance your data with AI-powered insights, automate content generation, or transform text data at scale, this component provides a robust and flexible solution within your Keboola Connection environment.\r\n\r\n**Keywords**: GenerativeAI NLP LLM TextAnalytics\r","licenseUrl":"https://github.com/keboola/component-generative-ai/blob/main/LICENSE.md","documentationUrl":"https://help.keboola.com/components/applications/ai/generative-ai/","sourceCodeUrl":"https://github.com/keboola/component-generative-ai","requiredMemory":null,"processTimeout":10800,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":true,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"medium","category":null,"categories":["API"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-tableInput","appInfo.beta"],"imageParameters":{},"stackParameters":{"connection.keboola.com":{"#default_api_token":"KBC::ComponentSecure::eJwBUwGs/mE6Mjp7aTowO3M6MTIzOiLe9QIAkSFx0TObinF9pU5EOfqVGxVxQ9oHtob2kz66H1ea2+TEgNlOidcl2oesvjrw9UhC5eMLzR8b3qliRP3bHCvkwx7Dyv8tNcfeH6Mse0n8rMZtEdpLXk52op/sPaq+hldxGuIcglbgZSI1cBM9ayrtHsFgQpyKK9MiO2k6MTtzOjE4NDoiAQIDAHhlXs9v5x5d+klIkL9bzyaH5qzvWHJt2fGW9czDhWdtwAHJDvwu7Y/y5bNeHUZjlcbnAAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMHBh48B5ciNjOLrmKAgEQgDtGF6EbqomKHm8Fj4znfxsdpUGyPHiyt6SBqqJmqWYZDTXNf82NTWD3CJoe4CXd2x+a3kmOLzPnUF5mEyI7feUzjus=","#default_api_token_huggingface":"KBC::ComponentSecure::eJwBUQGu/mE6Mjp7aTowO3M6MTIxOiLe9QIACPbPyCL5hrALIp4ctmHmbvqYiIP/Po1+Sea+8qFKL60wLE8WOsb7TqmnKCboJyG7KgDOWp9MzUyBjwQsPpLe4AR8ms7eAzHuO15yxWdtit9g5gCXBY6ND20o9snjt9OzkOxulfhnAufQfE1So+gNr0eg5AhbIjtpOjE7czoxODQ6IgECAwB4ZV7Pb+ceXfpJSJC/W88mh+as71hybdnxlvXMw4VnbcAB++8hogeQlGOfiBmEsfiqiwAAAH4wfAYJKoZIhvcNAQcGoG8wbQIBADBoBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDLZmO0jRrdp6zfi0mwIBEIA7IyTrTugf40ds4F+CvTco44X/AeT1UZxoDjitfCEgzkmWhRsLiaYiIegZcfDjo0rFMyhofnsBFKL5SdciO33UO5As"},"connection.eu-central-1.keboola.com":{"#default_api_token":"KBC::ComponentSecure::eJwBUwGs/mE6Mjp7aTowO3M6MTIzOiLe9QIATykvp5u8IpYUOlRTAGxY37cWePBMKcbuDeco6xUX83U+h6U8b2i8HYGCIV1vRhLoHVaPtL27iabqu8eVgb06hMdJ+iBMVUXqLDaw5oc/iQChRyQ0FlWWiI8toBP12qu0gu9wUs+tIyDc+5oJEHPYxn5Y+J9KfVIiO2k6MTtzOjE4NDoiAQIDAHgnCmavCe8cyL4f29jZwBY0RNPSDhp56xkxc7WSeqIfzgGa89C3EpEGBQNaieo68TX+AAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMF/q0vdweagfFh6DXAgEQgDvMVhp/Tgkr1qP6oUTJEB4pgF7C9V2u18OTCNIQ8osUG2P5KIH593OH5M8Fs1hX+16U24zbk028ModRTCI7fSdsiuE=","#default_api_token_huggingface":"KBC::ComponentSecure::eJwBUQGu/mE6Mjp7aTowO3M6MTIxOiLe9QIAduSNlB8u5eZ3msxND2AdVTsCKkFAxixDUoJgTxbxMCLPfp6tUdotogYb7HahBwbSTez0itpMi+BE8LQ5X9EBe0gtpNf/N2L6xLHAwYQqsW6tOO8evbtDGuwU4KEjhLivOhV6GgwLbS1xtAg2yGbztwCnLpXrIjtpOjE7czoxODQ6IgECAwB4JwpmrwnvHMi+H9vY2cAWNETT0g4aeesZMXO1knqiH84BylvBi2J7s71CMFWTRnWmKwAAAH4wfAYJKoZIhvcNAQcGoG8wbQIBADBoBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDMkynixE55M7M8XoNAIBEIA7NV778x4fdzPaf3C5uQUv/L+DzUa38L/muLLBSC1MgZSYYDy4cobyVxsqBPHIetuZpY1kE5sTgSgqSg8iO317gocA"},"connection.us-east4.gcp.keboola.com":{"#default_api_token":"KBC::ComponentSecureGKMS::eJwBdgGJ/mE6Mjp7aToxO3M6MTIzOiLe9QIAJNe4sQMGQlHUFZsl/AIuan/uuSZPaipoN6Tb6V2iyzDOaxqr0bfpK1KcJzldMipdTAb9JzUI5jMmqzBTzHLvwOvYhany5BTP0uKtkuB3J2hvoTSS1AGKFJAPIZKEAgcR8sXB7z/6nkAvES3qLag5aTraruif4D0iO2k6MDtzOjIxOToiCiQAarPL4B0Dkw1VjaTCWPhj8QO+X5/HGF6Mzl/uvndzrSAW0gESsgEA0XqvHmDTi2G137bqIFxWl+tbH8b3XYdWM+Txd64knEh1eL5JYrrA9/no3jMj9xDAqZClIeLD/pnkYkykRtD3oIWUDfEL/TCcold/1JiJJskjvQoq4yfnW07z23p/p6ai4E0Ld7oMOmyWsILmAqL3U9/u6UYsoP2AK/RDj+qso3q+boHw23UvfdbQwvxGTQK5Ll4UzJ6wxVkL7Jr+ZXpX44hfR4UCaMkY46HdFblxxhxXIjt9iq22Uw==","#default_api_token_huggingface":"KBC::ComponentSecureGKMS::eJwBdAGL/mE6Mjp7aToxO3M6MTIxOiLe9QIAVwPOZWmVhAanu/ICi44ZtNY0b8VZpIm8hMdmOei2NUzViyoMky6Y/liGMWkuCiYG5QciUYXEX0VpstUJAe4zAJfxxOQU7Mom6JwWj6ShwDUwcZN5sfyXVjZiJUimSsmJ90M5XBxyVJnHW2MBSn9TNvC+sipkIjtpOjA7czoyMTk6IgokAGqzy+A3/YZutMMO/L7JpQVMw4Xdn/CGHRV9TD/sd5pdsE6MErIBAL8H0LS6bfQtADM/9NQe5FW5WmErJ2YsT5VPLfGdH3T1U2cTIQztMUp2k8Yi0+eVsatq/uSEj0UH5TtEIcsO/aJWAe6eBmx1YAEYkuuvWwH23Zcew/0d+Z8mPPqUi50bacd+UTwCs8Xp92Voxa1FchZ7J140IX3HrQTZKbkp/6R+lAeOgHNmgExOpvAZjf4hMJMq1SyubFGFwTXdoFF2C68aw0Lkucs0zKu9G0T7x0l4qSI7fegsqhc="},"connection.europe-west3.gcp.keboola.com":{"#default_api_token":"KBC::ComponentSecureGKMS::eJwBdgGJ/mE6Mjp7aToxO3M6MTIzOiLe9QIAREbrooWNd33z6SAl8LOTqEvrMdPfqDCOpKyoNYGT554kHjsP3Rmz29hTzjyfiQ1tMKZ6eEmw6LGkJsoWDup9Y+49e0eLvtrUvIaVueIR8I/rp6ds3HskV36puWtoNxFg/jvr6a9wZSypzc0XY9udKWzgeJrtXvEiO2k6MDtzOjIxOToiCiQALjJ1J004AxPV9Ud0OZ7fQuBA+fxZzPJZeY8vOl0UNWpjZt8SsgEA5AmrTu3DO15FDpAj2sQNpcU+dBnNZqaMQZvqNMK9xiKXemmG/JrbT0IGeEggJVpPqOABs5d/ZQz/fKCzC6Gwg1+Oh4+QWJU2wCXQwlW24K8OyijBQmAU0e/97U2DUBEvUZ6/bEkAMMu99JwV+MMza6K8XYkGhUPJ0mUgCNwhaC3VfOncPuyQBZq0ixKew1WSob1Dq01YUjxBRXKQBcGeonB/v28JT1n6fZLfyByTSkVlIjt93Uixmg==","#default_api_token_huggingface":"KBC::ComponentSecureGKMS::eJwBcwGM/mE6Mjp7aToxO3M6MTIxOiLe9QIAqxF4Sj1Hpe74b1vAtG65sxeFkIW5gYnaefsM3zJjknHHnNy7UzrhbgHeDyPk914wTPYtuMEIxlhix4Qn6BOsaruOCymbC9PWFs7gIk7ajmpx2DUM0WUMN7qqLzLbnnRGgA95y1DzAO26/rKWLVUaiWhepqceIjtpOjA7czoyMTg6IgokAC4ydSctGq2/dfHWLMxLVACF7VVyV9Un6RGMmS5AfyaRLu1AErEBAOQJq06Q2H4j2iQMjyNQJ1oxuuuqJPbhW3a96+MQZH6WDPAjX3zLyFzAk9BAOSefr3/wZbR5wDv2Y/GgqaojRtc01GBG7DNnfzA/t7CBZM31PP4KhNLIz5LGrJLGGMk+SQY4Lxgj1021SG26fzZXTHsT1ekvkGnT67DXNvpEWP1+m3Nf0PSmREimlBBO2fCJ5RSQEuJgHNGrFrMYX52ULAnZy4wRzRSb1xxiVidrIPRRIjt9BFSs4A=="},"connection.north-europe.azure.keboola.com":{"#default_api_token":"KBC::ComponentSecureKV::eJwB4AAf/2E6Mzp7aToyO3M6MTIzOiLe9QIAmbxvr0U70A+S/dzD8w+tg8EDYefZSFuU8/5EGI4cCoi9075KzTK7FhSmRa7D2w/U9gk1gFfh7n7vkPYveheWDlixa1LuWcGaq9OMS2u+Xzf73DdtUTgDK9AdIJoer3hCX+lTzZjeQz/lZ+zmtoffm7xZ/PZS9m0iO2k6MztzOjI2OiJnZW4tZW5jcnlwdG9yNjY3ZTU5MmU4Mjk5NCI7aTo0O3M6MzI6IjI0ODA1OTBlMjA2MTQ0NWJiZGQxZTBjYTljMjMxNDNmIjt9yhhcvw==","#default_api_token_huggingface":"KBC::ComponentSecureKV::eJxLtDK2qs60MrIutjI0MrRSuveVicF3dn8zK0uM+4Z1ZT1mknp3fvy8IX/2cD9rg6Wego/NQpZzWSWMpw3tFh5Vifwe8oLTkkf9QWLw5VRROyWFs6ZiF9buFjDzuhEb/mD5ydSilw+Fv+c//BglPSt7+w2m/doRkSdeRlhISd8LsQuyvMvxbKdobqFgd7fjQSXrTCtjoCuMzKyU0lPzdFPzkosqC0ryi8zMkiyTUi0MzFNMkpJBqkyAqoyNrJQMzJOSEk0sLA1TjIxMzA2NLcwsLNJMUlIs0iwTjdPMzZWsawGsr1L8"}},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Data Source Configuration","properties":{"authentication":{"title":"Authentication","required":["service","#api_token"],"properties":{"service":{"enum":["openai","azure_openai","google","huggingface","anthropic"],"type":"string","title":"AI Service Provider","default":"openai","options":{"enum_titles":["OpenAI","Azure OpenAI","Google (Only available on US stack)","Hugging Face","Anthropic"]},"propertyOrder":1},"api_base":{"type":"string","title":"API Base","options":{"dependencies":{"service":"azure_openai"}},"propertyOrder":3},"#api_token":{"type":"string","title":"API Key","format":"password","propertyOrder":2},"api_version":{"type":"string","title":"API Version","default":"2023-05-15","options":{"dependencies":{"service":"azure_openai"}},"propertyOrder":5},"deployment_id":{"type":"string","title":"Deployment ID","options":{"dependencies":{"service":"azure_openai"}},"propertyOrder":4}},"propertyOrder":1}}},"configurationRowSchema":{"type":"object","title":"Component configuration","required":["additional_options","prompt_options","destination"],"properties":{"model":{"enum":[],"type":"string","title":"Model","options":{"async":{"label":"List models","action":"listModels"}},"description":"The model which will generate the completion. <a href=\"https://beta.openai.com/docs/models\">Learn more.</a>","propertyOrder":1},"destination":{"type":"object","title":"Destination","required":["output_table_name","incremental_load","primary_keys_array"],"properties":{"incremental_load":{"type":"boolean","title":"Incremental Load","format":"checkbox","description":"If incremental load is turned on, the table will be updated instead of rewritten. Tables with a primary key will have rows updated, tables without a primary key will have rows appended.","propertyOrder":110},"output_table_name":{"type":"string","title":"Storage Table Name","options":{"tooltip":"It must start with a letter and can include only letters, numbers or underscores. No spaces, dots or special characters are allowed. If left empty, a name will be generated automatically."},"pattern":"^$|^[A-Za-z][A-Za-z0-9_]{0,254}$","description":"Name of the table stored in Storage.","propertyOrder":100},"primary_keys_array":{"type":"array","items":{"type":"string"},"title":"Primary Keys","format":"select","options":{"tags":true,"async":{"label":"Re-load columns","action":"listPkeys"}},"description":"You can enter multiple columns seperated by commas at once e.g., id, other_id. If a primary key is set, updates can be done on the table by selecting incremental loads. The primary key can consist of multiple columns. The primary key of an existing table cannot be changed.","uniqueItems":true,"propertyOrder":120}}},"endpoint_url":{"type":"string","title":"Endpoint URL","options":{"dependencies":{"model":"custom_model"}},"description":"You can find the endpoint url in your <a href=\"https://ui.endpoints.huggingface.co/\">HuggingFace web console.</a>","propertyOrder":2},"prompt_options":{"type":"object","title":"Prompt Options","properties":{"prompt":{"type":"string","title":"Prompt","format":"textarea","default":"Extract keywords from this text:\n\n\"\"\"\n[[INPUT_COLUMN]]\n\"\"\"","options":{"input_height":"250px"},"description":"The prompt and data input pattern. Refer to the input column using placeholder [[INPUT_COLUMN]]. The input table must contain the referenced column. You can find best practices for prompt engineering in <a href=\"https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-openai-api\">OpenAI help pages</a>.","propertyOrder":20},"validation_button":{"type":"button","format":"sync-action","options":{"async":{"label":"Test prompt","action":"testPrompt"}},"propertyOrder":30}},"propertyOrder":20},"max_token_spend":{"type":"integer","title":"Maximum token spend (Optional)","default":0,"description":"If set to value greater than 0, the component will stop processing rows after reaching the limit of allowed tokens. This is only supported for OpenAI Service.","propertyOrder":40},"prompt_templates":{"type":"object","title":"Prompt Templates","properties":{"prompt_template":{"enum":["timestamp_from_date","remove_diacritics","add_diacritics","extract_topics","sentiment_scoring","text_shortener","grammar_correction"],"type":"string","title":"Prompt Template","options":{"enum_titles":["Timestamp from date","Remove Diacritics","Add Diacritics","Extract Topics","Sentiment Scoring","Text Shortener","Grammar Correction"]},"description":"Select the template to load. You can then copy the template into the Prompt window.","propertyOrder":1},"load_prompt_template":{"type":"button","format":"sync-action","options":{"async":{"label":"Load prompt template","action":"getPromptTemplate"}},"propertyOrder":2}},"propertyOrder":15},"additional_options":{"type":"object","title":"Model Options","required":["temperature","top_p","frequency_penalty","presence_penalty"],"properties":{"top_p":{"type":"number","title":"Top P","default":1,"description":"An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered.","propertyOrder":4},"timeout":{"type":"number","title":"Request Timeout","default":30,"description":"Seconds to wait for API to respond. This is a workaround for OpenAI API not responding sometimes.","propertyOrder":7},"max_tokens":{"type":"number","title":"Max Tokens","default":1000,"description":"The maximum number of tokens to generate in the completion.\n\nThe token count of your prompt plus max_tokens cannot exceed the model's context length. If you get empty response, try to increase the value yet.","propertyOrder":2},"temperature":{"type":"number","title":"Temperature","default":0.6,"description":"What sampling temperature to use [0-1]. Higher values means the model will take more risks. Try 0.9 for more creative applications, and 0 (argmax sampling) for ones with a well-defined answer.","propertyOrder":3},"presence_penalty":{"type":"number","title":"Presence Penalty","default":0,"description":"Number between -2.0 and 2.0. Positive values penalize new tokens based on whether they appear in the text so far, increasing the model's likelihood to talk about new topics.","propertyOrder":6},"reasoning_effort":{"enum":["minimal","low","medium","high"],"type":"string","title":"Reasoning Effort","default":"medium","options":{"enum_titles":["Minimal","Low","Medium","High"]},"description":"The effort level for reasoning models (lower levels decrease token spend). This is only supported for reasoning models in the OpenAI Service. <a href=\"https://platform.openai.com/docs/guides/reasoning\">Learn more</a>","propertyOrder":1},"frequency_penalty":{"type":"number","title":"Frequency Penalty","default":0,"description":"Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim.","propertyOrder":5}},"propertyOrder":10}}},"createConfigurationRowSchema":null,"configurationDescription":"### Parameters:\n\n#### AI Service Provider: OpenAI\n\n- **API Key (`#api_token`):** Obtain your API key from the [OpenAI platform settings](https://platform.openai.com/account/api-keys).\n\n#### AI Service Provider: Azure OpenAI\n\n- **API Key (`#api_token`)**\n- **API Base (`api_base`)**\n- **Deployment ID (`deployment_id`)**\n- **API Version (`api_version`):** API version used to call the Completions endpoint. Check the list of supported API versions in the [Microsoft Azure documentation](https://learn.microsoft.com/en-us/azure/ai-services/openai/reference?WT.mc_id=AZ-MVP-5004796#completions).\n\nFor information on retrieving your API key, API Base, and Deployment ID, refer to the [Microsoft Azure documentation](https://learn.microsoft.com/cs-cz/azure/ai-services/openai/quickstart?tabs=command-line&pivots=programming-language-python#retrieve-key-and-endpoint).\n\n- **Model (`prompt`)** You can use the sync action to load available models for your account.\n- **Prompt (`prompt`):** The prompt and data input pattern. Use the placeholder [[INPUT_COLUMN]] to refer to the input column. The input table must contain the referenced column.\n- **Incremental Load (`incremental load`):** If enabled, the table will update rather than be overwritten. Tables with primary keys will update rows, whereas those without a primary key will append rows.\n- **Output Table Name (`output_table_name`)**\n- **Primary Keys Array (`primary_keys_array`):** You can input multiple columns separated by commas, e.g., id, other_id. Selecting incremental loads allows for table updates if a primary key is set. A primary key can have multiple columns, and the primary key of an existing table is immutable.\n- **Predefined Model (`predefined_model`):** The model that will generate the completion. [Learn more](https://beta.openai.com/docs/models).\n\n**Additional Options:**\n\n- **Max Tokens (`max_tokens`):** Maximum number of tokens for the completion. The token count of your prompt plus `max_tokens` should not exceed the model's context length. Most models support up to 2048 tokens, with the newest ones supporting 4096.\n- **Temperature (`temperature`):** Sampling temperature between [0-1]. Higher values result in riskier outputs. Use 0.9 for creativity, and 0 for well-defined answers.\n- **Top P (`top_p`):** Nucleus sampling, where only tokens with top_p probability mass are considered. For instance, 0.1 means only the top 10% probability mass tokens are evaluated.\n- **Frequency Penalty (`frequency_penalty`):** A number between -2.0 and 2.0. Positive values penalize frequently occurring tokens in the current text, reducing repetition.\n- **Presence Penalty (`presence_penalty`):** A number between -2.0 and 2.0. Positive values penalize tokens already present in the text, encouraging diverse topics.\n- **Request Timeout (`request_timeout`):** Seconds to wait for API to respond. This is a workaround for OpenAI API not responding sometimes.\n\n---","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["getPromptTemplate","listModels","listPkeys","testPrompt"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.app-generative-ai","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.app-generative-ai","name":"developer-portal-v2/kds-team.app-generative-ai","tag":"0.5.10","options":{},"digest":"sha256:e4352f18e1d69ff8cd575883b33bad383102b66684f6043dc4efa5b31d02cc1b"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-generative-ai/32/1698150860079.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-generative-ai/64/1698150860079.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-generative-ai/128/1698150860079.png"}},{"id":"ex-generic-v2","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":127,"name":"Generic","type":"extractor","shortDescription":"Importing data from almost any REST API and countless other APIs.","longDescription":"This component acts like a customizable HTTP REST client. Offering a vast amount of configuration options, it can extract data from virtually any web API within an hour. \n\nWe strongly recommend you configure your first Generic Extractor using our [tutorial](https://developers.keboola.com/extend/generic-extractor/tutorial/).\n\nTo configure the extractor, you only need \n\n- to be familiar with JSON, and \n- have the documentation of your chosen API at hand. The API should be \n[RESTful](https://en.wikipedia.org/wiki/Representational_state_transfer) and, more or less, follow the HTTP specification.\n\nEach configuration of the Generic extractor can be published as a new standalone component in Keboola Connection.\n","licenseUrl":"https://github.com/keboola/generic-extractor/blob/master/LICENSE","documentationUrl":"https://help.keboola.com/components/extractors/generic-extractor/","sourceCodeUrl":"https://github.com/keboola/generic-extractor","requiredMemory":"4096m","processTimeout":54000,"features":["container-root-user"],"encryption":true,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"hard","category":null,"categories":["API"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericUI","legacyHasRun","genericVariablesUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":{},"configurationSchema":{},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":["load_from_curl","infer_mapping","test_request","perform_function"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/ex-generic-v2","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/ex-generic-v2","name":"developer-portal-v2/ex-generic-v2","tag":"4.6.7","options":{"region":"us-east-1"},"digest":"sha256:54d5c6b1ccdbd35232a1799dab4c895c33e8ec378a0efa91a7e8ec586f1607ca"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/ex-generic-v2/32/1677062681956.png","64":"https://ui.keboola-assets.com/developer-portal/icons/ex-generic-v2/64/1677062681956.png","128":"https://ui.keboola-assets.com/developer-portal/icons/ex-generic-v2/128/1677062681956.png"}},{"id":"kds-team.wr-generic","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":427,"name":"Generic","type":"writer","shortDescription":"Send data to REST-like APIs as either JSON or a binary payload.","longDescription":"The Generic Writer allows sending data to REST-like APIs as either JSON or a BINARY payload. Choose the HTTP method,\ndefine custom parameters and headers, and use dynamic functions. It supports automatic conversion from CSV to JSON structures and \n request throttling.","licenseUrl":"https://github.com/keboola/component-generic/blob/main/LICENSE.md","documentationUrl":"https://help.keboola.com/components/writers/generic-writer/","sourceCodeUrl":"https://github.com/keboola/component-generic","requiredMemory":"512m","processTimeout":54000,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["API"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput","genericVariablesUI","appInfo.dataOut"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"## Data Transmission Methods\n\nThe data can be sent in two ways:\n\n1. **Send all content at once** - either as binary or JSON in chunks.\n2. **[Iterate](/extend/generic-writer/configuration/#iterate-by-columns) through each row** - where data is sent in\n   iterations based on the input data. By default, **1 row = 1 iteration**.\n    - This allows dynamic endpoint changes using placeholders, e.g., `www.example.com/api/user/{{id}}`.\n    - Enables sending data with different user parameters present in the input table.\n\n### Supported Content Types\n\n- `JSON` - The input table is converted into JSON (see `json_mapping`) and sent as `application/json`.\n  See [example 001](https://bitbucket.org/kds_consulting_team/kds-team.wr-generic/src/master/docs/examples/001-simple-json/).\n- `JSON_URL_ENCODED` - The input table is converted into JSON and sent as `application/x-www-form-urlencoded`.\n  See [example 021](https://bitbucket.org/kds_consulting_team/kds-team.wr-generic/src/master/docs/examples/021-simple-json-url-encoded-form/).\n- `BINARY` - The input table is sent as binary data (similar to `curl --data-binary`).\n  See an [example](https://bitbucket.org/kds_consulting_team/kds-team.wr-generic/src/master/tests/functional/binary_simple/).\n- `BINARY-GZ` - The input is sent as gzipped binary data.\n  See an [example](https://bitbucket.org/kds_consulting_team/kds-team.wr-generic/src/master/tests/functional/binary_gz/).\n- `EMPTY_REQUEST` - Sends empty requests, usefull for triggerring webhooks, DELETE calls, etc.\n    - The number of requests matches the number of rows in the input.\n    - Works well with `iterate_by_columns` enabled to trigger multiple endpoints.\n    - See [example 022](https://bitbucket.org/kds_consulting_team/kds-team.wr-generic/src/master/docs/examples/022-empty-request-iterations-delete/).\n\n### Example Configuration\n\nThis configuration demonstrates:\n- Imitating basic authorization\n- JSON posts\n- Automatic data type inference\n\n```json\n{\n  \"api\": {\n    \"base_url\": \"https://api-demo.com\"\n  },\n  \"user_parameters\": {\n    \"#token\": \"XXXXXX\"\n  },\n  \"request_parameters\": {\n    \"method\": \"POST\",\n    \"endpoint_path\": \"/v1/customers/events\",\n    \"headers\": {\n      \"Authorization\": {\n        \"attr\": \"#token\"\n      },\n      \"Content-type\": \"application/csv\"\n    },\n    \"query_parameters\": {}\n  },\n  \"request_content\": {\n    \"content_type\": \"JSON\",\n    \"json_mapping\": {\n      \"nesting_delimiter\": \"__\",\n      \"chunk_size\": 1,\n      \"column_data_types\": {\n        \"autodetect\": true,\n        \"datatype_override\": []\n      },\n      \"request_data_wrapper\": \"\",\n      \"column_names_override\": {}\n    },\n    \"iterate_by_columns\": []\n  }\n}\n```\n\n\n### Example with Iterations\n\n```json\n{\n  \"api\": {\n    \"base_url\": \"https://api-demolcom\"\n  },\n  \"user_parameters\": {},\n  \"request_parameters\": {\n    \"method\": \"POST\",\n    \"endpoint_path\": \"/v1/customers/{{user_id}}/events\",\n    \"headers\": {},\n    \"query_parameters\": {}\n  },\n  \"request_content\": {\n    \"content_type\": \"JSON\",\n    \"json_mapping\": {\n      \"nesting_delimiter\": \"_\",\n      \"chunk_size\": 1,\n      \"column_data_types\": {\n        \"autodetect\": true,\n        \"datatype_override\": []\n      },\n      \"request_data_wrapper\": \"\",\n      \"column_names_override\": {}\n    },\n    \"iterate_by_columns\": [\n      \"user_id\"\n    ]\n  }\n}\n```","configurationFormat":"json","emptyConfiguration":{"parameters":{"api":{"base_url":"https://example.com","default_headers":{"Authorization":{"attr":"#token"}}},"request_content":{"content_type":"JSON","json_mapping":{"chunk_size":1,"column_data_types":{"autodetect":true,"datatype_override":[{"type":"string","column":"phone"},{"type":"number","column":"rank"},{"type":"bool","column":"is_active"}]},"nesting_delimiter":"_","column_names_override":{}},"iterate_by_columns":["id"]},"user_parameters":{"date":{"args":[{"args":["yesterday","%Y-%m-%d"],"function":"string_to_date"},"T"],"function":"concat"},"#token":"Bearer 123456"},"request_parameters":{"method":"POST","endpoint_path":"/customer/[[id]]","query_parameters":{"date":{"attr":"date"}}}}},"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":427,"uri":"docker/kds-team.wr-generic","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.wr-generic","name":"developer-portal-v2/kds-team.wr-generic","tag":"1.6.6","options":{},"digest":"sha256:2476df5ea771c9c664034a533f9713284981280f46f319152a1c1c157a778c06"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.wr-generic/32/1623157538168.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.wr-generic/64/1623157538168.png","128":null}},{"id":"keboola.ag-geocoding","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":34,"name":"Geocoding Augmentation","type":"extractor","shortDescription":"Geocoding of locations to coordinates and vice versa.","longDescription":"This component provides additional, detailed data about locations specified by their coordinates, addreses and names. \n\n*For example, by querying for The White House, you will obtain its latitude and longitude (38.897676, -77.03653) and its address (1600 Pennsylvania Avenue Northwest, Washington, US).*\n\n![Table screenshot](https://d3iz2gfan5zufq.cloudfront.net/images/components-desc/keboola.ag-geocoding-3.png)\n\nTo configure the extractor, you need to have\n\n- a table with your data (either one column with textual information about the locations, or two columns with latitude and longitude), and \n- an account and API key (if required by your chosen provider).\n\nSupported providers: \n\n- API key required: [Google Maps](https://developers.google.com/maps/documentation/geocoding/intro), [Google Maps Business](https://developers.google.com/maps/premium/faq#getting_started), [Bing Maps](https://msdn.microsoft.com/en-us/library/ff701733.aspx), [MapQuest](https://www.mapquestapi.com/geocoding/), [TomTom](http://www.programmableweb.com/api/tomtom-geocoding), and [OpenCage](https://geocoder.opencagedata.com/) \n- No API key needed: [Yandex](https://tech.yandex.com/maps/doc/geocoder/desc/concepts/About-docpage/) and [OpenStreetMap](http://wiki.openstreetmap.org/wiki/Nominatim)\n\nUsage limits and the result data may differ between various providers.\n","licenseUrl":"https://github.com/keboola/geocoding-augmentation/blob/master/LICENSE","documentationUrl":"https://help.keboola.com/extractors/other/geocoding-augmentation/","sourceCodeUrl":"https://github.com/keboola/geocoding-augmentation","requiredMemory":null,"processTimeout":36000,"features":["container-root-user","has-sample-data"],"encryption":true,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"medium","category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput","genericDockerUI-tableOutput"],"imageParameters":{},"stackParameters":{},"testConfiguration":{},"configurationSchema":{"type":"object","title":"Parameters","required":["method","provider","locale","#apiKey","clientId","#privateKey"],"properties":{"locale":{"type":"string","title":"Locale","default":"","description":"Use only if required by your provider; if unsure, leave it empty or use `us`."},"method":{"enum":["geocode","reverse"],"type":"string","title":"Method","default":"geocode","description":"Select `geocode` to find coordinates for your locations; select `reverse` to find locations for your coordinates."},"#apiKey":{"type":"string","title":"API Key","default":"","description":"Use only if required by your chosen provider."},"clientId":{"type":"string","title":"Client ID","default":"","description":"Use only for Google Maps Business."},"provider":{"enum":["google_maps","google_maps_business","bing_maps","yandex","map_quest","tomtom","opencage","openstreetmap"],"type":"string","title":"Provider","default":"google_maps","description":"Select a provider."},"#privateKey":{"type":"string","title":"Private Key","default":"","description":"Use only for Google Maps Business."}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"## Augment Locations\nIn this case, specify the location. The extractor will fetch its geographical latitude and longitude \nusing a specified provider.\nSpecify one or more tables which have exactly one column with textual specification of the location. \nIf the source table does not meet these requirements, \nedit the [input mapping](https://help.keboola.com/manipulation/transformations/mappings/#input-mapping) details accordingly. \n\n## Augment Coordinates\nIn this mode of operation, specify the geographical latitude and longitude. The extractor\nwill then fetch information about the closest place found on the map of the given provider.\nSpecify one or more tables which have exactly two columns; the first column with a latitude, the second \none with a longitude. If the source table does not meet these requirements, edit the input mapping details accordingly. \n\n## Providers\nIn the component configuration, specify different providers of the location data. Usage limits and the result data may differ between various providers. \nSome of the providers require the `locale` parameter to be set. If you are unsure, leave it empty or use `us`. \nThe following are the available providers that will be queried for the data:\n\n- **google_maps** - [Google Maps](https://developers.google.com/maps/documentation/geocoding/intro) provider, needs parameter **apiKey** with your access key to the API (you need \"Server\" type of key)\n- **google_maps_business** - [Google Maps](https://developers.google.com/maps/premium/faq#getting_started) for Business provider, needs parameters **clientId** and **privateKey**\n- **bing_maps** - [Bing Maps](https://msdn.microsoft.com/en-us/library/ff701733.aspx) provider, needs attribute **apiKey**\n- **yandex** - [Yandex](https://tech.yandex.com/maps/doc/geocoder/desc/concepts/About-docpage/) provider, does not need any API key, locale parameter may be one of these values: uk-UA, be-BY, en-US, en-BR, tr-TR\n- **map_quest** - [MapQuest](https://www.mapquestapi.com/geocoding/) provider, needs parameter **apiKey**\n- **tomtom** - [TomTom](http://www.programmableweb.com/api/tomtom-geocoding) provider, needs parameter **apiKey**, parameter locale may have one of these values: de, es, fr, it, nl, pl, pt, sv\n- **opencage**: [OpenCage](https://geocoder.opencagedata.com/) provider, needs parameter **apiKey**\n- **openstreetmap**: [OpenStreetMap](http://wiki.openstreetmap.org/wiki/Nominatim) provider, does not need any API key\n\nRead more  in [documentation](https://help.keboola.com/extractors/other/geocoding-augmentation/).","configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":{},"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ag-geocoding","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ag-geocoding","name":"developer-portal-v2/keboola.ag-geocoding","tag":"2.2.2","options":{},"digest":"sha256:eeda858465b0740d97ddc540ba826f9d0e746bdf096d58183a162f847a63988f"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ag-geocoding/32/1666646174217.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ag-geocoding/64/1666646174217.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ag-geocoding/128/1666646174217.png"}},{"id":"keboola.ex-github","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":27,"name":"GitHub","type":"extractor","shortDescription":"Extracts organizations, teams, repositories, issues, and commits from GitHub via the REST API.","longDescription":"This component uses the [GitHub API](https://developer.github.com/v3/) to fetch the following data from [GitHub](https://github.com/):\n\n- Your Organizations \n- Organization Members \n- Organization Teams\n- Organization Repositories\n- Repository Issues\n- Repository Commits\n\nTo configure the extractor, you need to have access to a GitHub account.\n\nIn Smart Mode, the data is imported incrementally.\n\n","licenseUrl":"https://github.com/keboola/kbc-ui-templates/blob/main/LICENSE","documentationUrl":"https://help.keboola.com/extractors/other/github/","sourceCodeUrl":"https://github.com/keboola/kbc-ui-templates/tree/master/resources/keboola.ex-github/templates","requiredMemory":"512m","processTimeout":43200,"features":["container-root-user"],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"easy","category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericTemplatesUI","genericDockerUI-authorization"],"imageParameters":{"default_bucket":true},"stackParameters":{},"testConfiguration":{},"configurationSchema":{"type":"object","title":"Parameters","required":["config"],"properties":{"config":{"type":"object","title":"Config","required":["startDate"],"properties":{"startDate":{"type":"string","title":"Start Date","default":"-10 days","minLength":1,"description":"Applies only to the Extended template with the selected Start Date option. Any date accepted by strtotime (http://php.net/manual/en/function.strtotime.php) function (Example: -10 days, 2018-03-18)","propertyOrder":3}}}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-github","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/ex-generic-v2","name":"developer-portal-v2/ex-generic-v2","tag":"3.7.7","options":{},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-github/32/1677062277600.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-github/64/1677062277600.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-github/128/1677062277600.png"}},{"id":"keboola.ex-github-v2","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":62,"name":"Github V2","type":"extractor","shortDescription":"Extracts repositories, issues, pull requests, commits, and more from the GitHub REST API.","longDescription":"# GitHub Extractor\n\nExtracts data from the [GitHub REST API](https://docs.github.com/en/rest) (version `2022-11-28`) into Keboola Storage for analytics. The component is **row-based**: each configuration row defines a single extraction — one GitHub endpoint applied to one target (the authenticated user, an organization, or an `owner/repo`) — and produces one output table. Adding more data is a matter of adding rows, not reconfiguring a single shared run.\n\n## Authentication\n\nTwo methods are supported:\n\n- **Personal Access Token (PAT)** — paste a classic (`ghp_…`) or fine-grained (`github_pat_…`) token. Required scopes: `read:org`, `repo`. SAML-SSO organizations require the token to be SSO-authorized.\n- **OAuth** — authorize the component through Keboola's OAuth broker (no token handling required).\n\n## Supported endpoints\n\nAround 33 endpoints across three target types:\n\n- **Authenticated user** — user profile, the user's repositories, the user's organizations.\n- **Organizations** — organization details, members, teams, team members, repositories, events, outside collaborators.\n- **Repositories** — repository details, branches, tags, commits, contributors, collaborators, languages, topics, releases, issues, issue comments, pull requests, pull request reviews and review comments, labels, milestones, stargazers, subscribers, forks, workflows, workflow runs, deployments, and webhooks.\n\n## Incremental loads\n\nEndpoints that expose a server-side cursor (`since` or sort-by-`updated`) — issues, commits, issue comments, pull requests, pull review comments, workflow runs, and user/org repositories — support incremental loading. The component stores a watermark per row and fetches only records changed since the last successful run. An optional **Initial Since** lower bound seeds the first run. Endpoints without an incremental signal upsert on their primary key so tables never grow unbounded.\n\n## Configuration UI\n\nOrganization, repository, and team fields are populated by sync-action dropdowns (no free-text typos), and the row form shows only the fields the chosen endpoint actually needs.\n\n## Output\n\nEach row writes one table to the component's default bucket (`in.c-keboola-ex-github-v2-<configId>`) with native data types, a meaningful primary key, and headerless CSV. Pull requests are extracted separately from issues, so the issues table contains only true issues.\n\n## Rate limits\n\nThe component respects GitHub's authenticated rate limit (5,000 requests/hour, shared per token). When a limit is hit it waits and retries within a bounded budget; if the budget is exceeded it fails with an actionable message rather than crashing, and a re-run resumes from the last successful watermark.\n\nThe component also supports **GitHub Enterprise**: set the optional *GitHub API Base URL* to your\nEnterprise REST API root (`https://api.SUBDOMAIN.ghe.com` for Enterprise Cloud with data residency,\n`https://HOSTNAME/api/v3` for Enterprise Server) and authenticate with a Personal Access Token\ncreated on that host. Leave the field empty for github.com.\n\nFor full documentation see the [component repository](https://github.com/keboola/component-github).","licenseUrl":"https://github.com/keboola/component-github/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-github/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-github","requiredMemory":null,"processTimeout":null,"features":[],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-authorization"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"GitHub Extractor — Root Configuration","required":["auth_type"],"properties":{"debug":{"type":"boolean","title":"Debug Mode","default":false,"propertyOrder":1000},"auth_type":{"enum":["pat","oauth"],"type":"string","title":"Authentication Method","default":"pat","options":{"enum_titles":["Personal Access Token","OAuth"]},"description":"How to authenticate to GitHub: a Personal Access Token you supply, or OAuth (authorize via the authorization button above).","propertyOrder":10},"api_base_url":{"type":"string","title":"GitHub API Base URL (Enterprise only)","default":"","options":{"tooltip":"The REST API root of your GitHub Enterprise host.\n\n- **Enterprise Cloud with data residency** (`SUBDOMAIN.ghe.com`): use `https://api.SUBDOMAIN.ghe.com`.\n- **Enterprise Server** (self-hosted): use `https://HOSTNAME/api/v3`.\n\nEnterprise hosts require a Personal Access Token created on that host — OAuth works on github.com only. If your Enterprise tenant restricts access by IP, allow your Keboola stack's outbound IP addresses.","inputAttributes":{"placeholder":"https://api.SUBDOMAIN.ghe.com"}},"description":"Leave empty for github.com. Set it only if you use GitHub Enterprise.","propertyOrder":40},"#github_token":{"type":"string","title":"GitHub Personal Access Token","format":"password","options":{"tooltip":"Create a classic (`ghp_…`) or fine-grained (`github_pat_…`) PAT in **GitHub → Settings → Developer settings → Personal access tokens**. Required scopes: `read:org`, `repo`. If your organization enforces SAML SSO you must also SSO-authorize the token before use.","dependencies":{"auth_type":["pat"]}},"description":"Your GitHub Personal Access Token.","propertyOrder":20},"authorization":{"type":"object","title":"GitHub OAuth","options":{"dependencies":{"auth_type":["oauth"]}},"propertyOrder":30},"test_connection":{"type":"button","format":"test-connection","options":{"async":{"label":"Test Connection","action":"testConnection"},"dependencies":{"auth_type":["pat"]}},"propertyOrder":25}}},"configurationRowSchema":{"type":"object","title":"GitHub Extractor — Row Configuration","required":["endpoint"],"properties":{"since":{"type":"string","title":"Since (optional)","default":"","options":{"tooltip":"ISO-8601 instant (<code>2024-01-01T00:00:00Z</code>) or a relative phrase (<code>90 days ago</code>, <code>yesterday</code>). Applied on EVERY run — widen it to backfill. Empty = no lower bound (all history). For the GraphQL Query data source, write <code>{{since}}</code> in your query or variables to insert this resolved date (YYYY-MM-DD) at runtime — e.g. <code>updated:&gt;={{since}}</code> for a rolling window.","dependencies":{"endpoint":["user_repos","organization_repositories","repository_commits","repository_issues","repository_issue_comments","repository_pulls","repository_pull_reviews","repository_pull_review_comments","repository_workflow_runs","graphql_query"]}},"description":"Lower bound of the fetch window — only records at or after this are fetched.","propertyOrder":70},"until":{"type":"string","title":"Until (optional)","default":"","options":{"tooltip":"ISO-8601 instant or a relative phrase (<code>now</code>, <code>yesterday</code>). Empty = up to now. Together with Since this is a two-sided window (e.g. Since '90 days ago', Until 'now' = the last 90 days). For the GraphQL Query data source, write <code>{{until}}</code> in your query or variables to insert this resolved date (YYYY-MM-DD) at runtime.","dependencies":{"endpoint":["user_repos","organization_repositories","repository_commits","repository_issues","repository_issue_comments","repository_pulls","repository_pull_reviews","repository_pull_review_comments","repository_workflow_runs","graphql_query"]}},"description":"Upper bound of the fetch window — only records at or before this are fetched.","propertyOrder":71},"gql_org":{"enum":[],"type":"string","title":"Organization","format":"select","default":"","options":{"async":{"label":"Load Organizations","action":"listOrganizations","autoload":true},"tooltip":"Organization login the template runs against.","dependencies":{"endpoint":["graphql_query"],"query_template":["org_ai_config_files","org_pull_request_reviews","org_pull_requests","org_repository_languages","org_commits"]}},"propertyOrder":96},"endpoint":{"enum":["user","user_repos","user_orgs","organizations","organization_members","organization_teams","team_members","organization_repositories","organization_events","organization_outside_collaborators","repository","repository_branches","repository_tags","repository_commits","repository_contributors","repository_collaborators","repository_languages","repository_topics","repository_releases","repository_issues","repository_issue_comments","repository_pulls","repository_pull_reviews","repository_pull_review_comments","repository_labels","repository_milestones","repository_stargazers","repository_subscribers","repository_forks","repository_workflows","repository_workflow_runs","repository_deployments","repository_webhooks","graphql_query"],"type":"string","title":"Data Source","options":{"enum_titles":["Authenticated User","User Repositories","User Organizations","Organization","Organization Members","Organization Teams","Team Members","Organization Repositories","Organization Events","Organization Outside Collaborators","Repository","Repository Branches","Repository Tags","Repository Commits","Repository Contributors","Repository Collaborators","Repository Languages","Repository Topics","Repository Releases","Repository Issues","Repository Issue Comments","Repository Pull Requests","Repository Pull Request Reviews","Repository Pull Request Review Comments","Repository Labels","Repository Milestones","Repository Stargazers","Repository Subscribers","Repository Forks","Repository Workflows","Repository Workflow Runs","Repository Deployments","Repository Webhooks","GraphQL Query (advanced)"]},"propertyOrder":10},"gql_repo":{"enum":[],"type":"string","title":"Repository","format":"select","default":"","options":{"async":{"label":"Load Repositories","action":"listRepositories","autoload":["gql_org"]},"tooltip":"Repository (owner/repo) for the Open PRs template.","dependencies":{"endpoint":["graphql_query"],"query_template":["org_pull_request_reviews"]}},"propertyOrder":97},"gql_query":{"type":"string","title":"GraphQL Query","format":"textarea","default":"","options":{"tooltip":"Runs against the GraphQL API of your configured host (https://api.github.com/graphql unless an API Base URL is set) with your token. The result is flattened into one table (objects become parent_child columns; nested lists become a JSON cell).","dependencies":{"endpoint":["graphql_query"],"query_template":["custom"]}},"description":"A GitHub GraphQL query. For pagination, select pageInfo { hasNextPage endCursor } and declare a $cursor variable used as after: $cursor.","propertyOrder":91},"load_type":{"enum":["full_load","incremental_load"],"type":"string","title":"Load Type (optional)","default":"incremental_load","options":{"enum_titles":["Full Load","Incremental Load"],"dependencies":{"endpoint":["user_repos","organization_repositories","repository_commits","repository_issues","repository_issue_comments","repository_pulls","repository_pull_reviews","repository_pull_review_comments","repository_workflow_runs","graphql_query"]}},"propertyOrder":60},"team_slug":{"type":"array","items":{"enum":[],"type":"string"},"title":"Teams","format":"select","default":[],"options":{"async":{"label":"Load Teams","action":"listTeams","autoload":["organization"]},"tooltip":"Pick one or more teams. Empty = all teams in the selected organization(s).","dependencies":{"endpoint":["team_members"]}},"description":"Leave empty to include all teams in the selected organization(s).","uniqueItems":true,"propertyOrder":30},"pull_state":{"enum":["all","open","closed"],"type":"string","title":"Pull Request State (optional)","default":"all","options":{"enum_titles":["All","Open","Closed"],"dependencies":{"endpoint":["repository_pulls"]}},"propertyOrder":81},"repository":{"type":"array","items":{"enum":[],"type":"string"},"title":"Repositories","format":"select","default":[],"options":{"async":{"label":"Load Repositories","action":"listRepositories","autoload":["organization","endpoint"]},"tooltip":"Pick one or more repositories. Empty = all repositories in the selected organization(s), or all of your repositories if no organization is set.","dependencies":{"endpoint":["repository","repository_branches","repository_tags","repository_commits","repository_contributors","repository_collaborators","repository_languages","repository_topics","repository_releases","repository_issues","repository_issue_comments","repository_pulls","repository_pull_reviews","repository_pull_review_comments","repository_labels","repository_milestones","repository_stargazers","repository_subscribers","repository_forks","repository_workflows","repository_workflow_runs","repository_deployments","repository_webhooks"]}},"description":"Leave empty to include all repositories in the selected organization(s).","uniqueItems":true,"propertyOrder":40},"issue_state":{"enum":["all","open","closed"],"type":"string","title":"Issue State (optional)","default":"all","options":{"enum_titles":["All","Open","Closed"],"dependencies":{"endpoint":["repository_issues"]}},"propertyOrder":80},"primary_key":{"type":"string","title":"Primary key (optional)","default":"","options":{"tooltip":"Column names AFTER flattening (e.g. nameWithOwner). Used only when Load Type is Incremental.","dependencies":{"endpoint":["graphql_query"]}},"description":"Comma-separated result column name(s) for incremental upsert. Empty = full load only.","propertyOrder":95},"pull_number":{"type":"integer","title":"Pull Request Number (optional)","options":{"tooltip":"Targeted mode: with a number set, select exactly one repository and only that pull request's reviews are fetched. Leave empty to fetch reviews for every pull request in the selected repositories.","dependencies":{"endpoint":["repository_pull_reviews"]}},"description":"Set to fetch reviews for one specific pull request; leave empty for all pull requests.","propertyOrder":50},"gql_row_path":{"type":"string","title":"Row path (advanced)","default":"","options":{"tooltip":"Dotted path under data to the list whose items become your table rows, e.g. organization.repositories.nodes. Leave empty to detect it automatically; set it only when the query returns more than one list and detection can't choose.","dependencies":{"endpoint":["graphql_query"],"query_template":["custom"]}},"propertyOrder":93},"organization":{"type":"array","items":{"enum":[],"type":"string"},"title":"Organizations","format":"select","default":[],"options":{"async":{"label":"Load Organizations","action":"listOrganizations","autoload":true},"tooltip":"Pick one or more organizations. Empty = all organizations your token can access. For repository data sources this also scopes which repositories are offered below.","dependencies":{"endpoint":["organizations","organization_members","organization_teams","team_members","organization_repositories","organization_events","organization_outside_collaborators","repository","repository_branches","repository_tags","repository_commits","repository_contributors","repository_collaborators","repository_languages","repository_topics","repository_releases","repository_issues","repository_issue_comments","repository_pulls","repository_pull_reviews","repository_pull_review_comments","repository_labels","repository_milestones","repository_stargazers","repository_subscribers","repository_forks","repository_workflows","repository_workflow_runs","repository_deployments","repository_webhooks"]}},"description":"Leave empty to include all organizations you belong to.","uniqueItems":true,"propertyOrder":20},"output_table":{"type":"string","title":"Output table name","default":"","options":{"dependencies":{"endpoint":["graphql_query"]}},"description":"Name of the output table (letters, digits, underscore, hyphen). Required in Custom mode; templates default it.","propertyOrder":94},"gql_filenames":{"type":"array","items":{"type":"string"},"title":"File names","format":"select","default":["AGENTS.md","CLAUDE.md"],"options":{"tooltip":"Files to probe per repo (one content column group each). Default AGENTS.md + CLAUDE.md.","dependencies":{"endpoint":["graphql_query"],"query_template":["org_ai_config_files"]}},"uniqueItems":true,"propertyOrder":98},"gql_variables":{"type":"string","title":"GraphQL Variables (JSON)","format":"textarea","default":"","options":{"dependencies":{"endpoint":["graphql_query"],"query_template":["custom"]}},"description":"A JSON object of variables for your query, e.g. {\"org\": \"acme\"}. Leave blank for none.","propertyOrder":92},"query_template":{"enum":["custom","org_ai_config_files","org_pull_request_reviews","org_pull_requests","org_repository_languages","org_commits"],"type":"string","title":"Query Template","default":"custom","options":{"tooltip":"Pick a built-in query, or Custom to write your own GraphQL.","enum_titles":["Custom (write your own)","Org repos: AI config files (AGENTS.md, CLAUDE.md)","Repository: Open PRs with review decision","Org: Pull Requests + reviews + comments","Org: Repository languages","Org: Recent commits"],"dependencies":{"endpoint":["graphql_query"]}},"propertyOrder":90},"milestone_state":{"enum":["all","open","closed"],"type":"string","title":"Milestone State (optional)","default":"all","options":{"enum_titles":["All","Open","Closed"],"dependencies":{"endpoint":["repository_milestones"]}},"propertyOrder":82}}},"createConfigurationRowSchema":null,"configurationDescription":"### Authentication\n\nChoose how the extractor authenticates to GitHub:\n\n- **Personal Access Token (PAT)** — paste a classic (`ghp_…`) or fine-grained (`github_pat_…`)\n  token into the **GitHub Personal Access Token** field. Required scopes: `read:org`, `repo`.\n  If your organization enforces SAML SSO, SSO-authorize the token first. Use **Test Connection**\n  to verify it before saving.\n- **OAuth** — authorize the component with your GitHub account; Keboola stores and refreshes the\n  token for you. No token field is shown in this mode. OAuth works on **github.com only**.\n\n### GitHub Enterprise\n\nLeave **GitHub API Base URL** empty to use github.com. Set it to your Enterprise REST API root to\nextract from a GitHub Enterprise host:\n\n- **Enterprise Cloud with data residency** (`SUBDOMAIN.ghe.com`) — `https://api.SUBDOMAIN.ghe.com`\n- **Enterprise Server** (self-hosted) — `https://HOSTNAME/api/v3`\n\nEnterprise hosts need a **Personal Access Token created on that host**. Keboola's OAuth app is\nregistered on github.com, so the OAuth method cannot authenticate to an Enterprise host. If your\nEnterprise tenant restricts access by IP address, allow your Keboola stack's outbound IP addresses.\n\n### Endpoint selection (Data Source)\n\nEach configuration row extracts one GitHub data source into one table. Pick the source from the\n**Data Source** dropdown (e.g. *Repository Issues*, *Organization Members*, *Repository Commits*).\nThe output table is named after the selected source.\n\n### Target (organization / repository / team)\n\nDepending on the chosen source, the row asks for a target:\n\n- **Organization** sources need an **Organization** (loaded via the Load button).\n- **Repository** sources need a **Repository** in `owner/repo` form (loaded via the Load button).\n- **Team Members** needs both an organization and a **Team**.\n- **Pull Request Reviews** also needs a **Pull Request Number**.\n- A few sources (e.g. *Authenticated User*, *User Repositories*) need no target.\n\n### Load type & Initial Since\n\nFor sources that support incremental fetching (issues, commits, issue comments, PR review\ncomments, pulls, workflow runs, user/org repositories):\n\n- **Load Type** — *Incremental Load* upserts new/changed records on each run and stores a\n  `last_run` watermark; *Full Load* replaces the whole table every run.\n- **Initial Since (ISO-8601)** — an optional lower bound for the very first run when no watermark\n  exists yet, e.g. `2024-01-01T00:00:00Z`. Leave empty to fetch full history on the first run.\n\nSources without an incremental signal (branches, tags, members, languages, releases, …) always\ndo a full replace so records deleted on GitHub are removed from the table.\n\n### GraphQL Query (advanced)\n\nSelect **GraphQL Query** as the Data Source to run a GitHub GraphQL query and load its result as one\ntable. Every column is loaded as text; nested objects become `parent_child` columns and nested lists\nbecome a JSON-encoded cell.\n\n- **Query Template** — pick a built-in query or **Custom**.\n  - **Org repos: AI config files** — for every repository in an **Organization**, reports whether each\n    **File name** (default `AGENTS.md`, `CLAUDE.md`) exists and its content. One row per repository.\n  - **Repository: Open PRs with review decision** — open pull requests of one **Organization** /\n    **Repository**, including the GraphQL-only `reviewDecision`.\n  - **Org: Pull Requests + reviews + comments** — every pull request in an **Organization** (within the\n    **Since** window) with its reviews and review-thread comments, in a few paginated queries instead of\n    per-PR REST calls. Replaces the `repository_pulls` / `_pull_reviews` / `_pull_review_comments` REST sources.\n  - **Org: Repository languages** — language breakdown for every repository in an **Organization** (one\n    paginated query). Replaces the `repository_languages` REST source.\n  - **Org: Recent commits** — recent commit history per repository in an **Organization** (within the\n    **Since** window). Replaces the `repository_commits` REST source. Note: up to 100 commits per repo per page.\n- **Custom** — paste a **GraphQL Query** and optional **GraphQL Variables** (a JSON object) and set an\n  **Output table** name. To page through large results, select `pageInfo { hasNextPage endCursor }` on the\n  connection and declare a `$cursor` variable used as `after: $cursor`.\n- **Row path (advanced)** — dotted path under `data` to the list that becomes your rows (e.g.\n  `organization.repositories.nodes`). Leave empty to auto-detect; set it only when the query returns more\n  than one list.\n- **Primary key** — comma-separated result column name(s) for incremental upsert (empty = full load).\n- **Rolling window** — set **Since** / **Until** (relative phrases like `60 days ago` work) and reference\n  `{{since}}` / `{{until}}` in your query or variables; the component substitutes the resolved date\n  (`YYYY-MM-DD`) at runtime. Example variable: `{\"q\": \"org:acme is:pr updated:>={{since}}\"}`.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["listOrganizations","listRepositories","listTeams","testConnection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":62,"uri":"docker/keboola.ex-github-v2","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-github-v2","name":"developer-portal-v2/keboola.ex-github-v2","tag":"0.2.0","options":{},"digest":"sha256:22cadfe420520ed4ed14d0893b3a498c07e46f12420415670e3f540622070cfb"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-github-v2/32/1782999192626.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-github-v2/64/1782999192626.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-github-v2/128/1782999192626.png"}},{"id":"keboola.ex-gmail","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":34,"name":"Gmail Messages","type":"extractor","shortDescription":"Extracts messages and headers from Gmail.","longDescription":"This component uses the [Gmail API](https://developers.google.com/gmail/api/guides/) to extract messages from your Gmail account, along with basic details about them, such as recipients or thread ID. \n\nYour inbox is accessed as read-only. Data are always imported incrementally.\n\nTo configure this extractor, you should be familiar with Google’s [Advanced search](https://support.google.com/mail/answer/7190?hl=en).\n\nTo download attachments from your Gmail account, use the Gmail Attachments extractor.\n\nThis component adheres to our [Google Data Usage Policy](https://help.keboola.com/overview/google-data-policy)","licenseUrl":"https://github.com/keboola/gmail-extractor/blob/master/LICENSE","documentationUrl":"https://help.keboola.com/extractors/communication/gmail/","sourceCodeUrl":"https://github.com/keboola/gmail-extractor","requiredMemory":"128m","processTimeout":null,"features":["container-root-user"],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"medium","category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-authorization"],"imageParameters":{},"stackParameters":{},"testConfiguration":{},"configurationSchema":{"type":"object","title":"Configuration","required":["queries"],"properties":{"queries":{"type":"array","items":{"type":"object","title":"Query","required":["query"],"properties":{"query":{"type":"string","title":"Query","minLength":1},"headers":{"type":"array","items":{"type":"string"},"title":"Headers to extract (optional)","format":"select","options":{"tags":true},"uniqueItems":true}}},"title":"Queries","format":"table","description":"Define queries to speed up the extraction; be as specific as possible. For more detailed information about querying, follow Google’s <a href=\"https://support.google.com/mail/answer/7190?hl=en\">Advanced Search help site</a>."}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"Create queries to filter your messages, e.g. `from:david`. Use Google’s [Advanced search](https://support.google.com/mail/answer/7190?hl=en) operators.\n\nHeaders are optional: if no headers are specified, all headers will be downloaded.","configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-gmail","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-gmail","name":"developer-portal-v2/keboola.ex-gmail","tag":"2.0.0","options":{},"digest":"sha256:9ea9daa4dab608198d0e7482d9f3253979a335876a4d55c4926ed8369abc2291"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-gmail/32/1591274699439.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-gmail/64/1591274699439.png","128":null}},{"id":"keboola.gooddata-writer","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":99,"name":"GoodData","type":"writer","shortDescription":"Writes data to GoodData projects.","longDescription":"This writer sends tables into a [GoodData](https://www.gooddata.com/) project. It can load data as well as create a [logical data model](https://help.gooddata.com/display/doc/Data+Modeling+and+Logical+Data+Model) (LDM) of your dataset.","licenseUrl":"https://github.com/keboola/gooddata-writer-v3/blob/master/LICENSE","documentationUrl":"https://help.keboola.com/writers/bi-tools/gooddata/","sourceCodeUrl":"https://github.com/keboola/gooddata-writer-v3","requiredMemory":"2048m","processTimeout":25200,"features":["dev-branch-configuration-unsafe"],"encryption":true,"network":"bridge","defaultBucket":false,"defaultBucketStage":"out","forwardToken":true,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Data Visualization"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{"connection.keboola.com":{"gooddata_url":"https://secure.gooddata.com","provisioning_url":"https://gooddata-provisioning.keboola.com"},"connection.eu-central-1.keboola.com":{"gooddata_url":"https://keboola.eu.gooddata.com","provisioning_url":"https://gooddata-provisioning.eu-central-1.keboola.com"},"connection.us-east4.gcp.keboola.com":{"gooddata_url":"https://secure.gooddata.com"},"connection.east-us-2.azure.keboola.com":{"gooddata_url":"https://keboola-us2.na.gooddata.com","provisioning_url":"https://gooddata-provisioning.east-us-2.azure.keboola.com"},"connection.europe-west3.gcp.keboola.com":{"gooddata_url":"https://secure.gooddata.com"},"connection.north-europe.azure.keboola.com":{"gooddata_url":"https://secure.gooddata.com"}},"testConfiguration":null,"configurationSchema":{"type":"object","title":"keboola.gooddata-writer — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"tables":{"type":"object","additionalProperties":{"type":"object","properties":{"grain":{"type":["string","null"]},"title":{"type":"string"},"columns":{"type":"object","additionalProperties":{"type":"object","properties":{"type":{"enum":["ATTRIBUTE","CONNECTION_POINT","DATE","FACT","HYPERLINK","LABEL","REFERENCE","IGNORE"],"type":"string"},"title":{"type":"string"},"format":{"type":"string"},"dataType":{"enum":["BIGINT","DATE","DECIMAL","INT","VARCHAR"],"type":"string"},"sortLabel":{"type":"string"},"sortOrder":{"enum":["ASC","DESC"],"type":"string"},"identifier":{"type":"string"},"dataTypeSize":{"type":"string"},"schemaReference":{"type":"string"}}}},"identifier":{"type":"string"}}}}}},"configurationRowSchema":{"type":"object","title":"keboola.gooddata-writer — Row Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"tables":{"type":"object","additionalProperties":{"type":"object","properties":{"grain":{"type":["string","null"]},"title":{"type":"string"},"columns":{"type":"object","additionalProperties":{"type":"object","properties":{"type":{"enum":["ATTRIBUTE","CONNECTION_POINT","DATE","FACT","HYPERLINK","LABEL","REFERENCE","IGNORE"],"type":"string"},"title":{"type":"string"},"format":{"type":"string"},"dataType":{"enum":["BIGINT","DATE","DECIMAL","INT","VARCHAR"],"type":"string"},"sortLabel":{"type":"string"},"sortOrder":{"enum":["ASC","DESC"],"type":"string"},"identifier":{"type":"string"},"dataTypeSize":{"type":"string"},"schemaReference":{"type":"string"}}}},"identifier":{"type":"string"}}}}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["read-model","readModel"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.gooddata-writer","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.gooddata-writer","name":"developer-portal-v2/keboola.gooddata-writer","tag":"2.3.4","options":{"region":"us-east-1"},"digest":"sha256:0695bd0e8249b26e45dc56317164d1d764a8efcdaa2bbe9ff63baebf1a8d5c11"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.gooddata-writer/32/1576250770462.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.gooddata-writer/64/1576250770462.png","128":null}},{"id":"keboola.ex-gooddata","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":46,"name":"GoodData Reports","type":"extractor","shortDescription":"Extracts reports from GoodData.","longDescription":"This component uses the [GoodData API](https://help.gooddata.com/display/doc/API+Reference) to import reports from the [GoodData](https://www.gooddata.com/) business intelligence platform.\n\nTo configure this extractor, you need to provide GoodData credentials. You can also choose an existing GoodData writer to use its credentials.","licenseUrl":"https://github.com/keboola/gooddata-extractor/blob/master/LICENSE","documentationUrl":"https://help.keboola.com/extractors/marketing-sales/gooddata-reports/","sourceCodeUrl":"https://github.com/keboola/gooddata-extractor","requiredMemory":"1024m","processTimeout":14400,"features":["container-root-user","dev-branch-job-blocked"],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":true,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"medium","category":null,"categories":["Data Visualization"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":{},"configurationSchema":{"type":"object","title":"Parameters","required":["writer_id","pid","username","#password","reports","host"],"properties":{"pid":{"type":"string","title":"Provisioned GoodData Project Id (deprecated, ignored)","propertyOrder":5000},"host":{"type":"string","title":"GoodData Host","default":"secure.gooddata.com","description":"secure.gooddata.com, keboola.eu.gooddata.com, or a custom host","propertyOrder":1000},"reports":{"type":"array","items":{"type":"string","title":"Uri"},"title":"Reports","format":"tab","description":"e.g. /gdc/md/wasc4gjy5sphvlt0wjx5fqys5q6bh38j/obj/2284","propertyOrder":2000},"username":{"type":"string","title":"GoodData Username","default":"","propertyOrder":3000},"#password":{"type":"string","title":"GoodData Password","format":"password","propertyOrder":4000},"writer_id":{"type":"string","title":"GoodData Writer ID (deprecated, ignored)","propertyOrder":6000}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-gooddata","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-gooddata","name":"developer-portal-v2/keboola.ex-gooddata","tag":"2.1.0","options":{},"digest":"sha256:db75553d124a125eea30c3ba14d96319b61107895a60580fb5e76518156d2cfd"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-gooddata/32/1576252183320.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-gooddata/64/1576252183320.png","128":null}},{"id":"kds-team.app-gd-user-management","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":484,"name":"GoodData User Management","type":"application","shortDescription":"A GoodData User Management application for managing users and data permissions.","longDescription":"# GoodData User Management Application\n\nThis application allows user of the component to manage users in the GoodData project, invite new users to the project, change roles and assign data permissions for each user.\n\n## Overview\n\nThe application, as aforementioned, allows users to maintain access to a GoodData project and or manage users' access to certain data. The application uses GoodData API to assign [Data Permissions](https://help.gooddata.com/display/doc/Data+Permissions) to desired users, that automatically pre-filter available data to end-user.\n\n### Prerequisities\n\n**The following requirements are needed for successful conifguration of the application:**\n\n* a GoodData project\n* an admin account to the GoodData project\n\n### Process overview\n\nThe application automatically determines what actions need to be taken for each user based on the table of users (see *input mapping* section). The process is ran row-by-row, i.e. all users are process sequentially, to avoid any confusion in the process. For each user, the application determines whether the user is already in the organization and/or project and acts accordingly on that, i.e. creates the user if necessary. To prevent any possible failure, all users are first disabled in the project, before assigning data permissions and re-enabling them again. If it's necessary, the application generates an invitation, which is delivered to the user.\n\n### Process detail\n\nBelow is the more detailed description of the process.\n\n1. User and all their data is read from the table.\n2. User's login is compared to the list of users in GD project and list of users provisioned by Keboola.\n   1. If the user is in both organization and project, they are disabled or removed.\n   2. If the user is in the organization but not in the project, nothing is done.\n   3. If the user is not in the organization but is in the project, they are disabled.\n   4. If the user is not in the organization nor the project, an attempt is made to create them in Keboola organization is made. If the attemp fails, the user is already part of another organization and will not be maintained in Keboola domain.\n3. For each user, their `Mandatory User Filter (MUF)` expression is read and parsed into URI format. The URI format is a format, where all attribute names, labels and values are transformed to their URI counterparts. If the attribute, label or value does not exist, the URI expression is not created and an error is recorded in the status file.\n4. The URI expression is posted to GoodData and the user filter is created. Each user filter is assigned unique ID, which is then passed on to users as an attribute.\n5. The following action occurs once the user filter was created (follow-up to point 2):\n   1. User is assigned the user filter and is re-enabled in the project.\n   2. User is assigned the user filter and is added to the project.\n   3. User is assigned the user fitler and is re-enabled in the project.\n   4. User is assigned the user filter and is enabled/invited to the project.\n6. Process ends.\n\nSee section **4 Execution plan** in [documentation](https://bitbucket.org/kds_consulting_team/kds-team.app-gd-user-management/src/master/README.md).\n\n## See also\n\nThe following two API references might be handy when working with the application:\n\n* [Keboola GoodData Provisioning API](https://keboolagooddataprovisioning.docs.apiary.io/)\n* [GoodData API Reference](https://help.gooddata.com/display/API/API+Reference)","licenseUrl":"https://github.com/keboola/component-gd-user-management/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-gd-user-management/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-gd-user-management","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe","dev-branch-job-blocked"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":true,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput"],"imageParameters":{},"stackParameters":{"connection.keboola.com":{"pbp":{"#pid":"KBC::ComponentSecure::eJwBTAGz/mE6Mjp7aTowO3M6MTE2OiLe9QIApjopYU4pqnOmqNsl9xEmIEHvxs8ARmgJGpYG8avIN+afT1LVR7o0kIvmo1Hsy6mbIi/yQ4gS7pW5zn1YDgPX+PGsqFUqUwyjkTBO5wQrL5heMeC9FTatdGU6ixUnKvvA3WvNRWtC39uiVERdmXV73iI7aToxO3M6MTg0OiIBAgMAeGVez2/nHl36SUiQv1vPJofmrO9Ycm3Z8Zb1zMOFZ23AAfqkAkO0Y80Bs8UZuE1B3HwAAAB+MHwGCSqGSIb3DQEHBqBvMG0CAQAwaAYJKoZIhvcNAQcBMB4GCWCGSAFlAwQBLjARBAxi2NGXRHHBA1kuBQsCARCAO1SDNtl0JAOt9xuCeBwFPDGyimvWgNIUE5fxMX9QE4nnSAybSXo0sQbHEUSnMHTVE2jDIuO2XLw+VabdIjt9CgGFVw==","api_url":"https://7zljzitwh8.execute-api.us-east-1.amazonaws.com/prod","#sapi_token":"KBC::ComponentSecure::eJwBYAGf/mE6Mjp7aTowO3M6MTM2OiLe9QIAVAzmiK3yhKWhguBn76C0AXN1ea7Y91GMYl/OQg2MyhTIi5jMZGdOh5qU5FRSZcjVnx7WE1I8JOCX/mYX/93j4SvWOHXfWqP5/WjZeBTr5kpGpkIw4ZKs0e8XsrqvFAfaqkIFDNlLMWvEJ9rMO2QLkGlllLcLIA+8qT9tv+3rHtrQVwliIjtpOjE7czoxODQ6IgECAwB4ZV7Pb+ceXfpJSJC/W88mh+as71hybdnxlvXMw4VnbcAB+qQCQ7RjzQGzxRm4TUHcfAAAAH4wfAYJKoZIhvcNAQcGoG8wbQIBADBoBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDGLY0ZdEccEDWS4FCwIBEIA7VIM22XQkA633G4J4HAU8MbKKa9aA0hQTl/Exf1ATiedIDJtJejSxBscRRKcwdNUTaMMi47ZcvD5Vpt0iO31r4pS6"},"gd_url":"https://secure.gooddata.com","provisioning_url":"https://gooddata-provisioning.keboola.com"},"connection.eu-central-1.keboola.com":{"gd_url":"https://keboola.eu.gooddata.com","provisioning_url":"https://gooddata-provisioning.eu-central-1.keboola.com"},"connection.ap-southeast-2.keboola.com":{"gd_url":"https://secure.gooddata.com","provisioning_url":"https://gooddata-provisioning.ap-southeast-2.keboola.com"}},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["username","#password","pid","domain_custom"],"properties":{"pid":{"type":"string","title":"GD Project ID","description":"GoodData project ID. See description for more info.","propertyOrder":300},"username":{"type":"string","title":"GD Login","default":"","description":"Admin login to GoodData portal.","propertyOrder":100},"#password":{"type":"string","title":"GD Password","format":"password","description":"Password to admin login to GoodData portal.","propertyOrder":200},"domain_custom":{"type":"string","title":"GD Custom Domain","default":"","description":"If the GoodData project is white labeled, provide the domain. Format: \"https://subdomain.domain.com\".","propertyOrder":600},"fail_on_error":{"type":"boolean","title":"Fail on Error","format":"checkbox","default":false,"description":"If set to true, the component will end with error after processing all requests and saving output if it encounters any problems during run.","propertyOrder":800},"re_invite_users":{"type":"boolean","title":"Re-invite users","format":"checkbox","default":true,"description":"Send invites to users that have already been invited","propertyOrder":700}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"##### Note\n\nA more detailed documentation is available in [component's repository](https://bitbucket.org/kds_consulting_team/kds-team.app-gd-user-management/src/master/README.md).\n\n## Input mapping\n\nThe application accepts 4 parameters and a table of users. In addition to the 4 parameters, the component automatically uses [Storage API Token](https://help.keboola.com/management/project/tokens/) to access available GoodData projects within the project and provision users. A sample configuration can be found [in the repository](https://bitbucket.org/kds_consulting_team/kds-team.app-gd-user-management/src/master/component_config/sample-config/).\n\n### 1 Parameters\n\nFollowing 4 parameters are accepted: `GD Login`, `GD Password`, `GD Project ID` and `GD Custom Domain`. More detailed description of all parameters is provided in the upcoming subsections.\n\nA sample of the configuration file can be [found here](https://bitbucket.org/kds_consulting_team/kds-team.app-gd-user-management/src/master/component_config/sample-config/config.json).\n\n#### 1.1 GD Login\n\nThe login email to the GoodData portal. Requirements for the used login are:\n\n* must have access to the project\n* must be admin of the project\n* must not have any data permissions assigned to them.\n\nFailure to comply with any of the above requirements will raise an error.\n\n#### 1.2 GD Password\n\nThe password to `GD Login` used to log in to GoodData portal.\n\n#### 1.3 GD Project ID\n\nThe ID of a project, for which the changes are to be made. The ID is compared to a list of available project IDs in the Keboola project. If the GD PID is not in the list of available PIDs, i.e. the writer is not located in the same project as the application, an error is raised. This behavior is enforced by the application to prevent changing users across projects without having knowledge about it.\n\nFollow [the link](https://help.gooddata.com/display/doc/Find+the+Project+ID) to get more information on how to find your project ID.\n\n#### 1.4 GD Custom Domain\n\nIn case, the destination GoodData project is white labelled, it is required to provide the white label domain in the following format: `https://subdomain.domain.com` or whatever the equivalent is. This domain will be used for all GoodData related API calls,\nhence the incorrect format or domain will result in application failure.\nIf the GoodData project is not white labeled, the field should be left blank and the component will use the base URL based on project location (`keboola.eu.gooddata.com` for EU location, `secure.gooddata.com` for US location).\n\n### 2 User table\n\nThe user table **must** contain following columns: `login`, `action`, `role`, `muf`, `first_name` and `last_name`. If any of the columns is missing, the application will fail. Sample of the table can be [found here](https://bitbucket.org/kds_consulting_team/kds-team.app-gd-user-management/src/master/component_config/sample-config/in/tables/test.csv).\n\nBelow is the detailed description of each column.\n\n#### 2.1 login\n\nThe email of the user, for whom the action is to be executed. If the user does not exist in the organization, an attempt will be made to register the user under Keboola organization with this email.\n\n#### 2.2 action\n\nThe action, which is to be done for the user. Must be one of the following: `DISABLE`, `ENABLE`, `INVITE` or `REMOVE`.\n\n##### 2.2.a `DISABLE`\n\n**Disables the user** in the project. This process skips all data permission processes and automatically disables the user. If the user is not in the project or is already disabled, the user is skipped.\n\n##### 2.2.b `ENABLE`\n\nIf the **user** is **already in the project**, they will be disabled. Data permissions processes follow, after which the user **will be re-enabled**.\n\nIf the **user** is **not in the project**, they will be automatically enabled, provided that data permission processes execute successfully.\n\nIn the special case, that **user** is **not part of the project nor Keboola organization**, there are not enough privileges for the user to be automatically added to the project. This action will be demoted to `INVITE`.\n\n##### 2.2.c `INVITE`\n\nIf the **user** is **already in the project**, no invite is generated. Standard `DISABLE - MUF - ENABLE` process is followed instead.\n\nIf the **user** is **not in the project**, an invite is generated for the user. The invite is sent to user's `login` mail and the user is assigned data permissions prior to invite being sent out.\n\n##### 2.2.2.d `REMOVE`\n\nIf the **user** is in the project, in disabled or enabled state, and their email address is not identical to `GD login` parameter, the user is removed using process `GD_REMOVE`. If the **user** is in the project and their login is identical to `GD login` parameter, or they are not present in the project, `SKIP_NO_REMOVE` or `SKIP` process is used, respectively.\n\n#### 2.3 role\n\nRole of the user to be had in the project. Must be one of `admin`, `dashboardOnly`, `editor`, `editorInvite`, `editorUserAdmin`, `explorer`, `explorerOnly`, `keboolaEditorPlus`, `readOnlyUser` or `readOnlyNoExport`. If a role is not assigned properly, the error is recorded in the status file.\n\n#### 2.4 muf\n\nA list of json-like objects, from which data permissions are created. An example list might have the following form:\n\n```\n[\n    {\n        \"attribute\": \"attr.inctestsales.city\",\n        \"value\": [\"NYC\", \"VAN\", \"PRG\"],\n        \"operator\": \"IN\"\n    },\n    {\n        \"attribute\": \"attr.inctestsales.sales_person\",\n        \"value\": [\"Sales_1\"],\n        \"operator\": \"=\"\n    }\n]\n```\n\nIn the above example, two data permission filters are provided. Each JSON object must contain keys `attribute`, `value` and `operator`. \n\nIf the user should be able to acccess all the data, the `muf` expression should be provided as an empty list, i.e.\n\n```\n[]\n```\n\n##### 2.4.a `attribute`\n\nThe attribute must be a string expression, identifying the attribute within the project. In general, attributes sourcing from Keboola writers are quite easy to determine. For example, column `city` from table `in.c-test.sales` would become `attr.inctestsales.city` in GoodData. Note the `attr` in the beginning of the identifier and missing punctuation from table name, i.e. all dots and dashes from Keboola table path were replaced.\nIf unsure what is the correct attribute identifier, it is possible to obtain the full list of attributes within the project [in the following guide](https://help.gooddata.com/display/doc/Determine+the+Attribute+Value+ID).\n\n##### 2.4.b `value`\n\nThe key value must be a list of values for which the expression must be determined. The application always assumes primary label for the attribute, i.e. any custom labels for the attribute are ignored. You can obtain a list of available values for attribute by following [this guide](https://help.gooddata.com/display/doc/Determine+the+Attribute+Value+ID).\n\n##### 2.4.c `operator`\n\nOperator must be one of `=`, `<>`, `IN` or `NOT IN`. At the moment, the only unsupported operator is `AND`. See more about operators [here](https://help.gooddata.com/display/doc/Data+Permissions#DataPermissions-CreateanExpressionStatementforaDataPermission).\n\n##### 2.4.d Note on .csv files\n\nNote that json-files have keys enclosed in double quotes, which, conincidentally, is a commonly used character in quoting CSV files as well. This may lead to bad parsing of the `muf` expression, if it's not quoted properly. It is therefore recommended to follow standard CSV file procedures, specifically double all double quotes. As an example, below is the correct way the `muf` expression should be inputted in the CSV file\n\n```\n\"[{\"\"attribute\"\":\"\"attr.inctestsales.city\"\",\"\"value\"\":[\"\"NYC\"\",\"\"VAN\"\",\"\"PRG\"\"],\"\"operator\"\":\"\"NOT IN\"\"}]\"\n```\n\nand\n\n```\n\"[]\"\n```\n\nwhich will then be parsed as\n\n```\n[\n    {\n        \"attribute\": \"attr.inctestsales.city\",\n        \"value\": [\"NYC\",\"VAN\",\"PRG\"],\n        \"operator\": \"NOT IN\"\n    }\n]\n```\n\nand \n\n```\n[]\n```\n\n#### 2.5 first_name\n\nFirst name of the user. The name will be used if the user must be created in the Keboola domain.\n\n#### 2.6 last_name\n\nLast name of the user. The usage is same as `first_name`.\n\n## 3 Output mapping\n\nThe output of the application is the status file, which is loaded incrementally to `out.c-GDUserManagement.status` table automatically. Sample of the status file can be [found here](https://bitbucket.org/kds_consulting_team/kds-team.app-gd-user-management/src/master/component_config/sample-config/out/tables/test.csv).\n\nThe file contains following columns:\n\n* `user` - user, for which the action was executed. `admin` records are required calls by application at initialization.\n* `action` - describes action type\n* `status` - marks, whether the action was a success\n* `timestamp` - UTC timestamp of the event\n* `role` - user role\n* `details` - any additional details related to the action\n* `muf` - muf assigned to the user from the table\n\nSee [documentaion](https://bitbucket.org/kds_consulting_team/kds-team.app-gd-user-management/src/master/README.md) for more detailed information about execution plans and output mapping.\n\n## 4 See also\n\nThe following two API references might be handy when working with the application:\n\n* [Keboola GoodData Provisioning API](https://keboolagooddataprovisioning.docs.apiary.io/)\n* [GoodData API Reference](https://help.gooddata.com/display/API/API+Reference)","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":484,"uri":"docker/kds-team.app-gd-user-management","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.app-gd-user-management","name":"developer-portal-v2/kds-team.app-gd-user-management","tag":"0.3.5","options":{},"digest":"sha256:a0651c74157134198c910b66f85a9ac927578a66ea8fab8f4005fb9af3891f4a"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-gd-user-management/32/1576491030203.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-gd-user-management/64/1576491030203.png","128":null}},{"id":"kds-team.ex-google-ad-manager","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":563,"name":"Google Ad Manager Reports","type":"extractor","shortDescription":"Extracts custom reports from Google Ad Manager.","longDescription":"This component allows you to download reports from the Google Ad Manager API, you can select various report types and metrics based on your needs.","licenseUrl":"https://github.com/keboola/component-google-ad-manager/blob/main/LICENSE.md","documentationUrl":"https://help.keboola.com/components/extractors/marketing-sales/google-ad-manager/","sourceCodeUrl":"https://github.com/keboola/component-google-ad-manager","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Advertisement"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Google Ad Manager Authentication","required":["client_email","#private_key","token_uri","network_code"],"properties":{"token_uri":{"type":"string","title":"Token URI","default":"https://oauth2.googleapis.com/token","description":"Authentication token uri : https://oauth2.googleapis.com/token if not specified otherwise","propertyOrder":3},"#private_key":{"type":"string","title":"Private Key","description":"Credentials - private key in plain text (will be encrypted by Keboola). Key must be written in one row, each new line must be delimited by \\n character","propertyOrder":2},"client_email":{"type":"string","title":"Client email","propertyOrder":1},"network_code":{"type":"string","title":"Network Code","description":"You'll find this in the URL when you are logged into your network. For example, in the URL https://admanager.google.com/1234#home, 1234 is your network code.","propertyOrder":4}}},"configurationRowSchema":{"type":"object","title":"Report Configuration","required":["report_name"],"properties":{"api_version":{"enum":["v202602","v202511","v202508","v202505"],"type":"string","title":"API version","default":"v202602","description":"Google Ad Manager API version. More info in <a href='https://developers.google.com/ad-manager/api/rel_notes'>Google docs</a>","propertyOrder":15},"report_name":{"type":"string","title":"Output Name","description":"Name of output table of the report eg. historical_report","propertyOrder":10},"date_settings":{"type":"object","title":"Date range","required":["date_range"],"properties":{"date_to":{"type":"string","title":"Date to","options":{"dependencies":{"date_range":"Custom"}},"description":"End date of the report eg. 1 day ago","propertyOrder":130},"date_from":{"type":"string","title":"Date from","options":{"dependencies":{"date_range":"Custom"}},"description":"Start date of the report eg. 3 days ago","propertyOrder":120},"date_range":{"enum":["Last week (sun-sat)","Next week","Last month","Next month","Next_day","Yesterday","Reach lifetime","Custom"],"type":"string","title":"Dynamic date range","propertyOrder":110}},"propertyOrder":100},"report_settings":{"type":"object","title":"Report settings","required":["metrics","dimensions","ad_unit_view"],"properties":{"metrics":{"type":"string","title":"Metrics","description":"List of metrics to use for the report, find supported metrics for specific report types in the documentation","propertyOrder":60},"dimensions":{"type":"string","title":"Dimensions","description":"List of dimensions to use for the report, find supported dimensions for specific report types in the documentation","propertyOrder":40},"ad_unit_view":{"enum":["FLAT","TOP_LEVEL","HIERARCHICAL"],"type":"string","title":"Ad unit view","default":"Object","description":"Ad unit view describes how data is fetched about ad units, data can be fetched for all ad units with Flat, only top level ad units with Top level, or Hierarchically","propertyOrder":80},"report_currency":{"type":"string","title":"Report Currency","description":"The currency for revenue metrics. Defaults to the network currency if left null. The supported currency codes can be found in <a href='https://support.google.com/admanager/answer/6019533'>this Help Center article.</a>"},"dimension_attributes":{"type":"string","title":"Dimension Attributes","description":"List of dimensions attributes to use for the report, find supported dimension attributes for specific report types in the documentation","propertyOrder":50},"include_zero_impressions":{"type":"boolean","title":"Include zero impressions","format":"checkbox","default":false,"description":"If your report supports this, you can download data of ads with zero impressions","propertyOrder":100}},"propertyOrder":20}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":563,"uri":"docker/kds-team.ex-google-ad-manager","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-google-ad-manager","name":"developer-portal-v2/kds-team.ex-google-ad-manager","tag":"1.4.4","options":{},"digest":"sha256:96802703d66f372cbd3e06ac41b3f6ba2009bc60fbd0777348cccbadf9ec60d0"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-google-ad-manager/32/1622720868506.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-google-ad-manager/64/1622720868506.png","128":null}},{"id":"keboola.ex-google-ads","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":69,"name":"Google Ads","type":"extractor","shortDescription":"Extracts data from Google Ads.","longDescription":"This component uses the [Ads API](https://developers.google.com/google-ads/api/docs/start) to extract Google Ads reports defined by the [Google Ads Query Language](https://developers.google.com/google-ads/api/docs/query/overview).\n\nTo configure this extractor, you need to have a Google Ads **account**.","licenseUrl":"https://github.com/keboola/ex-google-ads/blob/master/LICENSE","documentationUrl":"https://help.keboola.com/components/extractors/marketing-sales/google-ads/","sourceCodeUrl":"https://github.com/keboola/ex-google-ads","requiredMemory":"512m","processTimeout":21600,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Advertisement"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI-authorization"],"imageParameters":{},"stackParameters":{"connection.keboola.com":{"#developer_token":"KBC::ComponentSecure::eJwBQgG9/mE6Mjp7aTowO3M6MTA2OiLe9QIAUtajmtgD6kC/0KrcmjBpOzxiH6S6E6ycf4CqvbIZU8vUjN44jbR+m2k7RDoFHnero8qk+hD37ZURv1zBZcsMqWeRaaIJsIOmS00DuQ3Z3iD1A3n+bLYW63oF9nZSrAzwjlsjOTefIjtpOjE7czoxODQ6IgECAwB4ZV7Pb+ceXfpJSJC/W88mh+as71hybdnxlvXMw4VnbcABAD3pICsjoATUgjil6+i2PgAAAH4wfAYJKoZIhvcNAQcGoG8wbQIBADBoBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDK/TDpKTl6NqBVmaOgIBEIA7Ip5S7ciuO+NU9MxrucBoLMnPvEwu5hO5+u752Bz1hKENegHmlZm5WFnyXRWJr6K15rku4ynC2ql8QUgiO32DP4qP"},"connection.groupon.keboola.cloud":{"#developer_token":"KBC::ComponentSecureGKMS::eJwBZQGa/mE6Mjp7aToxO3M6MTA2OiLe9QIAllMoz9jpsH4kmJC7PsH3w3oWQ776dNoigyPFakdr9t+P4gUpqvL3CZWmLM7uNJciJgL3rVuFiai77/7vUPPeF9z1XpcmcmwP6+ZcGTId/yV7X2dqtXmr/jtrcDMll6ldue7wsRyVIjtpOjA7czoyMTk6IgokAJv8bV+xCw2OX2VDi2EEet9dPTNpcoBOKQ08JSiBYKcr2ucKErIBAAm0CYOOuu0IcUQXqTpEWYnd1/ZOK4/75Q0zOKmaJHv0FvLe72Tr8OVeeD5u/Udlf0dYie98FlaamAscgtnjj8bhG1iaN4jk0CzLqReq9Elr9Dc0Jax2iYocwumqL5TExBreED5JtA45SxnxoYJwR/anrW2Ii3QKa3V1ERTqYoSTnVCmPVpol/HycH1HMUGJpuZOs6vVxPRgtXYC0az3ChJfZIiesRhLU/UBEMidzgjgpiI7fSgxqFA="},"connection.eu-central-1.keboola.com":{"#developer_token":"KBC::ComponentSecure::eJwBQgG9/mE6Mjp7aTowO3M6MTA2OiLe9QIAGNrAnErEBx2b3SyLd3m8ZWCaYRlm2KICLSWYyO81CCf+mLe8UjkI5nHhrCMBAJdyhx1E6WCg5WKfQ2knhQ+6/pw06RRBHlDcc1/wx+F5usxAvaZId4smg+pEpQ6Hqhq9jDGDvitKIjtpOjE7czoxODQ6IgECAwB4JwpmrwnvHMi+H9vY2cAWNETT0g4aeesZMXO1knqiH84BNS4uTJ9IQS6LpXHR/MGwhwAAAH4wfAYJKoZIhvcNAQcGoG8wbQIBADBoBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDIBQJsjedN7B8zOJmwIBEIA7pq9+I2BjpvXngG9TjnfCgVC7zVkPXavQYDnMdnt5FutOrUacev6MyvXZoEowexL4/qis6DqdBuvK0tIiO31mQ4WQ"},"connection.us-east4.gcp.keboola.com":{"#developer_token":"KBC::ComponentSecureGKMS::eJwBZQGa/mE6Mjp7aToxO3M6MTA2OiLe9QIAomzOdwfnk5XsY/aE2hfL9TXvhpV1SRtk+D606RSsQXT9aBVjld5nhLHK9vCj+0UEU+b1MKjEPYMGsdSfiKXQtpdIiJGQ1ZJeHudW3EKcIgBDgRktGcUHgiHw5IBHH7uj/deAVMqWIjtpOjA7czoyMTk6IgokAGqzy+Am1R3hDcs9dTTcn9zwTcCRmt4BLuG7a8UQa1RflxiJErIBAL9NR6GMFo7FW8Y47zqRqN9mSmB7vb2xN7soJWTmlHAoVnYxAv6eL3KDXk3AZS8Zhn2B6lax1mH2VT3fJXO719PlD4Xo3v86Fy/8Li6Jj5Rf7kuw/58v1sTniNlPyfIc9At6hpgCNHcBzVtHPO0/pbKVrQcU8TJwozbTvxttbd4eIAFaao+9hpg5DZn3p1CXtpwDg33qmJIBQhfiB1hHZ85IHe1FmjhmBoI5E07oSXPdBCI7fWz4qQQ="},"connection.europe-west3.gcp.keboola.com":{"#developer_token":"KBC::ComponentSecureGKMS::eJwBZQGa/mE6Mjp7aToxO3M6MTA2OiLe9QIAWRUH+3RWER8AEDw+fK3R1FL56KFWvqpIcCqrWXTOAxnmkdpuhIoTxlBQkFRhu+W9XvNdWXIKGmrysdyxuIKJKZojk0w2efXeT5etmpy0Zy7JbDEeuFLiKMHYB4metEuWK1sXW0rUIjtpOjA7czoyMTk6IgokAC4ydScBuiTYo2e86h2F9N9acR1rLGZLD3DQdqesJ6ruAgcpErIBAL/Iwcdax2zql6nXZJvUjCOTD24BEPZRAJgoxvVdBblFOvieIIruOQpoelI/kuJXPi4DItw7I7us+U0OmCgkzJeIB+FZF1SRmMfBF0tGOFFW+qr7A70Fl3oMdaHZmbRSV80knIkDIp/WbcfOKYe+lGh8TpUQwssUBRo62GulvT5A/hMzjEGVfHfGKztFwYXNjTIyjbFIhwlCliaudeayMip99FoBrI/Wl7Hc+9J4QUkxjiI7fQVpniw="},"connection.north-europe.azure.keboola.com":{"#developer_token":"KBC::ComponentSecureKV::eJxLtDK2qs60MrIutjI0MLNSuveViWGKYkmb2j/JOREZy/Zairw+arL+TgefEftDvmtXxeNdp6cZyc8T/REf9FxS+NohhVqRuvZLx2v5bWe5bJzwaf6+H75aH+J4b/I6JucsUt0vtSGitFlnWcML/wksa/p4J6R5fbBVTbvXc0vuspJ1ppUx0FojoK3pqXm6qXnJRZUFJflFZkaGxiaJJoZJZhbGZiBVJkBVxkZWSsbJZolJKeZpSeamiSZmpqlJqWmJpmYWFkYmiYZGFsZGSta1ANwkTTU="}},"testConfiguration":null,"configurationSchema":{"type":"object","title":"keboola.ex-google-ads — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"customerId":{"type":"array","items":{"type":"string"}},"getAccountChildren":{"type":"boolean"},"onlyEnabledCustomers":{"type":"boolean"}}},"configurationRowSchema":{"type":"object","title":"keboola.ex-google-ads — Row Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"name":{"type":"string"},"query":{"type":"string"},"since":{"type":"string"},"until":{"type":"string"},"enabled":{"type":"boolean"},"primary":{"type":"array","items":{"type":"string"}}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["listAccounts"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-google-ads","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-google-ads","name":"developer-portal-v2/keboola.ex-google-ads","tag":"v1.22.0","options":{},"digest":"sha256:feddc3123a20f9c38d952509a26d52e33bcc253291124998b8fb2909c20dda66"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-google-ads/32/1674034052209.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-google-ads/64/1674034052209.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-google-ads/128/1674034052209.png"}},{"id":"keboola.ex-google-analytics-v4","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":145,"name":"Google Analytics","type":"extractor","shortDescription":"Extracts data from the Google Analytics API.","longDescription":"This component uses the [Google Analytics Reporting API - V4](https://developers.google.com/analytics/devguides/reporting/core/v4/) to integrate your Google Analytics data into the Keboola Connection environment. \n\nKey features:\n\n- Metric expressions – requests built-in metrics, combinations of metrics expressed in mathematical operations. \n- Multiple date ranges – gets data in two date ranges in a single request.\n- Multiple segments – gets multiple segments in a single request.\n\nTo configure this extractor, you need a Google Analytics **account**.\n\nTo avoid hitting quota limits, you can use your own OAuth Client ID and Secret.\n\nData is always imported incrementally.","licenseUrl":"https://github.com/keboola/google-analytics-extractor/blob/master/LICENSE","documentationUrl":"https://help.keboola.com/extractors/marketing-sales/google-analytics/","sourceCodeUrl":"https://github.com/keboola/google-analytics-extractor","requiredMemory":"512m","processTimeout":28800,"features":["has-sample-data","has-simplified-ui"],"encryption":true,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":true,"forwardTokenDetails":true,"injectEnvironment":false,"complexity":"easy","category":null,"categories":["Analytics"],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-authorization"],"imageParameters":{},"stackParameters":{},"testConfiguration":{},"configurationSchema":{"type":"object","title":"keboola.ex-google-analytics-v4 — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"properties":{"type":"array","items":{"type":"object","properties":{"accountKey":{"type":"string"},"accountName":{"type":"string"},"propertyKey":{"type":"string"},"propertyName":{"type":"string"}}}},"outputBucket":{"type":"string"}}},"configurationRowSchema":{"type":"object","title":"keboola.ex-google-analytics-v4 — Row Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"query":{"type":"object","properties":{"viewId":{"type":"string"},"metrics":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"}}}},"dateRanges":{"type":"array","items":{"type":"object","properties":{"endDate":{"type":"string"},"startDate":{"type":"string"}}}},"dimensions":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"}}}},"maxResults":{"type":["string","integer"]},"metricFilter":{"type":"object"},"keepEmptyRows":{"type":"boolean"},"dimensionFilter":{"type":"object"}}},"endpoint":{"enum":["data-api","reports","mcf"],"type":"string"},"outputTable":{"type":"string"},"antisampling":{"enum":["dailyWalk","adaptive","none"],"type":"string","options":{"enum_titles":["Daily Walk algorithm","Adaptive algorithm","None"]}}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":["sample","segments","sampleJson","getProfilesProperties","getPropertiesMetadata"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-google-analytics-v4","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-google-analytics-v4","name":"developer-portal-v2/keboola.ex-google-analytics-v4","tag":"4.24.1","options":{},"digest":"sha256:5b9210edb14ffd0614bdb7f6ae06bac2da88c7c8a3e731d45f8d0558c0aa062f"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-google-analytics-v4/32/1666644437445.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-google-analytics-v4/64/1666644437445.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-google-analytics-v4/128/1666644437445.png"}},{"id":"keboola.ex-google-bigquery-v2","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":74,"name":"Google BigQuery","type":"extractor","shortDescription":"Extracts data from Google BigQuery via SQL query.","longDescription":"This component uses the Google BigQuery [REST API](https://cloud.google.com/bigquery/docs/reference/rest/v2/) to execute your queries in [Google BigQuery](https://bigquery.cloud.google.com/table/bigquery-public-data:bls.unemployment_cps?tab=preview), save the results to [Google Cloud Storage](https://cloud.google.com/storage/), import the results to Keboola Connection, store them in specified tables in Keboola Connection Storage, and remove the results from Google Cloud Storage.\n\nTo configure this extractor, you need to take the following steps:\n\n- Create an account and [enable billing](https://cloud.google.com/billing/docs/how-to/modify-project) (querying [public data](https://cloud.google.com/bigquery/public-data/) is only free up to 1TB a month).\n- Create a [Service Account](https://cloud.google.com/bigquery/docs/authentication/#service_accounts) for access to your data in BigQuery.\n- Create a [Google Storage Bucket](https://console.cloud.google.com/home/dashboard) as a temporary storage for off-loading the data from BigQuery.","licenseUrl":null,"documentationUrl":"https://help.keboola.com/components/extractors/database/bigquery/","sourceCodeUrl":"https://github.com/keboola/ex-google-bigquery-v2","requiredMemory":"1024m","processTimeout":21600,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":true,"forwardTokenDetails":true,"injectEnvironment":false,"complexity":"hard","category":null,"categories":["Database"],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{"outputStrategy":"tables","unloadToCloudStorageType":"csv"},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"keboola.ex-google-bigquery-v2 — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"google":{"type":"object","properties":{"storage":{"type":"string"},"location":{"enum":["US","EU","us-east5","us-south1","us-central1","us-west4","us-west2","northamerica-south1","northamerica-northeast1","us-east4","us-west1","us-west3","southamerica-east1","southamerica-west1","us-east1","northamerica-northeast2","asia-south2","asia-east2","asia-southeast2","australia-southeast2","asia-south1","asia-northeast2","asia-northeast3","asia-southeast1","australia-southeast1","asia-east1","asia-northeast1","europe-west1","europe-west10","europe-north1","europe-west3","europe-west2","europe-southwest1","europe-west8","europe-west4","europe-west9","europe-north2","europe-west12","europe-central2","europe-west6","me-central2","me-central1","me-west1","africa-south1"],"type":"string"}}},"service_account":{"type":"object","required":["type","project_id","private_key_id","#private_key","client_email","client_id","auth_uri","token_uri","auth_provider_x509_cert_url","client_x509_cert_url"],"properties":{"type":{"type":"string"},"auth_uri":{"type":"string"},"client_id":{"type":"string"},"token_uri":{"type":"string"},"project_id":{"type":"string"},"#private_key":{"type":"string"},"client_email":{"type":"string"},"private_key_id":{"type":"string"},"client_x509_cert_url":{"type":"string"},"auth_provider_x509_cert_url":{"type":"string"}}}}},"configurationRowSchema":{"type":"object","title":"keboola.ex-google-bigquery-v2 — Row Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"query":{"type":"object","properties":{"query":{"type":"string"},"columns":{"type":"array","items":{"type":"string"}},"tableId":{"type":"string"},"datasetId":{"type":"string"},"tableName":{"type":"string"},"primaryKey":{"type":"array","items":{"type":"string"}},"incremental":{"type":"boolean"},"useLegacySql":{"type":"boolean"},"timePartitioning":{"type":"object","properties":{"type":{"enum":["DAY","HOUR","MONTH","YEAR"],"type":"string"},"field":{"type":"string"},"expirationMs":{"type":["string","integer"]}}},"incrementalFetchingColumn":{"type":"string"}}}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["getTables","getColumns","getPartitioning","getClustering"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-google-bigquery-v2","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-google-bigquery-v2","name":"developer-portal-v2/keboola.ex-google-bigquery-v2","tag":"1.19.8","options":{},"digest":"sha256:8c5b1802c74ccbf1d308e0f4be0937ab9a3245f97ca50ba785a5cfc500a049aa"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-google-bigquery-v2/32/1670593219022.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-google-bigquery-v2/64/1670593219022.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-google-bigquery-v2/128/1670593219022.png"}},{"id":"keboola.google-bigquery-transformation","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":35,"name":"Google BigQuery","type":"transformation","shortDescription":"Runs SQL transformations on the Keboola Google BigQuery backend.","longDescription":"Application which runs KBC transformations","licenseUrl":"https://www.keboola.com/terms-and-conditions","documentationUrl":"https://help.keboola.com/transformations/bigquery","sourceCodeUrl":"https://github.com/keboola/google-bigquery-transformation","requiredMemory":"1024m","processTimeout":86400,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableOutput","genericCodeBlocksUI","genericVariablesUI","genericDockerUI-tableInput"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":null,"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"workspace-bigquery","stagingStorageOutput":"workspace-bigquery","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":35,"uri":"docker/keboola.google-bigquery-transformation","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.google-bigquery-transformation","name":"developer-portal-v2/keboola.google-bigquery-transformation","tag":"2.4.0","options":{},"digest":"sha256:aa101e87d00674ae2a097c51ddb49c2ef5e8dd89fefd85df2b007e23b8f3b58d"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.google-bigquery-transformation/32/1670593230066.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.google-bigquery-transformation/64/1670593230066.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.google-bigquery-transformation/128/1670593230066.png"}},{"id":"keboola.wr-google-bigquery-v2","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":68,"name":"Google BigQuery","type":"writer","shortDescription":"Writes data to Google BigQuery.","longDescription":"This component sends data from Keboola Connection Storage to a [Google BigQuery](https://cloud.google.com/bigquery/) dataset.\n\nTo configure the writer, you need to set up a [Google Service Account](https://console.cloud.google.com/iam-admin/serviceaccounts) and create a new JSON key.","licenseUrl":"https://github.com/keboola/google-bigquery-writer/blob/master/LICENSE","documentationUrl":"https://help.keboola.com/writers/database/bigquery","sourceCodeUrl":"https://github.com/keboola/google-bigquery-writer","requiredMemory":"4g","processTimeout":64800,"features":["container-root-user","dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"medium","category":null,"categories":["Database"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"keboola.wr-google-bigquery-v2 — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","required":["service_account","dataset"],"properties":{"dataset":{"type":"string"},"location":{"enum":["US","EU","us-east5","us-south1","us-central1","us-west4","us-west2","northamerica-south1","northamerica-northeast1","us-east4","us-west1","us-west3","southamerica-east1","southamerica-west1","us-east1","northamerica-northeast2","asia-south2","asia-east2","asia-southeast2","australia-southeast2","asia-south1","asia-northeast2","asia-northeast3","asia-southeast1","australia-southeast1","asia-east1","asia-northeast1","europe-west1","europe-west10","europe-north1","europe-west3","europe-west2","europe-southwest1","europe-west8","europe-west4","europe-west9","europe-north2","europe-west12","europe-central2","europe-west6","me-central2","me-central1","me-west1","africa-south1"],"type":"string"},"service_account":{"type":"object","required":["type","project_id","private_key_id","#private_key","client_email","client_id","auth_uri","token_uri","auth_provider_x509_cert_url","client_x509_cert_url"],"properties":{"type":{"type":"string"},"auth_uri":{"type":"string"},"client_id":{"type":"string"},"token_uri":{"type":"string"},"project_id":{"type":"string"},"#private_key":{"type":"string"},"client_email":{"type":"string"},"private_key_id":{"type":"string"},"client_x509_cert_url":{"type":"string"},"auth_provider_x509_cert_url":{"type":"string"}}}}},"configurationRowSchema":{"type":"object","title":"keboola.wr-google-bigquery-v2 — Row Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"tables":{"type":"array","items":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"dbName":{"type":"string"}}}},"dbName":{"type":"string"},"tableId":{"type":"string"},"chunkSize":{"type":"integer"},"clustering":{"type":"boolean"},"incremental":{"type":"boolean"},"partitioning":{"enum":["","time","range"],"type":"string","options":{"enum_titles":["None","Time","Range"]}},"clustering_columns":{"type":"array","items":{"type":"string"}},"partitioning_column":{"type":"string"},"partitioning_granularity":{"enum":["HOUR","DAY","MONTH","YEAR"],"type":"string"},"require_partition_filter":{"type":"boolean"}}}}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["list_locations"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.wr-google-bigquery-v2","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-google-bigquery-v2","name":"developer-portal-v2/keboola.wr-google-bigquery-v2","tag":"3.5.11","options":{},"digest":"sha256:b2a6f91e513f72a9ac643c6cb5061b2e8732d934f01df6bc3125fb0a667dabc6"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-google-bigquery-v2/32/1670593208834.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-google-bigquery-v2/64/1670593208834.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-google-bigquery-v2/128/1670593208834.png"}},{"id":"keboola.ex-google-bigquery-v2-avro-files","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":45,"name":"Google BigQuery avro files","type":"extractor","shortDescription":"Extracts data from Google BigQuery, exporting results in Avro format.","longDescription":"This component uses the Google BigQuery [REST API](https://cloud.google.com/bigquery/docs/reference/rest/v2/) to execute your queries in [Google BigQuery](https://bigquery.cloud.google.com/table/bigquery-public-data:bls.unemployment_cps?tab=preview), save the results to [Google Cloud Storage](https://cloud.google.com/storage/), import the results to Keboola Connection, store them in RAW files in Keboola Connection Storage, and remove the results from Google Cloud Storage.\n\nTo configure this extractor, you need to take the following steps:\n\n- Create an account and [enable billing](https://cloud.google.com/billing/docs/how-to/modify-project) (querying [public data](https://cloud.google.com/bigquery/public-data/) is only free up to 1TB a month).\n- Create a [Service Account](https://cloud.google.com/bigquery/docs/authentication/#service_accounts) for access to your data in BigQuery.\n- Create a [Google Storage Bucket](https://console.cloud.google.com/home/dashboard) as a temporary storage for off-loading the data from BigQuery.","licenseUrl":null,"documentationUrl":"https://help.keboola.com/components/extractors/database/bigquery/","sourceCodeUrl":"https://github.com/keboola/ex-google-bigquery-v2","requiredMemory":null,"processTimeout":null,"features":["allow-use-file-storage-only"],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Database"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{"outputStrategy":"files","unloadToCloudStorageType":"avro"},"stackParameters":{},"testConfiguration":null,"configurationSchema":null,"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{"runtime":{"use_file_storage_only":true}},"emptyConfigurationRow":null,"actions":["getTables","getColumns"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-google-bigquery-v2-avro-files","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-google-bigquery-v2","name":"developer-portal-v2/keboola.ex-google-bigquery-v2","tag":"1.19.8","options":{},"digest":"sha256:004dfa63c1795c41e2522c14c88685a42e3ead2f422dbc44276ab4efcbfc676d"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-google-bigquery-v2-avro-files/32/1670593204880.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-google-bigquery-v2-avro-files/64/1670593204880.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-google-bigquery-v2-avro-files/128/1670593204880.png"}},{"id":"keboola.ex-gcalendar","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":24,"name":"Google Calendar","type":"extractor","shortDescription":"Extracts calendars, events, and their details from Google Calendar.","longDescription":"This component uses the [Google Calendar API](https://developers.google.com/calendar/) to download all calendars available in your account, including events and their details (attendees, reminders, notifications, attachments, etc.). \n\nIt can also be used for downloading Google owned calendars with all national holidays.","licenseUrl":"https://github.com/keboola/kbc-ui-templates/blob/main/LICENSE","documentationUrl":"https://help.keboola.com/extractors/communication/google-calendar/","sourceCodeUrl":"https://github.com/keboola/kbc-ui-templates/tree/master/resources/keboola.ex-gcalendar/templates","requiredMemory":"512m","processTimeout":10800,"features":[],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"easy","category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericTemplatesUI","genericDockerUI-authorization"],"imageParameters":{},"stackParameters":{},"testConfiguration":{},"configurationSchema":{},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-gcalendar","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/ex-generic-v2","name":"developer-portal-v2/ex-generic-v2","tag":"3.11.0","options":{},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-gcalendar/32/1576678099499.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-gcalendar/64/1576678099499.png","128":null}},{"id":"kds-team.ex-google-cm-360","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":396,"name":"Google Campaign Manager 360","type":"extractor","shortDescription":"Extracts Google Campaign Manager 360 reports.","longDescription":"[Google Campaign Manager 360](https://support.google.com/campaignmanager/answer/2709362?hl=en) orchestrates digital advertising campaigns, enabling precise ad placements across multiple channels.\n\nThis connector enables retrieval of Campaign Manager 360 reports **across multiple Ad Accounts**. It supports four modes:\n\n1. **Export metadata** – export CM360 account metadata into a separate table.\n2. **Define reports in the UI** – define report dimensions, metrics, and type directly in the Keboola UI.\n3. **Existing report IDs** – run pre-existing reports that share the same structure across multiple accounts. Reports can be created via the [CM360 Report Builder](https://www.google.com/analytics/dfa/).\n4. **Report template** – select an existing report definition as a template and run it across multiple selected accounts. Reports can be created via the [CM360 Report Builder](https://www.google.com/analytics/dfa/).\n\n\n**Google Limited Use Policy Disclosure:**\n\nApp's use and transfer to any other app of information received from Google APIs will adhere\nto [Google API Services User Data Policy](https://developers.google.com/terms/api-services-user-data-policy#additional_requirements_for_specific_api_scopes),\nincluding the Limited Use requirements.","licenseUrl":"https://github.com/keboola/component-google-cm-360/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-google-cm-360/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-google-cm-360","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"medium","category":null,"categories":["Marketing"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-authorization","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{},"configurationRowSchema":{"type":"object","title":"DM360 report","required":["input_variant","time_range","destination"],"properties":{"metadata":{"type":"array","items":{"enum":["accountPermissionGroups","accountPermissions","accounts","ads","advertisers","browsers","campaigns","changeLogs","cities","connectionTypes","contentCategories","countries","creativeFields","creativeGroups","creatives","directorySites","floodlightActivityGroups","floodlightActivities","floodlightConfigurations","inventoryItems","advertiserInvoices","advertiserLandingPages","languages","metros","mobileApps","mobileCarriers","operatingSystems","operatingSystemVersions","sites","subaccounts","userRoles","targetingTemplates","placements","placementGroups","placementStrategies","platformTypes","postalCodes","projects","regions","sizes","userRolePermissionGroups","userRolePermissions","videoFormats"],"type":"string","title":"Metadata","minLength":0},"title":"Metadata","format":"select","options":{"dependencies":{"input_variant":"metadata"}},"description":"Which metadata to fetch","uniqueItems":true,"propertyOrder":200},"profiles":{"type":"array","items":{"enum":[],"type":"string","title":"Profiles","minLength":1},"title":"Profiles","format":"select","options":{"async":{"label":"Load available profiles","action":"load_profiles"}},"description":"Select profiles to be used in reporting or extracting metadata.","uniqueItems":true,"propertyOrder":50},"time_range":{"type":"object","title":"Time range","options":{"dependencies":{"input_variant":["report_specification","report_template_id"]}},"properties":{"period":{"enum":["CUSTOM_DATES","TODAY","YESTERDAY","WEEK_TO_DATE","MONTH_TO_DATE","QUARTER_TO_DATE","YEAR_TO_DATE","PREVIOUS_WEEK","PREVIOUS_MONTH","PREVIOUS_QUARTER","PREVIOUS_YEAR","LAST_7_DAYS","LAST_14_DAYS","LAST_30_DAYS","LAST_60_DAYS","LAST_90_DAYS","LAST_365_DAYS","LAST_24_MONTHS"],"type":"string","title":"Report period","default":"LAST_7_DAYS","options":{"enum_titles":["Custom date range","Today","Yesterday","All days, including the current day, since the most recent Sunday","All days, including the current day, since the start of the current month","All days, including the current day, since the start of the current quarter","All days, including the current day, since the start of the current calendar year","The previous completed week, beginning from Sunday","The previous completed calendar month","The previous completed quarter","The previous completed calendar year","The previous 7 days, excluding the current day","The previous 14 days, excluding the current day","The previous 30 days, excluding the current day","The previous 60 days, excluding the current day","The previous 90 days, excluding the current day","The previous 365 days, excluding the current day","The previous 24 months"]},"propertyOrder":10},"date_to":{"type":"string","title":"Date to","options":{"dependencies":{"period":"CUSTOM_DATES"}},"description":"End date: either in YYYY-MM-DD format or a relative date string, e.g., 5 days ago, 1 month ago, yesterday, etc.","propertyOrder":30},"date_from":{"type":"string","title":"Date from","options":{"dependencies":{"period":"CUSTOM_DATES"}},"description":"Start date: either in YYYY-MM-DD format or a relative date string, e.g., 5 days ago, 1 month ago, yesterday, etc.","propertyOrder":20}},"propertyOrder":450},"destination":{"type":"object","title":"Destination","options":{"dependencies":{"input_variant":["report_specification","report_template_id","existing_report_ids"]}},"required":["table_name","incremental_loading"],"properties":{"table_name":{"type":"string","title":"Storage table name","minLength":1,"description":"Name of the destination table for this report (e.g., standard_performance_data)","propertyOrder":10},"primary_key":{"type":"array","items":{"type":"string","watch":{"dim":"report_specification.dimensions"},"enumSource":"dim"},"title":"Primary key","format":"select","options":{"dependencies":{"selected_variant":"report_specification"}},"description":"List of columns (from selected dimensions) to be used as the primary key of the resulting table. We recommend using ID columns where possible to avoid ambiguity if the dimension name changes.","uniqueItems":true,"propertyOrder":20},"selected_variant":{"type":"string","title":"Selected variant","watch":{"var":"input_variant"},"options":{"hidden":true},"template":"{{var}}","description":"Helper dummy element to render pkeys"},"incremental_loading":{"enum":[false,true],"type":"boolean","title":"Load type","default":true,"options":{"enum_titles":["Full load","Incremental load"]},"description":"If full load is used, the destination table will be overwritten every run. If incremental load is used, data will be upserted into the destination table.","propertyOrder":30},"primary_key_existing":{"type":"array","items":{"enum":[],"type":"string","title":"Dimension","minLength":1},"title":"Primary key","format":"select","options":{"async":{"label":"Load available dimensions","action":"list_report_dimensions"},"dependencies":{"selected_variant":["report_template_id","existing_report_ids"]}},"description":"List of columns (loaded from the report) to be used as the primary key of the resulting table. We recommend using ID columns where possible to avoid ambiguity if the dimension name changes.","uniqueItems":true,"propertyOrder":21}},"propertyOrder":600},"input_variant":{"enum":["metadata","report_specification","report_template_id","existing_report_ids"],"type":"string","title":"Data to extract","default":"report_specification","options":{"enum_titles":["Metadata","Report specification","Report template","Existing report ID(s)"]},"description":"Select a metadata or which variant of report to extract. You may choose to either create a new report or to enter an existing report ID.","propertyOrder":100},"report_template_id":{"enum":[],"type":"string","title":"Report ID as a template","options":{"async":{"label":"Load available reports","action":"load_reports"},"dependencies":{"input_variant":"report_template_id"}},"minLength":1,"description":"Select a report to be used as a template for all profiles.","propertyOrder":350},"existing_report_ids":{"type":"array","items":{"enum":[],"type":"string","title":"Report ID","minLength":1},"title":"Report ID(s) to be run in parallel","format":"select","options":{"async":{"label":"Load available reports","action":"load_reports"},"tooltip":"**Reports must be in CSV format!**\n Format setup is in the report's schedule/delivery settings.\n If you need to run a report in a different format, please use the 'Report ID as a template' option.","dependencies":{"input_variant":"existing_report_ids"}},"minLength":1,"description":"Select reports to run in parallel. If reports have a schedule/delivery format defined, it must be in CSV format! Setup details <a href=\"https://support.google.com/campaignmanager/answer/7674615?hl=en#:~:text=Click%20the%20%22-,Delivery,-%22%20toggle%20to%20turn\">here.</a>","uniqueItems":true,"propertyOrder":400},"report_specification":{"type":"object","title":"Report details","options":{"dependencies":{"input_variant":"report_specification"}},"properties":{"metrics":{"type":"array","items":{"enum":[],"type":"string","title":"Metrics","minLength":1},"title":"Metrics","format":"select","options":{"async":{"label":"Load available metrics","action":"load_metrics"}},"uniqueItems":true,"propertyOrder":700},"dimensions":{"type":"array","items":{"enum":[],"type":"string","title":"Dimensions","minLength":1},"title":"Dimensions","format":"select","options":{"async":{"label":"Load available dimensions","action":"load_dimensions"}},"uniqueItems":true,"propertyOrder":600},"report_type":{"enum":["STANDARD","REACH","FLOODLIGHT","PATH","PATH_ATTRIBUTION"],"type":"string","title":"Report type","options":{"enum_titles":["Standard","Reach","Floodlight","Path","Path attribution"]},"propertyOrder":500}},"propertyOrder":300}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["list_report_dimensions","load_dimensions","load_metrics","load_profiles","load_reports"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.ex-google-cm-360","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-google-cm-360","name":"developer-portal-v2/kds-team.ex-google-cm-360","tag":"1.1.3","options":{},"digest":"sha256:bba2198576f6df384339ae20254fb5ecf746c60169687359736f0198e046d617"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-google-cm-360/32/1693214102295.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-google-cm-360/64/1693214102295.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-google-cm-360/128/1693214102295.png"}},{"id":"kds-team.ex-google-cloud-storage","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":227,"name":"Google Cloud Storage","type":"extractor","shortDescription":"Downloads files from Google Cloud Storage buckets.","longDescription":"This connector enables you to download files and tables from Google Cloud Storage to your Keboola file storage. You can further manipulate the data (e.g., store files as tables) using [processors](https://components.keboola.com/components?type=processor).","licenseUrl":"https://github.com/keboola/component-google-cloud-storage-extractor/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/component-google-cloud-storage-extractor/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/component-google-cloud-storage-extractor","requiredMemory":null,"processTimeout":86400,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"medium","category":null,"categories":["File Storage"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-processors","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Google Cloud Storage service authorization","properties":{"#service_account_key":{"type":"string","title":"Service Account Key","format":"password","description":"JSON key downloaded from the GCP service account","propertyOrder":1}}},"configurationRowSchema":{"type":"object","title":"Google Cloud Storage Data Source","required":[],"properties":{"files":{"type":"object","title":"Settings","properties":{"file_name":{"type":"string","title":"File path","options":{"dependencies":{"use_file_path":true}},"description":"The path to the file or files. Example: \"bucket/folder*/2023-*\"","propertyOrder":2},"bucket_name":{"enum":[],"type":"string","title":"Bucket name","format":"select","options":{"async":{"label":"Load available buckets","action":"list_buckets"},"dependencies":{"use_file_path":false}},"maxItems":1,"minItems":1,"description":"Google Cloud Storage bucket name, e.g., my_gcs_bucket","uniqueItems":true,"propertyOrder":2},"use_file_path":{"type":"boolean","title":"Use file path","format":"checkbox","description":"If checked, the file path or pattern will be used instead of the file names.","propertyOrder":1},"new_files_only":{"type":"boolean","title":"Download only new files","format":"checkbox","description":"If set to true, only files updated after the component's last run will be downloaded.","propertyOrder":4},"file_names_array":{"type":"array","items":{"enum":[],"type":"string"},"title":"File names","format":"select","options":{"async":{"label":"Load available files","action":"list_files"},"dependencies":{"use_file_path":false},"inputAttributes":{"placeholder":"Download all files in the selected bucket"}},"minItems":1,"description":"File names in the Google Cloud Storage bucket","uniqueItems":true,"propertyOrder":3}},"propertyOrder":1},"destination":{"type":"object","title":"Destination","options":{"tooltip":"By default, this component stores results in File Storage. To convert them into tables, use a combination of processors. See examples in our documentation."},"properties":{"permanent":{"type":"boolean","title":"Permanent files (optional)","format":"checkbox","default":false,"description":"If set to true, downloaded files will be stored in Keboola Storage permanently. Otherwise, they will be deleted after 14 days.","propertyOrder":2},"custom_tag":{"type":"string","title":"Custom tag (optional)","description":"One or more tags, separated by a comma, will be added to Keboola Storage for all downloaded files.","propertyOrder":1}},"propertyOrder":5}}},"createConfigurationRowSchema":null,"configurationDescription":"## Authorization\nAuthorization is done via a Google service account. Create an account with permission to list buckets and files and to read files. You can use Storage Admin\naccess for this data source. After you create the service account, download the JSON key and copy and paste it into the authorization section in the configuration.\n\n## Row configuration\nEach row can be configured to download any number of files from one Google Cloud Storage bucket.\n\nThere are two ways to select files:\n- Using a file path, including [wildcards](https://docs.python.org/3/library/fnmatch.html).\n  - Example: `bucket/2023-?/*.csv` or `*/*.xls`\n\n- Selecting a bucket and files manually.\n  1) The configuration requires loading available buckets and selecting one.\n  2) After saving, it enables listing and selecting files within the chosen bucket.\n\nFor each row, you can define storage tags that will be used for all output files of the given row. Also, the downloaded files can be stored in Storage permanently instead of the default 14-day retention.\n\nEach row can have processors applied to the output.\nEach file is downloaded to the files directory in data, so a move processor must be applied to send it to a table.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["list_buckets","list_files"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.ex-google-cloud-storage","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-google-cloud-storage","name":"developer-portal-v2/kds-team.ex-google-cloud-storage","tag":"1.0.5","options":{},"digest":"sha256:22fb65ca150f02d5ad2880a22e4b9bf4752297a8ebc91015d0450e4366b8b050"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-google-cloud-storage/32/1695739986649.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-google-cloud-storage/64/1695739986649.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-google-cloud-storage/128/1695739986649.png"}},{"id":"kds-team.wr-google-cloud-storage","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":197,"name":"Google Cloud Storage","type":"writer","shortDescription":"Writes files and tables to Google Cloud Storage buckets.","longDescription":"This component allows you to upload files and tables to Google Cloud Storage and if necessary append a timestamp \nto the file name to keep historical versions of files.","licenseUrl":"https://github.com/keboola/component-google-cloud-storage-writer/blob/main/LICENSE.md","documentationUrl":"https://help.keboola.com/components/writers/storage/google-cloud-storage/","sourceCodeUrl":"https://github.com/keboola/component-google-cloud-storage-writer","requiredMemory":"512m","processTimeout":14400,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["File Storage"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-tableInput","genericDockerUI-fileInput","genericDockerUI-processors","genericDockerUI-authorization"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Google Cloud Storage Service Account login","properties":{"#service_account_key":{"type":"string","title":"Service Account Key","description":"JSON key downloaded from GCP service account","propertyOrder":1}}},"configurationRowSchema":{"type":"object","title":"Google Cloud Storage Writer","required":["bucket_name"],"properties":{"append_date":{"type":"boolean","title":"Append timestamp","format":"checkbox","default":false,"description":"Append timestamp to file name test.csv uploaded 01.02.2021 03:44:55 would be test_20210201034455","propertyOrder":30},"bucket_name":{"type":"string","title":"Bucket name","description":"Google Cloud Storage bucket name, e.g. my_gcs_bucket","propertyOrder":10},"folder_name":{"type":"string","title":"Folder name","description":"Folder in Google Cloud Storage bucket","propertyOrder":20}}},"createConfigurationRowSchema":null,"configurationDescription":"Testing configuration description.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":197,"uri":"docker/kds-team.wr-google-cloud-storage","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.wr-google-cloud-storage","name":"developer-portal-v2/kds-team.wr-google-cloud-storage","tag":"1.1.4","options":{},"digest":"sha256:2859be87e134695cfdfc3e22ca7fa01b2c3852d5f52e317a30850cfa30799fe9"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.wr-google-cloud-storage/32/1695739917290.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.wr-google-cloud-storage/64/1695739917290.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.wr-google-cloud-storage/128/1695739917290.png"}},{"id":"kds-team.ex-dv360","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":492,"name":"Google Display & Video 360","type":"extractor","shortDescription":"Extracts Display & Video 360 reports.","longDescription":"Automate data retrieval from the [Display&Video 360 Reports](https://marketingplatform.google.com/about/display-video-360/). Run\nexisting reports defined via the [DV360 Report Builder](https://support.google.com/displayvideo/answer/6375151?hl=en&ref_topic=2798432&sjid=18233030458040234650-EU)\nor define ad-hoc reports directly from the configuration.\n\n**Google Limited Use Policy Disclosure:**\n\nThe app’s use and transfer to any other app of information received from Google APIs adheres\nto [Google API Services User Data Policy](https://developers.google.com/terms/api-services-user-data-policy#additional_requirements_for_specific_api_scopes)\n, including the Limited Use requirements.","licenseUrl":"https://github.com/keboola/component-dv360/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-dv360/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-dv360","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"medium","category":null,"categories":["Marketing"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-authorization","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{},"configurationRowSchema":{"type":"object","title":"DV360 report","required":["input_variant","time_range","destination"],"properties":{"time_range":{"type":"object","title":"Time range","properties":{"period":{"enum":["CUSTOM_DATES","CURRENT_DAY","PREVIOUS_DAY","WEEK_TO_DATE","MONTH_TO_DATE","QUARTER_TO_DATE","YEAR_TO_DATE","PREVIOUS_WEEK","PREVIOUS_MONTH","PREVIOUS_QUARTER","PREVIOUS_YEAR","LAST_7_DAYS","LAST_14_DAYS","LAST_30_DAYS","LAST_60_DAYS","LAST_90_DAYS","LAST_365_DAYS","ALL_TIME"],"type":"string","title":"Report period","default":"LAST_7_DAYS","options":{"enum_titles":["Custom date range","Current day","Previous day","All days, including the current day, since the most recent Sunday","All days, including the current day, since the start of the current month","All days, including the current day, since the start of the current quarter","All days, including the current day, since the start of the current calendar year","The previous completed week, beginning from Sunday","The previous completed calendar month","The previous completed quarter","The previous completed calendar year","The previous 7 days, excluding the current day","The previous 14 days, excluding the current day","The previous 30 days, excluding the current day","The previous 60 days, excluding the current day","The previous 90 days, excluding the current day","The previous 365 days, excluding the current day","All data, excluding the current day"]},"propertyOrder":10},"date_to":{"type":"string","title":"Date to","options":{"dependencies":{"period":"CUSTOM_DATES"}},"description":"End date: Either in YYYY-MM-DD format or a relative date string, e.g., 5 days ago, 1 month ago, yesterday, etc.","propertyOrder":30},"date_from":{"type":"string","title":"Date from","options":{"dependencies":{"period":"CUSTOM_DATES"}},"description":"Start date: Either in YYYY-MM-DD format or a relative date string, e.g., 5 days ago, 1 month ago, yesterday, etc.","propertyOrder":20}},"propertyOrder":200},"destination":{"type":"object","title":"Destination","required":["table_name","primary_key","incremental_loading"],"properties":{"table_name":{"type":"string","title":"Storage table name","minLength":1,"description":"Name of the destination table for this report (e.g., standard_performance_data)","propertyOrder":10},"primary_key":{"type":"array","items":{"type":"string","watch":{"dim":"report_specification.dimensions"},"enumSource":"dim"},"title":"Primary key","format":"select","options":{"dependencies":{"selected_variant":"report_specification"}},"description":"List of columns (from selected dimensions) to be used as the primary key of the resulting table. We recommend using ID columns where possible to avoid ambiguity if the dimension name changes.","uniqueItems":true,"propertyOrder":20},"selected_variant":{"type":"string","title":"Selected variant","watch":{"var":"input_variant"},"options":{"hidden":true},"template":"{{var}}","description":"Helper dummy element to render pkeys"},"incremental_loading":{"enum":[false,true],"type":"boolean","title":"Load type","default":true,"options":{"enum_titles":["Full load","Incremental load"]},"description":"If full load is used, the destination table will be overwritten every run. If incremental load is used, data will be upserted into the destination table.","propertyOrder":30},"primary_key_existing":{"type":"array","items":{"enum":[],"type":"string","title":"Dimension","minLength":1},"title":"Primary key","format":"select","options":{"async":{"label":"Load available dimensions","action":"list_report_dimensions"},"dependencies":{"selected_variant":"existing_report_id"}},"description":"List of columns (load from report) to be used as the primary key of the resulting table. We recommend using ID columns where possible to avoid ambiguity if the dimension name changes.","uniqueItems":true,"propertyOrder":21}},"propertyOrder":600},"input_variant":{"enum":["report_specification","existing_report_id"],"type":"string","title":"Report definition mode","default":"report_specification","options":{"enum_titles":["Report specification","Existing report ID"]},"description":"You may choose to either create a new report or use an existing report ID.","propertyOrder":100},"existing_report_id":{"enum":[],"type":"string","title":"Report ID","options":{"async":{"label":"Load available reports","action":"list_queries"},"dependencies":{"input_variant":"existing_report_id"}},"minLength":1,"description":"Enter the report ID as presented in the DV360 Report Builder.","propertyOrder":150},"report_specification":{"type":"object","title":"Report details","options":{"dependencies":{"input_variant":"report_specification"}},"properties":{"filters":{"type":"array","items":{"type":"object","title":"Filter","properties":{"name":{"enum":["FILTER_ACTIVE_VIEW_CUSTOM_METRIC_ID","FILTER_ACTIVE_VIEW_CUSTOM_METRIC_NAME","FILTER_ACTIVE_VIEW_EXPECTED_VIEWABILITY","FILTER_ADVERTISER","FILTER_ADVERTISER_CURRENCY","FILTER_ADVERTISER_INTEGRATION_CODE","FILTER_ADVERTISER_INTEGRATION_STATUS","FILTER_ADVERTISER_NAME","FILTER_ADVERTISER_TIMEZONE","FILTER_AD_POSITION","FILTER_AD_TYPE","FILTER_AGE","FILTER_ALGORITHM","FILTER_ALGORITHM_ID","FILTER_AMP_PAGE_REQUEST","FILTER_ANONYMOUS_INVENTORY_MODELING","FILTER_APP_URL","FILTER_APP_URL_EXCLUDED","FILTER_ATTRIBUTED_USERLIST","FILTER_ATTRIBUTED_USERLIST_COST","FILTER_ATTRIBUTED_USERLIST_TYPE","FILTER_ATTRIBUTION_MODEL","FILTER_AUDIENCE_LIST","FILTER_AUDIENCE_LIST_COST","FILTER_AUDIENCE_LIST_TYPE","FILTER_AUDIENCE_NAME","FILTER_AUDIENCE_TYPE","FILTER_AUDIO_FEED_TYPE_NAME","FILTER_AUTHORIZED_SELLER_STATE","FILTER_BILLABLE_OUTCOME","FILTER_BRAND_LIFT_TYPE","FILTER_BROWSER","FILTER_BUDGET_SEGMENT_BUDGET","FILTER_BUDGET_SEGMENT_DESCRIPTION","FILTER_BUDGET_SEGMENT_END_DATE","FILTER_BUDGET_SEGMENT_PACING_PERCENTAGE","FILTER_BUDGET_SEGMENT_START_DATE","FILTER_BUDGET_SEGMENT_TYPE","FILTER_CAMPAIGN_DAILY_FREQUENCY","FILTER_CARRIER","FILTER_CARRIER_NAME","FILTER_CHANNEL_GROUPING","FILTER_CHANNEL_ID","FILTER_CHANNEL_NAME","FILTER_CHANNEL_TYPE","FILTER_CITY","FILTER_CITY_NAME","FILTER_CM360_PLACEMENT_ID","FILTER_COMPANION_CREATIVE_ID","FILTER_COMPANION_CREATIVE_NAME","FILTER_CONVERSION_AD_EVENT_TYPE","FILTER_CONVERSION_AD_EVENT_TYPE_ID","FILTER_CONVERSION_DELAY","FILTER_CONVERSION_SOURCE","FILTER_CONVERSION_SOURCE_ID","FILTER_COUNTRY","FILTER_COUNTRY_ID","FILTER_CREATIVE","FILTER_CREATIVE_ASSET","FILTER_CREATIVE_ATTRIBUTE","FILTER_CREATIVE_HEIGHT","FILTER_CREATIVE_ID","FILTER_CREATIVE_INTEGRATION_CODE","FILTER_CREATIVE_RENDERED_IN_AMP","FILTER_CREATIVE_SIZE","FILTER_CREATIVE_SOURCE","FILTER_CREATIVE_STATUS","FILTER_CREATIVE_TYPE","FILTER_CREATIVE_WIDTH","FILTER_DATA_PROVIDER","FILTER_DATA_PROVIDER_NAME","FILTER_DATA_SOURCE","FILTER_DATE","FILTER_DAY_OF_WEEK","FILTER_DETAILED_DEMOGRAPHICS","FILTER_DETAILED_DEMOGRAPHICS_ID","FILTER_DEVICE","FILTER_DEVICE_MAKE","FILTER_DEVICE_MODEL","FILTER_DEVICE_TYPE","FILTER_DFP_ORDER_ID","FILTER_DIGITAL_CONTENT_LABEL","FILTER_DMA","FILTER_DMA_NAME","FILTER_DOMAIN","FILTER_ELIGIBLE_COOKIES_ON_FIRST_PARTY_AUDIENCE_LIST","FILTER_ELIGIBLE_COOKIES_ON_THIRD_PARTY_AUDIENCE_LIST_AND_INTEREST","FILTER_EVENT_TYPE","FILTER_EXCHANGE","FILTER_EXCHANGE_CODE","FILTER_EXCHANGE_ID","FILTER_EXTENSION","FILTER_EXTENSION_ASSET","FILTER_EXTENSION_ASSET_STATUS","FILTER_EXTENSION_ASSET_TYPE","FILTER_EXTENSION_STATUS","FILTER_EXTENSION_TYPE","FILTER_FIRST_PARTY_AUDIENCE_LIST_COST","FILTER_FIRST_PARTY_AUDIENCE_LIST_TYPE","FILTER_FLOODLIGHT_ACTIVITY","FILTER_FLOODLIGHT_ACTIVITY_ID","FILTER_FORMAT","FILTER_GAM_INSERTION_ORDER","FILTER_GAM_LINE_ITEM","FILTER_GAM_LINE_ITEM_ID","FILTER_GENDER","FILTER_GMAIL_AGE","FILTER_GMAIL_CITY","FILTER_GMAIL_COUNTRY","FILTER_GMAIL_COUNTRY_NAME","FILTER_GMAIL_DEVICE_TYPE","FILTER_GMAIL_DEVICE_TYPE_NAME","FILTER_GMAIL_GENDER","FILTER_GMAIL_REGION","FILTER_GMAIL_REMARKETING_LIST","FILTER_HOUSEHOLD_INCOME","FILTER_IMPRESSION_COUNTING_METHOD","FILTER_IMPRESSION_LOSS_REJECTION_REASON","FILTER_INSERTION_ORDER","FILTER_INSERTION_ORDER_GOAL_TYPE","FILTER_INSERTION_ORDER_GOAL_VALUE","FILTER_INSERTION_ORDER_INTEGRATION_CODE","FILTER_INSERTION_ORDER_NAME","FILTER_INSERTION_ORDER_STATUS","FILTER_INTEREST","FILTER_INVENTORY_COMMITMENT_TYPE","FILTER_INVENTORY_DELIVERY_METHOD","FILTER_INVENTORY_FORMAT","FILTER_INVENTORY_MEDIA_COST_TYPE","FILTER_INVENTORY_RATE_TYPE","FILTER_INVENTORY_SOURCE","FILTER_INVENTORY_SOURCE_EXTERNAL_ID","FILTER_INVENTORY_SOURCE_GROUP","FILTER_INVENTORY_SOURCE_GROUP_ID","FILTER_INVENTORY_SOURCE_ID","FILTER_INVENTORY_SOURCE_NAME","FILTER_INVENTORY_SOURCE_TYPE","FILTER_KEYWORD","FILTER_LIFE_EVENT","FILTER_LIFE_EVENTS","FILTER_LINE_ITEM","FILTER_LINE_ITEM_BUDGET","FILTER_LINE_ITEM_DAILY_FREQUENCY","FILTER_LINE_ITEM_END_DATE","FILTER_LINE_ITEM_INTEGRATION_CODE","FILTER_LINE_ITEM_LIFETIME_FREQUENCY","FILTER_LINE_ITEM_NAME","FILTER_LINE_ITEM_PACING_PERCENTAGE","FILTER_LINE_ITEM_START_DATE","FILTER_LINE_ITEM_STATUS","FILTER_LINE_ITEM_TYPE","FILTER_MATCHED_GENRE_TARGET","FILTER_MATCH_RATIO","FILTER_MEASUREMENT_SOURCE","FILTER_MEDIA_PLAN","FILTER_MEDIA_PLAN_NAME","FILTER_MEDIA_TYPE","FILTER_MOBILE_GEO","FILTER_MONTH","FILTER_MRAID_SUPPORT","FILTER_NIELSEN_AGE","FILTER_NIELSEN_COUNTRY_CODE","FILTER_NIELSEN_DATE_RANGE","FILTER_NIELSEN_DEVICE_ID","FILTER_NIELSEN_GENDER","FILTER_NIELSEN_RESTATEMENT_DATE","FILTER_OMID_CAPABLE","FILTER_OM_SDK_AVAILABLE","FILTER_ORDER_ID","FILTER_OS","FILTER_PAGE_CATEGORY","FILTER_PAGE_LAYOUT","FILTER_PARENTAL_STATUS","FILTER_PARTNER","FILTER_PARTNER_CURRENCY","FILTER_PARTNER_NAME","FILTER_PARTNER_STATUS","FILTER_PATH_EVENT_INDEX","FILTER_PATH_PATTERN_ID","FILTER_PLACEMENT_ALL_YOUTUBE_CHANNELS","FILTER_PLACEMENT_NAME_ALL_YOUTUBE_CHANNELS","FILTER_PLATFORM","FILTER_PLAYBACK_METHOD","FILTER_POSITION_IN_CONTENT","FILTER_PUBLIC_INVENTORY","FILTER_PUBLISHER_PROPERTY","FILTER_PUBLISHER_PROPERTY_ID","FILTER_PUBLISHER_PROPERTY_SECTION","FILTER_PUBLISHER_PROPERTY_SECTION_ID","FILTER_PUBLISHER_TRAFFIC_SOURCE","FILTER_QUARTER","FILTER_REFRESHED_AD_NAME","FILTER_REFUND_REASON","FILTER_REGION","FILTER_REGION_NAME","FILTER_REMARKETING_LIST","FILTER_REWARDED","FILTER_SENSITIVE_CATEGORY","FILTER_SERVED_PIXEL_DENSITY","FILTER_SITE_ID","FILTER_SITE_LANGUAGE","FILTER_SKIPPABLE_SUPPORT","FILTER_TARGETED_DATA_PROVIDERS","FILTER_TARGETED_USER_LIST","FILTER_TARGETING_EXPANSION","FILTER_THIRD_PARTY_AUDIENCE_LIST_COST","FILTER_THIRD_PARTY_AUDIENCE_LIST_TYPE","FILTER_TIME_OF_DAY","FILTER_TRUEVIEW_AD","FILTER_TRUEVIEW_AD_GROUP","FILTER_TRUEVIEW_AD_GROUP_AD_ID","FILTER_TRUEVIEW_AD_GROUP_ID","FILTER_TRUEVIEW_AD_TYPE_NAME","FILTER_TRUEVIEW_AGE","FILTER_TRUEVIEW_CATEGORY","FILTER_TRUEVIEW_CITY","FILTER_TRUEVIEW_CLICK_TYPE_NAME","FILTER_TRUEVIEW_CONVERSION_TYPE","FILTER_TRUEVIEW_COUNTRY","FILTER_TRUEVIEW_CUSTOM_AFFINITY","FILTER_TRUEVIEW_DETAILED_DEMOGRAPHICS","FILTER_TRUEVIEW_DETAILED_DEMOGRAPHICS_ID","FILTER_TRUEVIEW_DMA","FILTER_TRUEVIEW_DMA_NAME","FILTER_TRUEVIEW_GENDER","FILTER_TRUEVIEW_HOUSEHOLD_INCOME","FILTER_TRUEVIEW_IAR_AGE","FILTER_TRUEVIEW_IAR_CATEGORY","FILTER_TRUEVIEW_IAR_CITY","FILTER_TRUEVIEW_IAR_COUNTRY","FILTER_TRUEVIEW_IAR_COUNTRY_NAME","FILTER_TRUEVIEW_IAR_GENDER","FILTER_TRUEVIEW_IAR_INTEREST","FILTER_TRUEVIEW_IAR_LANGUAGE","FILTER_TRUEVIEW_IAR_PARENTAL_STATUS","FILTER_TRUEVIEW_IAR_REGION_NAME","FILTER_TRUEVIEW_IAR_REMARKETING_LIST","FILTER_TRUEVIEW_IAR_TIME_OF_DAY","FILTER_TRUEVIEW_IAR_YOUTUBE_CHANNEL","FILTER_TRUEVIEW_IAR_YOUTUBE_VIDEO","FILTER_TRUEVIEW_IAR_ZIPCODE","FILTER_TRUEVIEW_INTEREST","FILTER_TRUEVIEW_KEYWORD","FILTER_TRUEVIEW_PARENTAL_STATUS","FILTER_TRUEVIEW_PLACEMENT","FILTER_TRUEVIEW_PLACEMENT_ID","FILTER_TRUEVIEW_REGION","FILTER_TRUEVIEW_REGION_NAME","FILTER_TRUEVIEW_REMARKETING_LIST","FILTER_TRUEVIEW_REMARKETING_LIST_NAME","FILTER_TRUEVIEW_TARGETING_EXPANSION","FILTER_TRUEVIEW_URL","FILTER_TRUEVIEW_ZIPCODE","FILTER_USER_LIST","FILTER_USER_LIST_FIRST_PARTY","FILTER_USER_LIST_FIRST_PARTY_NAME","FILTER_USER_LIST_THIRD_PARTY","FILTER_USER_LIST_THIRD_PARTY_NAME","FILTER_VARIANT_ID","FILTER_VARIANT_NAME","FILTER_VARIANT_VERSION","FILTER_VENDOR_MEASUREMENT_MODE","FILTER_VERIFICATION_AUDIBILITY_COMPLETE","FILTER_VERIFICATION_AUDIBILITY_START","FILTER_VERIFICATION_VIDEO_PLAYER_SIZE","FILTER_VERIFICATION_VIDEO_PLAYER_SIZE_COMPLETE","FILTER_VERIFICATION_VIDEO_PLAYER_SIZE_FIRST_QUARTILE","FILTER_VERIFICATION_VIDEO_PLAYER_SIZE_MID_POINT","FILTER_VERIFICATION_VIDEO_PLAYER_SIZE_START","FILTER_VERIFICATION_VIDEO_PLAYER_SIZE_THIRD_QUARTILE","FILTER_VERIFICATION_VIDEO_POSITION","FILTER_VERIFICATION_VIDEO_RESIZED","FILTER_VIDEO_AD_POSITION_IN_STREAM","FILTER_VIDEO_COMPANION_CREATIVE_SIZE","FILTER_VIDEO_CONTENT_DURATION","FILTER_VIDEO_CONTENT_LIVE_STREAM","FILTER_VIDEO_CONTINUOUS_PLAY","FILTER_VIDEO_CREATIVE_DURATION","FILTER_VIDEO_CREATIVE_DURATION_SKIPPABLE","FILTER_VIDEO_DURATION","FILTER_VIDEO_DURATION_SECONDS","FILTER_VIDEO_DURATION_SECONDS_RANGE","FILTER_VIDEO_FORMAT_SUPPORT","FILTER_VIDEO_PLAYER_SIZE","FILTER_VIDEO_RATING_TIER","FILTER_VIDEO_SKIPPABLE_SUPPORT","FILTER_WEEK","FILTER_YEAR","FILTER_YOUTUBE_ADAPTED_AUDIENCE_LIST","FILTER_YOUTUBE_AD_VIDEO","FILTER_YOUTUBE_AD_VIDEO_ID","FILTER_YOUTUBE_CHANNEL","FILTER_YOUTUBE_PROGRAMMATIC_GUARANTEED_ADVERTISER","FILTER_YOUTUBE_PROGRAMMATIC_GUARANTEED_INSERTION_ORDER","FILTER_YOUTUBE_PROGRAMMATIC_GUARANTEED_PARTNER","FILTER_YOUTUBE_VIDEO","FILTER_ZIP_CODE","FILTER_ZIP_POSTAL_CODE"],"type":"string","title":"Filter","options":{"enum_titles":["Active View: Custom Metric ID","Active View: Custom Metric Name","Active View Expected Viewability","Advertiser ID","Advertiser Currency","Advertiser Integration Code","Advertiser Status","Advertiser","Advertiser Time Zone","Ad Position","Ad Type","Age","Algorithm","Algorithm ID","AMP Page Request","Anonymous Inventory Modeling","App/URL","App/URL Excluded","Attributed Userlist","Attributed Userlist Cost","Attributed Userlist Type","Attribution Model","Audience List","Audience List Cost","Audience List Type","Audience Name","Audience Type","Audio Feed Type","Authorized Seller State","Billable Outcome","Brand Lift Type","Browser","Budget Segment Budget","Budget Segment Name","Budget Segment End Date","Budget Segment Pacing Percentage","Budget Segment Start Date","Budget Type (Segment)","Insertion Order Daily Frequency","ISP or Carrier ID","ISP or Carrier","Channel Grouping","Channel ID","Channel","Channel Type","City ID","City","CM360 Placement ID","Companion Creative ID","Companion Creative","Conversion Ad Event Type","Conversion Ad Event Type ID","Time to Conversion","Conversion Source","Conversion Source ID","Country","Country","Creative","Creative Asset","Creative Attributes","Creative Height","Creative ID","Creative Integration Code","Creative Rendered in AMP","Creative Size","Creative Source","Creative Status","Creative Type","Creative Width","Data Provider ID","Data Provider","Data Source","Date","Day of Week","Detailed Demographics","Detailed Demographics ID","Device","Device Make","Device Model","Device Type","DFP Insertion Order ID","Digital Content Label","DMA Code","DMA","Domain","Eligible Cookies on First-Party Audience List","Eligible Cookies on Third-Party Audience List and Interest","Event Type","Exchange","Exchange Code","Exchange ID","Asset","Asset (upgraded)","Asset Status (upgraded)","Asset Type (upgraded)","Asset Status","Asset Type","First Party Audience List Cost","First Party Audience List Type","Floodlight Activity","Floodlight Activity ID","Format","DFP Insertion Order","DFP Line Item","DFP Line Item ID","Gender","Age","City","Country","Country","Device Type","Device Type","Gender","Region","Remarketing List","Household Income","Impression Counting Method","Rejection Reason","Insertion Order ID","Insertion Order Goal Type","Insertion Order Goal Value","Insertion Order Integration Code","Insertion Order","Insertion Order Status","Interest","Inventory Commitment Type","Inventory Delivery Method","Format","Inventory Media Cost Type","Inventory Rate Type","Inventory Source ID (Legacy)","Inventory Source ID (external)","Inventory Source Group","Inventory Source Group ID","Inventory Source ID","Inventory Source","Inventory Source Type","Keyword","Life Event","Life Events","Line Item ID","Line Item Budget","Line Item Daily Frequency","Line Item End Date","Line Item Integration Code","Line Item Lifetime Frequency","Line Item","Line Item Pacing Percentage","Line Item Start Date","Line Item Status","Line Item Type","Matched Genre Target","Match Ratio","Measurement Source","Campaign ID","Campaign","Media Type","Business Chain","Month","MRAID Support","Age","Country","Date Range for Cumulative Metrics","Device ID","Gender","Restatement Date","OM SDK Capable","OM SDK Available","Order ID","Operating System","Category","Environment","Parental Status","Partner ID","Partner Currency","Partner","Partner Status","Path Event Index","Path Pattern ID","Placement (All YouTube Channels)","Placement Name (All YouTube Channels)","Platform","Playback Method","Position in Content","Public Inventory","Publisher Property","Publisher Property ID","Publisher Property Section","Publisher Property Section ID","Publisher Traffic Source","Quarter","Refreshed Ad","Refund Reason","Region ID","Region","Remarketing List","Rewarded","Sensitive Category","Served Pixel Density","App/URL ID","Language","Video Skippable Support","Targeted Data Providers","Attributed Userlist ID","Targeting Expansion","Third Party Audience List Cost","Third Party Audience List Type","Time of Day","YouTube Ad","YouTube Ad Group","YouTube Ad ID","YouTube Ad Group ID","YouTube Ad Type","Age (YouTube)","Category","City","Click Type","Conversion Type","Country (YouTube)","Custom Affinity","Detailed Demographics","Detailed Demographics ID","DMA ID","DMA","Gender","Household Income","Age","Category","City","Country","Country","Gender","Interest","Language","Parental Status","Region","Remarketing List ID","Time of Day","YouTube Channel","YouTube Video","Zip Code","Interest","Keyword","Parental Status","Placement (Managed)","Placement ID (Managed)","Region ID","Region","Remarketing List ID","Remarketing List","Optimized Targeting","Placement (All)","Zipcode","Audience List ID","First Party Audience List ID","First Party Audience List","Third Party Audience List ID","Third Party Audience List","Variant ID","Variant Name","Variant Version","Vendor Measurement Mode","Audibility At Complete","Audibility At Start","Verification Video Player Size","Video Player Size at Completion","Video Player Size at First Quartile","Video Player Size at Midpoint","Video Player Size at Start","Video Player Size at Third Quartile","Verification Video Position","Video Resized","Video Ad Position In Stream","Companion Creative Size","Video Content Duration","Video Content Live Stream","Video Continuous Play","Video Creative Duration","Video Creative Duration (Skippable)","Video Duration","Max Video Duration","Max Video Duration Range","Video Format Support","Video Player Size","Digital Content Label","Video Skippable Support","Week","Year","YouTube Adapted Audience List","YouTube Ad Video","YouTube Ad Video ID","YouTube Channel","Advertiser","Insertion Order","Partner","YouTube Video","Zip Code ID","Zip Code"]},"propertyOrder":10},"value":{"type":"string","title":"Value","minLength":1,"propertyOrder":20}}},"title":"Filters","format":"table","propertyOrder":800},"metrics":{"type":"array","items":{"enum":["METRIC_ACTIVE_VIEW_AUDIBLE_FULLY_ON_SCREEN_HALF_OF_DURATION_IMPRESSIONS","METRIC_ACTIVE_VIEW_AUDIBLE_FULLY_ON_SCREEN_HALF_OF_DURATION_MEASURABLE_IMPRESSIONS","METRIC_ACTIVE_VIEW_AUDIBLE_FULLY_ON_SCREEN_HALF_OF_DURATION_RATE","METRIC_ACTIVE_VIEW_AUDIBLE_FULLY_ON_SCREEN_HALF_OF_DURATION_TRUEVIEW_IMPRESSIONS","METRIC_ACTIVE_VIEW_AUDIBLE_FULLY_ON_SCREEN_HALF_OF_DURATION_TRUEVIEW_MEASURABLE_IMPRESSIONS","METRIC_ACTIVE_VIEW_AUDIBLE_FULLY_ON_SCREEN_HALF_OF_DURATION_TRUEVIEW_RATE","METRIC_ACTIVE_VIEW_AUDIBLE_VISIBLE_ON_COMPLETE_IMPRESSIONS","METRIC_ACTIVE_VIEW_AVERAGE_VIEWABLE_TIME","METRIC_ACTIVE_VIEW_CUSTOM_METRIC_MEASURABLE_IMPRESSIONS","METRIC_ACTIVE_VIEW_CUSTOM_METRIC_VIEWABLE_IMPRESSIONS","METRIC_ACTIVE_VIEW_CUSTOM_METRIC_VIEWABLE_RATE","METRIC_ACTIVE_VIEW_DISTRIBUTION_UNMEASURABLE","METRIC_ACTIVE_VIEW_DISTRIBUTION_UNVIEWABLE","METRIC_ACTIVE_VIEW_DISTRIBUTION_VIEWABLE","METRIC_ACTIVE_VIEW_ELIGIBLE_IMPRESSIONS","METRIC_ACTIVE_VIEW_MEASURABLE_IMPRESSIONS","METRIC_ACTIVE_VIEW_PCT_MEASURABLE_IMPRESSIONS","METRIC_ACTIVE_VIEW_PCT_VIEWABLE_IMPRESSIONS","METRIC_ACTIVE_VIEW_PERCENT_AUDIBLE_IMPRESSIONS","METRIC_ACTIVE_VIEW_PERCENT_AUDIBLE_VISIBLE_AT_START","METRIC_ACTIVE_VIEW_PERCENT_AUDIBLE_VISIBLE_FIRST_QUAR","METRIC_ACTIVE_VIEW_PERCENT_AUDIBLE_VISIBLE_ON_COMPLETE","METRIC_ACTIVE_VIEW_PERCENT_AUDIBLE_VISIBLE_SECOND_QUAR","METRIC_ACTIVE_VIEW_PERCENT_AUDIBLE_VISIBLE_THIRD_QUAR","METRIC_ACTIVE_VIEW_PERCENT_FULLY_ON_SCREEN_2_SEC","METRIC_ACTIVE_VIEW_PERCENT_FULL_SCREEN","METRIC_ACTIVE_VIEW_PERCENT_IN_BACKGROUND","METRIC_ACTIVE_VIEW_PERCENT_OF_AD_PLAYED","METRIC_ACTIVE_VIEW_PERCENT_OF_COMPLETED_IMPRESSIONS_AUDIBLE_AND_VISIBLE","METRIC_ACTIVE_VIEW_PERCENT_OF_COMPLETED_IMPRESSIONS_VISIBLE","METRIC_ACTIVE_VIEW_PERCENT_OF_FIRST_QUARTILE_IMPRESSIONS_AUDIBLE_AND_VISIBLE","METRIC_ACTIVE_VIEW_PERCENT_OF_FIRST_QUARTILE_IMPRESSIONS_VISIBLE","METRIC_ACTIVE_VIEW_PERCENT_OF_MIDPOINT_IMPRESSIONS_AUDIBLE_AND_VISIBLE","METRIC_ACTIVE_VIEW_PERCENT_OF_MIDPOINT_IMPRESSIONS_VISIBLE","METRIC_ACTIVE_VIEW_PERCENT_OF_THIRD_QUARTILE_IMPRESSIONS_AUDIBLE_AND_VISIBLE","METRIC_ACTIVE_VIEW_PERCENT_OF_THIRD_QUARTILE_IMPRESSIONS_VISIBLE","METRIC_ACTIVE_VIEW_PERCENT_PLAY_TIME_AUDIBLE","METRIC_ACTIVE_VIEW_PERCENT_PLAY_TIME_AUDIBLE_AND_VISIBLE","METRIC_ACTIVE_VIEW_PERCENT_PLAY_TIME_VISIBLE","METRIC_ACTIVE_VIEW_PERCENT_VIEWABLE_FOR_TIME_THRESHOLD","METRIC_ACTIVE_VIEW_PERCENT_VISIBLE_AT_START","METRIC_ACTIVE_VIEW_PERCENT_VISIBLE_FIRST_QUAR","METRIC_ACTIVE_VIEW_PERCENT_VISIBLE_ON_COMPLETE","METRIC_ACTIVE_VIEW_PERCENT_VISIBLE_SECOND_QUAR","METRIC_ACTIVE_VIEW_PERCENT_VISIBLE_THIRD_QUAR","METRIC_ACTIVE_VIEW_UNMEASURABLE_IMPRESSIONS","METRIC_ACTIVE_VIEW_UNVIEWABLE_IMPRESSIONS","METRIC_ACTIVE_VIEW_VIEWABLE_FOR_TIME_THRESHOLD","METRIC_ACTIVE_VIEW_VIEWABLE_IMPRESSIONS","METRIC_ACTIVITY_REVENUE","METRIC_ADAPTED_AUDIENCE_FREQUENCY","METRIC_ADLINGO_FEE_ADVERTISER_CURRENCY","METRIC_AUDIO_CLIENT_COST_ECPCL_ADVERTISER_CURRENCY","METRIC_AUDIO_MEDIA_COST_ECPCL_ADVERTISER_CURRENCY","METRIC_AUDIO_MUTES_AUDIO","METRIC_AUDIO_REVENUE_ECPCL_ADVERTISER_CURRENCY","METRIC_AUDIO_UNMUTES_AUDIO","METRIC_AUDIO_UNMUTES_VIDEO","METRIC_AVERAGE_DISPLAY_TIME","METRIC_AVERAGE_IMPRESSION_FREQUENCY_PER_USER","METRIC_AVERAGE_IMPRESSION_FREQUENCY_PER_USER_7DAYS","METRIC_AVERAGE_INTERACTION_TIME","METRIC_AVERAGE_WATCH_TIME_PER_IMPRESSION","METRIC_BEGIN_TO_RENDER_ELIGIBLE_IMPRESSIONS","METRIC_BEGIN_TO_RENDER_IMPRESSIONS","METRIC_BENCHMARK_FREQUENCY","METRIC_BID_REQUESTS","METRIC_BILLABLE_COST_ADVERTISER","METRIC_BILLABLE_COST_PARTNER","METRIC_BILLABLE_COST_USD","METRIC_BILLABLE_IMPRESSIONS","METRIC_BRAND_LIFT_ABSOLUTE_BRAND_LIFT","METRIC_BRAND_LIFT_ALL_SURVEY_RESPONSES","METRIC_BRAND_LIFT_BASELINE_POSITIVE_RESPONSE_RATE","METRIC_BRAND_LIFT_BASELINE_SURVEY_RESPONSES","METRIC_BRAND_LIFT_COST_PER_LIFTED_USER","METRIC_BRAND_LIFT_EXPOSED_SURVEY_RESPONSES","METRIC_BRAND_LIFT_HEADROOM_BRAND_LIFT","METRIC_BRAND_LIFT_RELATIVE_BRAND_LIFT","METRIC_BRAND_LIFT_USERS","METRIC_CARD_CLICKS","METRIC_CLICKS","METRIC_CLICK_TO_POST_CLICK_CONVERSION_RATE","METRIC_CLIENT_COST_ADVERTISER_CURRENCY","METRIC_CLIENT_COST_ECPA_ADVERTISER_CURRENCY","METRIC_CLIENT_COST_ECPA_PC_ADVERTISER_CURRENCY","METRIC_CLIENT_COST_ECPA_PV_ADVERTISER_CURRENCY","METRIC_CLIENT_COST_ECPC_ADVERTISER_CURRENCY","METRIC_CLIENT_COST_ECPM_ADVERTISER_CURRENCY","METRIC_CLIENT_COST_VIEWABLE_ECPM_ADVERTISER_CURRENCY","METRIC_CM360_POST_CLICK_REVENUE","METRIC_CM360_POST_CLICK_REVENUE_CROSS_ENVIRONMENT","METRIC_CM360_POST_VIEW_REVENUE","METRIC_CM360_POST_VIEW_REVENUE_CROSS_ENVIRONMENT","METRIC_COMPANION_CLICKS_AUDIO","METRIC_COMPANION_IMPRESSIONS_AUDIO","METRIC_COMPLETE_LISTENS_AUDIO","METRIC_COMPLETION_RATE_AUDIO","METRIC_CONVERSIONS_PER_MILLE","METRIC_CONVERTING_PATHS","METRIC_COOKIE_CONSENTED_FLOODLIGHT_IMPRESSIONS","METRIC_COOKIE_REACH_AVERAGE_IMPRESSION_FREQUENCY","METRIC_COOKIE_REACH_IMPRESSION_REACH","METRIC_COOKIE_UNCONSENTED_FLOODLIGHT_IMPRESSIONS","METRIC_COUNTERS","METRIC_CPM_FEE1_ADVERTISER","METRIC_CPM_FEE1_PARTNER","METRIC_CPM_FEE1_USD","METRIC_CPM_FEE2_ADVERTISER","METRIC_CPM_FEE2_PARTNER","METRIC_CPM_FEE2_USD","METRIC_CPM_FEE3_ADVERTISER","METRIC_CPM_FEE3_PARTNER","METRIC_CPM_FEE3_USD","METRIC_CPM_FEE4_ADVERTISER","METRIC_CPM_FEE4_PARTNER","METRIC_CPM_FEE4_USD","METRIC_CPM_FEE5_ADVERTISER","METRIC_CPM_FEE5_PARTNER","METRIC_CPM_FEE5_USD","METRIC_CTR","METRIC_CUSTOM_FEE_1_ADVERTISER_CURRENCY","METRIC_CUSTOM_FEE_2_ADVERTISER_CURRENCY","METRIC_CUSTOM_FEE_3_ADVERTISER_CURRENCY","METRIC_CUSTOM_FEE_4_ADVERTISER_CURRENCY","METRIC_CUSTOM_FEE_5_ADVERTISER_CURRENCY","METRIC_CUSTOM_VALUE_PER_1000_IMPRESSIONS","METRIC_DATA_COST_ADVERTISER","METRIC_DATA_COST_PARTNER","METRIC_DATA_COST_USD","METRIC_DEMO_COMPOSITION_IMPRESSION","METRIC_DEMO_COMPOSITION_IMPRESSION_COVIEWED","METRIC_DEMO_CORRECTED_CLICKS","METRIC_DEMO_POPULATION","METRIC_DUPLICATE_FLOODLIGHT_IMPRESSIONS","METRIC_ENGAGEMENTS","METRIC_ENGAGEMENT_RATE","METRIC_ESTIMATED_CPM_FOR_IMPRESSIONS_WITH_CUSTOM_VALUE_ADVERTISER_CURRENCY","METRIC_ESTIMATED_TOTAL_COST_FOR_IMPRESSIONS_WITH_CUSTOM_VALUE_ADVERTISER_CURRENCY","METRIC_EXITS","METRIC_EXPANSIONS","METRIC_FEE10_ADVERTISER","METRIC_FEE10_PARTNER","METRIC_FEE10_USD","METRIC_FEE11_ADVERTISER","METRIC_FEE11_PARTNER","METRIC_FEE11_USD","METRIC_FEE12_ADVERTISER","METRIC_FEE12_PARTNER","METRIC_FEE12_USD","METRIC_FEE13_ADVERTISER","METRIC_FEE13_PARTNER","METRIC_FEE13_USD","METRIC_FEE14_ADVERTISER","METRIC_FEE14_PARTNER","METRIC_FEE14_USD","METRIC_FEE15_ADVERTISER","METRIC_FEE15_PARTNER","METRIC_FEE15_USD","METRIC_FEE16_ADVERTISER","METRIC_FEE16_PARTNER","METRIC_FEE16_USD","METRIC_FEE17_ADVERTISER","METRIC_FEE17_PARTNER","METRIC_FEE17_USD","METRIC_FEE18_ADVERTISER","METRIC_FEE18_PARTNER","METRIC_FEE18_USD","METRIC_FEE19_ADVERTISER","METRIC_FEE19_PARTNER","METRIC_FEE19_USD","METRIC_FEE20_ADVERTISER","METRIC_FEE20_PARTNER","METRIC_FEE20_USD","METRIC_FEE21_ADVERTISER","METRIC_FEE21_PARTNER","METRIC_FEE21_USD","METRIC_FEE22_ADVERTISER","METRIC_FEE22_PARTNER","METRIC_FEE22_USD","METRIC_FEE2_ADVERTISER","METRIC_FEE2_PARTNER","METRIC_FEE2_USD","METRIC_FEE31_ADVERTISER","METRIC_FEE31_PARTNER","METRIC_FEE31_USD","METRIC_FEE3_ADVERTISER","METRIC_FEE3_PARTNER","METRIC_FEE3_USD","METRIC_FEE4_ADVERTISER","METRIC_FEE4_PARTNER","METRIC_FEE4_USD","METRIC_FEE5_ADVERTISER","METRIC_FEE5_PARTNER","METRIC_FEE5_USD","METRIC_FEE6_ADVERTISER","METRIC_FEE6_PARTNER","METRIC_FEE6_USD","METRIC_FEE7_ADVERTISER","METRIC_FEE7_PARTNER","METRIC_FEE7_USD","METRIC_FEE8_ADVERTISER","METRIC_FEE8_PARTNER","METRIC_FEE8_USD","METRIC_FEE9_ADVERTISER","METRIC_FEE9_PARTNER","METRIC_FEE9_USD","METRIC_FIRST_QUARTILE_AUDIO","METRIC_FLOODLIGHT_IMPRESSIONS","METRIC_GENERAL_INVALID_TRAFFIC_GIVT_IMPRESSIONS","METRIC_GENERAL_INVALID_TRAFFIC_GIVT_TRACKED_ADS","METRIC_GIVT_ACTIVE_VIEW_ELIGIBLE_IMPRESSIONS","METRIC_GIVT_ACTIVE_VIEW_MEASURABLE_IMPRESSIONS","METRIC_GIVT_ACTIVE_VIEW_VIEWABLE_IMPRESSIONS","METRIC_GIVT_BEGIN_TO_RENDER_IMPRESSIONS","METRIC_GIVT_CLICKS","METRIC_GMAIL_CONVERSIONS","METRIC_GMAIL_POST_CLICK_CONVERSIONS","METRIC_GMAIL_POST_VIEW_CONVERSIONS","METRIC_GMAIL_POTENTIAL_VIEWS","METRIC_GRP_CORRECTED_IMPRESSIONS","METRIC_GRP_CORRECTED_IMPRESSIONS_COVIEWED","METRIC_GRP_CORRECTED_VIEWABLE_IMPRESSIONS","METRIC_GRP_CORRECTED_VIEWABLE_IMPRESSIONS_SHARE_PERCENT","METRIC_IMPRESSIONS","METRIC_IMPRESSIONS_COVIEWED","METRIC_IMPRESSIONS_TO_CONVERSION_RATE","METRIC_IMPRESSIONS_WITH_CUSTOM_VALUE","METRIC_IMPRESSIONS_WITH_POSITIVE_CUSTOM_VALUE","METRIC_IMPRESSION_CUSTOM_VALUE_COST","METRIC_IMPRESSION_LOSS_TARGETED_IMPRESSIONS","METRIC_INACTIVE_IMPRESSIONS","METRIC_INTERACTIVE_IMPRESSIONS","METRIC_INVALID_ACTIVE_VIEW_ELIGIBLE_IMPRESSIONS","METRIC_INVALID_ACTIVE_VIEW_MEASURABLE_IMPRESSIONS","METRIC_INVALID_ACTIVE_VIEW_VIEWABLE_IMPRESSIONS","METRIC_INVALID_BEGIN_TO_RENDER_IMPRESSIONS","METRIC_INVALID_CLICKS","METRIC_INVALID_IMPRESSIONS","METRIC_INVALID_TRACKED_ADS","METRIC_LAST_CLICKS","METRIC_LAST_IMPRESSIONS","METRIC_LAST_TOUCH_CLICK_THROUGH_CONVERSIONS","METRIC_LAST_TOUCH_TOTAL_CONVERSIONS","METRIC_LAST_TOUCH_VIEW_THROUGH_CONVERSIONS","METRIC_LINEITEM_BID_RESPONSE_COUNT","METRIC_MEDIA_COST_ADVERTISER","METRIC_MEDIA_COST_ECPAPC_ADVERTISER","METRIC_MEDIA_COST_ECPAPC_PARTNER","METRIC_MEDIA_COST_ECPAPC_USD","METRIC_MEDIA_COST_ECPAPV_ADVERTISER","METRIC_MEDIA_COST_ECPAPV_PARTNER","METRIC_MEDIA_COST_ECPAPV_USD","METRIC_MEDIA_COST_ECPA_ADVERTISER","METRIC_MEDIA_COST_ECPA_PARTNER","METRIC_MEDIA_COST_ECPA_USD","METRIC_MEDIA_COST_ECPCV_ADVERTISER","METRIC_MEDIA_COST_ECPCV_PARTNER","METRIC_MEDIA_COST_ECPCV_USD","METRIC_MEDIA_COST_ECPC_ADVERTISER","METRIC_MEDIA_COST_ECPC_PARTNER","METRIC_MEDIA_COST_ECPC_USD","METRIC_MEDIA_COST_ECPM_ADVERTISER","METRIC_MEDIA_COST_ECPM_PARTNER","METRIC_MEDIA_COST_ECPM_USD","METRIC_MEDIA_COST_PARTNER","METRIC_MEDIA_COST_USD","METRIC_MEDIA_COST_VIEWABLE_ECPM_ADVERTISER","METRIC_MEDIA_COST_VIEWABLE_ECPM_PARTNER","METRIC_MEDIA_COST_VIEWABLE_ECPM_USD","METRIC_MEDIA_FEE1_ADVERTISER","METRIC_MEDIA_FEE1_PARTNER","METRIC_MEDIA_FEE1_USD","METRIC_MEDIA_FEE2_ADVERTISER","METRIC_MEDIA_FEE2_PARTNER","METRIC_MEDIA_FEE2_USD","METRIC_MEDIA_FEE3_ADVERTISER","METRIC_MEDIA_FEE3_PARTNER","METRIC_MEDIA_FEE3_USD","METRIC_MEDIA_FEE4_ADVERTISER","METRIC_MEDIA_FEE4_PARTNER","METRIC_MEDIA_FEE4_USD","METRIC_MEDIA_FEE5_ADVERTISER","METRIC_MEDIA_FEE5_PARTNER","METRIC_MEDIA_FEE5_USD","METRIC_MIDPOINT_AUDIO","METRIC_NIELSEN_AVERAGE_FREQUENCY","METRIC_NIELSEN_GRP","METRIC_NIELSEN_IMPRESSIONS","METRIC_NIELSEN_IMPRESSIONS_SHARE","METRIC_NIELSEN_IMPRESSION_INDEX","METRIC_NIELSEN_POPULATION","METRIC_NIELSEN_POPULATION_REACH","METRIC_NIELSEN_POPULATION_SHARE","METRIC_NIELSEN_REACH_INDEX","METRIC_NIELSEN_REACH_SHARE","METRIC_NIELSEN_UNIQUE_AUDIENCE","METRIC_ORIGINAL_AUDIENCE_FREQUENCY","METRIC_PATH_CONVERSION_RATE","METRIC_PAUSES_AUDIO","METRIC_PERCENTAGE_FROM_CURRENT_IO_GOAL","METRIC_PERCENT_IMPRESSIONS_WITH_POSITIVE_CUSTOM_VALUE","METRIC_PERCENT_INVALID_IMPRESSIONS_PREBID","METRIC_PLATFORM_FEE_ADVERTISER","METRIC_PLATFORM_FEE_PARTNER","METRIC_PLATFORM_FEE_RATE","METRIC_PLATFORM_FEE_USD","METRIC_POST_CLICK_CONVERSIONS_CROSS_ENVIRONMENT","METRIC_POST_VIEW_CONVERSIONS_CROSS_ENVIRONMENT","METRIC_POTENTIAL_IMPRESSIONS","METRIC_POTENTIAL_VIEWS","METRIC_PREMIUM_FEE_ADVERTISER_CURRENCY","METRIC_PROFIT_ADVERTISER","METRIC_PROFIT_ECPM_ADVERTISER","METRIC_PROFIT_ECPM_PARTNER","METRIC_PROFIT_ECPM_USD","METRIC_PROFIT_MARGIN","METRIC_PROFIT_PARTNER","METRIC_PROFIT_USD","METRIC_PROFIT_VIEWABLE_ECPM_ADVERTISER","METRIC_PROFIT_VIEWABLE_ECPM_PARTNER","METRIC_PROFIT_VIEWABLE_ECPM_USD","METRIC_PROGRAMMATIC_GUARANTEED_IMPRESSIONS_PASSED_DUE_TO_FREQUENCY","METRIC_PROGRAMMATIC_GUARANTEED_SAVINGS_RE_INVESTED_DUE_TO_FREQUENCY_ADVERTISER_CURRENCY","METRIC_PROVISIONAL_IMPRESSIONS","METRIC_REFUND_BILLABLE_COST_ADVERTISER_CURRENCY","METRIC_REFUND_MEDIA_COST_ADVERTISER_CURRENCY","METRIC_REFUND_PLATFORM_FEE_ADVERTISER_CURRENCY","METRIC_REVENUE_ADVERTISER","METRIC_REVENUE_ECPAPC_ADVERTISER","METRIC_REVENUE_ECPAPC_PARTNER","METRIC_REVENUE_ECPAPC_USD","METRIC_REVENUE_ECPAPV_ADVERTISER","METRIC_REVENUE_ECPAPV_PARTNER","METRIC_REVENUE_ECPAPV_USD","METRIC_REVENUE_ECPA_ADVERTISER","METRIC_REVENUE_ECPA_PARTNER","METRIC_REVENUE_ECPA_USD","METRIC_REVENUE_ECPCV_ADVERTISER","METRIC_REVENUE_ECPCV_PARTNER","METRIC_REVENUE_ECPCV_USD","METRIC_REVENUE_ECPC_ADVERTISER","METRIC_REVENUE_ECPC_PARTNER","METRIC_REVENUE_ECPC_USD","METRIC_REVENUE_ECPM_ADVERTISER","METRIC_REVENUE_ECPM_PARTNER","METRIC_REVENUE_ECPM_USD","METRIC_REVENUE_PARTNER","METRIC_REVENUE_USD","METRIC_REVENUE_VIEWABLE_ECPM_ADVERTISER","METRIC_REVENUE_VIEWABLE_ECPM_PARTNER","METRIC_REVENUE_VIEWABLE_ECPM_USD","METRIC_RICH_MEDIA_ENGAGEMENTS","METRIC_RICH_MEDIA_SCROLLS","METRIC_RICH_MEDIA_VIDEO_COMPLETIONS","METRIC_RICH_MEDIA_VIDEO_FIRST_QUARTILE_COMPLETES","METRIC_RICH_MEDIA_VIDEO_FULL_SCREENS","METRIC_RICH_MEDIA_VIDEO_MIDPOINTS","METRIC_RICH_MEDIA_VIDEO_MUTES","METRIC_RICH_MEDIA_VIDEO_PAUSES","METRIC_RICH_MEDIA_VIDEO_PLAYS","METRIC_RICH_MEDIA_VIDEO_SKIPS","METRIC_RICH_MEDIA_VIDEO_THIRD_QUARTILE_COMPLETES","METRIC_STARTS_AUDIO","METRIC_STOPS_AUDIO","METRIC_STORE_VISIT_CONVERSIONS","METRIC_STORE_VISIT_VIEW_THROUGH_CONVERSIONS","METRIC_TARGET_RATING_POINTS","METRIC_TARGET_RATING_POINTS_COVIEWED","METRIC_TEA_TRUEVIEW_IMPRESSIONS","METRIC_TEA_TRUEVIEW_UNIQUE_COOKIES","METRIC_THIRD_QUARTILE_AUDIO","METRIC_TIMERS","METRIC_TOTAL_AUDIO_MEDIA_COST_ECPCL_ADVERTISER_CURRENCY","METRIC_TOTAL_CONVERSIONS","METRIC_TOTAL_CONVERSIONS_CROSS_ENVIRONMENT","METRIC_TOTAL_DISPLAY_TIME","METRIC_TOTAL_EXPOSURES","METRIC_TOTAL_IMPRESSION_CUSTOM_VALUE","METRIC_TOTAL_INTERACTION_TIME","METRIC_TOTAL_MEDIA_COST_ADVERTISER","METRIC_TOTAL_MEDIA_COST_ECPAPC_ADVERTISER","METRIC_TOTAL_MEDIA_COST_ECPAPC_PARTNER","METRIC_TOTAL_MEDIA_COST_ECPAPC_USD","METRIC_TOTAL_MEDIA_COST_ECPAPV_ADVERTISER","METRIC_TOTAL_MEDIA_COST_ECPAPV_PARTNER","METRIC_TOTAL_MEDIA_COST_ECPAPV_USD","METRIC_TOTAL_MEDIA_COST_ECPA_ADVERTISER","METRIC_TOTAL_MEDIA_COST_ECPA_PARTNER","METRIC_TOTAL_MEDIA_COST_ECPA_USD","METRIC_TOTAL_MEDIA_COST_ECPCV_ADVERTISER","METRIC_TOTAL_MEDIA_COST_ECPCV_PARTNER","METRIC_TOTAL_MEDIA_COST_ECPCV_USD","METRIC_TOTAL_MEDIA_COST_ECPC_ADVERTISER","METRIC_TOTAL_MEDIA_COST_ECPC_PARTNER","METRIC_TOTAL_MEDIA_COST_ECPC_USD","METRIC_TOTAL_MEDIA_COST_ECPM_ADVERTISER","METRIC_TOTAL_MEDIA_COST_ECPM_PARTNER","METRIC_TOTAL_MEDIA_COST_ECPM_USD","METRIC_TOTAL_MEDIA_COST_PARTNER","METRIC_TOTAL_MEDIA_COST_USD","METRIC_TOTAL_MEDIA_COST_VIEWABLE_ECPM_ADVERTISER","METRIC_TOTAL_MEDIA_COST_VIEWABLE_ECPM_PARTNER","METRIC_TOTAL_MEDIA_COST_VIEWABLE_ECPM_USD","METRIC_TOTAL_PATHS","METRIC_TOTAL_USERS","METRIC_TRACKED_ADS","METRIC_TRACKING_UNCONSENTED_CLICKS","METRIC_TRUEVIEW_ALL_AD_SEQUENCE_IMPRESSIONS","METRIC_TRUEVIEW_AVERAGE_CPE_ADVERTISER","METRIC_TRUEVIEW_AVERAGE_CPE_PARTNER","METRIC_TRUEVIEW_AVERAGE_CPE_USD","METRIC_TRUEVIEW_CONVERSION_COST_MANY_PER_VIEW_ADVERTISER","METRIC_TRUEVIEW_CONVERSION_COST_MANY_PER_VIEW_PARTNER","METRIC_TRUEVIEW_CONVERSION_COST_MANY_PER_VIEW_USD","METRIC_TRUEVIEW_CONVERSION_MANY_PER_VIEW","METRIC_TRUEVIEW_CONVERSION_RATE_ONE_PER_VIEW","METRIC_TRUEVIEW_CPV_ADVERTISER","METRIC_TRUEVIEW_CPV_PARTNER","METRIC_TRUEVIEW_CPV_USD","METRIC_TRUEVIEW_EARNED_LIKES","METRIC_TRUEVIEW_EARNED_PLAYLIST_ADDITIONS","METRIC_TRUEVIEW_EARNED_SHARES","METRIC_TRUEVIEW_EARNED_SUBSCRIBERS","METRIC_TRUEVIEW_EARNED_VIEWS","METRIC_TRUEVIEW_ENGAGEMENTS","METRIC_TRUEVIEW_ENGAGEMENT_RATE","METRIC_TRUEVIEW_GENERAL_INVALID_TRAFFIC_GIVT_VIEWS","METRIC_TRUEVIEW_IMPRESSION_SHARE","METRIC_TRUEVIEW_INVALID_VIEWS","METRIC_TRUEVIEW_LOST_IS_BUDGET","METRIC_TRUEVIEW_LOST_IS_RANK","METRIC_TRUEVIEW_TOTAL_CONVERSION_VALUES_ADVERTISER","METRIC_TRUEVIEW_TOTAL_CONVERSION_VALUES_PARTNER","METRIC_TRUEVIEW_TOTAL_CONVERSION_VALUES_USD","METRIC_TRUEVIEW_UNIQUE_VIEWERS","METRIC_TRUEVIEW_VIEWS","METRIC_TRUEVIEW_VIEW_RATE","METRIC_TRUEVIEW_VIEW_THROUGH_CONVERSION","METRIC_UNIQUE_COOKIES_WITH_IMPRESSIONS","METRIC_UNIQUE_REACH_AVERAGE_IMPRESSION_FREQUENCY","METRIC_UNIQUE_REACH_AVERAGE_IMPRESSION_FREQUENCY_COVIEWED","METRIC_UNIQUE_REACH_AVERAGE_VIEWABLE_IMPRESSION_FREQUENCY","METRIC_UNIQUE_REACH_CLICK_REACH","METRIC_UNIQUE_REACH_IMPRESSION_REACH","METRIC_UNIQUE_REACH_IMPRESSION_REACH_ADDED_WITH_CROSS_STACK_FCAP","METRIC_UNIQUE_REACH_IMPRESSION_REACH_ADDED_WITH_PG_FMGMT","METRIC_UNIQUE_REACH_IMPRESSION_REACH_COVIEWED","METRIC_UNIQUE_REACH_INCREMENTAL_CLICK_REACH","METRIC_UNIQUE_REACH_INCREMENTAL_IMPRESSION_REACH","METRIC_UNIQUE_REACH_INCREMENTAL_TOTAL_REACH","METRIC_UNIQUE_REACH_INCREMENTAL_VIEWABLE_IMPRESSION_REACH","METRIC_UNIQUE_REACH_TOTAL_REACH","METRIC_UNIQUE_REACH_TOTAL_REACH_COVIEWED","METRIC_UNIQUE_REACH_VIEWABLE_IMPRESSION_REACH","METRIC_UNIQUE_VISITORS_COOKIES","METRIC_VENDOR_BLOCKED_ADS","METRIC_VERIFIABLE_IMPRESSIONS","METRIC_VERIFICATION_VIDEO_PLAYER_SIZE_MEASURABLE_IMPRESSIONS","METRIC_VIDEO_CLIENT_COST_ECPCV_ADVERTISER_CURRENCY","METRIC_VIDEO_COMPANION_CLICKS","METRIC_VIDEO_COMPANION_IMPRESSIONS","METRIC_VIDEO_COMPLETION_RATE","METRIC_VIEWABLE_BID_REQUESTS","METRIC_VIEWABLE_GROSS_RATING_POINTS","METRIC_VIRTUAL_PEOPLE_AVERAGE_IMPRESSION_FREQUENCY_BY_DEMO","METRIC_VIRTUAL_PEOPLE_AVERAGE_IMPRESSION_FREQUENCY_BY_DEMO_COVIEWED","METRIC_VIRTUAL_PEOPLE_AVERAGE_VIEWABLE_IMPRESSION_FREQUENCY_BY_DEMO","METRIC_VIRTUAL_PEOPLE_CLICK_REACH_BY_DEMO","METRIC_VIRTUAL_PEOPLE_DUPLICATE_CLICK_REACH","METRIC_VIRTUAL_PEOPLE_DUPLICATE_CLICK_REACH_PERCENT","METRIC_VIRTUAL_PEOPLE_DUPLICATE_IMPRESSION_REACH","METRIC_VIRTUAL_PEOPLE_DUPLICATE_IMPRESSION_REACH_PERCENT","METRIC_VIRTUAL_PEOPLE_DUPLICATE_TOTAL_REACH","METRIC_VIRTUAL_PEOPLE_DUPLICATE_TOTAL_REACH_PERCENT","METRIC_VIRTUAL_PEOPLE_DUPLICATE_VIEWABLE_IMPRESSION_REACH","METRIC_VIRTUAL_PEOPLE_DUPLICATE_VIEWABLE_IMPRESSION_REACH_PERCENT","METRIC_VIRTUAL_PEOPLE_EXCLUSIVE_CLICK_REACH","METRIC_VIRTUAL_PEOPLE_EXCLUSIVE_CLICK_REACH_PERCENT","METRIC_VIRTUAL_PEOPLE_EXCLUSIVE_IMPRESSION_REACH","METRIC_VIRTUAL_PEOPLE_EXCLUSIVE_IMPRESSION_REACH_PERCENT","METRIC_VIRTUAL_PEOPLE_EXCLUSIVE_TOTAL_REACH","METRIC_VIRTUAL_PEOPLE_EXCLUSIVE_TOTAL_REACH_PERCENT","METRIC_VIRTUAL_PEOPLE_EXCLUSIVE_VIEWABLE_IMPRESSION_REACH","METRIC_VIRTUAL_PEOPLE_EXCLUSIVE_VIEWABLE_IMPRESSION_REACH_PERCENT","METRIC_VIRTUAL_PEOPLE_IMPRESSION_REACH_BY_DEMO","METRIC_VIRTUAL_PEOPLE_IMPRESSION_REACH_BY_DEMO_COVIEWED","METRIC_VIRTUAL_PEOPLE_IMPRESSION_REACH_PERCENT","METRIC_VIRTUAL_PEOPLE_IMPRESSION_REACH_PERCENT_COVIEWED","METRIC_VIRTUAL_PEOPLE_IMPRESSION_REACH_SHARE_PERCENT","METRIC_VIRTUAL_PEOPLE_IMPRESSION_REACH_SHARE_PERCENT_COVIEWED","METRIC_VIRTUAL_PEOPLE_OVERLAP_CLICK_REACH","METRIC_VIRTUAL_PEOPLE_OVERLAP_CLICK_REACH_PERCENT","METRIC_VIRTUAL_PEOPLE_OVERLAP_IMPRESSION_REACH","METRIC_VIRTUAL_PEOPLE_OVERLAP_IMPRESSION_REACH_PERCENT","METRIC_VIRTUAL_PEOPLE_OVERLAP_TOTAL_REACH","METRIC_VIRTUAL_PEOPLE_OVERLAP_TOTAL_REACH_PERCENT","METRIC_VIRTUAL_PEOPLE_OVERLAP_VIEWABLE_IMPRESSION_REACH","METRIC_VIRTUAL_PEOPLE_OVERLAP_VIEWABLE_IMPRESSION_REACH_PERCENT","METRIC_VIRTUAL_PEOPLE_VIEWABLE_IMPRESSION_REACH_BY_DEMO","METRIC_VIRTUAL_PEOPLE_VIEWABLE_IMPRESSION_REACH_PERCENT","METRIC_VIRTUAL_PEOPLE_VIEWABLE_IMPRESSION_REACH_SHARE_PERCENT","METRIC_WATCH_TIME","METRIC_WIN_LOSS_DEAL_AVAILABLE_REQUESTS","METRIC_WIN_LOSS_DEAL_TARGETED_IMPRESSIONS","METRIC_WIN_LOSS_LINEITEM_AVAILABLE_REQUESTS","METRIC_WIN_LOSS_LINEITEM_TARGETED_IMPRESSIONS","METRIC_WIN_LOSS_RATE"],"type":"string","options":{"enum_titles":["Active View: Audible & Fully On-Screen for Half of Duration (15 sec. cap) Impressions","Active View: Audible & Fully On-Screen for Half of Duration (15 sec. cap) Measurable Impressions","Active View: Audible & Fully On-Screen for Half of Duration (15 sec. cap) Rate","Active View: Audible & Fully On-Screen for Half of Duration (TrueView) Impressions","Active View: Audible & Fully On-Screen for Half of Duration (TrueView) Measurable Impressions","Active View: Audible & Fully On-Screen for Half of Duration (TrueView) Rate","Active View: Impressions Audible and Visible at Completion","Active View: Average Viewable Time (Seconds)","Active View: Custom Metric Measurable Impressions","Active View: Custom Metric Viewable Impressions","Active View: Custom Metric Viewable Rate","Active View: Impression Distribution (Not Measurable)","Active View: Impression Distribution (Not Viewable)","Active View: Impression Distribution (Viewable)","Active View: Eligible Impressions","Active View: Measurable Impressions","Active View: % Measurable Impressions","Active View: % Viewable Impressions","Active View: % Audible Impressions","Active View: % Audible and Visible at Start","Active View: % Audible and Visible at First Quartile","Active View: % Audible and Visible at Completion","Active View: % Audible and Visible at Midpoint","Active View: % Audible and Visible at Third Quartile","Active View: % Fully On-Screen 2 sec","Active View: % Full-Screen","Active View: % In Background","Active View: % of Ad Played","Active View: % of Completed Impressions Audible and Visible","Active View: % of Completed Impressions Visible","Active View: % of First Quartile Impressions Audible and Visible","Active View: % of First Quartile Impressions Visible","Active View: % of Midpoint Impressions Audible and Visible","Active View: % of Midpoint Impressions Visible","Active View: % of Third Quartile Impressions Audible and Visible","Active View: % of Third Quartile Impressions Visible","Active View: % Play Time Audible","Active View: % Play Time Audible and Visible","Active View: % Play Time Visible","Active View: % Visible 10 Seconds","Active View: % Visible at Start","Active View: % Visible at First Quartile","Active View: % Visible at Completion","Active View: % Visible at Midpoint","Active View: % Visible at Third Quartile","Active View: Not Measurable Impressions","Active View: Not Viewable Impressions","Active View: Impressions Visible 10 Seconds","Active View: Viewable Impressions","Total Revenue","Adapted Audience Frequency","AdLingo Fee (Advertiser Currency)","Audio Client Cost eCPCL (Advertiser Currency)","Audio Media Cost eCPCL (Advertiser Currency)","Audio Mutes (Audio)","Audio Revenue eCPCL (Advertiser Currency)","Audio Unmutes (Audio)","Audio Unmutes (Video)","Average Display Time","Average Impression Frequency per User","Average Impression Frequency per User (7 days)","Average Interaction Time","Average Watch Time per Impression","Begin to Render Eligible Impressions","Begin to Render Impressions","Benchmark Frequency","Potential Impressions","Billable Cost (Advertiser Currency)","Billable Cost (Partner Currency)","Billable Cost (USD)","Billable Impressions","Brand Lift: Absolute Brand Lift","Brand Lift: All Survey Responses","Brand Lift: Baseline Positive Response Rate","Brand Lift: Baseline Survey Responses","Brand Lift: Cost Per Lifted User","Brand Lift: Exposed Survey Responses","Brand Lift: Headroom Brand Lift","Brand Lift: Relative Brand Lift","Brand Lift: Users","Card Clicks","Clicks","% Clicks Leading to Conversions","Client Cost (Advertiser Currency)","Client Cost eCPA (Advertiser Currency)","Client Cost eCPA (PC) (Advertiser Currency)","Client Cost eCPA (PV) (Advertiser Currency)","Client Cost eCPC (Advertiser Currency)","Client Cost eCPM (Advertiser Currency)","Client Cost Viewable eCPM (Advertiser Currency)","CM360 Post-Click Revenue","CM360 Post-Click Revenue + Cross-Environment","CM360 Post-View Revenue","CM360 Post-View Revenue + Cross-Environment","Companion Clicks (Audio)","Companion Views (Audio)","Complete Listens (Audio)","Completion Rate (Audio)","Conversions per 1000 Impressions","Converting Paths","Cookie Consented Floodlight Impressions","Cookie Reach: Average Impression Frequency","Cookie Reach: Impression Reach","Cookie Unconsented Floodlight Impressions","Counters","CPM Fee 1 (Advertiser Currency)","CPM Fee 1 (Partner Currency)","CPM Fee 1 (USD)","CPM Fee 2 (Advertiser Currency)","CPM Fee 2 (Partner Currency)","CPM Fee 2 (USD)","CPM Fee 3 (Advertiser Currency)","CPM Fee 3 (Partner Currency)","CPM Fee 3 (USD)","CPM Fee 4 (Advertiser Currency)","CPM Fee 4 (Partner Currency)","CPM Fee 4 (USD)","CPM Fee 5 (Advertiser Currency)","CPM Fee 5 (Partner Currency)","CPM Fee 5 (USD)","Click Rate (CTR)","Custom Fee 1 (Advertiser Currency)","Custom Fee 2 (Advertiser Currency)","Custom Fee 3 (Advertiser Currency)","Custom Fee 4 (Advertiser Currency)","Custom Fee 5 (Advertiser Currency)","Custom value per 1000 impressions","Data Fees (Advertiser Currency)","Data Fees (Partner Currency)","Data Fees (USD)","% Composition Impressions","% Composition Impressions (Co-Viewed)","Clicks","Population","Duplicate Consented Floodlight Impressions","Engagements","Engagement Rate","Estimated CPM for impressions with custom value (Advertiser Currency)","Estimated total cost for impressions with custom value (Advertiser Currency)","Exits","Expansions","Agency Trading Desk Fee (Advertiser Currency)","Agency Trading Desk Fee (Partner Currency)","Agency Trading Desk Fee (USD)","Data Management Platform Fee (Advertiser Currency)","Data Management Platform Fee (Partner Currency)","Data Management Platform Fee (USD)","Integral Ad Science Pre-Bid Fee (Advertiser Currency)","Integral Ad Science Pre-Bid Fee (Partner Currency)","Integral Ad Science Pre-Bid Fee (USD)","DoubleVerify Pre-Bid Fee (Advertiser Currency)","DoubleVerify Pre-Bid Fee (Partner Currency)","DoubleVerify Pre-Bid Fee (USD)","ShopLocal Fee (Advertiser Currency)","ShopLocal Fee (Partner Currency)","ShopLocal Fee (USD)","TrustMetrics Fee (Advertiser Currency)","TrustMetrics Fee (Partner Currency)","TrustMetrics Fee (USD)","MediaCost Data Fee (Advertiser Currency)","MediaCost Data Fee (Partner Currency)","MediaCost Data Fee (USD)","Integral Ad Science Video Fee (Advertiser Currency)","Integral Ad Science Video Fee (Partner Currency)","Integral Ad Science Video Fee (USD)","MOAT Video Fee (Advertiser Currency)","MOAT Video Fee (Partner Currency)","MOAT Video Fee (USD)","Nielsen Digital Ad Ratings Fee (Advertiser Currency)","Nielsen Digital Ad Ratings Fee (Partner Currency)","Nielsen Digital Ad Ratings Fee (USD)","comScore vCE in DoubleClick Fee (Advertiser Currency)","comScore vCE in DoubleClick Fee (Partner Currency)","comScore vCE in DoubleClick Fee (USD)","Adloox Fee (Advertiser Currency)","Adloox Fee (Partner Currency)","Adloox Fee (USD)","Adloox Pre-Bid Fee (Advertiser Currency)","Adloox Pre-Bid Fee (Partner Currency)","Adloox Pre-Bid Fee (USD)","Third-Party Ad Server Fee (Advertiser Currency)","Third-Party Ad Server Fee (Partner Currency)","Third-Party Ad Server Fee (USD)","Advanced Ad Serving Fee (Advertiser Currency)","Advanced Ad Serving Fee (Partner Currency)","Advanced Ad Serving Fee (USD)","DoubleVerify Fee (Advertiser Currency)","DoubleVerify Fee (Partner Currency)","DoubleVerify Fee (USD)","Adsafe Fee (Advertiser Currency)","Adsafe Fee (Partner Currency)","Adsafe Fee (USD)","AdXpose Fee (Advertiser Currency)","AdXpose Fee (Partner Currency)","AdXpose Fee (USD)","Vizu Fee (Advertiser Currency)","Vizu Fee (Partner Currency)","Vizu Fee (USD)","Aggregate Knowledge Fee (Advertiser Currency)","Aggregate Knowledge Fee (Partner Currency)","Aggregate Knowledge Fee (USD)","Teracent Fee (Advertiser Currency)","Teracent Fee (Partner Currency)","Teracent Fee (USD)","Evidon Fee (Advertiser Currency)","Evidon Fee (Partner Currency)","Evidon Fee (USD)","First-Quartile (Audio)","Floodlight Impressions","General Invalid Traffic (GIVT) Impressions","General Invalid Traffic (GIVT) Tracked Ads","General Invalid Traffic (GIVT) Active View Eligible Impressions","General Invalid Traffic (GIVT) Active View Measurable Impressions","General Invalid Traffic (GIVT) Active View Viewable Impressions","General Invalid Traffic (GIVT) Begin to Render Impressions","General Invalid Traffic (GIVT) Clicks","Gmail Conversions","Gmail Post-Click Conversions","Gmail Post-View Conversions","Potential Views","Impressions","Impressions (Co-Viewed)","Viewable Impressions","% Viewable Composition Impressions","Impressions","Impressions (Co-Viewed)","% Impressions Leading to Conversions","Impressions with custom value","Impressions with positive custom value","Custom impression value / cost","Targeted Impressions","Inactive Impressions","Interactive Impressions","Invalid Active View Eligible Impressions","Invalid Active View Measurable Impressions","Invalid Active View Viewable Impressions","Invalid Begin to Render Impressions","Invalid Clicks","Invalid Impressions","Invalid Tracked Ads","Post-Click Conversions","Post-View Conversions","Click-through Conversions","Total Conversions","View-through Conversions","Bid Responses","Media Cost (Advertiser Currency)","Media Cost eCPA (PC) (Advertiser Currency)","Media Cost eCPC (PC) (Partner Currency)","Media Cost eCPC (PC) (USD)","Media Cost eCPA (PV) (Advertiser Currency)","Media Cost eCPC (PV) (Partner Currency)","Media Cost eCPC (PV) (USD)","Media Cost eCPA (Advertiser Currency)","Media Cost eCPA (Partner Currency)","Media Cost eCPA (USD)","Video Media Cost eCPCV (Advertiser Currency)","Video Media Cost eCPCV (Partner Currency)","Video Media Cost eCPCV (USD)","Media Cost eCPC (Advertiser Currency)","Media Cost eCPC (Partner Currency)","Media Cost eCPC (USD)","Media Cost eCPM (Advertiser Currency)","Media Cost eCPM (Partner Currency)","Media Cost eCPM (USD)","Media Cost (Partner Currency)","Media Cost (USD)","Media Cost Viewable eCPM (Advertiser Currency)","Media Cost Viewable eCPM (Partner Currency)","Media Cost Viewable eCPM (USD)","Media Fee 1 (Advertiser Currency)","Media Fee 1 (Partner Currency)","Media Fee 1 (USD)","Media Fee 2 (Advertiser Currency)","Media Fee 2 (Partner Currency)","Media Fee 2 (USD)","Media Fee 3 (Advertiser Currency)","Media Fee 3 (Partner Currency)","Media Fee 3 (USD)","Media Fee 4 (Advertiser Currency)","Media Fee 4 (Partner Currency)","Media Fee 4 (USD)","Media Fee 5 (Advertiser Currency)","Media Fee 5 (Partner Currency)","Media Fee 5 (USD)","Midpoint (Audio)","Average Frequency","Gross Rating Points","Nielsen Impressions","% Impressions Share","Impression Index","Population","Audience Reach","% Population Share","Audience Index","% Audience Share","Unique Audience","Original Audience Frequency","Path Conversion Rate","Pauses (Audio)","Percentage from Current IO Goal","% Impressions with positive custom value","% Invalid Impressions (Pre-bid)","Platform Fee (Advertiser Currency)","Platform Fee (Partner Currency)","Platform Fee Rate","Platform Fee (USD)","Post-Click Conversions + Cross-Environment","Post-View Conversions + Cross-Environment","Potential Impressions","Potential Views","Premium Fee (Advertiser Currency)","Profit (Advertiser Currency)","Profit eCPM (Advertiser Currency)","Profit eCPM (Partner Currency)","Profit eCPM (USD)","Profit Margin","Profit (Partner Currency)","Profit (USD)","Profit Viewable eCPM (Advertiser Currency)","Profit Viewable eCPM (Partner Currency)","Profit Viewable eCPM (USD)","Programmatic Guaranteed Bid Requests passed due to Frequency","Programmatic Guaranteed savings re-invested due to frequency (Advertiser Currency)","Provisional Impressions","Refund Billable Cost (Advertiser Currency)","Refund Media Cost (Advertiser Currency)","Refund Platform Fee (Advertiser Currency)","Revenue (Advertiser Currency)","Revenue eCPA (PC) (Advertiser Currency)","Revenue eCPA (PC) (Partner Currency)","Revenue eCPA (PC) (USD)","Revenue eCPA (PV) (Advertiser Currency)","Revenue eCPA (PV) (Partner Currency)","Revenue eCPA (PV) (USD)","Revenue eCPA (Advertiser Currency)","Revenue eCPA (Partner Currency)","Revenue eCPA (USD)","Video Revenue eCPCV (Advertiser Currency)","Video Revenue eCPCV (Partner Currency)","Video Revenue eCPCV (USD)","Revenue eCPC (Advertiser Currency)","Revenue eCPC (Partner Currency)","Revenue eCPC (USD)","Revenue eCPM (Advertiser Currency)","Revenue eCPM (Partner Currency)","Revenue eCPM (USD)","Revenue (Partner Currency)","Revenue (USD)","Revenue Viewable eCPM (Advertiser Currency)","Revenue Viewable eCPM (Partner Currency)","Revenue Viewable eCPM (USD)","Rich Media Engagements","Scrolls","Complete Views (Video)","First-Quartile Views (Video)","Fullscreens (Video)","Midpoint Views (Video)","Audio Mutes (Video)","Pauses (Video)","Starts (Video)","Skips (Video)","Third-Quartile Views (Video)","Starts (Audio)","Stops (Audio)","Store Visit Conversions","View-through Store Visits","Target Rating Points","Target Rating Points (Co-Viewed)","Potential Impressions","Unique Cookies with Impressions","Third-Quartile (Audio)","Timers","Total Audio Media Cost eCPCL (Advertiser Currency)","Total Conversions","Total Conversions + Cross-Environment","Total Display Time","Total Exposures","Total custom impression value","Total Interaction Time","Total Media Cost (Advertiser Currency)","Total Media Cost eCPA (PC) (Advertiser Currency)","Total Media Cost eCPA (PC) (Partner Currency)","Total Media Cost eCPA (PC) (USD)","Total Media Cost eCPA (PV) (Advertiser Currency)","Total Media Cost eCPA (PV) (Partner Currency)","Total Media Cost eCPA (PV) (USD)","Total Media Cost eCPA (Advertiser Currency)","Total Media Cost eCPA (Partner Currency)","Total Media Cost eCPA (USD)","Total Video Media Cost eCPCV (Advertiser Currency)","Total Video Media Cost eCPCV (Partner Currency)","Total Video Media Cost eCPCV (USD)","Total Media Cost eCPC (Advertiser Currency)","Total Media Cost eCPC (Partner Currency)","Total Media Cost eCPC (USD)","Total Media Cost eCPM (Advertiser Currency)","Total Media Cost eCPM (Partner Currency)","Total Media Cost eCPM (USD)","Total Media Cost (Partner Currency)","Total Media Cost (USD)","Total Media Cost Viewable eCPM (Advertiser Currency)","Total Media Cost Viewable eCPM (Partner Currency)","Total Media Cost Viewable eCPM (USD)","Total Paths","Total Users","Tracked Ads","Cookie Unconsented Clicks","All YouTube Sequence Impressions","Revenue eCPE (Advertiser Currency)","Revenue eCPE (Partner Currency)","Revenue eCPE (USD)","Cost / Conversion (Advertiser Currency)","Cost / Conversion (Partner Currency)","Cost / Conversion (USD)","Conversions","View Conversion Rate","Revenue eCPV (Advertiser Currency)","Revenue eCPV (Partner Currency)","Revenue eCPV (USD)","Earned Likes","Earned Playlist Additions","Earned Shares","Earned Subscribers","Earned Views","Engagements (YouTube)","Engagement Rate (YouTube)","TrueView: General Invalid Traffic (GIVT) Views","Impression Share","TrueView: Invalid Views","Lost Impression Share (Budget)","Lost Impression Share (Rank)","Total Conversion Value (Advertiser Currency)","Total Conversion Value (Partner Currency)","Total Conversion Value (USD)","Unique Viewers","TrueView: Views","TrueView: View Rate","View through Conversion","Unique Cookies with Impressions","Unique Reach: Average Impression Frequency","Unique Reach: Average Impression Frequency (Co-Viewed)","Unique Reach: Average Viewable Impression Frequency","Unique Reach: Click Reach","Unique Reach: Impression Reach","Unique Reach: Added Impression Reach From Frequency Cap","Programmatic Guaranteed Added Unique Reach: Impressions due to Frequency","Unique Reach: Impression Reach (Co-Viewed)","Unique Reach: Incremental Click Reach","Unique Reach: Incremental Impression Reach","Unique Reach: Incremental Total Reach","Unique Reach: Incremental Viewable Impression Reach","Unique Reach: Total Reach","Unique Reach: Total Reach (Co-Viewed)","Unique Reach: Viewable Impression Reach","Unique Cookies with Impressions","Vendor Blocked Ads","Verifiable Impressions","Measurable Impressions For Video Player Size","Video Client Cost eCPCV (Advertiser Currency)","Companion Clicks (Video)","Companion Views (Video)","Completion Rate (Video)","Potential Viewable Impressions","Viewable Target Rating Points","Unique Reach: Average Impression Frequency","Unique Reach: Average Impression Frequency (Co-Viewed)","Unique Reach: Average Viewable Impression Frequency","Unique Reach: Click Reach","Unique Reach: Duplicate Click Reach","Unique Reach: Duplicate Click Reach Percent","Unique Reach: Duplicate Impression Reach","Unique Reach: Duplicate Impression Reach Percent","Unique Reach: Duplicate Total Reach","Unique Reach: Duplicate Total Reach Percent","Unique Reach: Duplicate Viewable Impression Reach","Unique Reach: Duplicate Viewable Impression Reach Percent","Unique Reach: Exclusive Click Reach","Unique Reach: Exclusive Click Reach Percent","Unique Reach: Exclusive Impression Reach","Unique Reach: Exclusive Impression Reach Percent","Unique Reach: Exclusive Total Reach","Unique Reach: Exclusive Total Reach Percent","Unique Reach: Exclusive Viewable Impression Reach","Unique Reach: Exclusive Viewable Impression Reach Percent","Unique Reach: Impression Reach","Unique Reach: Impression Reach (Co-Viewed)","% Population Reach","% Population Reach (Co-Viewed)","% Composition Reach","% Composition Reach (Co-Viewed)","Unique Reach: Overlap Click Reach","Unique Reach: Overlap Click Reach Percent","Unique Reach: Overlap Impression Reach","Unique Reach: Overlap Impression Reach Percent","Unique Reach: Overlap Total Reach","Unique Reach: Overlap Total Reach Percent","Unique Reach: Overlap Viewable Impression Reach","Unique Reach: Overlap Viewable Impression Reach Percent","Unique Reach: Viewable Impression Reach","% Viewable Population Reach","% Viewable Composition Reach","Watch Time","Available Requests (Deal)","Targeted Impressions (Deal)","Available Requests (Line Item)","Targeted Impressions (Line Item)","Win Rate"]}},"title":"Metrics","format":"select","minItems":1,"required":true,"uniqueItems":true,"propertyOrder":700},"dimensions":{"type":"array","items":{"enum":["FILTER_ACTIVE_VIEW_CUSTOM_METRIC_ID","FILTER_ACTIVE_VIEW_CUSTOM_METRIC_NAME","FILTER_ACTIVE_VIEW_EXPECTED_VIEWABILITY","FILTER_ADVERTISER","FILTER_ADVERTISER_CURRENCY","FILTER_ADVERTISER_INTEGRATION_CODE","FILTER_ADVERTISER_INTEGRATION_STATUS","FILTER_ADVERTISER_NAME","FILTER_ADVERTISER_TIMEZONE","FILTER_AD_POSITION","FILTER_AD_TYPE","FILTER_AGE","FILTER_ALGORITHM","FILTER_ALGORITHM_ID","FILTER_AMP_PAGE_REQUEST","FILTER_ANONYMOUS_INVENTORY_MODELING","FILTER_APP_URL","FILTER_APP_URL_EXCLUDED","FILTER_ATTRIBUTED_USERLIST","FILTER_ATTRIBUTED_USERLIST_COST","FILTER_ATTRIBUTED_USERLIST_TYPE","FILTER_ATTRIBUTION_MODEL","FILTER_AUDIENCE_LIST","FILTER_AUDIENCE_LIST_COST","FILTER_AUDIENCE_LIST_TYPE","FILTER_AUDIENCE_NAME","FILTER_AUDIENCE_TYPE","FILTER_AUDIO_FEED_TYPE_NAME","FILTER_AUTHORIZED_SELLER_STATE","FILTER_BILLABLE_OUTCOME","FILTER_BRAND_LIFT_TYPE","FILTER_BROWSER","FILTER_BUDGET_SEGMENT_BUDGET","FILTER_BUDGET_SEGMENT_DESCRIPTION","FILTER_BUDGET_SEGMENT_END_DATE","FILTER_BUDGET_SEGMENT_PACING_PERCENTAGE","FILTER_BUDGET_SEGMENT_START_DATE","FILTER_BUDGET_SEGMENT_TYPE","FILTER_CAMPAIGN_DAILY_FREQUENCY","FILTER_CARRIER","FILTER_CARRIER_NAME","FILTER_CHANNEL_GROUPING","FILTER_CHANNEL_ID","FILTER_CHANNEL_NAME","FILTER_CHANNEL_TYPE","FILTER_CITY","FILTER_CITY_NAME","FILTER_CM360_PLACEMENT_ID","FILTER_COMPANION_CREATIVE_ID","FILTER_COMPANION_CREATIVE_NAME","FILTER_CONVERSION_AD_EVENT_TYPE","FILTER_CONVERSION_AD_EVENT_TYPE_ID","FILTER_CONVERSION_DELAY","FILTER_CONVERSION_SOURCE","FILTER_CONVERSION_SOURCE_ID","FILTER_COUNTRY","FILTER_COUNTRY_ID","FILTER_CREATIVE","FILTER_CREATIVE_ASSET","FILTER_CREATIVE_ATTRIBUTE","FILTER_CREATIVE_HEIGHT","FILTER_CREATIVE_ID","FILTER_CREATIVE_INTEGRATION_CODE","FILTER_CREATIVE_RENDERED_IN_AMP","FILTER_CREATIVE_SIZE","FILTER_CREATIVE_SOURCE","FILTER_CREATIVE_STATUS","FILTER_CREATIVE_TYPE","FILTER_CREATIVE_WIDTH","FILTER_DATA_PROVIDER","FILTER_DATA_PROVIDER_NAME","FILTER_DATA_SOURCE","FILTER_DATE","FILTER_DAY_OF_WEEK","FILTER_DETAILED_DEMOGRAPHICS","FILTER_DETAILED_DEMOGRAPHICS_ID","FILTER_DEVICE","FILTER_DEVICE_MAKE","FILTER_DEVICE_MODEL","FILTER_DEVICE_TYPE","FILTER_DFP_ORDER_ID","FILTER_DIGITAL_CONTENT_LABEL","FILTER_DMA","FILTER_DMA_NAME","FILTER_DOMAIN","FILTER_ELIGIBLE_COOKIES_ON_FIRST_PARTY_AUDIENCE_LIST","FILTER_ELIGIBLE_COOKIES_ON_THIRD_PARTY_AUDIENCE_LIST_AND_INTEREST","FILTER_EVENT_TYPE","FILTER_EXCHANGE","FILTER_EXCHANGE_CODE","FILTER_EXCHANGE_ID","FILTER_EXTENSION","FILTER_EXTENSION_ASSET","FILTER_EXTENSION_ASSET_STATUS","FILTER_EXTENSION_ASSET_TYPE","FILTER_EXTENSION_STATUS","FILTER_EXTENSION_TYPE","FILTER_FIRST_PARTY_AUDIENCE_LIST_COST","FILTER_FIRST_PARTY_AUDIENCE_LIST_TYPE","FILTER_FLOODLIGHT_ACTIVITY","FILTER_FLOODLIGHT_ACTIVITY_ID","FILTER_FORMAT","FILTER_GAM_INSERTION_ORDER","FILTER_GAM_LINE_ITEM","FILTER_GAM_LINE_ITEM_ID","FILTER_GENDER","FILTER_GMAIL_AGE","FILTER_GMAIL_CITY","FILTER_GMAIL_COUNTRY","FILTER_GMAIL_COUNTRY_NAME","FILTER_GMAIL_DEVICE_TYPE","FILTER_GMAIL_DEVICE_TYPE_NAME","FILTER_GMAIL_GENDER","FILTER_GMAIL_REGION","FILTER_GMAIL_REMARKETING_LIST","FILTER_HOUSEHOLD_INCOME","FILTER_IMPRESSION_COUNTING_METHOD","FILTER_IMPRESSION_LOSS_REJECTION_REASON","FILTER_INSERTION_ORDER","FILTER_INSERTION_ORDER_GOAL_TYPE","FILTER_INSERTION_ORDER_GOAL_VALUE","FILTER_INSERTION_ORDER_INTEGRATION_CODE","FILTER_INSERTION_ORDER_NAME","FILTER_INSERTION_ORDER_STATUS","FILTER_INTEREST","FILTER_INVENTORY_COMMITMENT_TYPE","FILTER_INVENTORY_DELIVERY_METHOD","FILTER_INVENTORY_FORMAT","FILTER_INVENTORY_MEDIA_COST_TYPE","FILTER_INVENTORY_RATE_TYPE","FILTER_INVENTORY_SOURCE","FILTER_INVENTORY_SOURCE_EXTERNAL_ID","FILTER_INVENTORY_SOURCE_GROUP","FILTER_INVENTORY_SOURCE_GROUP_ID","FILTER_INVENTORY_SOURCE_ID","FILTER_INVENTORY_SOURCE_NAME","FILTER_INVENTORY_SOURCE_TYPE","FILTER_KEYWORD","FILTER_LIFE_EVENT","FILTER_LIFE_EVENTS","FILTER_LINE_ITEM","FILTER_LINE_ITEM_BUDGET","FILTER_LINE_ITEM_DAILY_FREQUENCY","FILTER_LINE_ITEM_END_DATE","FILTER_LINE_ITEM_INTEGRATION_CODE","FILTER_LINE_ITEM_LIFETIME_FREQUENCY","FILTER_LINE_ITEM_NAME","FILTER_LINE_ITEM_PACING_PERCENTAGE","FILTER_LINE_ITEM_START_DATE","FILTER_LINE_ITEM_STATUS","FILTER_LINE_ITEM_TYPE","FILTER_MATCHED_GENRE_TARGET","FILTER_MATCH_RATIO","FILTER_MEASUREMENT_SOURCE","FILTER_MEDIA_PLAN","FILTER_MEDIA_PLAN_NAME","FILTER_MEDIA_TYPE","FILTER_MOBILE_GEO","FILTER_MONTH","FILTER_MRAID_SUPPORT","FILTER_NIELSEN_AGE","FILTER_NIELSEN_COUNTRY_CODE","FILTER_NIELSEN_DATE_RANGE","FILTER_NIELSEN_DEVICE_ID","FILTER_NIELSEN_GENDER","FILTER_NIELSEN_RESTATEMENT_DATE","FILTER_OMID_CAPABLE","FILTER_OM_SDK_AVAILABLE","FILTER_ORDER_ID","FILTER_OS","FILTER_PAGE_CATEGORY","FILTER_PAGE_LAYOUT","FILTER_PARENTAL_STATUS","FILTER_PARTNER","FILTER_PARTNER_CURRENCY","FILTER_PARTNER_NAME","FILTER_PARTNER_STATUS","FILTER_PATH_EVENT_INDEX","FILTER_PATH_PATTERN_ID","FILTER_PLACEMENT_ALL_YOUTUBE_CHANNELS","FILTER_PLACEMENT_NAME_ALL_YOUTUBE_CHANNELS","FILTER_PLATFORM","FILTER_PLAYBACK_METHOD","FILTER_POSITION_IN_CONTENT","FILTER_PUBLIC_INVENTORY","FILTER_PUBLISHER_PROPERTY","FILTER_PUBLISHER_PROPERTY_ID","FILTER_PUBLISHER_PROPERTY_SECTION","FILTER_PUBLISHER_PROPERTY_SECTION_ID","FILTER_PUBLISHER_TRAFFIC_SOURCE","FILTER_QUARTER","FILTER_REFRESHED_AD_NAME","FILTER_REFUND_REASON","FILTER_REGION","FILTER_REGION_NAME","FILTER_REMARKETING_LIST","FILTER_REWARDED","FILTER_SENSITIVE_CATEGORY","FILTER_SERVED_PIXEL_DENSITY","FILTER_SITE_ID","FILTER_SITE_LANGUAGE","FILTER_SKIPPABLE_SUPPORT","FILTER_TARGETED_DATA_PROVIDERS","FILTER_TARGETED_USER_LIST","FILTER_TARGETING_EXPANSION","FILTER_THIRD_PARTY_AUDIENCE_LIST_COST","FILTER_THIRD_PARTY_AUDIENCE_LIST_TYPE","FILTER_TIME_OF_DAY","FILTER_TRUEVIEW_AD","FILTER_TRUEVIEW_AD_GROUP","FILTER_TRUEVIEW_AD_GROUP_AD_ID","FILTER_TRUEVIEW_AD_GROUP_ID","FILTER_TRUEVIEW_AD_TYPE_NAME","FILTER_TRUEVIEW_AGE","FILTER_TRUEVIEW_CATEGORY","FILTER_TRUEVIEW_CITY","FILTER_TRUEVIEW_CLICK_TYPE_NAME","FILTER_TRUEVIEW_CONVERSION_TYPE","FILTER_TRUEVIEW_COUNTRY","FILTER_TRUEVIEW_CUSTOM_AFFINITY","FILTER_TRUEVIEW_DETAILED_DEMOGRAPHICS","FILTER_TRUEVIEW_DETAILED_DEMOGRAPHICS_ID","FILTER_TRUEVIEW_DMA","FILTER_TRUEVIEW_DMA_NAME","FILTER_TRUEVIEW_GENDER","FILTER_TRUEVIEW_HOUSEHOLD_INCOME","FILTER_TRUEVIEW_IAR_AGE","FILTER_TRUEVIEW_IAR_CATEGORY","FILTER_TRUEVIEW_IAR_CITY","FILTER_TRUEVIEW_IAR_COUNTRY","FILTER_TRUEVIEW_IAR_COUNTRY_NAME","FILTER_TRUEVIEW_IAR_GENDER","FILTER_TRUEVIEW_IAR_INTEREST","FILTER_TRUEVIEW_IAR_LANGUAGE","FILTER_TRUEVIEW_IAR_PARENTAL_STATUS","FILTER_TRUEVIEW_IAR_REGION_NAME","FILTER_TRUEVIEW_IAR_REMARKETING_LIST","FILTER_TRUEVIEW_IAR_TIME_OF_DAY","FILTER_TRUEVIEW_IAR_YOUTUBE_CHANNEL","FILTER_TRUEVIEW_IAR_YOUTUBE_VIDEO","FILTER_TRUEVIEW_IAR_ZIPCODE","FILTER_TRUEVIEW_INTEREST","FILTER_TRUEVIEW_KEYWORD","FILTER_TRUEVIEW_PARENTAL_STATUS","FILTER_TRUEVIEW_PLACEMENT","FILTER_TRUEVIEW_PLACEMENT_ID","FILTER_TRUEVIEW_REGION","FILTER_TRUEVIEW_REGION_NAME","FILTER_TRUEVIEW_REMARKETING_LIST","FILTER_TRUEVIEW_REMARKETING_LIST_NAME","FILTER_TRUEVIEW_TARGETING_EXPANSION","FILTER_TRUEVIEW_URL","FILTER_TRUEVIEW_ZIPCODE","FILTER_USER_LIST","FILTER_USER_LIST_FIRST_PARTY","FILTER_USER_LIST_FIRST_PARTY_NAME","FILTER_USER_LIST_THIRD_PARTY","FILTER_USER_LIST_THIRD_PARTY_NAME","FILTER_VARIANT_ID","FILTER_VARIANT_NAME","FILTER_VARIANT_VERSION","FILTER_VENDOR_MEASUREMENT_MODE","FILTER_VERIFICATION_AUDIBILITY_COMPLETE","FILTER_VERIFICATION_AUDIBILITY_START","FILTER_VERIFICATION_VIDEO_PLAYER_SIZE","FILTER_VERIFICATION_VIDEO_PLAYER_SIZE_COMPLETE","FILTER_VERIFICATION_VIDEO_PLAYER_SIZE_FIRST_QUARTILE","FILTER_VERIFICATION_VIDEO_PLAYER_SIZE_MID_POINT","FILTER_VERIFICATION_VIDEO_PLAYER_SIZE_START","FILTER_VERIFICATION_VIDEO_PLAYER_SIZE_THIRD_QUARTILE","FILTER_VERIFICATION_VIDEO_POSITION","FILTER_VERIFICATION_VIDEO_RESIZED","FILTER_VIDEO_AD_POSITION_IN_STREAM","FILTER_VIDEO_COMPANION_CREATIVE_SIZE","FILTER_VIDEO_CONTENT_DURATION","FILTER_VIDEO_CONTENT_LIVE_STREAM","FILTER_VIDEO_CONTINUOUS_PLAY","FILTER_VIDEO_CREATIVE_DURATION","FILTER_VIDEO_CREATIVE_DURATION_SKIPPABLE","FILTER_VIDEO_DURATION","FILTER_VIDEO_DURATION_SECONDS","FILTER_VIDEO_DURATION_SECONDS_RANGE","FILTER_VIDEO_FORMAT_SUPPORT","FILTER_VIDEO_PLAYER_SIZE","FILTER_VIDEO_RATING_TIER","FILTER_VIDEO_SKIPPABLE_SUPPORT","FILTER_WEEK","FILTER_YEAR","FILTER_YOUTUBE_ADAPTED_AUDIENCE_LIST","FILTER_YOUTUBE_AD_VIDEO","FILTER_YOUTUBE_AD_VIDEO_ID","FILTER_YOUTUBE_CHANNEL","FILTER_YOUTUBE_PROGRAMMATIC_GUARANTEED_ADVERTISER","FILTER_YOUTUBE_PROGRAMMATIC_GUARANTEED_INSERTION_ORDER","FILTER_YOUTUBE_PROGRAMMATIC_GUARANTEED_PARTNER","FILTER_YOUTUBE_VIDEO","FILTER_ZIP_CODE","FILTER_ZIP_POSTAL_CODE"],"type":"string","options":{"enum_titles":["Active View: Custom Metric ID","Active View: Custom Metric Name","Active View Expected Viewability","Advertiser ID","Advertiser Currency","Advertiser Integration Code","Advertiser Status","Advertiser","Advertiser Time Zone","Ad Position","Ad Type","Age","Algorithm","Algorithm ID","AMP Page Request","Anonymous Inventory Modeling","App/URL","App/URL Excluded","Attributed Userlist","Attributed Userlist Cost","Attributed Userlist Type","Attribution Model","Audience List","Audience List Cost","Audience List Type","Audience Name","Audience Type","Audio Feed Type","Authorized Seller State","Billable Outcome","Brand Lift Type","Browser","Budget Segment Budget","Budget Segment Name","Budget Segment End Date","Budget Segment Pacing Percentage","Budget Segment Start Date","Budget Type (Segment)","Insertion Order Daily Frequency","ISP or Carrier ID","ISP or Carrier","Channel Grouping","Channel ID","Channel","Channel Type","City ID","City","CM360 Placement ID","Companion Creative ID","Companion Creative","Conversion Ad Event Type","Conversion Ad Event Type ID","Time to Conversion","Conversion Source","Conversion Source ID","Country","Country","Creative","Creative Asset","Creative Attributes","Creative Height","Creative ID","Creative Integration Code","Creative Rendered in AMP","Creative Size","Creative Source","Creative Status","Creative Type","Creative Width","Data Provider ID","Data Provider","Data Source","Date","Day of Week","Detailed Demographics","Detailed Demographics ID","Device","Device Make","Device Model","Device Type","DFP Insertion Order ID","Digital Content Label","DMA Code","DMA","Domain","Eligible Cookies on First-Party Audience List","Eligible Cookies on Third-Party Audience List and Interest","Event Type","Exchange","Exchange Code","Exchange ID","Asset","Asset (upgraded)","Asset Status (upgraded)","Asset Type (upgraded)","Asset Status","Asset Type","First Party Audience List Cost","First Party Audience List Type","Floodlight Activity","Floodlight Activity ID","Format","DFP Insertion Order","DFP Line Item","DFP Line Item ID","Gender","Age","City","Country","Country","Device Type","Device Type","Gender","Region","Remarketing List","Household Income","Impression Counting Method","Rejection Reason","Insertion Order ID","Insertion Order Goal Type","Insertion Order Goal Value","Insertion Order Integration Code","Insertion Order","Insertion Order Status","Interest","Inventory Commitment Type","Inventory Delivery Method","Format","Inventory Media Cost Type","Inventory Rate Type","Inventory Source ID (Legacy)","Inventory Source ID (external)","Inventory Source Group","Inventory Source Group ID","Inventory Source ID","Inventory Source","Inventory Source Type","Keyword","Life Event","Life Events","Line Item ID","Line Item Budget","Line Item Daily Frequency","Line Item End Date","Line Item Integration Code","Line Item Lifetime Frequency","Line Item","Line Item Pacing Percentage","Line Item Start Date","Line Item Status","Line Item Type","Matched Genre Target","Match Ratio","Measurement Source","Campaign ID","Campaign","Media Type","Business Chain","Month","MRAID Support","Age","Country","Date Range for Cumulative Metrics","Device ID","Gender","Restatement Date","OM SDK Capable","OM SDK Available","Order ID","Operating System","Category","Environment","Parental Status","Partner ID","Partner Currency","Partner","Partner Status","Path Event Index","Path Pattern ID","Placement (All YouTube Channels)","Placement Name (All YouTube Channels)","Platform","Playback Method","Position in Content","Public Inventory","Publisher Property","Publisher Property ID","Publisher Property Section","Publisher Property Section ID","Publisher Traffic Source","Quarter","Refreshed Ad","Refund Reason","Region ID","Region","Remarketing List","Rewarded","Sensitive Category","Served Pixel Density","App/URL ID","Language","Video Skippable Support","Targeted Data Providers","Attributed Userlist ID","Targeting Expansion","Third Party Audience List Cost","Third Party Audience List Type","Time of Day","YouTube Ad","YouTube Ad Group","YouTube Ad ID","YouTube Ad Group ID","YouTube Ad Type","Age (YouTube)","Category","City","Click Type","Conversion Type","Country (YouTube)","Custom Affinity","Detailed Demographics","Detailed Demographics ID","DMA ID","DMA","Gender","Household Income","Age","Category","City","Country","Country","Gender","Interest","Language","Parental Status","Region","Remarketing List ID","Time of Day","YouTube Channel","YouTube Video","Zip Code","Interest","Keyword","Parental Status","Placement (Managed)","Placement ID (Managed)","Region ID","Region","Remarketing List ID","Remarketing List","Optimized Targeting","Placement (All)","Zipcode","Audience List ID","First Party Audience List ID","First Party Audience List","Third Party Audience List ID","Third Party Audience List","Variant ID","Variant Name","Variant Version","Vendor Measurement Mode","Audibility At Complete","Audibility At Start","Verification Video Player Size","Video Player Size at Completion","Video Player Size at First Quartile","Video Player Size at Midpoint","Video Player Size at Start","Video Player Size at Third Quartile","Verification Video Position","Video Resized","Video Ad Position In Stream","Companion Creative Size","Video Content Duration","Video Content Live Stream","Video Continuous Play","Video Creative Duration","Video Creative Duration (Skippable)","Video Duration","Max Video Duration","Max Video Duration Range","Video Format Support","Video Player Size","Digital Content Label","Video Skippable Support","Week","Year","YouTube Adapted Audience List","YouTube Ad Video","YouTube Ad Video ID","YouTube Channel","Advertiser","Insertion Order","Partner","YouTube Video","Zip Code ID","Zip Code"]}},"title":"Dimensions","format":"select","minItems":1,"required":true,"uniqueItems":true,"propertyOrder":600},"report_type":{"enum":["STANDARD","INVENTORY_AVAILABILITY","AUDIENCE_COMPOSITION","FLOODLIGHT","YOUTUBE","GRP","YOUTUBE_PROGRAMMATIC_GUARANTEED","REACH","UNIQUE_REACH_AUDIENCE","FULL_PATH","PATH_ATTRIBUTION"],"type":"string","title":"Report type","options":{"enum_titles":["Standard","Inventory Availability","Audience Composition","Floodlight","YouTube","GRP","YouTube Programmatic Guaranteed","Reach","Unique Reach Audience","Full Path","Path Attribution"]},"propertyOrder":500}},"propertyOrder":150}}},"createConfigurationRowSchema":null,"configurationDescription":"Configuration description.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["list_queries","list_report_dimensions","validate_query"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.ex-dv360","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-dv360","name":"developer-portal-v2/kds-team.ex-dv360","tag":"1.0.8","options":{},"digest":"sha256:8e25095570969d53113330efd242fbd89130cfaa8d7e64714c1505ad7a420df1"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-dv360/32/1678621923869.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-dv360/64/1678621923869.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-dv360/128/1678621923869.png"}},{"id":"keboola.wr-google-drive","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":54,"name":"Google Drive","type":"writer","shortDescription":"Writes Keboola tables to Google Drive as CSV files or converted Google Sheets.","longDescription":"This component exports tables from Keboola Connection Storage to [Google Drive](https://www.google.com/drive/). It writes entire tables as CSV files or Google Sheets files. To write into already existing sheets, use the [Google Sheets writer](https://help.keboola.com/writers/storage/google-sheets/).","licenseUrl":"https://github.com/keboola/google-drive-writer/blob/master/LICENSE","documentationUrl":"https://help.keboola.com/writers/storage/google-drive/","sourceCodeUrl":"https://github.com/keboola/google-drive-writer","requiredMemory":"256m","processTimeout":21600,"features":["container-root-user","dev-branch-configuration-unsafe"],"encryption":true,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["File Storage"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-authorization"],"imageParameters":{},"stackParameters":{},"testConfiguration":{},"configurationSchema":{"type":"object","title":"keboola.wr-google-drive — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"tables":{"type":"array","items":{"type":"object","properties":{"id":{"type":["string","integer"]},"title":{"type":"string"},"action":{"enum":["update","create"],"type":"string"},"fileId":{"type":"string"},"folder":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"}}},"convert":{"type":"boolean"},"enabled":{"type":"boolean"},"tableId":{"type":"string"}}}}}},"configurationRowSchema":{"type":"object","title":"keboola.wr-google-drive — Row Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":["createFile","getFolder"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.wr-google-drive","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-google-drive","name":"developer-portal-v2/keboola.wr-google-drive","tag":"3.1.1","options":{},"digest":"sha256:824d23cc4d4a81f49e7807b2618be6cc9906e14b900a191b8b7228d9cd1f964e"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-google-drive/32/1680513923558.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-google-drive/64/1680513923558.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-google-drive/128/1680513923558.png"}},{"id":"apify.ex-google-maps-reviews-scraper","vendor":{"id":"apify","name":"Apify Technologies s.r.o.","address":"Apify Technologies s.r.o.\nLucerna Palace\nVodickova 704/36\n110 00 Prague 1\nCzech Republic","email":"integrations@apify.com","type":"other"},"version":297,"name":"Google Maps Reviews Scraper","type":"extractor","shortDescription":"Google Maps reviews data ingestion component for ETL pipelines","longDescription":"# Google Maps Reviews data integration component\n\nThis component enables data teams to extract customer reviews from Google Maps locations into structured data formats suitable for ETL pipelines, data warehouses, and analytics platforms. Built on Apify's Google Maps Reviews Actor, this component delivers reliable data feeds for business intelligence and customer analytics applications.\n\n## Data engineering use cases\n\n- **Incremental data loading**: Schedule regular extractions with date filtering to implement efficient incremental loading patterns.\n- **Data warehouse integration**: Feed review data directly into Keboola.\n- **Customer experience analytics**: Build comprehensive customer sentiment analysis dashboards.\n- **Multi-location business intelligence**: Compare performance metrics across different business locations.\n- **Competitive analysis**: Gather standardized review data for competitors' locations to benchmark performance.\n\n## Extracted data attributes\n\nThe component extracts and structures the following data points:\n\n- Review text content and star ratings.\n- Timestamps and publication dates.\n- Owner responses to reviews.\n- Service-specific ratings (where available).\n- Review images metadata.\n- Reviewer information (configurable based on privacy requirements).\n- Review URLs and identifiers for cross-referencing.\n\n## Integration patterns\n\nImplement standard ETL/ELT workflows:\n\n1. **Extract**: Configure the component to pull reviews data based on place URLs or IDs.\n2. **Transform**: Process and normalize the extracted data to match your schema requirements.\n3. **Load**: Import the structured data into your data warehouse.\n4. **Analyze**: Join with internal data sources to create comprehensive business intelligence views.\n\n## Configuration options\n\nFine-tune your data extraction with options including:\n\n- Volume controls to manage data processing requirements.\n- Sorting algorithms to prioritize most relevant content.\n- Date filtering for incremental loading scenarios.\n- Language preferences for consistent text analytics.\n- Privacy controls for personal data compliance.\n\n## Data governance and compliance\n\nThe component provides configuration options to control personal data extraction. Enable reviewer data extraction only when permitted by your data governance policies and ensure compliance with relevant data protection regulations, including GDPR for European Union data subjects.\n\n## Getting your Apify token\n\nTo get started, create an account at console.apify.com. You can sign up using your email, Gmail, or GitHub account. You need to get the API token from your Apify account. Head over to Settings → API & Integrations tab to find API tokens at console.apify.com/settings/integrations. Find your token under Personal API tokens. Alternatively, you can also create a new API token with multiple customizable permissions by clicking on + Create a new token. Then copy this token and you can use it in Keboola.","licenseUrl":"https://github.com/apify/keboola-gmrs.git/blob/master/LICENSE.md","documentationUrl":"https://github.com/apify/keboola-gmrs.git/blob/master/README.md","sourceCodeUrl":"https://github.com/apify/keboola-gmrs.git","requiredMemory":"512m","processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-simpleTableInput"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Google Maps Reviews Scraper","required":["#token"],"properties":{"#token":{"type":"string","title":"Apify API Token","format":"password","description":"Enter your Apify API Token to start the actor. See the component description how to obtain the token."}},"description":"Provide your Apify API Token to connect the component with the Apify platform.","schemaVersion":1},"configurationRowSchema":{"type":"object","title":"Google Maps Reviews Scraper","properties":{"language":{"enum":["en","af","az","id","ms","bs","ca","cs","da","de","et","es","es-419","eu","fil","fr","gl","hr","zu","is","it","sw","lv","lt","hu","nl","no","uz","pl","pt-BR","pt-PT","ro","sq","sk","sl","fi","sv","vi","tr","el","bg","ky","kk","mk","mn","ru","sr","uk","ka","hy","iw","ur","ar","fa","am","ne","hi","mr","bn","pa","gu","ta","te","kn","ml","si","th","lo","my","km","ko","ja","zh-CN","zh-TW"],"type":"string","title":"Language","default":"en","example":"en","prefill":"en","description":"Specify the language for extracted data to ensure consistent text analytics and sentiment processing in your data pipeline.","propertyOrder":3},"maxReviews":{"type":"integer","unit":"reviews per place","title":"Number of reviews","default":100,"prefill":100,"description":"Maximum volume of reviews data to extract per place. Use 0 for metadata-only extraction, or 99999 for comprehensive data ingestion of all available reviews.","propertyOrder":4},"destination":{"type":"object","title":"Destination","required":["outputTableName","incrementalOutput"],"properties":{"outputTableName":{"type":"string","title":"Storage Table Name","default":"google-maps-reviews","description":"Name of the table stored in Storage.","propertyOrder":9},"incrementalOutput":{"type":"boolean","title":"Incremental Loading","format":"checkbox","default":true,"description":"If checked the component loads data incrementally otherwise all data from the component will be loaded.","propertyOrder":10}},"propertyOrder":9},"reviewsSort":{"enum":["newest","mostRelevant","highestRanking","lowestRanking"],"type":"string","title":"Sort reviews by","default":"newest","enumTitles":["Newest","Most relevant","Highest ranking","Lowest ranking"],"description":"Define the sorting algorithm for review data extraction to prioritize the most relevant data for your analytics needs.","propertyOrder":5},"personalData":{"type":"boolean","title":"Personal data","format":"checkbox","default":true,"description":"Enable extraction of reviewer personal data (ID, name, URL, photo) and review identifiers for advanced customer analytics. Note: Personal data processing must comply with GDPR and other applicable data protection regulations. Ensure your data governance policies permit such collection before enabling.","propertyOrder":8},"placeIdColumn":{"type":"string","title":"Place ID column","watch":{"columns":"_metadata_.table.columns"},"enumSource":"columns","description":"Select the column from the input table that contains the place IDs you want to scrape.","propertyOrder":1},"reviewsOrigin":{"enum":["all","google"],"type":"string","title":"Reviews origin","default":"all","description":"Filter data source to optimize pipeline for specific analytics needs - extract all available reviews or focus exclusively on Google-verified content.","propertyOrder":6},"placeUrlColumn":{"type":"string","title":"Place URL column","watch":{"columns":"_metadata_.table.columns"},"enumSource":"columns","description":"Select the column from the input table that contains the place URLs you want to scrape. If a row's Place ID column is empty, then value from place URL column will be used. If left empty, `place_url` column is used.","propertyOrder":2},"reviewsStartDate":{"type":"string","title":"Only scrape reviews newer than [date]","description":"Configure incremental loading by specifying a date threshold. Use either absolute date (e.g. `2024-05-03`) or relative date from now into the past (e.g. `8 days`, `3 months`). JSON input also supports adding time in both absolute (ISO standard, e.g. `2024-05-03T20:00:00`) and relative (e.g. `3 hours`) formats. Absolute time is always interpreted in the UTC timezone, not your local timezone - please convert accordingly. Supported relative date & time units: `minutes`, `hours`, `days`, `weeks`, `months`, `years`.","propertyOrder":7}},"description":"You can also provide parameters like desired number of reviews per place, language, or sort. The component requires an input table with either 'place_url' or 'place_id' columns containing Google Maps URLs or Place IDs. See the configuration description above for more details on how to structure your input table.","schemaVersion":1},"createConfigurationRowSchema":null,"configurationDescription":"This Google Maps Reviews App extracts reviews data from Google Maps places to integrate into your data warehouse or analytics pipeline. You can extract review text, ratings, timestamps, reviewer details, and owner responses for customer sentiment analysis, competitive intelligence, and reputation management.\n\nThe component requires an input table with either:\n* column containing Google Maps place URLs (default `place_url`) (containing /maps/search, /maps/place, or /maps/reviews).\n* column containing Google Place IDs (default `place_id`) for the locations you want to analyze.\n\nYou can configure extraction parameters including review count limits, sorting methods, date filters, and language preferences to create customized data feeds for your analytics.\n\nIn order to start the actor, you need to provide Apify API Token, which you can get in [Apify's Settings](https://console.apify.com/settings/integrations).","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":297,"uri":"docker/apify.ex-google-maps-reviews-scraper","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/apify.ex-google-maps-reviews-scraper","name":"developer-portal-v2/apify.ex-google-maps-reviews-scraper","tag":"0.4.4","options":{},"digest":"sha256:61e9c9e3fb67335d2b170c605baea89537c46f3640e4d63e9c80363a6c3a3149"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/apify.ex-google-maps-reviews-scraper/32/1744805576324.png","64":"https://ui.keboola-assets.com/developer-portal/icons/apify.ex-google-maps-reviews-scraper/64/1744805576324.png","128":"https://ui.keboola-assets.com/developer-portal/icons/apify.ex-google-maps-reviews-scraper/128/1744805576324.png"}},{"id":"kds-team.ex-google-my-business","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":343,"name":"Google My Business","type":"extractor","shortDescription":"Allows user to extract their reviews and media related information from their Google My Business location accounts","longDescription":"# Google My Business Extractor\n\n### API Documentation\n\n[Google My Business API](https://developers.google.com/my-business/reference/rest)\n\n### Account Authorization\n\nIf you are using your personal Google Account to manage locations for your business or company, please ensure your account has the access right to the locations you are interested in. For a list of available locations for you Google Account, please visit [business.google.com/locations](https://business.google.com/locations).\n\n### Configuration\n\n1. Endpoints\n\n    1. Daily Metrics\n    2. Reviews\n    3. Media\n    4. Questions\n\n2. Request Range\n    - This configuration will only affect [Daily Metrics] endpoint. ","licenseUrl":"https://github.com/keboola/component-google-my-business/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/component-google-my-business/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/component-google-my-business","requiredMemory":"512m","processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-authorization","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["endpoints","request_range"],"properties":{"accounts":{"type":"array","items":{"enum":[],"type":"string"},"title":"Accounts","format":"select","options":{"async":{"label":"List available accounts","action":"listAccounts"}},"description":"Accounts for which will the component fetch results.","uniqueItems":true,"propertyOrder":2},"endpoints":{"type":"array","items":{"enum":["dailyMetrics","reviews","media","questions"],"type":"string","options":{"enum_titles":["Daily Metrics","Reviews","Media","Questions"]}},"title":"Endpoints","format":"checkbox","uniqueItems":true,"propertyOrder":3},"destination":{"type":"object","title":"Destination","required":["load_type"],"properties":{"load_type":{"enum":["full_load","incremental_load"],"type":"string","title":"Load Type","format":"checkbox","default":"full_load","options":{"enum_titles":["Full Load","Incremental Load"]},"description":"If Full load is used, the destination table will be overwritten every run. If incremental load is used, data will be upserted into the destination table. Tables with a primary key will have rows updated, tables without a primary key will have rows appended.","propertyOrder":20}},"propertyOrder":5},"request_range":{"type":"object","title":"Request Range","required":["start_date","end_date"],"properties":{"end_date":{"type":"string","title":"End Date","default":"today","description":"default: today","propertyOrder":20},"start_date":{"type":"string","title":"Start Date","default":"7 days ago","description":"default: 7 days ago","propertyOrder":10}},"description":"This configuration will only affect [Daily Metrics] endpoint.","propertyOrder":4}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"1. Endpoints\n\n2. Request Range\n    - This configuration will only affect `Location Insights` endpoint. Google My Business API has limited the maximum range of request to 18 months. By default, the component is configured to fech data from 1 week ago to the date of the component run","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["listAccounts"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":343,"uri":"docker/kds-team.ex-google-my-business","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-google-my-business","name":"developer-portal-v2/kds-team.ex-google-my-business","tag":"0.1.26","options":{},"digest":"sha256:d785b9eba5cc1c44b3fa4d69e13bf1a211689cccf4ac7bc855eef48f39d45465"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-google-my-business/32/1576678772381.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-google-my-business/64/1576678772381.png","128":null}},{"id":"kds-team.ex-google-nlp","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":174,"name":"Google NLP","type":"application","shortDescription":"Google Cloud Natural Language API allows to extract text features such as sentiment, entities and mentions, sentences, syntax and category classification, using pre-trained machine learning models.","longDescription":"# Google NLP\n\nFull documentation is available [here](https://bitbucket.org/kds_consulting_team/kds-team.ex-google-nlp/src/master/README.md)!\n\n## Overview\n\nThe Google Natual Language API allows users to utilize powerful pre-trained NLP models to understand various language features such as sentiment, entities and mentions, content and syntax. The component utilizes the API to send text features and retrieves desired analysis.\n\nThe Cloud Natural Language API is a paid service maintained by Google and is subject to [Google Cloud's Terms & Conditions](https://cloud.google.com/terms/). \n\nThe information about pricing can be found on [Google's support forums](https://cloud.google.com/natural-language/pricing). The API currently supports [these methods and languages](https://cloud.google.com/natural-language/docs/languages).\n\n#### Useful links\n\nIf you are new to the natural language processing or are unsure about the meaning of outputted values, the following guides might clear up some of the confusion:\n\n- [Natual Language API Basics](https://cloud.google.com/natural-language/docs/basics)\n- [Morphology & Dependency Trees](https://cloud.google.com/natural-language/docs/morphology)\n- [HTTP status and error codes for JSON](https://cloud.google.com/storage/docs/json_api/v1/status-codes)\n\n## Requirements\n\nThe component requires valid Google Cloud API token with Natural Language API allowed. The API token is subject to [limits](https://cloud.google.com/natural-language/quotas) thus it is important to set the correct daily limits. To overcome the 100 second limits, the application uses exponential backoff with 10 retries. In case, the retries are unsuccessful (i.e. daily limit is reached), the component fails.\n\n## Supported languages & methods\n\nThe component supports all of the [languages supported by the API](https://cloud.google.com/natural-language/docs/languages). If the (detected) language isn't supported, the request will be cancelled, the document is skipped and no output is produced for it. All of the language errors are outputted to `errors` table.\n\nThe component currently supports following methods:\n\n- `analyzeEntities` - entity analysis,\n- `analyzeEntitySentiment` - entity sentiment analysis,\n- `analyzeSentiment` - sentiment analysis,\n- `analyzeSyntax` - syntactic analysis,\n- `classifyText` - content classification.\n\nNote: The component uses API v1. The list of all methods supported by the version is listed in [API reference](https://cloud.google.com/natural-language/docs/reference/rest/v1/documents). Mind that, `annotateText` method is a wrapper for all other methods listed above and does not provide any new information. It is used in the component to bundle [all feature requests into a single API call](https://cloud.google.com/natural-language/docs/basics/#text-annotations).\n\nIf a new method is available and you'd like to see it, contact us at [support@keboola.com](mailto:support@keboola.com) or via support ticket.\n\n---\n\n#### Entity analysis (`analyzeEntities`)\n\nThe method inspects the document for known entities and returns [information about the entities](https://cloud.google.com/natural-language/docs/basics/#entity_analysis), such as their type, salience and mentions in the text. Moreover, if any metadata (e.g. address, phone number, famous person) is identified, the information on the subject is returned as well (e.g. full address, country code for the phone number, wikipedia article about the person). For more information about metadata, see the [`Entity` type documentation](https://cloud.google.com/natural-language/docs/reference/rest/v1/Entity#type).\n\nFor each entity, a list of mentions is returned. The mentions list is always of length at least 1, i.e. each entity has at least one mention.\n\n###### reference: [analyzeEntities](https://cloud.google.com/natural-language/docs/reference/rest/v1/documents/analyzeEntities), [entity](https://cloud.google.com/natural-language/docs/reference/rest/v1/Entity)\n\n---\n\n#### Entity sentiment analysis (`analyzeEntitySentiment`)\n\nThe method returns the same analysis type as `analyzeEntities` method but adds sentiment analysis for each entity and mention in the text, thus [combining both entity and sentiment analysis](https://cloud.google.com/natural-language/docs/basics/#entity-sentiment-analysis). Note that, if both `analyzeEntities` and `analyzeEntitySentiment` methods are used, you will not be charged for both methods; only `analyzeEntitySentiment` will be utilized and billed.\n\n###### reference: [analyzeEntitySentiment](https://cloud.google.com/natural-language/docs/reference/rest/v1/documents/analyzeEntitySentiment), [entity](https://cloud.google.com/natural-language/docs/reference/rest/v1/Entity)\n\n---\n\n#### Sentiment analysis (`analyzeSentiment`)\n\nThe `analyzeSentiment` method inspects the document for [emotional opinion present within the text](https://cloud.google.com/natural-language/docs/basics/#sentiment_analysis) and magnitude of the opinion. The result is the overall attitude of the document (positive, neutral or negative) and of each sentence present within the document. Score and magnitude of the document and sentences can be interpreted according to [this guide](https://cloud.google.com/natural-language/docs/basics/#interpreting_sentiment_analysis_values).\n\n###### reference: [analyzeSentiment](https://cloud.google.com/natural-language/docs/reference/rest/v1/documents/analyzeSentiment), [sentiment](https://cloud.google.com/natural-language/docs/reference/rest/v1/Sentiment)\n\n---\n\n#### Syntactic analysis (`analyzeSyntax`)\n\nThe syntactic analysis breaks up the documents into [sentences and extracts tokens (words)](https://cloud.google.com/natural-language/docs/basics/#syntactic_analysis) from the document. For each token, information about lemma, [part of the speech](https://cloud.google.com/natural-language/docs/reference/rest/v1/Token/#PartOfSpeech) and [depencency index](https://cloud.google.com/natural-language/docs/reference/rest/v1/Token/#DependencyEdge) is added using Cloud Natural Language API. For more information about how to interpret the values, refer to [Syntacting analysis](https://cloud.google.com/natural-language/docs/basics/#syntactic_analysis) guide and [Morphology & Dependency Trees](https://cloud.google.com/natural-language/docs/morphology) guide.\n\n###### reference: [analyzeSyntax](https://cloud.google.com/natural-language/docs/reference/rest/v1/documents/analyzeSyntax), [token](https://cloud.google.com/natural-language/docs/reference/rest/v1/Token)\n\n---\n\n#### Content classification (`classifyText`)\n\nThe `classifyText` method analyzes the document and returns a list of [categories that apply to the text](https://cloud.google.com/natural-language/docs/basics/#content-classification) found in the document. For each category, a confidence level is provided as well as the name of the category. A complete list of all available categories can be found in [Categories section](https://cloud.google.com/natural-language/docs/categories) of API documentation. \n\nFor successful content classification, the document needs to be of certain length (~ 20 words) and must not be too abstract. If the two conditions are not met, no categories are returned.\n\n###### reference: [classifyText](https://cloud.google.com/natural-language/docs/reference/rest/v1/documents/classifyText), [ClassificationCategory](https://cloud.google.com/natural-language/docs/reference/rest/v1/ClassificationCategory)","licenseUrl":"https://github.com/keboola/component-google-nlp/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-google-nlp/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-google-nlp","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Configuration","required":["#API_key","analysis_type","input_type"],"properties":{"#API_key":{"type":"string","title":"Google API Key","format":"password","default":"","minLength":4,"description":"For API key, please visit <a href='https://console.cloud.google.com/apis/credentials'>Google Cloud Console</a><ol><li>Create a new API key by clicking: Create credentials -> API Keys</li><li>Use your existing API key and add Natural Language API to API restrictions</li></ol><br>Please, refer to GCP <a href='https://cloud.google.com/natural-language/pricing'>pricing guide</a> for detailed information about the costs of API requests.","propertyOrder":100},"input_type":{"enum":["PLAIN_TEXT","HTML"],"type":"string","title":"Input Type","default":"PLAIN_TEXT","description":"Choose, whether text input is a plain text or html.","uniqueItems":true,"propertyOrder":300},"analysis_type":{"type":"array","items":{"enum":["extractEntitySentiment","extractEntities","extractDocumentSentiment","extractSyntax","classifyText"],"type":"string","options":{"enum_titles":["Entities Sentiment","Entities","Document Sentiment","Syntax","Categories"]}},"title":"Analysis Type","format":"checkbox","description":"Choose the methods for NLP analysis.</br>Refer to <a href='https://bitbucket.org/kds_consulting_team/kds-team.ex-google-nlp/src/master/README.md'>component documentation</a> for more information.","uniqueItems":true,"propertyOrder":200}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"The sample of the configuration, including input & output tables, can be found in the [component's repository](https://bitbucket.org/kds_consulting_team/kds-team.ex-google-nlp/src/master/component_config/sample-config/). In general, an input table and 3 parameters are required to configure the component.\n\nAll of the parameters listed in the section are required. If any of the parameters are not provided or an invalid value is provided, the component will fail. The API key is verified against Cloud API. The sample of the configuration file can be found [here](https://bitbucket.org/kds_consulting_team/kds-team.ex-google-nlp/src/master/component_config/sample-config/config.json).\n\n#### API Key (`#API_key`)\n\nThe API key can be obtained in the credentials section of the [Google Cloud Console](https://console.cloud.google.com/apis/credentials). The API key must have Cloud Natural Language API allowed, otherwise, requests will not be authorized. The [limits](https://cloud.google.com/natural-language/quotas) for the token must be specified according to your needs.\n\n#### Analysis Type (`analysis_type`)\n\nA list of methods to be used in the analysis. Supported methods are:\n\n- `analyzeEntities`\n- `analyzeEntitySentiment`\n- `analyzeSentiment`\n- `analyzeSyntax`\n- `classifyText`\n\n#### Input Type (`input_type`)\n\nA string represing the type of text inputted into `text` column in the input table. Must be one of the two:\n\n- `PLAIN_TEXT` - a plain text; consumes less characters,\n- `HTML` - a html text; consumes more characters as all html tags counted in as well.\n\n### Input table\n\nThe input table must contain two required columns `id` and `text` and might contain an optional column `sourceLanguage`. All extra columns are ignored; an exception is raised if any of the required columns is missing. The sample of the table can be found in the [repository](https://bitbucket.org/kds_consulting_team/kds-team.ex-google-nlp/src/master/component_config/sample-config/in/tables/test.csv).\n\nThe column descriptions are:\n\n- `id` (required) - ID of a document; make sure the ID is unique as the output data is loaded incrementally,\n- `text` (required) - document to be analyzed; might contain html tags if `input_type=HTML` is specified\n- `sourceLanguage` (optional) - an [ISO-639-1 language identifier](https://cloud.google.com/translate/docs/languages) of the source language; see section *Supported languages & methods*; if left empty, the API automatically detects the language.\n\nThe input table, therefore, might take the following form:\n\n| id \t| text \t| sourceLanguage \t| otherColumn \t|\n|----\t|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\t|----------------\t|-------------\t|\n| 1 \t| Keboola brings data engineering and data analytics together on one single platform that anyone can use. One click managed infrastructure, data hub, user provisioning, process automation - all rolled into one platform. Call us at +420 739 632 821 or visit us at Křižíkova 488/115 Prague 8 186 00 \t| en \t| foo \t|\n| 2 \t| Google, headquartered in Mountain View (1600 Amphitheatre Pkwy,  Mountain View, CA 940430), unveiled the new Android phone for  $799 at the Consumer Electronic Show. Sundar Pichai said in his  keynote that users love their new Android phones. \t|  \t| bar \t|\n| 3 \t| This text is too short to use classifyContent method. \t|  \t| foobar \t|","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":true,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":174,"uri":"docker/kds-team.ex-google-nlp","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-google-nlp","name":"developer-portal-v2/kds-team.ex-google-nlp","tag":"0.4.2","options":{},"digest":"sha256:ccb7dd78988dd655cc329877bef0d4079361dc9151f393f6c580b836037ddcdb"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-google-nlp/32/1576678305667.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-google-nlp/64/1576678305667.png","128":null}},{"id":"kds-team.ex-google-search-console","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":330,"name":"Google Search Console V2","type":"extractor","shortDescription":"Extracts Google Search Console search analytics and sitemap data.","longDescription":"This component allows you to extract statistics and site data of domains that are linked to your Google account.","licenseUrl":"https://github.com/keboola/component-google-search-console/blob/main/LICENSE.md","documentationUrl":"https://help.keboola.com/components/extractors/other/google-search-console/","sourceCodeUrl":"https://github.com/keboola/component-google-search-console","requiredMemory":null,"processTimeout":14400,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-authorization"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{},"configurationRowSchema":{"type":"object","title":"Row Configuration","required":["domain","endpoint","out_table_name"],"properties":{"domain":{"type":"string","title":"Domain","description":"Domain name you wish to extract data from eg. keboola.com","propertyOrder":1},"date_to":{"type":"string","title":"Date to","options":{"dependencies":{"endpoint":"Search analytics","date_range":"Custom"}},"description":"Date in YYYY-MM-DD format or dateparser string i.e. 5 days ago, 1 month ago, yesterday, etc.","propertyOrder":7},"endpoint":{"enum":["Search analytics","Sitemaps"],"type":"string","title":"Endpoint","default":"Search analytics","propertyOrder":2},"date_from":{"type":"string","title":"Date from","options":{"dependencies":{"endpoint":"Search analytics","date_range":"Custom"}},"description":"Date in YYYY-MM-DD format or dateparser string i.e. 5 days ago, 1 month ago, yesterday, etc.","propertyOrder":6},"date_range":{"enum":["Last week (sun-sat)","Last month","Custom"],"type":"string","title":"Date range type","options":{"dependencies":{"endpoint":"Search analytics"}},"propertyOrder":5},"search_type":{"type":"string","title":"Type","options":{"dependencies":{"endpoint":"Search analytics"}},"description":" Filter results to the following types: news, video, image, web, discover, or googleNews","propertyOrder":4},"filter_groups":{"type":"array","items":{"type":"array","items":{"type":"object","title":"Filter","properties":{"operator":{"enum":["contains","equals","notContains","notEquals"],"type":"string","title":"Operator","default":"equals","propertyOrder":20},"dimension":{"type":"string","title":"Dimension","propertyOrder":15},"expression":{"type":"string","title":"Expression","propertyOrder":30}}},"title":"Filter Group","format":"table","propertyOrder":11},"title":"Filter Groups","format":"table","options":{"dependencies":{"endpoint":"Search analytics"}},"propertyOrder":10},"include_fresh":{"type":"boolean","title":"Include fresh data","format":"checkbox","default":false,"options":{"dependencies":{"endpoint":"Search analytics"}},"description":"Include also fresh data, which can change later. <a href=\"https://developers.google.com/search/blog/2019/09/search-performance-fresh-data\">Find more about fresh data in Search Console</a> ","propertyOrder":8},"out_table_name":{"type":"string","title":"Output name","description":"Name of output table in Keboola storage","propertyOrder":9},"loading_options":{"type":"object","title":"Loading Options","options":{"dependencies":{"endpoint":"Search analytics"}},"required":["incremental"],"properties":{"incremental":{"enum":[0,1],"type":"integer","title":"Load type","default":0,"options":{"enum_titles":["Full Load","Incremental Update"]},"description":"If set to Incremental update, the result tables will be updated based on primary key and new records will be fetched. Full load overwrites the destination table each time.","propertyOrder":200}},"propertyOrder":100},"use_service_account":{"type":"boolean","title":"Use Service Account","format":"checkbox","default":false,"description":"Enables the use of service account."},"#service_account_info":{"type":"string","title":"Service Account Info","format":"textarea","options":{"dependencies":{"use_service_account":true}},"description":"To use your service account, copy and paste the entire JSON code into the text area. Not sure how to create a service account? Check out the <a href='https://developers.google.com/identity/protocols/oauth2/service-account#creatinganaccount'>Google Identity Documentation</a> for step-by-step instructions."},"search_analytics_dimensions":{"type":"string","title":"Dimensions","options":{"dependencies":{"endpoint":"Search analytics"}},"description":"Comma separated list of search analytics dimensions eg. page, query, date","propertyOrder":3}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":330,"uri":"docker/kds-team.ex-google-search-console","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-google-search-console","name":"developer-portal-v2/kds-team.ex-google-search-console","tag":"1.1.10","options":{},"digest":"sha256:44673d333cce775bf8ddeecad0dd23c1f0ceef0baf1863a36dcbda1feb9a59b0"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-google-search-console/32/1674038030363.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-google-search-console/64/1674038030363.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-google-search-console/128/1674038030363.png"}},{"id":"keboola.ex-google-drive","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":79,"name":"Google Sheets","type":"extractor","shortDescription":"Extracts data from Google Drive files and Sheets.","longDescription":"This component downloads data from [Google Sheets](https://www.google.com/sheets/about/).\n\nTo configure the extractor, you need to have \n\n- a [Google account](https://account.google.com/), and \n- at least one spreadsheet document available in your Google Drive.","licenseUrl":"https://github.com/keboola/google-drive-extractor/blob/main/LICENSE","documentationUrl":"https://help.keboola.com/extractors/storage/google-drive/","sourceCodeUrl":"https://github.com/keboola/google-drive-extractor","requiredMemory":"3g","processTimeout":28800,"features":["has-sample-data","has-simplified-ui"],"encryption":true,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"easy","category":null,"categories":["File Storage"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-authorization"],"imageParameters":{},"stackParameters":{},"testConfiguration":{},"configurationSchema":{"type":"object","title":"keboola.ex-google-drive — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"sheets":{"type":"array","items":{"type":"object","properties":{"id":{"type":["string","integer"]},"fileId":{"type":"string"},"header":{"type":"object","properties":{"rows":{"type":"integer"}}},"enabled":{"type":"boolean"},"sheetId":{"type":["string","integer"]},"fileTitle":{"type":"string"},"sheetTitle":{"type":"string"},"outputTable":{"type":"string"}}}},"outputBucket":{"type":"string"}}},"configurationRowSchema":{"type":"object","title":"keboola.ex-google-drive — Row Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":["probe"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-google-drive","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-google-drive","name":"developer-portal-v2/keboola.ex-google-drive","tag":"2.7.7","options":{},"digest":"sha256:d833f53cf2e15197231ed1109865dfb9dd75881058baa984d157f5e62c76f2ab"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-google-drive/32/1698312099806.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-google-drive/64/1698312099806.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-google-drive/128/1698312099806.png"}},{"id":"keboola.wr-google-sheets","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":78,"name":"Google Sheets","type":"writer","shortDescription":"Writes data into individual sheets of Google Sheets spreadsheets.","longDescription":"This component selects tables from Keboola Connection Storage and exports them into a single [Google Sheets](https://www.google.com/sheets/about/) account as worksheets. The writer allows you to send tables into individual sheets of a spreadsheet document and append rows into an existing sheet. \n\n*Note: Google Sheets have [strict limits](https://gsuitetips.com/tips/sheets/google-spreadsheet-limitations/) on document sizes. If you are getting close to them, use the [Google Drive writer](https://help.keboola.com/writers/storage/google-drive/) to avoid failed writes.*","licenseUrl":"https://github.com/keboola/google-sheets-writer/blob/master/LICENSE","documentationUrl":"https://help.keboola.com/writers/storage/google-sheets/","sourceCodeUrl":"https://github.com/keboola/google-sheets-writer","requiredMemory":"1g","processTimeout":7200,"features":["dev-branch-configuration-unsafe"],"encryption":true,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["File Storage"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-authorization"],"imageParameters":{},"stackParameters":{},"testConfiguration":{},"configurationSchema":{"type":"object","title":"keboola.wr-google-sheets — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"tables":{"type":"array","items":{"type":"object","properties":{"id":{"type":["string","integer"]},"title":{"type":"string"},"action":{"enum":["update","append"],"type":"string"},"fileId":{"type":"string"},"enabled":{"type":"boolean"},"sheetId":{"type":["string","integer"]},"tableId":{"type":"string"},"sheetTitle":{"type":"string"}}}}}},"configurationRowSchema":{"type":"object","title":"keboola.wr-google-sheets — Row Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"title":{"type":"string"},"fileId":{"type":"string"},"enabled":{"type":"boolean"},"sheetId":{"type":"string"},"tableId":{"type":"string"},"operation":{"type":"string"},"worksheet":{"type":"string"}}},"createConfigurationRowSchema":null,"configurationDescription":"### Configuration \n#### Tables \n- *id* - unique id \n- *fileId* - Google Drive ID of the file / spreadsheet \n- *title* - Spreadsheet title \n- *parents* - One or more parent folders \n- *action* - One of `append`, `create`, `update` \n- *tableId* - Storage table id, which will be written \n- *enabled* - whether this table will be written on `run` \n- *sheetId* - ID of the sheet in spreadsheet \n- *sheetTitle* - title of the sheet in spreadsheet","configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":["createSpreadsheet","getSpreadsheet","addSheet"],"fees":false,"limits":"no limits","logger":"gelf","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.wr-google-sheets","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-google-sheets","name":"developer-portal-v2/keboola.wr-google-sheets","tag":"1.6.4","options":{},"digest":"sha256:b162182a786a550a74007a29f96aede687858425fe9c648a582a7567196eaa7c"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-google-sheets/32/1666644536092.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-google-sheets/64/1666644536092.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-google-sheets/128/1666644536092.png"}},{"id":"kds-team.ex-google-translation","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":144,"name":"Google Translate","type":"application","shortDescription":"Translates input table text via the Google Translation API.","longDescription":"# Google Translate\n\n## Overview\n\nThe application for Google Translate allows to translate text into a desired language using Google Translate API. The Cloud Translation is a paid service serviced by Google and is subject to [Google Cloud's Terms & Condition](https://cloud.google.com/terms/). For pricing information, please visit the [support pages](https://cloud.google.com/translate/pricing).\n\n## Requirements\n\nThe component requires valid Google Cloud API token with translation allowed. The API token is subject to [limits](https://cloud.google.com/translate/quotas) thus you will need to set up the translation limits according to your needs. The component uses exponential backoff to overcome Google's 100 second limit in case it is reached. In case the daily limit is reached, the component will fail.","licenseUrl":"https://github.com/keboola/component-google-translation/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-google-translation/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-google-translation","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Configuration","required":["#API_key","target_language"],"properties":{"#API_key":{"type":"string","title":"Google API Key","format":"password","minLength":4,"description":"For API key, please visit <a href='https://console.cloud.google.com/apis/credentials'>Google Cloud Console</a><ol><li>Create a new API key by clicking: Create credentials -> API Keys</li><li>Use your existing API key and add Translation API to API restrictions</li></ol><br>Please refer to GCP <a href='https://cloud.google.com/translate/pricing'>pricing guide</a> for detailed information about the costs of API requests.","propertyOrder":100},"destination":{"type":"object","title":"Destination","required":["output_table_name","load_type"],"properties":{"load_type":{"enum":["full_load","incremental_load"],"type":"string","title":"Load Type","format":"checkbox","default":"full_load","options":{"enum_titles":["Full Load","Incremental Load"]},"description":"If Full load is used, the destination table will be overwritten every run. If incremental load is used, data will be upserted into the destination table. Tables with a primary key will have rows updated, tables without a primary key will have rows appended.","propertyOrder":20},"primary_keys":{"type":"array","items":{"enum":["id","translatedText","detectedSourceLanguage"],"type":"string"},"title":"Primary Keys","format":"select","default":["id","translatedText","detectedSourceLanguage"],"minItems":1,"description":"List of primary keys. If a primary key is set, updates can be done on the table by selecting incremental loads. The primary key can consist of multiple columns. The primary key of an existing table cannot be changed.","uniqueItems":true,"propertyOrder":30},"output_table_name":{"type":"string","title":"Storage Table Name","default":"translated-text.csv","description":"Name of the table stored in Storage.","propertyOrder":10}},"propertyOrder":400},"target_language":{"enum":["af","sq","am","ar","hy","az","eu","be","bn","bs","bg","ca","ceb","ny","zh","zh-TW","co","hr","cs","da","nl","en","eo","et","tl","fi","fr","fy","gl","ka","de","el","gu","ht","ha","haw","iw","hi","hmn","hu","is","ig","id","ga","it","ja","jw","kn","kk","km","ko","ku","ky","lo","la","lv","lt","lb","mk","mg","ms","ml","mt","mi","mr","mn","my","ne","no","ps","fa","pl","pt","pa","ro","ru","sm","gd","sr","st","sn","sd","si","sk","sl","so","es","su","sw","sv","tg","ta","te","th","tr","uk","ur","uz","vi","cy","xh","yi","yo","zu"],"type":"string","title":"Target Language","default":"en","options":{"enum_titles":["Afrikaans","Albanian","Amharic","Arabic","Armenian","Azerbaijani","Basque","Belarusian","Bengali","Bosnian","Bulgarian","Catalan","Cebuano","Chichewa","Chinese (Simplified)","Chinese (Traditional)","Corsican","Croatian","Czech","Danish","Dutch","English","Esperanto","Estonian","Filipino","Finnish","French","Frisian","Galician","Georgian","German","Greek","Gujarati","Haitian Creole","Hausa","Hawaiian","Hebrew","Hindi","Hmong","Hungarian","Icelandic","Igbo","Indonesian","Irish","Italian","Japanese","Javanese","Kannada","Kazakh","Khmer","Korean","Kurdish (Kurmanji)","Kyrgyz","Lao","Latin","Latvian","Lithuanian","Luxembourgish","Macedonian","Malagasy","Malay","Malayalam","Maltese","Maori","Marathi","Mongolian","Myanmar (Burmese)","Nepali","Norwegian","Pashto","Persian","Polish","Portuguese","Punjabi","Romanian","Russian","Samoan","Scots Gaelic","Serbian","Sesotho","Shona","Sindhi","Sinhala","Slovak","Slovenian","Somali","Spanish","Sundanese","Swahili","Swedish","Tajik","Tamil","Telugu","Thai","Turkish","Ukrainian","Urdu","Uzbek","Vietnamese","Welsh","Xhosa","Yiddish","Yoruba","Zulu"]},"description":"Choose the target language to which the text will be translated. <br/> The list of supported languages is available on <a href='https://cloud.google.com/translate/docs/languages'>Google support pages</a>.","propertyOrder":200}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"A sample configuration can be found in [component's repository](https://bitbucket.org/kds_consulting_team/kds-team.ex-google-translation/src/master/component_config/sample-config/) including table inputs and outputs. Output table is loaded incrementally with `id` column used as a primary key.\n\n### Input table\n\nEach of the table must contain 2 required columns and may contain 1 optional column to make the translation more precise. The list of columns is:\n\n- `id` - (required) the column is used as primary key in the output,\n- `text` - (required) text to be translated,\n- `source` - (optional) an [ISO-639-1 language identifier](https://cloud.google.com/translate/docs/languages) of the source language of the text. If the column is left out or left blank, the Translate API will automatically detect the source language.\n\nAny additional columns will be ignored by the component. The input table therefore might take a form like the one below.\n\n| id \t| text                                     \t| source \t| randomColumn \t    |\n|----\t|------------------------------------------\t|--------\t|--------------\t    |\n| 1 \t| Tôi lái xe máy của tôi khi tôi ngã xuống \t|        \t| foo          \t    |\n| 2  \t| Je n'ai pas fait mon devoir              \t| fr     \t| bar          \t    |\n| 3  \t| Hello, it's very nice to meet you.       \t| en     \t| foobar       \t    |\n\n### API Token (`#API_key`)\n\nThe API token can be obtained in the credentials section of the [Google Cloud Console](https://console.cloud.google.com/apis/credentials). The API token must have translation allowed, otherwise the component will fail.\n\n### Target language (`target_language`)\n\nAn [ISO-639-1 language identifier](https://cloud.google.com/translate/docs/languages) of the language to which all text will be translated.\n\n## Output\n\nThe output of the component is a table with translated rows. The table is loaded incrementally with column `id` used as a primary key and with following column specification:\n\n- `id` - identificator of text request. Relates to input table and is used as PK,\n- `translatedText` - a translation of the text in the target language,\n- `detectedSourceLanguage` - if `source` is not specified, the column contains information on detected language in the text. Otherwise it is equal to `source`.\n\nThe output table will therefore take the following form:\n\n| id \t| translatedText                        \t| detectedSourceLanguage \t|\n|----\t|---------------------------------------\t|------------------------\t|\n| 1  \t| I drove my motorbike when I fell down \t| vi                     \t|\n| 2  \t| I did not do my homework              \t| fr                     \t|\n| 3  \t| Hello, it's very nice to meet you.    \t| en                     \t|","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":true,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":144,"uri":"docker/kds-team.ex-google-translation","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-google-translation","name":"developer-portal-v2/kds-team.ex-google-translation","tag":"1.0.2","options":{},"digest":"sha256:ca3352b6e3fcf7326d71fa4c80219448235e9ea4f206705137c044677a74e63d"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-google-translation/32/1576678544333.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-google-translation/64/1576678544333.png","128":null}},{"id":"kds-team.wr-graphql","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":128,"name":"GraphQL","type":"writer","shortDescription":"Publishing or updating data points with a specified GraphQL query to the API server that is powered by GraphQL.","longDescription":"The purpose of GraphQL Writer is to publish or update data points with a specified GraphQL query to the API server that is powered by GraphQL.\n\n## Configuration\n\nTables from the input mapping will be used as an input for the GraphQL Writer. Each row from the input tables will be converted into a `graphql_variables`and convert each of the row into a variables object. Details regarding how to send GraphQL Queries with Variables can be found [here](https://graphql.org/learn/queries/#variables). \n\n### Support Attributes\n1. url - `string` (`required`)\n    - Input Type: `string`\n2. request_type - `string`\n    1. POST\n    2. PUT\n    3. PATCH\n    - Default - `POST`\n3. user_parameters - `json`\n    - {\"attribute_name\": \"attribute_value\"}\n    - Variables can be used in headers and params\n    - For any variables need encryption, add `#` in the prefix of the variable's name\n        - {\"#attribute_name\": \"attribute_value\"}\n4. headers - `json`\n    - to call variables defined in user_parameters\n        - {\"attr\": \"attribute_name\"}\n5. params - `json`\n    - to call variables defined in user_parameters\n        - {\"attr\": \"attribute_name\"}\n6. graphql_query - `string` (`required`)\n    - GraphQL query which will be used for the requests\n    - The query needs to be `URL encoded`\n7. graphql_variables - `list` (`required`)\n    - GraphQL variables which be used for the requests\n    - All variables configured in this property needs to exist in the tables from the Input Mapping\n\n### Sample Configuration\n```\n{\n    \"url\": \"https://www.testing.com/graphql\",\n    \"request_type\": \"POST\",\n    \"user_parameters\": {\n        \"#token\": \"12345\",\n        \"paging\": \"1\"\n    },\n    \"headers\": {\n        \"token_testing\": {\n            \"attr\": \"#token\"\n        }\n    },\n    \"params\": {\n        \"page\": {\n            \"attr\": \"paging\"\n        }\n    },\n    \"graphql_query\": \"URL_ENCODED_GRAPHQL_QUERY\",\n    \"graphql_variables\": [\n        \"orderid\",\n        \"order__external_id__c\",\n        \"totalprice\",\n        \"unitprice\",\n        \"quantity\"\n    ]\n}\n```\n\n### CURL Request from above Sample Configuration\n```\ncurl --location --request POST 'https://www.testing.com/graphql?page=1' \\\n--header 'token_testing: 12345' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\"query\":\"URL_ENCODED_GRAPHQL_QUERY\",\"variables\":{\"orderid\":\"1234\",\"order__external_id__c\":\"1234\",\"totalprice\":\"10.00\",\"unitprice\":\"5\",\"quantity\":\"2\"}}'\n```","licenseUrl":"https://bitbucket.org/kds_consulting_team/kds-team.wr-graphql/src/master/LICENSE.md","documentationUrl":"https://bitbucket.org/kds_consulting_team/kds-team.wr-graphql/src/master/README.md","sourceCodeUrl":"https://bitbucket.org/kds_consulting_team/kds-team.wr-graphql/src/master/src/","requiredMemory":null,"processTimeout":10800,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["API"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"### Support Attributes\n1. url - `string` (`required`)\n    - Input Type: `string`\n2. request_type - `string`\n    1. POST\n    2. PUT\n    3. PATCH\n    - Default - `POST`\n3. user_parameters - `json`\n    - {\"attribute_name\": \"attribute_value\"}\n    - Variables can be used in headers and params\n    - For any variables need encryption, add `#` in the prefix of the variable's name\n        - {\"#attribute_name\": \"attribute_value\"}\n4. headers - `json`\n    - to call variables defined in user_parameters\n        - {\"attr\": \"attribute_name\"}\n5. params - `json`\n    - to call variables defined in user_parameters\n        - {\"attr\": \"attribute_name\"}\n6. graphql_query - `string` (`required`)\n    - GraphQL query which will be used for the requests\n    - The query needs to be `URL encoded`\n7. graphql_variables - `list` (`required`)\n    - GraphQL variables which be used for the requests\n    - All variables configured in this property needs to exist in the tables from the Input Mapping\n\n### Sample Configuration\n```\n{\n    \"url\": \"https://www.testing.com/graphql\",\n    \"request_type\": \"POST\",\n    \"user_parameters\": {\n        \"#token\": \"12345\",\n        \"paging\": \"1\"\n    },\n    \"headers\": {\n        \"token_testing\": {\n            \"attr\": \"#token\"\n        }\n    },\n    \"params\": {\n        \"page\": {\n            \"attr\": \"paging\"\n        }\n    },\n    \"graphql_query\": \"URL_ENCODED_GRAPHQL_QUERY\",\n    \"graphql_variables\": [\n        \"orderid\",\n        \"order__external_id__c\",\n        \"totalprice\",\n        \"unitprice\",\n        \"quantity\"\n    ]\n}\n```","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":128,"uri":"docker/kds-team.wr-graphql","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.wr-graphql","name":"developer-portal-v2/kds-team.wr-graphql","tag":"0.0.4","options":{},"digest":"sha256:d681009ebdab94d11162e37abf0a7cec1822ee8769ddd6a01c7c6292f8792c6b"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.wr-graphql/32/1583961257259.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.wr-graphql/64/1583961257259.png","128":null}},{"id":"keboola.ex-helios-inuvio","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":32,"name":"Helios Inuvio","type":"extractor","shortDescription":"Extracts Helios iNuvio ERP browses (data views) into Keboola Storage.","longDescription":"The Helios iNuvio extractor connects to an Asseco Solutions Helios iNuvio Server via its REST API\nand loads data into Keboola Storage. Each configuration row targets one Helios browse (data view):\nthe browse and its columns are selected from live dropdowns populated by the component's sync actions,\nso no manual identifier look-up is needed. Rows can be loaded in full (table overwrite each run) or\nincrementally using the Helios `rowVersion` cursor, which fetches only records changed since the last\nsuccessful run. Incremental mode requires a user-defined primary key that Storage uses to upsert new\nand updated records. An optional server-side filter condition can be applied to limit the data returned.","licenseUrl":"https://github.com/keboola/component-ex-helios-inuvio/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/component-ex-helios-inuvio/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/component-ex-helios-inuvio","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Helios iNuvio Connection","required":["base_url","username","#password","database"],"properties":{"base_url":{"type":"string","title":"Server URL","description":"Base URL of the Helios iNuvio application server, including the port (e.g. http://your-server:8080).","propertyOrder":10},"database":{"enum":[],"type":"string","title":"Database","format":"select","options":{"async":{"label":"Load Databases","action":"list_databases"}},"description":"Helios iNuvio database system name. Click the button to load available databases.","propertyOrder":60},"username":{"type":"string","title":"Username","propertyOrder":20},"#password":{"type":"string","title":"Password","format":"password","propertyOrder":30},"test_connection":{"type":"button","format":"test-connection","propertyOrder":50}}},"configurationRowSchema":{"type":"object","title":"Browse Configuration","required":["browse"],"properties":{"debug":{"type":"boolean","title":"Debug Mode","default":false,"description":"Enable verbose debug logging.","propertyOrder":70},"browse":{"enum":[],"type":"string","title":"Browse","format":"select","options":{"async":{"label":"Load Browses","action":"list_browses"}},"description":"Helios iNuvio browse (endpoint) to extract. Click the button to load available browses.","propertyOrder":10},"filter":{"type":"string","title":"Filter (Advanced)","description":"Optional server-side condition selecting which records to return, over column system names <code>Table.Field</code> (e.g. <code>TabCisOrg.ID</code>). Empty returns all rows. For the syntax, see the <a href='https://public.helios.eu/inuvio/doc/cs/index.php?title=Kategorie:HELIOS_iNuvio_Server' target='_blank'>HELIOS iNuvio Server System API docs</a>.","propertyOrder":60},"columns":{"type":"array","items":{"enum":[],"type":"string"},"title":"Columns","format":"select","options":{"async":{"label":"Load Columns","action":"list_columns"}},"description":"Columns to extract. Leave empty to extract all columns.","uniqueItems":true,"propertyOrder":30},"load_type":{"enum":["full_load","incremental_load"],"type":"string","title":"Load Type","default":"full_load","options":{"enum_titles":["Full Load","Incremental Load"]},"propertyOrder":40},"primary_key":{"type":"array","items":{"enum":[],"type":"string"},"title":"Primary Key","format":"select","options":{"async":{"label":"Load Columns","action":"list_columns"},"dependencies":{"load_type":"incremental_load"}},"description":"Required for incremental load (enables upsert). Select columns that uniquely identify each row.","uniqueItems":true,"propertyOrder":50},"output_table_name":{"type":"string","title":"Output Table Name","description":"Name for the output table in Keboola Storage. Defaults to browse_<ident> when left empty.","propertyOrder":20}}},"createConfigurationRowSchema":null,"configurationDescription":"Configuration description.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["list_browses","list_columns","list_databases","testConnection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-helios-inuvio","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-helios-inuvio","name":"developer-portal-v2/keboola.ex-helios-inuvio","tag":"0.0.2","options":{},"digest":"sha256:b520401e5bcdb3b36e4a5e4d77bfdc0408d7c18a32fe04437faee8a0f1e93606"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-helios-inuvio/32/1781175807343.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-helios-inuvio/64/1781175807343.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-helios-inuvio/128/1781175807343.png"}},{"id":"keboola.wr-helios-inuvio","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":34,"name":"Helios Inuvio","type":"writer","shortDescription":"Writes rows from Keboola Storage tables to any writable Helios iNuvio browse, with create and update modes.","longDescription":"The Helios iNuvio Writer pushes data from Keboola Storage tables into Helios iNuvio\n(Asseco Solutions ERP) via its iNuvio Server / eServer REST API.\n\nEach configuration row maps one input table to one Helios browse. You select the\nbrowse from a dynamic dropdown, then map input columns to the browse's writable\nfields. The writer supports **create** (insert) and **update** (modify by key) modes.\nWhen \"Continue on Error\" is enabled, rejected rows are written to `failed_records.csv`\ninstead of failing the job.\n\nConnect by entering the server URL, username, password, and database; use **Test\nConnection** to validate credentials.","licenseUrl":"https://github.com/keboola/component-wr-helios-inuvio/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-wr-helios-inuvio/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-wr-helios-inuvio","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"out","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-tableInput","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Helios iNuvio Connection","properties":{"connection":{"type":"object","title":"Connection","required":true,"properties":{"server":{"type":"string","title":"Server URL","required":true,"description":"iNuvio Server / eServer base URL, e.g. http://localhost:8080","propertyOrder":1},"database":{"type":"string","title":"Database","required":true,"description":"Helios database name, e.g. HEE_Helios_001","propertyOrder":4},"username":{"type":"string","title":"Username","required":true,"propertyOrder":2},"#password":{"type":"string","title":"Password","format":"password","required":true,"propertyOrder":3}},"propertyOrder":1},"test_connection":{"type":"button","format":"test-connection","options":{"async":{"label":"Test Connection","action":"testConnection"}},"propertyOrder":2}}},"configurationRowSchema":{"type":"object","title":"Write Target","properties":{"debug":{"type":"boolean","title":"Debug Mode","format":"checkbox","default":false,"propertyOrder":7},"browse":{"enum":[],"type":"string","title":"Browse","format":"select","options":{"async":{"label":"Re-load browses","action":"list_browses","autoload":true},"creatable":true},"description":"Helios browse to write to. Values are 'Browse Name (id)'; a bare id also works.","propertyOrder":1},"key_field":{"type":"string","title":"Key Field","options":{"dependencies":{"write_mode":"update"}},"description":"Record identifier used for updates","propertyOrder":3},"_metadata_":{"type":"object","options":{"hidden":true},"properties":{"api_fields":{"type":"array"}}},"write_mode":{"enum":["create","update"],"type":"string","title":"Write Mode","format":"select","default":"create","options":{"enum_titles":["Create","Update"]},"description":"Create inserts a new record per row (non-idempotent — re-running duplicates rows in Helios). Update modifies existing records by Key Field.","propertyOrder":2},"load_mapping":{"type":"button","title":"Re-load Mapping","format":"sync-action","options":{"async":{"cache":false,"label":"Re-load mapping","action":"load_field_mapping","autoload":["browse"]}},"propertyOrder":5},"field_mapping":{"type":"array","items":{"type":"object","properties":{"source_column":{"type":"string","title":"Source Column","options":{"readOnly":true},"required":true},"destination_field":{"type":"string","title":"Destination Field","watch":{"api_fields":"_metadata_.api_fields"},"format":"select","options":{"creatable":true},"required":true,"enumSource":[{"title":"{{item.label}}","value":"{{item.field_name}}","source":"api_fields"}]}}},"title":"Field Mapping","format":"table","description":"Map input columns to Helios fields. Use 'Re-load mapping' to populate; existing rows are preserved.","propertyOrder":4},"continue_on_error":{"type":"boolean","title":"Continue on Error","format":"checkbox","default":false,"description":"Write failed records to failed_records.csv instead of failing the job.","propertyOrder":6}}},"createConfigurationRowSchema":null,"configurationDescription":"Writes rows from Keboola Storage tables into Helios iNuvio via the iNuvio Server System API.\n\n### Connection\n\nSet the iNuvio Server base URL, the SQL user credentials (username and password), and the target Helios database (the `dbName` used on every API call). Use **Test Connection** to verify the credentials before saving.\n\n### Write target (per row)\n\n- **Browse** — the Helios browse (přehled) to write into. The list is loaded from the server and limited to browses your user can create or update.\n- **Write Mode** — `Create` issues a `POST` for each input row. It is **not idempotent** and the writer keeps no checkpoint, so re-running (or resuming after a partial failure) inserts the rows again and creates duplicates in Helios; use `Update` where idempotent writes are required. `Update` issues a `PUT` and requires a **Key Field** holding the Helios record id.\n- **Field Mapping** — maps input table columns to Helios fields. Use **Re-load Mapping** to fetch the writable fields for the selected browse and pre-fill the mapping; existing assignments are preserved.\n- **Continue on Error** — when enabled, rows the API rejects are written to `failed_records.csv` (with the error message) instead of failing the whole job.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["list_browses","load_field_mapping","testConnection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.wr-helios-inuvio","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-helios-inuvio","name":"developer-portal-v2/keboola.wr-helios-inuvio","tag":"0.0.2","options":{},"digest":"sha256:ca2b90e3c3dcc22227d0261c57c09dd6b7629734c3a66ab8e042f9fc970712db"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-helios-inuvio/32/1781175830336.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-helios-inuvio/64/1781175830336.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-helios-inuvio/128/1781175830336.png"}},{"id":"keboola.ex-helios-nephrite","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":20,"name":"Helios Nephrite","type":"extractor","shortDescription":"Extracts data from Helios Nephrite ERP.","longDescription":"The Helios Nephrite Extractor enables seamless data extraction from the Helios Nephrite ERP system, a comprehensive enterprise resource planning solution widely used in the Czech and Slovak markets. This component connects to the Helios Nephrite REST API to retrieve business-critical data and load it into Keboola Storage for further analysis and integration.\n\n## Key Features\n\n**Flexible Data Loading**\nThe component supports both incremental and full load modes. Incremental loading fetches only new or modified records based on timestamps, making it ideal for regular synchronization jobs that minimize API calls and processing time. Full load mode extracts all records from an entity, useful for initial data loads or periodic complete refreshes.\n\n**Multiple Business Entities**\nExtract data from essential business entities including Companies (business partners), Contacts (contact persons), Employees (employee records), Products (product catalog), Departments (organizational units), Branch Offices (company locations), Resources (business resources), Warehouses (storage locations), and VAT Codes (tax definitions). This comprehensive coverage allows you to build a complete picture of your business operations.\n\n**Intelligent Data Structuring**\nThe component automatically structures complex data by separating main records from nested child data. For each entity, the component outputs a main table with all scalar fields plus additional child tables for related data such as addresses, custom attributes, custom relations, categories, manufacturers, and images. All child tables include parent references for easy joins.\n\n**Custom Attributes Support**\nHelios Nephrite's custom attributes are automatically expanded into individual columns with a `custom_` prefix, making them immediately available for analysis without additional transformation steps.\n\n**Rate Limiting & Batch Processing**\nConfigure the number of API requests per minute (1-600) to respect server limits and avoid throttling. Adjust batch sizes (1-10,000 records) to optimize performance based on your data volume and network conditions. Built-in exponential backoff handles transient failures gracefully.\n\n**Authentication Options**\nThe component supports both standard username/password authentication and Windows authentication for environments that require it. Multiple language options (Czech, English, German, Slovak) are available for API responses.\n\n**State Management**\nThe component maintains extraction state across runs, tracking timestamps and record counts per entity. This enables reliable incremental synchronization and provides visibility into extraction progress.","licenseUrl":"https://github.com/keboola/component-ex-helios-nephrite/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/component-ex-helios-nephrite/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/component-ex-helios-nephrite","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","appInfo.experimental"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Helios Nephrite Extractor Configuration","required":["acknowledge","connection"],"properties":{"connection":{"type":"object","title":"Connection","required":["server_url","#password","user_name","db_profile"],"properties":{"#password":{"type":"string","title":"Password","format":"password","propertyOrder":3},"user_name":{"type":"string","title":"User Name","options":{"tooltip":"Login username for the Helios Nephrite instance"},"propertyOrder":2},"db_profile":{"type":"string","title":"Database Profile","options":{"tooltip":"Name of the database profile configured in Helios Nephrite. Contact your Helios administrator if unsure."},"propertyOrder":4},"server_url":{"type":"string","title":"Server URL","options":{"tooltip":"Base URL of the Helios Nephrite application server, e.g. https://your-server.heliosnephrite.cz"},"propertyOrder":1}},"propertyOrder":1},"acknowledge":{"type":"boolean","title":"I understand I need to contact support to set up this component","format":"checkbox","default":false,"description":"Due to implementation limitations, we currently need to help each new client set up the integration to their Helios instance. This needs to be done only ONCE","propertyOrder":0}}},"configurationRowSchema":{"type":"object","title":"Endpoint Configuration","required":["entity"],"properties":{"debug":{"type":"boolean","title":"Debug Mode","format":"checkbox","default":false,"options":{"tooltip":"Enable verbose logging. Useful for troubleshooting — avoid in production as it may log sensitive data."},"propertyOrder":6},"entity":{"enum":["companies","contacts","employees","products","departments","branchOffices","resources","warehouses","vatCodes"],"type":"string","title":"Entity","enumNames":["Companies","Contacts","Employees","Products","Departments","Branch Offices","Resources","Warehouses","VAT Codes"],"propertyOrder":1},"load_type":{"enum":["incremental_load","full_load"],"type":"string","title":"Load Type","default":"incremental_load","options":{"tooltip":"Incremental Load fetches only new or modified records since the last run. Full Load extracts all records every time."},"enumNames":["Incremental Load","Full Load"],"propertyOrder":3},"batch_size":{"type":"integer","title":"Batch Size","default":1000,"maximum":10000,"minimum":1,"options":{"tooltip":"Number of records fetched per API request. Lower values reduce memory usage; higher values improve throughput. Range: 1–10 000."},"propertyOrder":4},"table_name":{"type":"string","title":"Output Table Name","options":{"tooltip":"Custom name for the output table. Defaults to the entity name if left empty."},"propertyOrder":2},"requests_per_minute":{"type":"integer","title":"Requests Per Minute","default":30,"maximum":600,"minimum":1,"options":{"tooltip":"Maximum number of API requests per minute. Lower this value if the Helios server returns rate-limit errors. Range: 1–600."},"propertyOrder":5}}},"createConfigurationRowSchema":null,"configurationDescription":"Configuration description.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-helios-nephrite","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-helios-nephrite","name":"developer-portal-v2/keboola.ex-helios-nephrite","tag":"0.0.1","options":{},"digest":"sha256:9e4203af3d5fde968791f052229ab3d0e45c9224b9ae2860f525f75b747dcf86"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-helios-nephrite/32/1773767741583.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-helios-nephrite/64/1773767741583.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-helios-nephrite/128/1773767741583.png"}},{"id":"keboola.wr-helios-nephrite","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":37,"name":"Helios Nephrite","type":"writer","shortDescription":"Writes tables to the Helios Nephrite ERP.","longDescription":"This component writes data from Keboola Connection to [Helios Nephrite](https://www.helios.eu/en/), a modern ERP system designed for medium and large enterprises.\n\n## Features\n\n- **Entity Creation**: Create records for any entity type available in your Helios Nephrite instance (e.g., customers, products, invoices, orders).\n- **Flexible Field Mapping**: Map columns from your input CSV to Helios entity fields with an intuitive UI that auto-suggests mappings based on column name matching.\n- **Folder Organization**: Target specific folders within Helios to organize your data according to your business structure.\n- **Batch Processing**: Process multiple input tables in a single run, efficiently creating entities row by row.\n\n## Configuration\n\n1. **Connection Settings**: Provide your Helios API URL, username, and password. Optionally set a default folder ID for data organization.\n2. **Entity Selection**: Choose the target entity type (e.g., `Adresar` for address book, `Zbozi` for products).\n3. **Field Mapping**: Use the \"Load Fields\" button to fetch available entity fields and configure the mapping from your CSV columns to Helios fields.\n\n## Use Cases\n\n- Synchronize customer master data from external systems into Helios\n- Import product catalogs and inventory data\n- Load transactional data such as orders or invoices\n- Migrate data from legacy systems to Helios Nephrite\n\n## Notes\n\n- Ensure your Helios user account has appropriate permissions to create entities in the target folders.\n- The component creates new records only; updating existing records is not supported in this version.\n- Empty values in mapped columns are sent as null to the API.","licenseUrl":"https://github.com/keboola/component-wr-helios-nephrite/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/component-wr-helios-nephrite/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/component-wr-helios-nephrite","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-simpleTableInput","appInfo.experimental"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Helios Nephrite Writer Configuration","required":["acknowledge","connection"],"properties":{"connection":{"type":"object","title":"Connection","required":["api_url","#username","#password"],"properties":{"api_url":{"type":"string","title":"API URL","description":"Base URL for Helios Nephrite API (e.g., https://api.helios.eu)","propertyOrder":1},"#password":{"type":"string","title":"Password","format":"password","description":"Helios password for authentication","propertyOrder":3},"#username":{"type":"string","title":"Username","description":"Helios username for authentication","propertyOrder":2}},"propertyOrder":1},"acknowledge":{"type":"boolean","title":"I understand I need to contact support to set up this component","format":"checkbox","default":false,"description":"Due to implementation limitations, we currently need to help each new client set up the integration to their Helios instance. This needs to be done only ONCE","propertyOrder":0}}},"configurationRowSchema":{"type":"object","title":"Table Configuration","required":["entity_name"],"properties":{"debug":{"type":"boolean","title":"Debug Mode","default":false,"description":"Enable verbose debug logging","propertyOrder":5},"folder_id":{"type":"integer","title":"Folder ID","description":"Optional folder ID for this entity (overrides default from global config)","propertyOrder":2},"_metadata_":{"type":"object","options":{"hidden":true},"properties":{"api_fields":{"type":"array","items":{"type":"object","properties":{"data_type":{"type":"string"},"field_name":{"type":"string"},"header_text":{"type":"string"}}}}}},"entity_name":{"type":"string","title":"Entity Name","description":"Helios entity class name (e.g., 'invoices', 'customers', 'items')","propertyOrder":1},"load_fields":{"type":"button","format":"sync-action","options":{"async":{"cache":false,"label":"Reload Fields","action":"load_entity_fields"}},"propertyOrder":4},"field_mapping":{"type":"array","items":{"type":"object","title":"Field Mapping","required":["source_column","destination_field"],"properties":{"source_column":{"type":"string","title":"Source Column","options":{"readOnly":true},"description":"Column name from the input CSV file","propertyOrder":1},"destination_field":{"type":"string","title":"Destination Field","watch":{"api_fields":"_metadata_.api_fields"},"enumSource":[{"title":"{{item.field_name}}","value":"{{item.field_name}}","source":"api_fields"}],"description":"Field name in the Helios API","propertyOrder":2}}},"title":"Field Mapping","format":"table","description":"Mapping between CSV columns and Helios API fields","propertyOrder":3}}},"createConfigurationRowSchema":null,"configurationDescription":"Configuration description.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["load_entity_fields"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.wr-helios-nephrite","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-helios-nephrite","name":"developer-portal-v2/keboola.wr-helios-nephrite","tag":"0.0.2","options":{},"digest":"sha256:52d917821a3152de04cb32180a288f1d0d0ab5a862861f323fb153c4053bdb98"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-helios-nephrite/32/1773767747202.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-helios-nephrite/64/1773767747202.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-helios-nephrite/128/1773767747202.png"}},{"id":"kds-team.ex-heureka","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":162,"name":"Heureka","type":"extractor","shortDescription":"Extracts e-shop conversion statistics from Heureka via admin-account login.","longDescription":"The Heureka Data Source allows you to download statistics for your e-shop.\nIt now supports variants for the Czech Republic and Slovakia.\nThe component extracts the following metrics:\neshop_id,date,pno,conversion_rates,spend,aov,cpc,orders,visits,transaction_revenue\n\n**NOTICE!**\n- The data from the past 30 days may be incomplete.\n- The data of the previous day becomes available on the following day.\n- Due to the introduction of mandatory consent for storing cookies, measured conversions and revenues on your e-shop may be lower by up to 30% than actual orders.","licenseUrl":"https://github.com/keboola/component-heureka/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-heureka/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-heureka/","requiredMemory":"768m","processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":true,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"easy","category":null,"categories":["E-commerce"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","appInfo.experimental"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Component configuration","required":["credentials"],"properties":{"country":{"enum":["cz","sk"],"type":"string","title":"Heureka Site Country","default":"cz","description":"Select from which Heureka site you want to extract data.","propertyOrder":2},"credentials":{"type":"object","title":"Authorization","required":["email","#password"],"properties":{"email":{"type":"string","title":"Email","propertyOrder":1},"#password":{"type":"string","title":"Password","format":"password","propertyOrder":2}},"propertyOrder":1}}},"configurationRowSchema":{"type":"object","title":"Configuration Parameters","required":["report_settings"],"properties":{"destination":{"type":"object","title":"Destination","properties":{"load_type":{"enum":["full_load","incremental_load"],"type":"string","title":"Load Type","format":"checkbox","default":"full_load","options":{"enum_titles":["Full Load","Incremental Load"]},"description":"If Full load is used, the destination table will be overwritten every run. If incremental load is used, data will be upserted into the destination table.","propertyOrder":2},"table_name":{"type":"string","title":"Table name (optional)","description":"The name of the output table; if empty, it defaults to the shop id.","propertyOrder":1}},"propertyOrder":3},"report_settings":{"type":"object","title":"Report Settings","required":["eshop_id","date_from","date_to"],"properties":{"date_to":{"type":"string","title":"Date to","default":"now","description":"End date of the report. Either date in YYYY-MM-DD format or dateparser string i.e. 5 days ago, 1 month ago, yesterday, etc.","propertyOrder":3},"eshop_id":{"type":"string","title":"Eshop ID","required":true,"description":"ID of the eshop for which you want to download report.","propertyOrder":1},"date_from":{"type":"string","title":"Date From","default":"1 week ago","description":"Start date of the report. Either date in YYYY-MM-DD format or dateparser string i.e. 5 days ago, 1 month ago, yesterday, etc.","propertyOrder":2}},"propertyOrder":2}}},"createConfigurationRowSchema":null,"configurationDescription":"First, in the component configuration below, fill in the credentials.\nThen in the config row, specify the e-shop ID, date for which you want to retrieve the data, and destination table settings.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.ex-heureka","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-heureka","name":"developer-portal-v2/kds-team.ex-heureka","tag":"0.0.15","options":{},"digest":"sha256:0a1d53978cf0999ec583e9b373a738b1f01c30048aa506208c3bc1904ab24ee8"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-heureka/32/1710752803567.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-heureka/64/1710752803567.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-heureka/128/1710752803567.png"}},{"id":"keboola.ex-heureka","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":35,"name":"Heureka","type":"extractor","shortDescription":"Extracts e-shop conversion statistics and per-product details from the official Heureka Group API.","longDescription":"The Heureka Data Source allows you to download statistics for your e-shop.\nIt now supports variants for the Czech Republic and Slovakia.\nThe component extracts the following metrics:\neshop_id,date,pno,conversion_rates,spend,aov,cpc,orders,visits,transaction_revenue\n\n**NOTICE!**\n- The data from the past 30 days may be incomplete.\n- The data of the previous day becomes available on the following day.\n- Due to the introduction of mandatory consent for storing cookies, measured conversions and revenues on your e-shop may be lower by up to 30% than actual orders.","licenseUrl":"https://github.com/keboola/component-ex-heureka/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/component-ex-heureka/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/component-ex-heureka","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Component configuration","required":["credentials"],"properties":{"credentials":{"type":"object","title":"Authorization","required":["#api_key"],"properties":{"#api_key":{"type":"string","title":"Heureka API Key","format":"password","options":{"tooltip":"Get your API key at:\n- [heureka.cz](https://sluzby.heureka.cz/statistics-and-reports/api)\n- [heureka.sk](https://sluzby.heureka.sk/statistics-and-reports/api)"},"description":"API key (API conversion measurement) from your Heureka account.","propertyOrder":1}},"propertyOrder":1}}},"configurationRowSchema":{"type":"object","title":"Configuration Parameters","required":["report_settings"],"properties":{"destination":{"type":"object","title":"Destination","properties":{"load_type":{"enum":["full_load","incremental_load"],"type":"string","title":"Load Type","format":"checkbox","default":"full_load","options":{"enum_titles":["Full Load","Incremental Load"]},"description":"If Full load is used, the destination table will be overwritten every run. If incremental load is used, data will be upserted into the destination table.","propertyOrder":2},"table_name":{"type":"string","title":"Table name (optional)","description":"The name of the output table; if empty, it defaults to the shop id.","propertyOrder":1},"decimal_separator":{"enum":["dot","comma"],"type":"string","title":"Decimal Separator","default":"dot","options":{"enum_titles":["Dot (1.23) - Recommended","Comma (1,23) - For backwards compatibility"]},"description":"Decimal separator used in numeric values. Comma is the default for backwards compatibility. Dot is recommended for new configurations.","propertyOrder":3}},"propertyOrder":3},"report_settings":{"type":"object","title":"Report Settings","required":["eshop_id","date_from","date_to"],"properties":{"date_to":{"type":"string","title":"Date to","default":"now","description":"End date of the report. Either date in YYYY-MM-DD format or dateparser string i.e. 5 days ago, 1 month ago, yesterday, etc.","propertyOrder":3},"eshop_id":{"type":"string","title":"Eshop ID","required":true,"description":"ID of the eshop for which you want to download report.","propertyOrder":1},"date_from":{"type":"string","title":"Date From","default":"1 week ago","description":"Start date of the report. Either date in YYYY-MM-DD format or dateparser string i.e. 5 days ago, 1 month ago, yesterday, etc.","propertyOrder":2},"output_detail":{"type":"boolean","title":"Output Detailed Data","format":"checkbox","default":false,"description":"Output detailed per-item conversion data alongside the daily summary table.","propertyOrder":4}},"propertyOrder":2}}},"createConfigurationRowSchema":null,"configurationDescription":"First, in the component configuration below, fill in the API key.\nThen in the config row, specify the e-shop ID, date for which you want to retrieve the data, and destination table settings.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-heureka","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-heureka","name":"developer-portal-v2/keboola.ex-heureka","tag":"0.0.3","options":{},"digest":"sha256:fbbc58623cef3a518a1cc6f70b45e324f506e2bbf7b20fb2ac91f7b7f288724a"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-heureka/32/1777383350790.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-heureka/64/1777383350790.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-heureka/128/1777383350790.png"}},{"id":"kds-team.ex-hibob","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":512,"name":"HiBob","type":"extractor","shortDescription":"Extracts employee data from the HiBob HR platform.","longDescription":"HiBob Extractor allows you to extract data from HR platform HiBob.\nTo use this extractor, you will need a Service User and Service User Token.","licenseUrl":"https://github.com/keboola/component-hibob/blob/main/LICENSE.md","documentationUrl":"https://help.keboola.com/components/extractors/other/hibob/","sourceCodeUrl":"https://github.com/keboola/component-hibob","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"extractor configuration","required":["authorization","destination"],"properties":{"endpoints":{"type":"array","items":{"enum":["employment_history","employee_lifecycle","employee_work_history"],"type":"string"},"title":"Endpoints","format":"select","uniqueItems":true,"propertyOrder":2},"destination":{"type":"object","title":"Destination","properties":{"load_type":{"enum":["full_load","incremental_load"],"type":"string","title":"Load Type","format":"checkbox","default":"full_load","options":{"enum_titles":["Full Load","Incremental Load"]},"description":"If Full load is used, the destination table will be overwritten every run. If incremental load is used, data will be upserted into the destination table."}},"propertyOrder":4},"authorization":{"type":"object","title":"Authorization","properties":{"service_user_id":{"type":"string","title":"Service User ID","description":"Your Service User ID that will be used to authorize the component.","propertyOrder":1},"test_connection":{"type":"button","format":"sync-action","options":{"async":{"label":"TEST CONNECTION","action":"testConnection"}},"propertyOrder":3},"#service_user_token":{"type":"string","title":"Service User Token","format":"password","description":"Your Service User Token that will be used to authorize the component.","propertyOrder":2}},"propertyOrder":1},"human_readable":{"type":"boolean","title":"Human readable","description":"Select this option if you want to fetch human readable values only. This option only affects employees table.","propertyOrder":3}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"Configuration description.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["testConnection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.ex-hibob","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-hibob","name":"developer-portal-v2/kds-team.ex-hibob","tag":"1.0.12","options":{},"digest":"sha256:252003ba282cad1098b72564c5cb4d7617239b5f11cd69f720056c3d4eaeb6d7"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-hibob/32/1689947359064.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-hibob/64/1689947359064.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-hibob/128/1689947359064.png"}},{"id":"keboola.ex-http","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":67,"name":"HTTP","type":"extractor","shortDescription":"Downloading CSV files from any HTTP, and HTTPS URL. ","longDescription":"This component loads single CSV files from an HTTP/HTTPS URL and stores them in Keboola Connection Storage.\n\nIncremental load is optional.","licenseUrl":"https://github.com/keboola/http-extractor/blob/master/LICENSE.md","documentationUrl":"https://help.keboola.com/components/extractors/storage/http/","sourceCodeUrl":"https://github.com/keboola/http-extractor","requiredMemory":"256m","processTimeout":null,"features":["container-root-user","has-sample-data","has-simplified-ui"],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"easy","category":null,"categories":["API"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["baseUrl"],"properties":{"baseUrl":{"type":"string","title":"Base URL","format":"url","default":"","minLength":1,"description":"Common prefix for all downloaded resources","propertyOrder":1}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-http","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-http","name":"developer-portal-v2/keboola.ex-http","tag":"v2.5.5","options":{},"digest":"sha256:55b3d56f0d05215c117e61db378b6b8559ae61630d550cc9335abeed05803050"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-http/32/1677062349425.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-http/64/1677062349425.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-http/128/1677062349425.png"}},{"id":"kds-team.ex-http-extended","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":97,"name":"HTTP Advanced","type":"extractor","shortDescription":"Download HTTP resource using GET method with custom headers and request parameters.","longDescription":"Simple HTTP extractor that allows hashed custom user parameters, headers and other parameters. \r\nIt also provides dynamic function support, to input user parameters dynamically. Native processors support.\r\n\r\nThe extractor is based on Python [Requests library](https://2.python-requests.org/en/master/user/quickstart/#make-a-request)","licenseUrl":"https://github.com/keboola/component-http-extended/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-http-extended/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-http-extended","requiredMemory":"1024m","processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"medium","category":null,"categories":["API"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-processors","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"\r\n**Parameters**\r\n\r\n- **path** – An URL of the page.\r\n- **file_name** - result file name\r\n- **tag** - optional tag of the file - manifest is created with `permanent=false`\r\n- **headers** - Array of HTTP headers to send. You may include User parameters as a value\r\n```json\r\n\"headers\": [\r\n      {\r\n        \"key\": \"Authorization\",\r\n        \"value\": {\r\n          \"attr\": \"#token\"\r\n        }\r\n      }\r\n    ]\r\n```\r\n\r\n\r\n### user_parameters\r\n\r\nA list of user parameters that is are accessible from within headers and additional parameters. This is useful for storing\r\nfor example user credentials that are to be filled in a login form. Appending `#` sign before the attribute name will hash the value and store it securely\r\nwithin the configuration (recommended for passwords). The value may be scalar or a supported function. You can access user parameters vis:\r\n\r\n```json\r\n\"value\": {\r\n          \"attr\": \"#token\"\r\n        }\r\n```\r\n\r\n### additional_requests_pars\r\n\r\n- (OPT) additional request parameters. \r\n\r\n- **key** - name of the parameter (e.g. `params` to list http parameters)\r\n- **value** - value of the parameter\r\n\r\n**NOTE** the `'false','true'` string values are converted to boolean, objects will be treated as python dictionaries. \r\n`{\"attr\":\"some_user_par\"}` notation is supported to reference custom user_parameters\r\n\r\n**Supported keys**:\r\n\r\n- `params`: (optional) Dictionary, http query parameters to be sent with a request. e.g.\r\n`{\r\n        \"key\": \"params\",\r\n        \"value\": {\r\n          \"date\": \"2020-01-01\"\r\n        }\r\n`\r\n\r\n- `cookies`: (optional) Dict to send with the request. e.g. `{\"sessioncookie\": \"123456789\"}`\r\n- `timeout`: (optional) How many seconds to wait for the server to send data\r\n        before giving up, as a float.\r\n- `allow_redirects`: (optional) Boolean. Defaults to `True`.\r\n- `proxies`: (optional) Dictionary mapping protocol to the URL of the proxy. e.g. \r\n`\r\n{\r\n  \"http\": \"http://10.10.1.10:3128\",\r\n  \"https\": \"http://10.10.1.10:1080\"\r\n}\r\n`\r\n- `verify`: (optional) Boolean controls whether we verify\r\n            the server's TLS certificate, Defaults to `True`. \r\n\r\n\r\n\r\n## Configruation example\r\n\r\n```json\r\n{\r\n    \"path\": \"https://example.com\",\r\n    \"file_name\": \"test.csv\",\r\n    \"user_parameters\": {\r\n      \"#token\": \"Bearer xxx\",\r\n      \"date\": {\r\n        \"function\": \"concat\",\r\n        \"args\": [\r\n          {\r\n            \"function\": \"string_to_date\",\r\n            \"args\": [\r\n              \"yesterday\",\r\n              \"%Y-%m-%d\"\r\n            ]\r\n          },\r\n          \"T\"\r\n        ]\r\n      }\r\n    },\r\n    \"headers\": [\r\n      {\r\n        \"key\": \"Authorization\",\r\n        \"value\": {\r\n          \"attr\": \"#token\"\r\n        }\r\n      }\r\n    ],\r\n    \"additional_requests_pars\": [\r\n      {\r\n        \"key\": \"verify\",\r\n        \"value\": \"false\"\r\n      },\r\n      {\r\n        \"key\": \"params\",\r\n        \"value\": {\r\n          \"date\": {\r\n            \"attr\": \"date\"\r\n          }\r\n        }\r\n      }\r\n    ],\r\n    \"debug\": true\r\n  }\r\n```\r\n\r\nThe above will call GET `https://example.com/?date=2019-08-21T` with header `Authorization: Bearer xxx`\r\n\r\nActually by calling `requests.get(headers={'Authorization': 'Bearer xxx'}, params={'date':'2019-08-21T'}`\r\n\r","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.ex-http-extended","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-http-extended","name":"developer-portal-v2/kds-team.ex-http-extended","tag":"0.2.3","options":{},"digest":"sha256:873310d5c06f310314d87125bc8070a65f892059cfed0ad0db01254eb43e7be9"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-http-extended/32/1674036929939.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-http-extended/64/1674036929939.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-http-extended/128/1674036929939.png"}},{"id":"kds-team.wr-hubspot","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":391,"name":"Hubspot","type":"writer","shortDescription":"Writes data to HubSpot CRM.","longDescription":"# Keboola Hubspot Writer  \n  \nThe HubSpot CRM helps companies grow traffic, convert leads, get insights to close more deals, etc.  \nKeboola Hubspot Writer will provide users the assistance to maintain and manage their contacts within Hubspot.  \n  \n## Requirement  \nThere are two ways to authorize for Hubspot API.\n\n 1. **Hapikey** - Your Hubspot API key, This will be soon deprecated, see more ([here](https://developers.hubspot.com/changelog/upcoming-api-key-sunset))  \n 2. **Private App Token** - See how to create and assign permissions ([here](https://developers.hubspot.com/docs/api/private-apps))\n  \n## Configuration  \n  \nFirst fill in Authorization configuration. Then click ADD ROW button and fill in the name by which you can easily identify the configuration row. Next fill in the Desired object you want to manipulate and then select the action you want to perform with this object. \nThe writer will fetch all input tables and convert each row into the required request format based on the requirements of the endpoint. Each writer will write to `one` endpoint.   \n  \n\n| Batch endpoint | Object       | Object Action    | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | Required Columns |  \n|----------------|--------------|------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-|  \n| Yes            | Contact      | Create           | A list of contact properties that you want to set for the new contact record. Each entry in the list must include the internal name of the property, and the value that you want to set for that property. Note: You must include at least one property for the new contact, or you will receive an error.                                                                                                                                                                                                                                                                                   | |\n| No             | Contact      | Add to List      | It is required to have both `vids` and `emails` columns in the input data file. The code will prioritize the values input for `vids`. Example, if there are inputs for both `emails` and `vids` in the same row, the code will prioritize `vids` pushing this value into the request and ignore the value in `emails`. Please note that you cannot manually add contacts to dynamic lists. To determine whether a list is dynamic or static, when you get a list, you will see a flag called dynamic that equates to true or false. Up to 500 total contacts can be added in a single request. | `list_id, vids, emails` |\n| Yes            | Contact      | Update           | This endpoint is used to update existing contacts, and it requires `vid` in the input data file. `vid` cannot be empty. The rest of the columns other than vid will be used as a request parameter to update the contact property. If either the property or the contact does not exist, the update request for that specific contact will fail.                                                                                                                                                                                                                                             | `vid` | \n| No             | Contact      | Update by Email  | Like the `Update Contact` endpoint, this endpoint is used to update existing contacts, and it requires `email` in the \"inputdata\" file. The rest of the columns will be used to update the contact's properties                                                                                                                                                                                                                                                                                                                                                                              | `email` |  \n| Yes            | Contact      | Remove from List | Please note that you cannot manually remove contacts from dynamic lists - they can only be updated by the contacts system based on the properties of the list itself. To determine whether a list is dynamic or static, when you get a list, you will see a flag called dynamic that equates to true or false.                                                                                                                                                                                                                                                                               | `list_id, vids` |   \n| Yes            | Company      | Create           | Creates companies with defined properties if any are present.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | `name` |  \n| Yes            | Company      | Update           | Updates companies identified by `company_id` with defined properties.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | `company_id` |\n| Yes            | Company      | Remove           | Deletes companies identified by `company_id`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | `company_id` |\n| No             | Company      | Add to List      | Adds companies to lists                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | `list_id, vids` |\n| No             | Company      | Remove from List | Removes companies from lists                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | `list_id, vids` |\n| No             | Contact List | Create           | Creates contact lists. All list created via this component will `NOT` be dynamic.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | `name` |\n| No             | Custom List  | Create           | Creates company/deal lists. Single table can contain multiple types indicated by column object_type. At the moment we support `company` and `deal`. All list created will have processing type `MANUAL`.                                                                                                                                                                                                                                                                                                                                                                                     | `name, object_type` |\n| Yes            | Deal         | Create           | Creates deals with defined properties if any are present.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | `hubspot_owner_id` |  \n| Yes            | Deal         | Update           | Updates deals identified by `deal_id` with defined properties.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | `deal_id` |\n| Yes            | Deal         | Remove           | Deletes deals identified by `deal_id`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | `deal_id` |\n| No             | Deal         | Add to List      | Adds deals to lists                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | `list_id, vids` |\n| No             | Deal         | Remove from List | Removes deals from lists                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | `list_id, vids` |\n| No             | Association  | Create           | Create association between objects (see more on object types in [HubSpot documentation](https://developers.hubspot.com/docs/api/crm/understanding-the-crm#object-type-id))                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | `from_id,to_id,from_object_type,to_object_type` |\n| No             | Association  | Remove           | Remove association between objects (see more on object types in [HubSpot documentation](https://developers.hubspot.com/docs/api/crm/understanding-the-crm#object-type-id))                                                                                                                                                                                                                                                                                                                                                                                                                 | `from_id,to_id,from_object_type,to_object_type` |\n| Yes            | Line item    | Create           | Create a new Line item, it have to associated to a deals, quotes, invoices, payment links or subscription (more information in [HubSpot documentation](https://developers.hubspot.com/docs/api/crm/line-items#:~:text=To%20create%20a%20line%20item,hs_product_id%20in%20the%20post%20body.))                                                                                                                                                                                                                                                                                                | `name, price, quantity, association_id, association_category,association_type_id` |\n| Yes            | Line item    | Remove           | Remove Line item identified by `line_item_id`                                                                                                                                                                                                                                                                                                                                                                           | `line_item_id` |","licenseUrl":"https://github.com/keboola/component-hubspot/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/component-hubspot/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/component-hubspot","requiredMemory":null,"processTimeout":14400,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["CRM","ERP"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput","genericDockerUI-rows"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Authorization configuration","properties":{"#private_app_token":{"type":"string","title":"Private App Token","format":"password","description":"Your private app token. More info <a href=\"https://developers.hubspot.com/docs/api/migrate-an-api-key-integration-to-a-private-app\">here</a>","propertyOrder":200}}},"configurationRowSchema":{"type":"object","title":"Writer configuration","required":["hubspot_object"],"properties":{"tax_action":{"enum":["create","update","remove"],"type":"string","title":"Object Action","options":{"enum_titles":["Create","Update","Remove"],"dependencies":{"hubspot_object":"tax"}},"propertyOrder":211},"call_action":{"enum":["create","update","remove"],"type":"string","title":"Object Action","options":{"enum_titles":["Create","Update","Remove"],"dependencies":{"hubspot_object":"call"}},"propertyOrder":211},"deal_action":{"enum":["create","update","remove","add_to_list"],"type":"string","title":"Object Action","options":{"enum_titles":["Create","Update","Remove","Add to list"],"dependencies":{"hubspot_object":"deal"}},"propertyOrder":211},"list_action":{"enum":["create"],"type":"string","title":"Object Action","options":{"enum_titles":["Create"],"dependencies":{"hubspot_object":"list"}},"propertyOrder":212},"note_action":{"enum":["create","update","remove"],"type":"string","title":"Object Action","options":{"enum_titles":["Create","Update","Remove"],"dependencies":{"hubspot_object":"note"}},"propertyOrder":211},"task_action":{"enum":["create","update","remove"],"type":"string","title":"Object Action","options":{"enum_titles":["Create","Update","Remove"],"dependencies":{"hubspot_object":"task"}},"propertyOrder":211},"email_action":{"enum":["create","update","remove"],"type":"string","title":"Object Action","options":{"enum_titles":["Create","Update","Remove"],"dependencies":{"hubspot_object":"email"}},"propertyOrder":211},"quote_action":{"enum":["create","update","remove"],"type":"string","title":"Object Action","options":{"enum_titles":["Create","Update","Remove"],"dependencies":{"hubspot_object":"quote"}},"propertyOrder":211},"ticket_action":{"enum":["create","update","remove"],"type":"string","title":"Object Action","options":{"enum_titles":["Create","Update","Remove"],"dependencies":{"hubspot_object":"ticket"}},"propertyOrder":211},"company_action":{"enum":["create","update","remove","add_to_list","remove_from_list"],"type":"string","title":"Object Action","options":{"enum_titles":["Create","Update","Remove","Add to List","Remove from List"],"dependencies":{"hubspot_object":"company"}},"propertyOrder":211},"contact_action":{"enum":["create","add_to_list","update","update_by_email","remove_from_list"],"type":"string","title":"Object Action","options":{"enum_titles":["Create ","Add to List","Update","Update by Email","Remove from List"],"dependencies":{"hubspot_object":"contact"}},"propertyOrder":210},"hubspot_object":{"enum":["contact","company","list","deal","custom_list","line_item","association","secondary_email","custom_object"],"type":"string","title":"Object","default":"","options":{"enum_titles":["Contact","Company","Contact List","Deal","Custom List","Line Item","Association","Secondary Email","Custom Object"]},"propertyOrder":200},"meeting_action":{"enum":["create","update","remove"],"type":"string","title":"Object Action","options":{"enum_titles":["Create","Update","Remove"],"dependencies":{"hubspot_object":"meeting"}},"propertyOrder":211},"product_action":{"enum":["create","update","remove"],"type":"string","title":"Object Action","options":{"enum_titles":["Create","Update","Remove"],"dependencies":{"hubspot_object":"product"}},"propertyOrder":211},"line_item_action":{"enum":["create","update","remove"],"type":"string","title":"Object Action","options":{"enum_titles":["Create","Update","Remove"],"dependencies":{"hubspot_object":"line_item"}},"propertyOrder":211},"association_action":{"enum":["create","remove"],"type":"string","title":"Object Action","options":{"enum_titles":["Create","Remove"],"dependencies":{"hubspot_object":"association"}},"propertyOrder":211},"custom_list_action":{"enum":["create"],"type":"string","title":"Object Action","options":{"enum_titles":["Create"],"dependencies":{"hubspot_object":"custom_list"}},"propertyOrder":211},"postal_mail_action":{"enum":["create","update","remove"],"type":"string","title":"Object Action","options":{"enum_titles":["Create","Update","Remove"],"dependencies":{"hubspot_object":"postal_mail"}},"propertyOrder":211},"communication_action":{"enum":["create","update","remove"],"type":"string","title":"Object Action","options":{"enum_titles":["Create","Update","Remove"],"dependencies":{"hubspot_object":"communication"}},"propertyOrder":211},"custom_object_action":{"enum":["create"],"type":"string","title":"Object Action","options":{"enum_titles":["Create"],"dependencies":{"hubspot_object":"custom_object"}},"propertyOrder":212},"secondary_email_action":{"enum":["add","update","remove"],"type":"string","title":"Object Action","options":{"enum_titles":["Add","Update","Remove"],"dependencies":{"hubspot_object":"secondary_email"}},"propertyOrder":211},"custom_object_use_table_as_type":{"type":"boolean","title":"Use table name as custom object type","format":"checkbox","default":false,"options":{"dependencies":{"hubspot_object":"custom_object"}},"propertyOrder":213}}},"createConfigurationRowSchema":null,"configurationDescription":"### Requirement\nYour Hubspot API token, for more information see here ([how-do-i-get-my-hubspot-api-key](https://knowledge.hubspot.com/integrations/how-do-i-get-my-hubspot-api-key))\n\n### Configuration\n\nThe writer will fetch all input tables and convert each row into the required request format based on the requirements of the endpoint. Each writer will write to `one` endpoint. \n\n| Batch endpoint | Object | Object Action | Description | Required Columns |  \n|-|-|-|-|-|  \n| Yes | Contact | Create | A list of contact properties that you want to set for the new contact record. Each entry in the list must include the internal name of the property, and the value that you want to set for that property. Note: You must include at least one property for the new contact, or you will receive an error. | |\n| No | Contact | Add to List | It is required to have both `vids` and `emails` columns in the input data file. The code will prioritize the values input for `vids`. Example, if there are inputs for both `emails` and `vids` in the same row, the code will prioritize `vids` pushing this value into the request and ignore the value in `emails`. Please note that you cannot manually add contacts to dynamic lists. To determine whether a list is dynamic or static, when you get a list, you will see a flag called dynamic that equates to true or false. Up to 500 total contacts can be added in a single request. | `list_id, vids, emails` |\n| Yes | Contact | Update | This endpoint is used to update existing contacts, and it requires `vid` in the input data file. `vid` cannot be empty. The rest of the columns other than vid will be used as a request parameter to update the contact property. If either the property or the contact does not exist, the update request for that specific contact will fail. | `vid` | \n| No | Contact | Update by Email | Like the `Update Contact` endpoint, this endpoint is used to update existing contacts, and it requires `email` in the \"inputdata\" file. The rest of the columns will be used to update the contact's properties | `email` |  \n| Yes | Contact | Remove from List | Please note that you cannot manually remove contacts from dynamic lists - they can only be updated by the contacts system based on the properties of the list itself. To determine whether a list is dynamic or static, when you get a list, you will see a flag called dynamic that equates to true or false. | `list_id, vids` |   \n| Yes | Company | Create | Creates companies with defined properties if any are present. | `name` |  \n| Yes | Company | Update | Updates companies identified by `company_id` with defined properties. | `company_id` |\n| Yes | Company | Remove | Deletes companies identified by `company_id`. | `company_id` |\n| No | Company | Add to List | Adds companies to lists | `list_id, vids` |\n| No | Company | Remove from List | Removes companies from lists | `list_id, vids` |\n| No | Contact List | Create | Creates contact lists. All list created via this component will `NOT` be dynamic. | `name` |\n| No | Custom List | Create | Creates company/deal lists. Single table can contain multiple types indicated by column object_type. At the moment we support `company` and `deal`. All list created will have processing type `MANUAL`. | `name, object_type` |\n| Yes | Deal | Create | Creates deals with defined properties if any are present. | `hubspot_owner_id` |  \n| Yes | Deal | Update | Updates deals identified by `deal_id` with defined properties. | `deal_id` |\n| Yes | Deal | Remove | Deletes deals identified by `deal_id`. | `deal_id` |\n| No | Deal | Add to List | Adds deals to lists | `list_id, vids` |\n| No | Deal | Remove from List | Removes deals from lists | `list_id, vids` |","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":391,"uri":"docker/kds-team.wr-hubspot","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.wr-hubspot","name":"developer-portal-v2/kds-team.wr-hubspot","tag":"1.0.14","options":{},"digest":"sha256:b8002ecd6ac141e85d4012dde3e8cbf0392e7c7c39ab69e71028082dd362b2c9"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.wr-hubspot/32/1674037322787.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.wr-hubspot/64/1674037322787.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.wr-hubspot/128/1674037322787.png"}},{"id":"kds-team.ex-hubspot-v2","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":573,"name":"Hubspot V2","type":"extractor","shortDescription":"Extracts HubSpot CRM and marketing objects.","longDescription":"This component uses the HubSpot API to extract data of the CRM objects from Hubspot","licenseUrl":"https://github.com/keboola/component-hubspot-v2/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-hubspot-v2/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-hubspot-v2","requiredMemory":null,"processTimeout":7200,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","appInfo.beta","genericVariablesUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Authentication Configuration","required":["#private_app_token"],"properties":{"#private_app_token":{"type":"string","title":"Private App Token","format":"password","description":"Your private app token created <a href=\"https://developers.hubspot.com/docs/api/migrate-an-api-key-integration-to-a-private-app\">in Hubspot</a>","propertyOrder":10}}},"configurationRowSchema":{"id":"rootschema","type":"object","title":"Configuration","required":["endpoints","additional_properties","associations","fetch_settings","destination_settings"],"properties":{"endpoints":{"type":"object","title":"Endpoints","format":"grid-strict","properties":{"call":{"type":"boolean","title":"Call","format":"checkbox","default":true,"options":{"grid_columns":3}},"deal":{"type":"boolean","title":"Deal","format":"checkbox","default":true,"options":{"grid_columns":3}},"form":{"type":"boolean","title":"Form","format":"checkbox","default":true,"options":{"grid_columns":3}},"note":{"type":"boolean","title":"Note","format":"checkbox","default":true,"options":{"grid_columns":3}},"task":{"type":"boolean","title":"Task","format":"checkbox","default":true,"options":{"grid_columns":3}},"email":{"type":"boolean","title":"Email","format":"checkbox","default":true,"options":{"grid_columns":3}},"owner":{"type":"boolean","title":"Owner","format":"checkbox","default":true,"options":{"grid_columns":3}},"quote":{"type":"boolean","title":"Quote","format":"checkbox","default":true,"options":{"grid_columns":3}},"ticket":{"type":"boolean","title":"Ticket","format":"checkbox","default":true,"options":{"grid_columns":3}},"company":{"type":"boolean","title":"Company","format":"checkbox","default":true,"options":{"grid_columns":3}},"contact":{"type":"boolean","title":"Contact","format":"checkbox","default":true,"options":{"grid_columns":3}},"meeting":{"type":"boolean","title":"Meeting","format":"checkbox","default":true,"options":{"grid_columns":3}},"product":{"type":"boolean","title":"Product","format":"checkbox","default":true,"options":{"grid_columns":3}},"campaign":{"type":"boolean","title":"Campaign","format":"checkbox","default":true,"options":{"grid_columns":3}},"pipeline":{"type":"boolean","title":"Pipeline","format":"checkbox","default":true,"options":{"grid_columns":3}},"line_item":{"type":"boolean","title":"Line item","format":"checkbox","default":true,"options":{"grid_columns":3}},"email_event":{"type":"boolean","title":"Email event","format":"checkbox","default":true,"options":{"grid_columns":3}},"contact_list":{"type":"boolean","title":"Contact list","format":"checkbox","default":true,"options":{"grid_columns":3}},"custom_object":{"type":"boolean","title":"Custom object","format":"checkbox","default":false,"options":{"grid_columns":3}},"email_statistic":{"type":"boolean","title":"Email statistic","format":"checkbox","default":true,"options":{"grid_columns":3}}},"propertyOrder":10},"associations":{"type":"array","items":{"type":"object","title":"Object Association","properties":{"to_object":{"enum":["campaign","contact","company","deal","quote","product","owner","ticket","form","pipeline","note","call","task","meeting","email","line_item"],"type":"string","title":"To Object","default":"meeting","required":true},"from_object":{"enum":["campaign","contact","company","deal","quote","product","owner","ticket","form","pipeline","note","call","task","meeting","email"],"type":"string","title":"From Object","default":"contact","required":true}}},"title":"Object Associations","format":"table","uniqueItems":true,"propertyOrder":30},"fetch_settings":{"type":"object","title":"Fetch Settings","properties":{"archived":{"type":"boolean","title":"Archived","format":"checkbox","default":false,"options":{"dependencies":{"fetch_mode":["full_fetch"]}},"description":"If checked archived objects will be fetched. Only possible in Full fetching mode","propertyOrder":70},"date_from":{"type":"string","title":"Fetch From Date","default":"yesterday","options":{"dependencies":{"fetch_mode":["incremental_fetch"]}},"description":"Date in YYYY-MM-DD format or relative date i.e. 5 days ago, 1 month ago, yesterday, etc. If left empty, all records are downloaded. You can also set this as `last run`, which will fetch data from the last run of the component; if no previous successful run exists, all data up to specified Date To will be downloaded.","propertyOrder":30},"fetch_mode":{"enum":["full_fetch","incremental_fetch"],"type":"string","title":"Fetch Mode","format":"checkbox","default":"full_fetch","options":{"enum_titles":["Full Fetch","Incremental Fetch"]},"required":true,"description":"If Full fetch is used, all data will be fetched Hubspot every run. If incremental fetch is used, data will be fetched incrementally based on a specified relative or exact date. Hubspot API Endpoint for search (is it used for incremental fetching) is limited to 10,000 total results... <a href='https://developers.hubspot.com/docs/api/crm/search'>more information is here</a>","propertyOrder":20},"associations_batch_size":{"type":"number","title":"Association batch size","default":100,"description":"In case you are fetching complex associations and you are facing issues with receiving 524 timeout error, you can decrease the batch size. The default value is 100."}},"propertyOrder":40},"destination_settings":{"type":"object","title":"Destination","properties":{"load_mode":{"enum":["full_load","incremental_load"],"type":"string","title":"Load Mode","format":"checkbox","default":"incremental_load","options":{"enum_titles":["Full Load","Incremental Load"]},"required":true,"description":"If Full load is used, the destination table will be overwritten every run. If incremental load is used, data will be upserted into the destination table. Tables with a primary key will have rows updated, tables without a primary key will have rows appended.","propertyOrder":20}},"propertyOrder":50},"additional_properties":{"type":"object","title":"Object Properties","properties":{"call_hidden":{"type":"string","watch":{"call_hide":"rootschema.endpoints.call"},"options":{"hidden":true},"template":"{{call_hide}}"},"deal_hidden":{"type":"string","watch":{"deal_hide":"rootschema.endpoints.deal"},"options":{"hidden":true},"template":"{{deal_hide}}"},"form_hidden":{"type":"string","watch":{"form_hide":"rootschema.endpoints.form"},"options":{"hidden":true},"template":"{{form_hide}}"},"note_hidden":{"type":"string","watch":{"note_hide":"rootschema.endpoints.note"},"options":{"hidden":true},"template":"{{note_hide}}"},"task_hidden":{"type":"string","watch":{"task_hide":"rootschema.endpoints.task"},"options":{"hidden":true},"template":"{{task_hide}}"},"email_hidden":{"type":"string","watch":{"email_hide":"rootschema.endpoints.email"},"options":{"hidden":true},"template":"{{email_hide}}"},"owner_hidden":{"type":"string","watch":{"owner_hide":"rootschema.endpoints.owner"},"options":{"hidden":true},"template":"{{owner_hide}}"},"quote_hidden":{"type":"string","watch":{"quote_hide":"rootschema.endpoints.quote"},"options":{"hidden":true},"template":"{{quote_hide}}"},"ticket_hidden":{"type":"string","watch":{"ticket_hide":"rootschema.endpoints.ticket"},"options":{"hidden":true},"template":"{{ticket_hide}}"},"company_hidden":{"type":"string","watch":{"company_hide":"rootschema.endpoints.company"},"options":{"hidden":true},"template":"{{company_hide}}"},"contact_hidden":{"type":"string","watch":{"contact_hide":"rootschema.endpoints.contact"},"options":{"hidden":true},"template":"{{contact_hide}}"},"meeting_hidden":{"type":"string","watch":{"meeting_hide":"rootschema.endpoints.meeting"},"options":{"hidden":true},"template":"{{meeting_hide}}"},"product_hidden":{"type":"string","watch":{"product_hide":"rootschema.endpoints.product"},"options":{"hidden":true},"template":"{{product_hide}}"},"call_properties":{"type":"array","items":{"enum":[],"type":"string"},"title":"Call - Additional Properties","format":"select","default":["hs_call_title","hs_call_status","hs_createdate","hs_lastmodifieddate","hs_object_id","hs_body_preview","hs_created_by","hs_created_by_user_id","hs_engagement_source","hubspot_owner_idm","hs_user_ids_of_all_owners"],"options":{"async":{"label":"Re-load properties","action":"loadCallProperties"},"dependencies":{"call_hidden":"true","object_properties":"custom"}},"description":"Comma separated list of Call properties. The values must match valid Call properties, otherwise an empty value is returned. If left empty, default properties will be fetched.","uniqueItems":true,"propertyOrder":90},"campaign_hidden":{"type":"string","watch":{"campaign_hide":"rootschema.endpoints.campaign"},"options":{"hidden":true},"template":"{{campaign_hide}}"},"deal_properties":{"type":"array","items":{"enum":[],"type":"string"},"title":"Deal - Additional Properties","format":"select","default":["point_of_contact","product_of_interest","dealname","amount","dealstage","pipeline","closedate","hs_lastmodifieddate","hs_createdate","createdate","hs_deal_stage_probability","hs_deal_stage_probability_shadow","hs_object_id","amount_in_home_currency","days_to_close","hs_exchange_rate","hs_forecast_amount","hs_forecast_probability","hs_is_closed","hs_is_closed_won","hs_is_deal_split","hs_mrr","hs_projected_amount","hs_projected_amount_in_home_currency"],"options":{"async":{"label":"Re-load properties","action":"loadDealProperties"},"dependencies":{"deal_hidden":"true","object_properties":"custom"}},"description":"Comma separated list of Deal properties. The values must match valid Deal properties, otherwise an empty value is returned. If left empty, default properties will be fetched.","uniqueItems":true,"propertyOrder":40},"note_properties":{"type":"array","items":{"enum":[],"type":"string"},"title":"Note - Additional Properties","format":"select","default":["hs_object_id","hs_body_preview","hs_engagement_source","hs_created_by_user_id","hs_modified_by","hs_engagement_source_id","hs_user_ids_of_all_owners"],"options":{"async":{"label":"Re-load properties","action":"loadNoteProperties"},"dependencies":{"note_hidden":"true","object_properties":"custom"}},"description":"Comma separated list of Note properties. The values must match valid Note properties, otherwise an empty value is returned. If left empty, default properties will be fetched.","uniqueItems":true,"propertyOrder":120},"pipeline_hidden":{"type":"string","watch":{"pipeline_hide":"rootschema.endpoints.pipeline"},"options":{"hidden":true},"template":"{{pipeline_hide}}"},"task_properties":{"type":"array","items":{"enum":[],"type":"string"},"title":"Task - Additional Properties","format":"select","default":["hs_object_id","hs_task_subject","hs_task_type","hs_body_preview","hs_created_by_user_id","hs_engagement_source","hs_task_for_object_type","hs_task_last_contact_outreach","hs_task_last_sales_activity_timestamp","hs_task_priority","hs_task_send_default_reminder","hs_task_status"],"options":{"async":{"label":"Re-load properties","action":"loadTaskProperties"},"dependencies":{"task_hidden":"true","object_properties":"custom"}},"description":"Comma separated list of Task properties. The values must match valid Task properties, otherwise an empty value is returned. If left empty, default properties will be fetched.","uniqueItems":true,"propertyOrder":130},"email_properties":{"type":"array","items":{"enum":[],"type":"string"},"title":"Email - Additional Properties","format":"select","default":["hubspot_owner_id","hubspot_team_id","hubspot_owner_assigneddate","hs_created_by","hs_createdate","hs_email_bcc_email","hs_email_bcc_firstname","hs_email_bcc_lastname","hs_email_cc_email","hs_email_cc_firstname","hs_email_cc_lastname","hs_email_from_email","hs_email_from_firstname","hs_email_from_lastname","hs_email_headers"],"options":{"async":{"label":"Re-load properties","action":"loadEmailProperties"},"dependencies":{"email_hidden":"true","object_properties":"custom"}},"description":"Comma separated list of Email properties. The values must match valid Email properties, otherwise an empty value is returned. If left empty, default properties will be fetched.","uniqueItems":true,"propertyOrder":100},"line_item_hidden":{"type":"string","watch":{"line_item_hide":"rootschema.endpoints.line_item"},"options":{"hidden":true},"template":"{{line_item_hide}}"},"quote_properties":{"type":"array","items":{"enum":[],"type":"string"},"title":"Quote - Additional Properties","format":"select","default":["hs_quote_number","hs_object_id","hs_allowed_payment_methods","hs_collect_billing_address","hs_created_by_user_id","hs_language","hs_locale","hs_payment_status","hs_quote_total_preference","hs_template_type","hs_test_mode","hs_sender_firstname","hs_title","hs_expiration_date","hs_quote_amount","hs_status"],"options":{"async":{"label":"Re-load properties","action":"loadQuoteProperties"},"dependencies":{"quote_hidden":"true","object_properties":"custom"}},"description":"Comma separated list of Quote properties. The values must match valid Quote properties, otherwise an empty value is returned. If left empty, default properties will be fetched.","uniqueItems":true,"propertyOrder":80},"email_event_types":{"type":"array","items":{"enum":["DEFERRED","CLICK","DROPPED","DELIVERED","PROCESSED","OPEN","BOUNCE","SENT"],"type":"string","options":{"enum_titles":["Deferred","Click","Dropped","Delivered","Processed","Open","Bounce","Sent"]}},"title":"Email Event Types","format":"checkbox","default":["DEFERRED","CLICK","DROPPED","DELIVERED","PROCESSED","OPEN","BOUNCE","SENT"],"options":{"dependencies":{"email_event_hidden":"true"}},"description":"Select which event types you want to fetch data for","uniqueItems":true,"propertyOrder":15},"object_properties":{"enum":["all","base","custom"],"type":"string","title":"Property Fetch Mode","default":"base","options":{"enum_titles":["Fetch All Properties","Fetch Base Properties","Fetch Custom Properties"]},"required":true,"propertyOrder":10},"ticket_properties":{"type":"array","items":{"enum":[],"type":"string"},"title":"Ticket - Additional Properties","format":"select","default":["hs_object_id","hs_created_by_user_id","closed_date","created_by","createdate","hs_lastactivitydate","hs_pipeline","hs_resolution","hs_ticket_id","hs_ticket_priority"],"options":{"async":{"label":"Re-load properties","action":"loadTicketProperties"},"dependencies":{"ticket_hidden":"true","object_properties":"custom"}},"description":"Comma separated list of Ticket properties. The values must match valid Ticket properties, otherwise an empty value is returned. If left empty, default properties will be fetched.","uniqueItems":true,"propertyOrder":70},"company_properties":{"type":"array","items":{"enum":[],"type":"string"},"title":"Company - Additional Properties","format":"select","default":["about_us","name","phone","facebook_company_page","city","country","website","industry","annualrevenue","linkedin_company_page","hs_lastmodifieddate","hubspot_owner_id","notes_last_updated","description","createdate","numberofemployees","hs_lead_status","founded_year","twitterhandle","linkedinbio"],"options":{"async":{"label":"Re-load properties","action":"loadCompanyProperties"},"dependencies":{"company_hidden":"true","object_properties":"custom"}},"description":"Comma separated list of Company properties. The values must match valid Company properties, otherwise an empty value is returned. If left empty, default properties will be fetched.","uniqueItems":true,"propertyOrder":30},"contact_properties":{"type":"array","items":{"enum":[],"type":"string"},"title":"Contact - Additional Properties","format":"select","default":["hs_facebookid","hs_linkedinid","ip_city","ip_country","ip_country_code","newsletter_opt_in","firstname","linkedin_profile","lastname","email","mobilephone","phone","city","country","region","jobtitle","company","website","numemployees","industry","associatedcompanyid","hs_lead_status","lastmodifieddate","source","hs_email_optout","twitterhandle","lead_type","hubspot_owner_id","notes_last_updated","hs_analytics_source","opt_in","createdate","hs_twitterid","lifecyclestage"],"options":{"async":{"label":"Re-load properties","action":"loadContactProperties"},"dependencies":{"contact_hidden":"true","object_properties":"custom"}},"description":"Comma separated list of Contact properties. The values must match valid Contact properties, otherwise an empty value is returned. If left empty, default properties will be fetched.","uniqueItems":true,"propertyOrder":20},"email_event_hidden":{"type":"string","watch":{"email_event_hide":"rootschema.endpoints.email_event"},"options":{"hidden":true},"template":"{{email_event_hide}}"},"meeting_properties":{"type":"array","items":{"enum":[],"type":"string"},"title":"Meeting - Additional Properties","format":"select","default":["hubspot_owner_id","hs_user_ids_of_all_owners","hs_meeting_start_time","hs_meeting_end_time","hs_body_preview_is_truncated","hs_created_by","hs_created_by_user_id","hs_engagement_source","hs_createdate","hs_lastmodifieddate","hs_object_id","hs_timestamp"],"options":{"async":{"label":"Re-load properties","action":"loadMeetingProperties"},"dependencies":{"meeting_hidden":"true","object_properties":"custom"}},"description":"Comma separated list of Meetinf properties. The values must match valid Meeting properties, otherwise an empty value is returned. If left empty, default properties will be fetched.","uniqueItems":true,"propertyOrder":110},"product_properties":{"type":"array","items":{"enum":[],"type":"string"},"title":"Product - Additional Properties","format":"select","default":["amount","description","discount","hs_sku","hs_url","hubspot_owner_id","name","price","quantity","recurringbillingfrequency","tax"],"options":{"async":{"label":"Re-load properties","action":"loadProductProperties"},"dependencies":{"product_hidden":"true","object_properties":"custom"}},"description":"Comma separated list of Product properties. The values must match valid Product properties, otherwise an empty value is returned. If left empty, default properties will be fetched.","uniqueItems":true,"propertyOrder":60},"contact_list_hidden":{"type":"string","watch":{"contact_list_hide":"rootschema.endpoints.contact_list"},"options":{"hidden":true},"template":"{{contact_list_hide}}"},"custom_object_types":{"type":"array","items":{"type":"string"},"title":"Custom Object IDs","format":"select","options":{"tags":true,"dependencies":{"custom_object_event_hidden":"true"}},"description":"Add custom object Ids","uniqueItems":true,"propertyOrder":13},"line_item_properties":{"type":"array","items":{"enum":[],"type":"string"},"title":"Line Item - Additional Properties","format":"select","default":["name","price","quantity","createdate","hs_object_id","amount","hs_acv","hs_arr","hs_created_by_user_id","hs_margin","hs_margin_acv","hs_margin_arr","hs_margin_mrr","hs_margin_tcv","hs_mrr","hs_position_on_quote","hs_pre_discount_amount","hs_total_discount","hs_updated_by_user_id"],"options":{"async":{"label":"Re-load properties","action":"loadLineItemProperties"},"dependencies":{"line_item_hidden":"true","object_properties":"custom"}},"description":"Comma separated list of Line Item properties. The values must match valid Line Item properties, otherwise an empty value is returned. If left empty, default properties will be fetched.","uniqueItems":true,"propertyOrder":50},"call_property_history":{"type":"array","items":{"type":"string","watch":{"dim":"additional_properties.call_properties"},"enumSource":"dim"},"title":"Call - Property Histories","format":"select","options":{"dependencies":{"call_hidden":"true","fetch_property_history":true}},"uniqueItems":true,"propertyOrder":91},"deal_property_history":{"type":"array","items":{"type":"string","watch":{"dim":"additional_properties.deal_properties"},"enumSource":"dim"},"title":"Deal - Property Histories","format":"select","options":{"dependencies":{"deal_hidden":"true","fetch_property_history":true}},"uniqueItems":true,"propertyOrder":41},"note_property_history":{"type":"array","items":{"type":"string","watch":{"dim":"additional_properties.note_properties"},"enumSource":"dim"},"title":"Note - Property Histories","format":"select","options":{"dependencies":{"note_hidden":"true","fetch_property_history":true}},"uniqueItems":true,"propertyOrder":121},"task_property_history":{"type":"array","items":{"type":"string","watch":{"dim":"additional_properties.task_properties"},"enumSource":"dim"},"title":"Task - Property Histories","format":"select","options":{"dependencies":{"task_hidden":"true","fetch_property_history":true}},"uniqueItems":true,"propertyOrder":131},"email_property_history":{"type":"array","items":{"type":"string","watch":{"dim":"additional_properties.email_properties"},"enumSource":"dim"},"title":"Email - Property Histories","format":"select","options":{"dependencies":{"email_hidden":"true","fetch_property_history":true}},"uniqueItems":true,"propertyOrder":101},"email_statistic_hidden":{"type":"string","watch":{"email_statistic_hide":"rootschema.endpoints.email_statistic"},"options":{"hidden":true},"template":"{{email_statistic_hide}}"},"fetch_property_history":{"type":"boolean","title":"Fetch Property History","format":"checkbox","default":false,"options":{"dependencies":{"object_properties":"custom"}},"description":"If set, property histories of all properties will be fetched","propertyOrder":12},"quote_property_history":{"type":"array","items":{"type":"string","watch":{"dim":"additional_properties.quote_properties"},"enumSource":"dim"},"title":"Quote - Property Histories","format":"select","options":{"dependencies":{"quote_hidden":"true","fetch_property_history":true}},"uniqueItems":true,"propertyOrder":81},"ticket_property_history":{"type":"array","items":{"type":"string","watch":{"dim":"additional_properties.ticket_properties"},"enumSource":"dim"},"title":"Ticket - Property Histories","format":"select","options":{"dependencies":{"ticket_hidden":"true","fetch_property_history":true}},"uniqueItems":true,"propertyOrder":71},"company_property_history":{"type":"array","items":{"type":"string","watch":{"dim":"additional_properties.company_properties"},"enumSource":"dim"},"title":"Company - Property Histories","format":"select","options":{"dependencies":{"company_hidden":"true","fetch_property_history":true}},"uniqueItems":true,"propertyOrder":31},"contact_property_history":{"type":"array","items":{"type":"string","watch":{"dim":"additional_properties.contact_properties"},"enumSource":"dim"},"title":"Contact - Property Histories","format":"select","options":{"dependencies":{"contact_hidden":"true","fetch_property_history":true}},"uniqueItems":true,"propertyOrder":21},"meeting_property_history":{"type":"array","items":{"type":"string","watch":{"dim":"additional_properties.meeting_properties"},"enumSource":"dim"},"title":"Meeting - Property Histories","format":"select","options":{"dependencies":{"meeting_hidden":"true","fetch_property_history":true}},"uniqueItems":true,"propertyOrder":111},"product_property_history":{"type":"array","items":{"type":"string","watch":{"dim":"additional_properties.product_properties"},"enumSource":"dim"},"title":"Product - Property Histories","format":"select","options":{"dependencies":{"product_hidden":"true","fetch_property_history":true}},"uniqueItems":true,"propertyOrder":61},"custom_object_event_hidden":{"type":"string","watch":{"custom_object_event_hide":"rootschema.endpoints.custom_object"},"options":{"hidden":true},"template":"{{custom_object_event_hide}}"},"line_item_property_history":{"type":"array","items":{"type":"string","watch":{"dim":"additional_properties.line_item_properties"},"enumSource":"dim"},"title":"Line Item - Property Histories","format":"select","options":{"dependencies":{"line_item_hidden":"true","fetch_property_history":true}},"uniqueItems":true,"propertyOrder":51}},"propertyOrder":20}}},"createConfigurationRowSchema":{},"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":{},"actions":["loadCallProperties","loadCompanyProperties","loadContactProperties","loadDealProperties","loadEmailProperties","loadLineItemProperties","loadMeetingProperties","loadNoteProperties","loadProductProperties","loadQuoteProperties","loadTaskProperties","loadTicketProperties"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.ex-hubspot-v2","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-hubspot-v2","name":"developer-portal-v2/kds-team.ex-hubspot-v2","tag":"0.6.1","options":{},"digest":"sha256:50b2bf34a19e0610ee24a210552d922f985c6efa98ce633965fad1dcbc347a53"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-hubspot-v2/32/1674037355277.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-hubspot-v2/64/1674037355277.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-hubspot-v2/128/1674037355277.png"}},{"id":"keboola.ex-db-db2","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":51,"name":"IBM Db2","type":"extractor","shortDescription":"Extracts tables or query results from an IBM Db2 database over an SSH tunnel.","longDescription":"This component imports data from selected tables or results from arbitrary SQL queries from the [IBM Db2 Database](https://www.ibm.com/products/db2-database). It connects to the database, executes your queries, and stores the results in Keboola Connection Storage.\n\nTo configure this extractor, you need to\n\n- provide database credentials, and \n- have a connection to the database you want to read, preferably [secure](https://help.keboola.com/extractors/database/#connecting-to-database).\n\nIncremental load is optional.\n\n*Note: DB2 databases running on AS400 are only supported on request.*","licenseUrl":"https://github.com/keboola/db-extractor-db2/blob/main/LICENSE","documentationUrl":"https://help.keboola.com/extractors/database/sqldb/","sourceCodeUrl":"https://github.com/keboola/db-extractor-db2","requiredMemory":"256m","processTimeout":3600,"features":["container-root-user"],"encryption":true,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"easy","category":null,"categories":["Database"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":{},"configurationSchema":{"type":"object","$defs":{"credentials":{"type":"object","required":["host","port","user","#password","database"],"properties":{"ssh":{"type":"object","properties":{"keys":{"type":"object","properties":{"public":{"type":"string"},"#private":{"type":"string"}}},"user":{"type":["string","null"]},"enabled":{"type":"boolean"},"sshHost":{"type":["string","null"]},"sshPort":{"type":["string","integer","null"],"default":22},"localPort":{"type":["string","integer"]},"remoteHost":{"type":"string"},"remotePort":{"type":["string","integer"]}}},"host":{"type":"string"},"port":{"type":["string","integer"],"default":50000},"user":{"type":"string"},"database":{"type":"string"},"#password":{"type":"string"}}}},"title":"keboola.ex-db-db2 — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","required":["db"],"properties":{"db":{"$ref":"#/$defs/credentials"}}},"configurationRowSchema":{"type":"object","title":"keboola.ex-db-db2 — Row Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"id":{"type":["string","integer"]},"name":{"type":"string"},"query":{"type":"string"},"table":{"oneOf":[{"type":"string"},{"type":"object","properties":{"schema":{"type":"string"},"tableName":{"type":"string"}}}]},"tables":{"type":"array","options":{"async":{"label":"Re-load tables","action":"getTables"}}},"columns":{"type":"array","items":{"type":"string"}},"enabled":{"type":"boolean"},"primaryKey":{"type":"array","items":{"type":"string"}},"incremental":{"type":"boolean"},"outputTable":{"type":"string"},"advancedMode":{"type":"boolean"},"incrementalFetchingLimit":{"type":"integer"},"incrementalFetchingColumn":{"type":"string"}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":["testConnection","getTables"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-db-db2","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-db-db2","name":"developer-portal-v2/keboola.ex-db-db2","tag":"4.0.2","options":{},"digest":"sha256:f10db572b0358f2374a970e0e9baee7592bedd0ad2f9e1aaf6e892936873316c"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-db-db2/32/1623157073530.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-db-db2/64/1623157073530.png","128":null}},{"id":"keboola.ex-iceberg","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":109,"name":"Iceberg","type":"extractor","shortDescription":"Extracts data from Apache Iceberg tables.","longDescription":"Component for extracting data from Iceberg tables.\nSupports full, incremental, and append loading modes.\nOffers three selection options: all data, selected columns, or a custom query.\nCurrently, only REST catalogs are supported.\n\nComplete documentation is available in the [README](https://github.com/keboola/component-iceberg/blob/main/components/ex-iceberg/README.md)","licenseUrl":"https://github.com/keboola/component-iceberg/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/component-iceberg/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/component-iceberg","requiredMemory":"2048m","processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","appInfo.experimental"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Component configuration","required":["catalog"],"properties":{"catalog":{"type":"object","title":"Catalog","required":["name","warehouse","uri","#token"],"properties":{"uri":{"type":"string","title":"URI","propertyOrder":13},"name":{"type":"string","title":"Catalog Name","propertyOrder":11},"#token":{"type":"string","title":"Token","format":"password","propertyOrder":14},"warehouse":{"type":"string","title":"Warehouse","propertyOrder":12}},"propertyOrder":2}}},"configurationRowSchema":{"type":"object","title":"Component configuration","required":["source","data_selection","destination","debug"],"properties":{"debug":{"type":"boolean","title":"Debug mode","format":"checkbox","default":false,"description":"If enabled, the component will produce detailed logs","propertyOrder":5},"source":{"type":"object","title":"Data source","required":["namespace","table_name"],"properties":{"namespace":{"enum":[],"type":"string","title":"Namespace","format":"select","default":"","options":{"async":{"label":"Load namespaces","action":"list_namespaces"}},"propertyOrder":1},"table_name":{"enum":[],"type":"string","title":"Table Name","format":"select","default":"","options":{"async":{"label":"Load tables","action":"list_tables"}},"propertyOrder":2}},"propertyOrder":1},"destination":{"type":"object","title":"Destination","required":["load_type"],"properties":{"file_name":{"type":"string","title":"File name","default":"","options":{"dependencies":{"parquet_output":true}},"description":"(Optional) Specify the file name (without the filetype) if you leave this field empty, the default name container_blob will be used. The resulting file will be named `<table_name>.parquet`","propertyOrder":45},"load_type":{"enum":["incremental_load","full_load"],"type":"string","title":"Load Type","default":"incremental_load","options":{"enum_titles":["Incremental Load","Full Load"],"dependencies":{"parquet_output":false}},"description":"If Full load is used, the destination table will be overwritten every run. If Incremental Load is used, data will be upserted into the destination table based on the primary key. Append modes do not contain any primary keys and are not deduplicated.","propertyOrder":42},"table_name":{"type":"string","title":"Table name","default":"","options":{"dependencies":{"parquet_output":false}},"description":"(Optional) Specify the table name (without the filetype) if you leave this field empty, the default name container_blob will be used.","propertyOrder":44},"primary_key":{"type":"array","items":{"enum":[],"type":"string"},"title":"Primary key","format":"select","options":{"tags":true,"async":{"label":"Re-load columns","action":"list_columns"},"dependencies":{"parquet_output":false}},"uniqueItems":true,"propertyOrder":43},"parquet_output":{"type":"boolean","title":"Store result as parquet","format":"checkbox","default":false,"description":"If enabled, the extractor will store result as parquet file into file storage instead of table","propertyOrder":41},"preserve_insertion_order":{"type":"boolean","title":"Preserve insertion order","format":"checkbox","default":true,"description":"If enabled, the extractor will preserve the order of the rows in the destination table, when encountering OOM error, disabling this option may help","propertyOrder":46}},"propertyOrder":4},"data_selection":{"type":"object","title":"Data selection","required":["mode"],"properties":{"mode":{"enum":["all_data","selected_columns"],"type":"string","title":"Data selection mode","default":"all_data","options":{"enum_titles":["All Data","Selected Columns"]},"propertyOrder":31},"columns":{"type":"array","items":{"enum":[],"type":"string"},"title":"Columns to extract","format":"select","options":{"tags":true,"async":{"label":"Re-load columns","action":"list_columns"},"dependencies":{"mode":"select_columns"}},"uniqueItems":true,"propertyOrder":34},"table_preview":{"type":"button","format":"sync-action","options":{"async":{"label":"Query preview","action":"query_preview"},"dependencies":{"mode":"custom_query"}},"propertyOrder":33}},"propertyOrder":3}}},"createConfigurationRowSchema":null,"configurationDescription":"Configuration description.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["list_columns","list_namespaces","list_snapshots","list_tables"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-iceberg","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-iceberg","name":"developer-portal-v2/keboola.ex-iceberg","tag":"0.0.2","options":{},"digest":"sha256:44ae06168c54a3b1d6f88466319ae864348fdc8cf28b04c19966faa73f159030"},"publishingStatus":"public","icon":{"32":null,"64":null,"128":null}},{"id":"keboola.wr-iceberg","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":104,"name":"Iceberg","type":"writer","shortDescription":"Writes data to Apache Iceberg tables.","longDescription":"Component for writing data to Iceberg tables.\nSupports replace, append, and upsert modes.\nCurrently, only REST catalogs are supported.\n\nComplete documentation is available in the [README](https://github.com/keboola/component-iceberg/blob/main/components/wr-iceberg/README.md)","licenseUrl":"https://github.com/keboola/component-iceberg/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/component-iceberg/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/component-iceberg","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":true,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-tableInput","appInfo.experimental"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Component configuration","required":["catalog"],"properties":{"catalog":{"type":"object","title":"Catalog","required":["name","warehouse","uri","#token"],"properties":{"uri":{"type":"string","title":"URI","propertyOrder":13},"name":{"type":"string","title":"Catalog Name","propertyOrder":11},"#token":{"type":"string","title":"Token","format":"password","propertyOrder":14},"warehouse":{"type":"string","title":"Warehouse","propertyOrder":12}},"propertyOrder":2}}},"configurationRowSchema":{"type":"object","title":"Component configuration","required":["destination","debug"],"properties":{"debug":{"type":"boolean","title":"Debug mode","format":"checkbox","default":false,"description":"If enabled, the component will produce detailed logs","propertyOrder":2},"destination":{"type":"object","title":"Data destination","required":["namespace","table_name"],"properties":{"mode":{"enum":["replace","append","upsert"],"type":"string","title":"Load Type","default":"replace","options":{"enum_titles":["Replace","Append","Upsert"]},"propertyOrder":13},"namespace":{"enum":[],"type":"string","title":"Namespace","format":"select","default":"","options":{"tags":true,"async":{"label":"Load namespaces","action":"list_namespaces","autoload":["parameters.#token"]},"creatable":true},"propertyOrder":11},"table_name":{"enum":[],"type":"string","title":"Table Name","format":"select","default":"","options":{"tags":true,"async":{"label":"Load tables","action":"list_tables","autoload":["parameters.#token"]},"creatable":true},"propertyOrder":12},"primary_key":{"type":"array","items":{"enum":[],"type":"string"},"title":"Primary key","format":"select","options":{"tags":true,"async":{"label":"Re-load columns","action":"list_table_columns"},"dependencies":{"parquet_output":false}},"uniqueItems":true,"propertyOrder":14},"preserve_insertion_order":{"type":"boolean","title":"Preserve insertion order","format":"checkbox","default":true,"description":"If enabled, the extractor will preserve the order of the rows in the destination table. Disabling this option may help when encountering OOM error.","propertyOrder":15}},"propertyOrder":1}}},"createConfigurationRowSchema":null,"configurationDescription":"Configuration description.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["list_namespaces","list_table_columns","list_tables"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.wr-iceberg","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-iceberg","name":"developer-portal-v2/keboola.wr-iceberg","tag":"0.0.2","options":{},"digest":"sha256:1007089bea32e2aaa3d60053dd48559234dcfe3085b4615bac000803b4493a98"},"publishingStatus":"public","icon":{"32":null,"64":null,"128":null}},{"id":"keboola.processor-iconv","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":31,"name":"Iconv","type":"processor","shortDescription":"Change charset to UTF-8","longDescription":"Iconv processor. Takes all CSV files (or sliced tables) in /data/in/tables and /data/in/files, converts their encoding to destination encoding and stores them in /data/out/tables or /data/out/files. Manifests (if present) are copied without any change. Sliced files are supported.","licenseUrl":"https://github.com/keboola/processor-iconv/blob/master/LICENSE","documentationUrl":"https://github.com/keboola/processor-iconv/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/processor-iconv","requiredMemory":"512m","processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":[],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":null,"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.processor-iconv","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.processor-iconv","name":"developer-portal-v2/keboola.processor-iconv","tag":"4.0.3","options":{},"digest":"sha256:3bd3ac3b2366120cd41f3c0c8b390a79ba1f0fa704be1bc102173c7720efcab6"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.processor-iconv/32/1576251939845.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.processor-iconv/64/1576251939845.png","128":null}},{"id":"keboola.ex-ifs","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":50,"name":"IFS Cloud","type":"extractor","shortDescription":"Extracts data from IFS Cloud OData v4 projection services.","longDescription":"IFS Cloud exposes thousands of OData v4 projection services. This extractor connects to any IFS Cloud tenant and pulls data from any projection service and entity set through configuration alone — no per-service code.\n\nIt discovers services and their entity sets, columns, and keys live from the tenant's OData metadata, maps OData EDM types to Keboola native (authoritative) data types, and bounds each fetch by a stateless, customer-controlled date window (a chosen date field with a Date Start and Date End) — recomputed each run, so history can be re-pulled or a backfill batched freely. Server-driven paging assembles large result sets into a single table.\n\nAuthentication uses the OAuth 2.0 `client_credentials` grant against the tenant's Keycloak identity provider, with automatic mid-run token refresh. Each configuration row extracts one projection entity set into one Keboola table, with optional column selection, server-side `$filter`, ordering, and full or incremental loads.","licenseUrl":"https://github.com/keboola/component-ex-ifs/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-ex-ifs/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-ex-ifs","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"IFS Cloud Connection","required":["tenant_id","realm","client_id","#client_secret"],"properties":{"realm":{"type":"string","title":"Realm","options":{"tooltip":"The Keycloak realm in your IFS auth URL (`…/auth/realms/{realm}/…`). An IFS admin finds it in Solution Manager's Identity and Access Manager, or it's the `realms/<value>` segment of the tenant's token endpoint."},"description":"Keycloak realm for this tenant","propertyOrder":20},"advanced":{"type":"object","title":"Advanced","options":{"collapsed":true},"properties":{"base_path":{"type":"string","title":"Base Path","default":"/main/ifsapplications/projection/v1","options":{"tooltip":"Appended to the tenant host to build each projection service URL. Change only for non-standard IFS deployments."},"description":"Base path for IFS projection services","propertyOrder":10},"page_size":{"type":"integer","title":"Page Size","default":1000,"minimum":1,"description":"Rows requested per OData page","propertyOrder":20},"max_retries":{"type":"integer","title":"Max Retries","default":5,"minimum":0,"description":"Retries on transient HTTP errors","propertyOrder":40},"request_timeout":{"type":"integer","title":"Request Timeout","default":60,"minimum":1,"description":"HTTP request timeout in seconds","propertyOrder":30}},"propertyOrder":100},"client_id":{"type":"string","title":"Client ID","options":{"tooltip":"Client ID of the confidential IAM Client created in IFS Solution Manager → Identity and Access Manager → IAM Client (with the Service Accounts / client_credentials grant enabled)."},"description":"OAuth client ID for the service account","propertyOrder":30},"tenant_id":{"type":"string","title":"Tenant ID","options":{"tooltip":"The connection host is derived as `{tenant_id}.ifs.cloud`."},"description":"IFS Cloud tenant identifier","propertyOrder":10},"#client_secret":{"type":"string","title":"Client Secret","format":"password","options":{"tooltip":"Client Secret generated for that IAM Client (shown once when the client is created / regenerated)."},"description":"OAuth client secret","propertyOrder":40},"testConnection":{"type":"button","format":"test-connection","options":{"async":{"label":"Test Connection","action":"testConnection"}},"propertyOrder":60}}},"configurationRowSchema":{"type":"object","title":"Entity Extraction","required":["source"],"properties":{"load":{"type":"object","title":"Storage","format":"grid-strict","options":{"tooltip":"Where and how the extracted rows are written to Keboola Storage."},"properties":{"load_type":{"enum":["full_load","incremental_load"],"type":"string","title":"Load Type","default":"incremental_load","options":{"tooltip":"Incremental load upserts rows by primary key; full load overwrites the destination table on every run.","enum_titles":["Full Load","Incremental Load"],"grid_columns":12},"description":"Full or incremental load into Storage","propertyOrder":2},"primary_key":{"type":"array","items":{"enum":[],"type":"string"},"title":"Primary Key","format":"select","options":{"async":{"label":"Load Primary Keys","action":"list_primary_keys","autoload":["parameters.source.service","parameters.source.entity_set"]},"tooltip":"Required for Incremental Load — used to upsert and deduplicate rows in Storage.","dependencies":{"load_type":"incremental_load"},"grid_columns":12},"description":"Columns that uniquely identify each record","uniqueItems":true,"propertyOrder":3},"output_table":{"type":"string","title":"Storage Table Name","options":{"tooltip":"Optional. Leave empty to name the output table after the entity set. Set an explicit name to extract the same entity set into more than one table (e.g. a different column subset or date window per table) without them colliding. Letters, digits, `_` and `-` only.","grid_columns":12},"description":"Destination table name; defaults to the entity set","propertyOrder":1},"keep_meta_fields":{"type":"boolean","title":"Keep Meta Fields","default":false,"options":{"tooltip":"IFS OData responses include internal metadata fields, e.g. `@odata.etag`. Left disabled, they are stripped from the output table.","grid_columns":12},"description":"Keep IFS metadata fields in the output","propertyOrder":4}},"propertyOrder":40},"query":{"type":"object","title":"Query","format":"grid-strict","options":{"tooltip":"Optional server-side shaping: which columns to select, an OData `$filter`, and ordering."},"properties":{"filter":{"type":"string","title":"Filter","options":{"tooltip":"Additional OData `$filter` expression, combined (AND) with the Date window bounds. Chain conditions with `and`/`or`, e.g. `Company eq '100' and EntryDate gt 2024-01-01`.","grid_columns":12},"description":"OData filter expression","propertyOrder":2},"columns":{"type":"array","items":{"enum":[],"type":"string"},"title":"Columns","format":"select","options":{"async":{"label":"Load Columns","action":"list_columns","autoload":["parameters.source.service","parameters.source.entity_set"]},"tooltip":"OData `$select`. Leave empty to fetch all columns.","grid_columns":12},"description":"Columns to select, leave empty for all","uniqueItems":true,"propertyOrder":1},"order_by":{"type":"string","title":"Order By","options":{"tooltip":"OData `$orderby` expression, e.g. `EntryDate desc`.","grid_columns":12},"description":"OData order-by expression","propertyOrder":3},"validate_query":{"type":"button","title":"Validate Query","format":"sync-action","options":{"async":{"label":"Validate Query","action":"validate_query"},"grid_columns":12},"propertyOrder":4}},"propertyOrder":20},"source":{"type":"object","title":"Source","format":"grid-strict","options":{"tooltip":"The IFS projection service and entity set to extract, and the destination table name."},"required":["service","entity_set"],"properties":{"service":{"enum":[],"type":"string","title":"Service","format":"select","options":{"async":{"label":"Load Services","action":"list_services","autoload":true},"tooltip":"Standard or custom IFS projection service, e.g. `CustomerHandling`. Pick from the catalog or type a custom/uncatalogued service name.","creatable":true,"grid_columns":6},"description":"IFS projection service name","propertyOrder":1},"entity_set":{"enum":[],"type":"string","title":"Entity Set","format":"select","options":{"async":{"label":"Load Entity Sets","action":"list_entitysets","autoload":["parameters.source.service"]},"tooltip":"The collection within the projection service whose records become this table's rows. Each row extracts one entity set into one table — add another row for another entity set.","grid_columns":6},"description":"Entity set to extract from the service","propertyOrder":2}},"propertyOrder":10},"date_window":{"type":"object","title":"Date Window","format":"grid-strict","options":{"tooltip":"Optional stateless date window: bound a chosen date field by a Start and End. Recomputed each run — re-pull or backfill freely."},"properties":{"date_end":{"type":"string","title":"Date End","options":{"tooltip":"Upper bound on the Date Field (`<`). Use for moving windows (Start `5 days ago`, End `today`) or to split a large backfill into batches.","grid_columns":6},"description":"Upper bound on the Date Field","propertyOrder":3},"date_field":{"enum":[],"type":"string","title":"Date Field","format":"select","options":{"async":{"label":"Load Date Fields","action":"list_date_fields","autoload":["parameters.source.service","parameters.source.entity_set"]},"tooltip":"The date/timestamp column that Date Start and Date End filter on.","grid_columns":12},"description":"Date field the window filters on","propertyOrder":1},"date_start":{"type":"string","title":"Date Start","options":{"tooltip":"Lower bound on the Date Field (`>=`). Relative (`5 days ago`, `today`) or absolute (`YYYY-MM-DD`). Leave both dates empty to fetch everything.","grid_columns":6},"description":"Lower bound on the Date Field","propertyOrder":2}},"propertyOrder":30}}},"createConfigurationRowSchema":null,"configurationDescription":"Set up the connection once in the root configuration — the IFS Cloud tenant, the Keycloak realm, and the OAuth client credentials — then add one row per table you want to extract.\n\nEach row selects a projection service and entity set (pick from the live catalog or type a custom service name), and optionally a destination table name, a column subset, an OData `$filter`, ordering, a primary key, and a date window (a date field bounded by Date Start and Date End) to limit the fetch. Set the table name to pull the same entity set into more than one table.\n\nThe IFS service account must be provisioned inside IFS beforehand: an IAM Client with the `client_credentials` grant enabled, a read permission set, and the companies you intend to pull granted as Allowed Companies. See the documentation for the setup steps.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["list_columns","list_date_fields","list_entitysets","list_primary_keys","list_services","testConnection","validate_query"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-ifs","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-ifs","name":"developer-portal-v2/keboola.ex-ifs","tag":"0.1.0","options":{},"digest":"sha256:dca87744e62f160b966f3e1ade96b52a5b0ed5e28c27ae2720aa4890e3bd53cd"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-ifs/32/1785741754552.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-ifs/64/1785741754552.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-ifs/128/1785741754552.png"}},{"id":"kds-team.ex-email-content","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":429,"name":"IMAP Email Content and Attachments","type":"extractor","shortDescription":"Download email content (body), metadata and/or attachments using IMAP protocol.","longDescription":"This extractor allows you to automatically retrieve email contents and/or it's attachments via the [IMAP protocol](https://en.wikipedia.org/wiki/Internet_Message_Access_Protocol). \nIt supports incremental loads and IMAP query to define specific criteria. \n\nThe IMAP protocol provides several advantages:\n\n- Emails stay intact in your original inbox\n- Emails can be queried using a standardized [query syntax](https://help.keboola.com/components/extractors/communication/email-imap/query-syntax).\n- Can be used with *almost* any provider, so it will work with Gmail as well as with Outlook and others.","licenseUrl":"https://github.com/keboola/component-email-content/blob/main/LICENSE.md","documentationUrl":"https://help.keboola.com/components/extractors/communication/ms-outlook/","sourceCodeUrl":"https://github.com/keboola/component-email-content","requiredMemory":"512m","processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-processors","genericVariablesUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"IMAP Settings","required":["user_name","#password","host","port"],"properties":{"host":{"type":"string","title":"IMAP Host","propertyOrder":300},"port":{"type":"number","title":"IMAP Port","default":993,"propertyOrder":400},"#password":{"type":"string","title":"Password","format":"password","propertyOrder":200},"user_name":{"type":"string","title":"User Name","propertyOrder":100}}},"configurationRowSchema":{"type":"object","title":"extractor configuration","required":["query","imap_folder","date_since","download_content","download_attachments"],"properties":{"query":{"type":"string","title":"Search query","default":"ALL","description":"Select only emails matching the search query, e.g. (FROM \"email\" SUBJECT \"the subject\" UNSEEN) . Find more information on the syntax in the <a href=\"https://help.keboola.com/components/extractors/communication/email-imap/query-syntax/\">documentation.</a>","propertyOrder":100},"mark_seen":{"type":"boolean","title":"Mark seen","format":"checkbox","default":true,"description":"When set to true, emails that have been extracted will be marked as seen in the inbox.","propertyOrder":350},"date_since":{"type":"string","title":"Period from date [including].","default":"","description":" Date in YYYY-MM-DD format or dateparser string i.e. 5 days ago, 1 month ago, yesterday, etc. If left empty, all records are downloaded.","propertyOrder":150},"imap_folder":{"type":"string","title":"IMAP folder","default":"","description":"Folder to get the emails from. Defaults to INBOX. For example a label in GMAIL = Folder. If left empty, default root INBOX folder is used.","propertyOrder":110},"download_content":{"type":"boolean","title":"Download Content","format":"checkbox","default":true,"description":"When set to true, the content of the message will be downloaded.","propertyOrder":200},"attachment_pattern":{"type":"string","title":"Attachment Pattern","default":".+\\.csv","options":{"dependencies":{"download_attachments":true}},"description":"Regex pattern to filter particular attachments. e.g. to retrieve only pdf file types use: .+\\.pdf If left empty, all attachments are downloaded.","propertyOrder":400},"download_attachments":{"type":"boolean","title":"Download Attachments","format":"checkbox","default":false,"description":"When set to true, also the attachments will be downloaded. By default into the File Storage. Use processors to control the behaviour.","propertyOrder":300}}},"createConfigurationRowSchema":null,"configurationDescription":"- The content and metadata of emails are stored in the `emails` table.\n- The attachments will be by default stored in the File Storage. To change this behaviour please use [processors](https://developers.keboola.com/extend/component/tutorial/processors/). See the example below.\n\nAdditional documentation [available](https://help.keboola.com/components/extractors/communication/email-imap/)\n\n#### Example - Storing CSV attachments in Table Storage.\n\nIf your attachments are in csv format you can use this combination of processors to store them in the Table Storage:\n\n- The `folder` parameter of the [first processor](https://github.com/keboola/processor-move-files) matches the resulting table name\n- The [second processor](https://components.keboola.com/components/keboola.processor-create-manifest) defines that the result will always replace the destination table and expects header in the csv file.\n- NOTE that in this setup all attachments will be stored in the same table, so they have to share the same structure.\n\n```json\n{\n  \"before\": [],\n  \"after\": [\n    {\n        \"definition\": {\n          \"component\": \"keboola.processor-move-files\"\n        },\n        \"parameters\": {\n          \"direction\": \"tables\",\n          \"folder\": \"result_table\"\n        }\n      },\n      {\n        \"definition\": {\n          \"component\": \"keboola.processor-create-manifest\"\n        },\n        \"parameters\": {\n          \"delimiter\": \",\",\n          \"enclosure\": \"\\\"\",\n          \"incremental\": false,\n          \"primary_key\": [],\n          \"columns_from\": \"header\"\n        }\n      }]\n}\n```","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":429,"uri":"docker/kds-team.ex-email-content","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-email-content","name":"developer-portal-v2/kds-team.ex-email-content","tag":"1.5.3","options":{},"digest":"sha256:ce635691e4a8c2569580328aff4e6de2f1117af490e3432f6ee2b62486a73aeb"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-email-content/32/1643016059359.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-email-content/64/1643016059359.png","128":null}},{"id":"keboola.ex-influxdb-2","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":85,"name":"InfluxDB 2","type":"extractor","shortDescription":"Extracts data from InfluxDB v2.","longDescription":"The InfluxDB 2 Extractor transfers time-series data from InfluxDB v2 to Keboola Storage using custom Flux queries.\n\nKey features:\n- Sync actions for listing organizations and buckets\n- Incremental and full load modes\n- Dynamic table naming based on tag values\n- Maintains schema consistency across runs","licenseUrl":"https://github.com/keboola/component-influxdb-2-ex/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/component-influxdb-2-ex/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/component-influxdb-2-ex","requiredMemory":"1024m","processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Extractor Configuration","required":[],"properties":{"org":{"type":"string","title":"Organization","propertyOrder":3},"url":{"type":"string","title":"URL","description":"The URL of the InfluxDB incl. port for example https://db.test.com:8086","propertyOrder":1},"#token":{"type":"string","title":"Token","format":"password","propertyOrder":2},"timeout":{"type":"integer","title":"Request Timeout (ms)","default":10000,"description":"HTTP request timeout for the InfluxDB client, in milliseconds.","propertyOrder":4}}},"configurationRowSchema":{"type":"object","title":"Component configuration","required":["destination","source","debug"],"properties":{"debug":{"type":"boolean","title":"Debug mode","format":"checkbox","default":false,"description":"If enabled, the component will produce detailed logs","propertyOrder":4},"source":{"type":"object","title":"Data Source","properties":{"stop":{"type":"string","title":"Stop Time","default":"now","options":{"grid_columns":6},"description":"Upper bound for the time range. Use 'now' to automatically use the current time at the start of each run (recommended for incremental loads). Accepts the same formats as Start Time.","propertyOrder":4},"query":{"type":"string","title":"Query","format":"textarea","default":"from(bucket: \"{bucket}\")\n|> range(start: {start}, stop: {stop})\n|> limit(n: {batch_size}, offset: {offset})","options":{"input_height":"100px"},"description":"Flux query for extracting data from InfluxDB with placeholders: {bucket}, {start}, {stop}, {batch_size}, {offset}.","propertyOrder":2},"start":{"type":"string","title":"Start Time","default":"last_run","options":{"grid_columns":6},"description":"Absolute or relative value in <a href=\"https://docs.influxdata.com/flux/v0/stdlib/universe/range/#start\">supported formats by FluxQL</a> for example: -1h, 2020-05-10T21:00:00Z, 1567029600 or 'last_run' to use the time of the last successful run.","propertyOrder":3},"bucket":{"enum":[],"type":"string","title":"Bucket","format":"select","options":{"async":{"label":"Load buckets","action":"list_buckets"}},"propertyOrder":1},"batch_size":{"type":"integer","title":"Batch size","default":10000,"description":"By default, the extractor will load data in batches of 10 000 rows. You can adjust this value to optimize the performance (or solve OOM) of the writer.","propertyOrder":5},"query_preview":{"type":"button","format":"sync-action","options":{"async":{"label":"Query Preview","action":"query_preview"}},"propertyOrder":3}},"propertyOrder":1},"destination":{"type":"object","title":"Data Destination","properties":{"load_type":{"enum":["incremental_load","full_load"],"type":"string","title":"Load Type","default":"incremental_load","options":{"enum_titles":["Incremental Load","Full Load"],"dependencies":{"parquet_output":false}},"description":"If Full load is used, the destination table will be overwritten every run. If Incremental Load is used, data will be upserted into the destination table based on the primary key. Append modes do not contain any primary keys and are not deduplicated.","propertyOrder":3},"table_name":{"type":"string","title":"Table Name","options":{"dependencies":{"name_tables_by_tag_value":false}},"description":"Name of the destination table. Please ensure that the query returns exactly one table.","propertyOrder":3},"name_tables_by_tag_value":{"type":"boolean","title":"Name tables by tags values","format":"checkbox","default":false,"description":"If enabled, the writer will create a separate table for each value of the specified tags.","propertyOrder":1}},"propertyOrder":2},"duckdb_max_memory_mb":{"type":"integer","title":"DuckDB Maximum Memory (MB)","default":256,"description":"The maximum memory that DuckDB can use for data processing is influenced by the batch size as well as the size and structure of the data extracted from InfluxDB.","propertyOrder":3}}},"createConfigurationRowSchema":null,"configurationDescription":"Configuration description.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["list_buckets","list_organizations","query_preview"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-influxdb-2","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-influxdb-2","name":"developer-portal-v2/keboola.ex-influxdb-2","tag":"0.0.6","options":{},"digest":"sha256:7b48b658dceed94467f504cf4f9588dbd9ff0cc5048f104ee192a388a3eb75c1"},"publishingStatus":"public","icon":{"32":null,"64":null,"128":null}},{"id":"keboola.ex-db-informix","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":34,"name":"Informix","type":"extractor","shortDescription":"Extracts data from IBM Informix over ODBC (onsoctcp/onsocssl).","longDescription":"This component imports data from selected tables or results from arbitrary SQL queries from the [Informix](https://www.ibm.com/products/informix) database. It connects to the database, executes your queries, and stores the results in Keboola Connection Storage.\n\nTo configure this extractor, you need to\n\n- provide database credentials, and \n- have a connection to the database you want to read, preferably [secure](https://help.keboola.com/extractors/database/#connecting-to-database).\n\nIncremental load is optional.","licenseUrl":"https://github.com/keboola/db-extractor-informix/blob/master/LICENSE","documentationUrl":"https://github.com/keboola/db-extractor-informix/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/db-extractor-informix","requiredMemory":null,"processTimeout":25200,"features":["container-root-user"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","$defs":{"credentials":{"type":"object","required":["host","port","user","#password","database"],"properties":{"ssh":{"type":"object","properties":{"keys":{"type":"object","properties":{"public":{"type":"string"},"#private":{"type":"string"}}},"user":{"type":["string","null"]},"enabled":{"type":"boolean"},"sshHost":{"type":["string","null"]},"sshPort":{"type":["string","integer","null"],"default":22},"localPort":{"type":["string","integer"]},"remoteHost":{"type":"string"},"remotePort":{"type":["string","integer"]}}},"host":{"type":"string"},"port":{"type":["string","integer"]},"user":{"type":"string"},"database":{"type":"string"},"dbLocale":{"type":"string"},"protocol":{"type":"string"},"#password":{"type":"string"},"serverName":{"type":"string"}}}},"title":"keboola.ex-db-informix — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","required":["db"],"properties":{"db":{"$ref":"#/$defs/credentials"}}},"configurationRowSchema":{"type":"object","title":"keboola.ex-db-informix — Row Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"id":{"type":["string","integer"]},"name":{"type":"string"},"query":{"type":"string"},"table":{"oneOf":[{"type":"string"},{"type":"object","properties":{"schema":{"type":"string"},"tableName":{"type":"string"}}}]},"tables":{"type":"array","options":{"async":{"label":"Re-load tables","action":"getTables"}}},"columns":{"type":"array","items":{"type":"string"}},"enabled":{"type":"boolean"},"primaryKey":{"type":"array","items":{"type":"string"}},"incremental":{"type":"boolean"},"outputTable":{"type":"string"},"advancedMode":{"type":"boolean"},"incrementalFetchingLimit":{"type":"integer"},"incrementalFetchingColumn":{"type":"string"}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["testConnection","getTables"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":34,"uri":"docker/keboola.ex-db-informix","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-db-informix","name":"developer-portal-v2/keboola.ex-db-informix","tag":"v1.3.1","options":{},"digest":"sha256:e5600a51ec5fdf5f2d2e6391e6d9e32a93174f70c02ab5717ac239d2975279a0"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-db-informix/32/1598538745327.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-db-informix/64/1598538745327.png","128":null}},{"id":"keboola.ex-instagram-v2","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":238,"name":"Instagram V2","type":"extractor","shortDescription":"Extracts Instagram Business account data.","longDescription":"This component uses the [Instagram Graph API](https://developers.facebook.com/docs/instagram-api) (built on the [Facebook Graph API](https://developers.facebook.com/docs/graph-api)) to access large- and medium-sized Instagram Business Accounts to extract media objects, comments, insights and metrics.\n\nTo configure the extractor, you need to have\n\n- an \n[Instagram Business Account](https://developers.facebook.com/docs/instagram-api/getting-started#connect),\n- a Facebook page (must be connected to the Instagram Business Account), and\n- a role on that page. ","licenseUrl":"https://github.com/keboola/component-meta/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/component-meta/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/component-meta","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Social"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-authorization"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["accounts","adaccounts","igaccounts"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-instagram-v2","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-instagram-v2","name":"developer-portal-v2/keboola.ex-instagram-v2","tag":"0.1.5","options":{},"digest":"sha256:b6331f9b6f577d1f6f87674866ca191cfb2ddecc7e677dfc4ea239832ec947de"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-instagram-v2/32/1752569783571.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-instagram-v2/64/1752569783571.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-instagram-v2/128/1752569783571.png"}},{"id":"kds-team.ex-itunes-reviews","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":71,"name":"iTunes Reviews","type":"extractor","shortDescription":"Download reviews for any object in iTunes database.","longDescription":"# iTunes Reviews Extractor\n\nThe iTunes Reviews extractor allows users to download reviews for any iTunes object (applications, songs, albumns, books, etc.) in Apple's database. The extractor downloads reviews for specified countries and incrementally saves them in Keboola Storage.\n\n## API limitations\n\nThe extractor is limited to make 20 calls per minute, which is the direct limitation of the iTunes API. Moreover, due to storage reason, only 500 latest reviews are stored in iTunes API, hence only the latest 500 reviews can be downloaded for each object. \n\n**Note:** If the list of object and/or countries is too big, the extractor might be running for a couple of hours before finishing due to above API limitations.\n\n## Configuration\n\nConfiguration of the extractor is very simple; all that's needed is a list of id's of objects and countries for which the reviews will be downloaded. The sample configuration can be found in the [extractor's repository](https://bitbucket.org/kds_consulting_team/kds-team.ex-itunes-reviews/src/master/component_config/sample-config/).\n\n### Input table\n\nThe input table must be a table of **1 column** containing the id of the object. The extractor will loop over the list to download reviews for each specified object. If the 1 column specification is not met, the extractor will fail. The sample of the input table can be found [here](https://bitbucket.org/kds_consulting_team/kds-team.ex-itunes-reviews/src/master/component_config/sample-config/in/tables/test.csv).\n\n### Countries\n\nIf the option `All countries` is selected, for each object reviews from all available countries is downloaded. Otherwise, only reviews for specified countries will be downloaded. \nIf the extractor is configured via API, valid country codes must be provided. To download for all countries, use `ALL` option. See the [iTunes pages](https://affiliate.itunes.apple.com/resources/documentation/linking-to-the-itunes-music-store/#CountryCodes) for the list of all available countries and their respective country codes.\n\n### Backfill\n\nBy default, the extractor only downloads reviews for objects, that were updated since the last successful run. By specifying `backfill` option to `true`, the extractor will download the latest 500 reviews (if available) regardless of the last successful run.\n\n### Output\n\nThe output is a table of reviews for each object. The table is laoded incrementally into storage and uses `review_id`, `updated` and `country_code` columns as primary keys. Note that it is possible to have reviews with same `review_id` and `country_code`, but different `updated`, due to possibility of editing certain reviews. The expected output table can be found [here](https://bitbucket.org/kds_consulting_team/kds-team.ex-itunes-reviews/src/master/component_config/sample-config/out/tables/reviews.csv).\n\n## Development\n\nTo run application locally or further develop it, run the following commands\n\n```\ndocker-compose build\ndocker-compose run dev\n```\n\nwhich will build and run the `dev` image of application.","licenseUrl":"https://bitbucket.org/kds_consulting_team/kds-team.ex-itunes-reviews/src/master/LICENSE.md","documentationUrl":"https://bitbucket.org/kds_consulting_team/kds-team.ex-itunes-reviews/src/master/README.md","sourceCodeUrl":"https://bitbucket.org/kds_consulting_team/kds-team.ex-itunes-reviews/src/master/","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["country_code","backfill_mode"],"properties":{"country_code":{"type":"array","items":{"enum":["ALL","DZ","AO","AI","AG","AR","AM","AU","AT","AZ","BH","BD","BB","BY","BE","BZ","BM","BO","BW","BR","VG","BN","BG","CA","KY","CL","CN","CO","CR","CI","HR","CY","CZ","DK","DM","DO","EC","EG","SV","EE","FI","FR","DE","GH","GR","GD","GT","GY","HN","HK","HU","IS","IN","ID","IE","IL","IT","JM","JP","JO","KZ","KE","KR","KW","LV","LB","LI","LT","LU","MO","MK","MG","MY","MV","ML","MT","MU","MX","MD","MS","NP","NL","NZ","NI","NE","NG","NO","OM","PK","PA","PY","PE","PH","PL","PT","QA","RO","RU","SA","SN","RS","SG","SK","SI","ZA","ES","LK","KN","LC","VC","SR","SE","CH","TW","TZ","TH","BS","TT","TN","TR","TC","UG","GB","UA","AE","UY","US","UZ","VE","VN","YE"],"type":"string","options":{"enum_titles":["All countries","Algeria","Angola","Anguilla","Antigua & Barbuda","Argentina","Armenia","Australia","Austria","Azerbaijan","Bahrain","Bangladesh","Barbados","Belarus","Belgium","Belize","Bermuda","Bolivia","Botswana","Brazil","British Virgin Islands","Brunei","Bulgaria","Canada","Cayman Islands","Chile","China","Colombia","Costa Rica","Cote D’Ivoire","Croatia","Cyprus","Czech Republic","Denmark","Dominica","Dominican Rep.","Ecuador","Egypt","El Salvador","Estonia","Finland","France","Germany","Ghana","Greece","Grenada","Guatemala","Guyana","Honduras","Hong Kong","Hungary","Iceland","India","Indonesia","Ireland","Israel","Italy","Jamaica","Japan","Jordan","Kazakstan","Kenya","Korea, Republic Of","Kuwait","Latvia","Lebanon","Liechtenstein","Lithuania","Luxembourg","Macau","Macedonia","Madagascar","Malaysia","Maldives","Mali","Malta","Mauritius","Mexico","Moldova, Republic Of","Montserrat","Nepal","Netherlands","New Zealand","Nicaragua","Niger","Nigeria","Norway","Oman","Pakistan","Panama","Paraguay","Peru","Philippines","Poland","Portugal","Qatar","Romania","Russia","Saudi Arabia","Senegal","Serbia","Singapore","Slovakia","Slovenia","South Africa","Spain","Sri Lanka","St. Kitts & Nevis","St. Lucia","St. Vincent & The Grenadines","Suriname","Sweden","Switzerland","Taiwan","Tanzania","Thailand","The Bahamas","Trinidad & Tobago","Tunisia","Turkey","Turks & Caicos","Uganda","UK","Ukraine","United Arab Emirates","Uruguay","USA","Uzbekistan","Venezuela","Vietnam","Yemen"]}},"title":"Countries","format":"select","uniqueItems":true,"propertyOrder":100},"backfill_mode":{"type":"boolean","title":"Backfill","default":false,"description":"If checked, the extractor will ignore previously saved state and download all reviews.","propertyOrder":200}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"## Configuration\n\nConfiguration of the extractor is very simple; all that's needed is a list of id's of objects and countries for which the reviews will be downloaded. The sample configuration can be found in the [extractor's repository](https://bitbucket.org/kds_consulting_team/kds-team.ex-itunes-reviews/src/master/component_config/sample-config/).\n\n### Input table\n\nThe input table must be a table of **1 column** containing the id of the object. The extractor will loop over the list to download reviews for each specified object. If the 1 column specification is not met, the extractor will fail. The sample of the input table can be found [here](https://bitbucket.org/kds_consulting_team/kds-team.ex-itunes-reviews/src/master/component_config/sample-config/in/tables/test.csv).\n\n### Countries\n\nIf the option `All countries` is selected, for each object reviews from all available countries is downloaded. Otherwise, only reviews for specified countries will be downloaded. \nIf the extractor is configured via API, valid country codes must be provided. To download for all countries, use `ALL` option. See the [iTunes pages](https://affiliate.itunes.apple.com/resources/documentation/linking-to-the-itunes-music-store/#CountryCodes) for the list of all available countries and their respective country codes.\n\n### Backfill\n\nBy default, the extractor only downloads reviews for objects, that were updated since the last successful run. By specifying `backfill` option to `true`, the extractor will download the latest 500 reviews (if available) regardless of the last successful run.\n\n### Output\n\nThe output is a table of reviews for each object. The table is laoded incrementally into storage and uses `review_id`, `updated` and `country_code` columns as primary keys. Note that it is possible to have reviews with same `review_id` and `country_code`, but different `updated`, due to possibility of editing certain reviews. The expected output table can be found [here](https://bitbucket.org/kds_consulting_team/kds-team.ex-itunes-reviews/src/master/component_config/sample-config/out/tables/reviews.csv).","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":71,"uri":"docker/kds-team.ex-itunes-reviews","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-itunes-reviews","name":"developer-portal-v2/kds-team.ex-itunes-reviews","tag":"0.1.0","options":{},"digest":"sha256:9dc4415bb2622a379bb7e84c6fd1b85a3e77da3d01de3c6ddfbc6109c1e910bc"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-itunes-reviews/32/43.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-itunes-reviews/64/43.png","128":null}},{"id":"kds-team.ex-jira","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":439,"name":"Jira","type":"extractor","shortDescription":"Extracts issues, worklogs, comments, boards, and sprints from Jira.","longDescription":"# Jira extractor\n\nJira is a proprietary issue tracking product developed by Atlassian that allows bug tracking and agile project management. A Jira extractor for Keboola Connection allows to download data about projects, issues and time worked on each issue.\n\n## Configuration\n\nA sample configuration can be found in the [component's repository](https://bitbucket.org/kds_consulting_team/kds-team.ex-jira/src/master/component_config/sample-config/config.json).","licenseUrl":"https://github.com/keboola/component-jira/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-jira/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-jira","requiredMemory":"1g","processTimeout":14400,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Project Management"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["username","#token","organization_id","organization_url","datasets","incremental","since"],"properties":{"since":{"type":"string","title":"Date Range","default":"3 days ago","description":"Date, since when the data will be downloaded. Can be specified absolutely (e.g. '2020-01-01') or relatively (e.g. '2 days ago', '1 month ago').","propertyOrder":350},"#token":{"type":"string","title":"API Token","format":"password","description":"An API token to Atlassian Cloud.</br>A token can be generated in <a href='https://id.atlassian.com/manage/api-tokens' target='_blank'>manage your account</a> section.","propertyOrder":200},"datasets":{"type":"array","items":{"enum":["issues","issues_changelogs","worklogs","boards_n_sprints","comments","organizations","servicedesks_and_customers"],"type":"string","options":{"enum_titles":["Issues","Issues Changelogs","Worklogs","Boards & Sprints","Issues Comments","Organizations","Servicedesks & Customers (experimental endpoint)"]}},"title":"Datasets","format":"select","default":["issues","worklogs"],"description":"To fetch Issues Changelogs and Issues Comments, the Issues is also required.","uniqueItems":true,"propertyOrder":400},"username":{"type":"string","title":"Username","minLength":1,"description":"A username to Atlassian Cloud; usually an email.","propertyOrder":100},"custom_jql":{"type":"array","items":{"type":"object","title":"JQL","properties":{"jql":{"type":"string","title":"JQL"},"table_name":{"type":"string","title":"Table name"}}},"title":"Custom JQL","format":"table","uniqueItems":true,"propertyOrder":500},"incremental":{"enum":[1,0],"type":"number","title":"Load Type","options":{"enum_titles":["Incremental Load","Full Load"]},"propertyOrder":600},"organization_id":{"type":"string","title":"Organization ID","description":"An ID of the organization, for which the data will be downloaded. Can be found in the first part of the URL, i.e. <a href='https://<organization_id>.atlassian.net'>https://&ltorganization_id&gt.atlassian.net</a>.","propertyOrder":300},"organization_url":{"type":"string","title":"Organization URL","watch":{"org_id":"organization_id"},"template":"https://{{org_id}}.atlassian.net","description":"URL which will be used to download data from your organization.","propertyOrder":325}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"A sample configuration can be found in the [component's repository](https://bitbucket.org/kds_consulting_team/kds-team.ex-jira/src/master/component_config/sample-config/config.json).\n\n### Parameters\n\nAll parameters, except parameter for load type, are required.\n\n- **Username**\n    - **type:** required\n    - **configuration name:** `username`\n    - **description:** A username, which will be used to log in to Atlassian Cloud. Usually, the username is an email address of the user.\n- **API Token**\n    - **type:** required\n    - **configuration name:** `#token`\n    - **description:** An API token, which can be obtained in [Manage account](https://id.atlassian.com/manage/api-tokens) section\n- **Organization ID**\n    - **type:** required\n    - **configuration name:** `organization_id`\n    - **description:** ID of the organization of which data will be downloaded. The organization ID is located in the first part of the URL of the Atlassian stack; e.g. for *https://cool_org.atlassian.net/* the organization ID is *cool_org*.\n- **Date Range**\n    - **type:** required\n    - **configuration name:** `since`\n    - **description:** The date range, since when the data will be downloaded. Can be specified absolutely (e.g. **2020-01-01**) or relatively (e.g. **2 days ago**, **1 month ago**).\n    - **default:** 3 days ago\n- **Datasets**\n    - **type:** required\n    - **configuration name:** `datasets`\n    - **note:** If you'd like to download `issues_changelogs` or `comments` dataset, **`issues` must be selected as well.**\n    - **description:** An array of objects, which will be downloaded.\n    - **possible values:** `issues`, `issues_changelogs`, `worklogs`, `boards_n_sprints`, `comments`\n- **Load Type**\n    - **type:** optional\n    - **configuration name:** `incremental`\n    - **description:** Specifies load type back to storage.\n    - **default:** `1` - `Incremental Load`\n- **Custom JQL**\n    - **type:** optional\n    - **configuration name:** `custom_jql`\n    - **description:** Runs custom JQL to get issues using a specified filter\n    - Child parameter : **Table name**\n      - **type:** required\n      - **configuration name:** `table_name`\n      - **description:** Name of table that stores the data returned by the filter\n    - Child parameter : **JQL**\n      - **type:** required\n      - **configuration name:** `jql`\n      - **description:** JQL filter to apply\n\n  \n\n  \n### Functionality notes\n\nWhen fetching issues, take note that an update in the fixVersion does not update the \"update\" time of the issue. \nTherefore, if an issue's version is released, and the issue is no longer in the specified Date Range the data will not be fetched.\nIf fetching incrementally, this can lead to out of date data in the fixVersion field. \nMake sure to have a date range set to a long enough period to fetch the issue data.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":439,"uri":"docker/kds-team.ex-jira","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-jira","name":"developer-portal-v2/kds-team.ex-jira","tag":"1.21.1","options":{},"digest":"sha256:f7892568b5b1a53e522849268836e4dd10adb1ec9f0756f2906c842b68abba93"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-jira/32/1697630019491.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-jira/64/1697630019491.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-jira/128/1697630019491.png"}},{"id":"kds-team.processor-jsonl","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":128,"name":"JSON NewLines","type":"processor","shortDescription":"Converts JSONL files to a CSV table.","longDescription":"This processor can be used to convert jsonl files to csv files to further consume in Keboola.","licenseUrl":"https://bitbucket.org/kds_consulting_team/kds-team.processor-jsonl/src/master/LICENSE.md","documentationUrl":"https://bitbucket.org/kds_consulting_team/kds-team.processor-jsonl/src/master/README.md","sourceCodeUrl":"https://bitbucket.org/kds_consulting_team/kds-team.processor-jsonl/src/master/","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":[],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"extractor configuration","required":["print_hello"],"properties":{"debug":{"type":"boolean","title":"Debug","propertyOrder":2},"print_hello":{"type":"boolean","title":"Print Hello","propertyOrder":1}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"### Configuration\n\nThis processor has the following configuration parameters:\n\n- `debug` [bool] (optional) - DEFAULT: `false` Can be used to track progress in case you are processing a large number of files. It also has increased verbosity.\n- `add_source_column` [bool] (optional) - DEFAULT: `false` Adds a new column to the output with the name of the source file. This can help with debugging or additional processing. \n- `fail_on_error` [bool] (optional) - DEFAULT: `false` If set to True, the processor will stop on any error. Otherwise, it will simply skip files that cannot be processed.\n- `destination.table_name` [str] (optional) - Name of the resulting table. Defaults to \"converted_jsonl\". \n- `destination.incremental` [bool] (optional) - If set to true, the table will be stored incrementally. Default is full load.\n- `destination.primary_key` [list] (optional) - Can be used to do incremental loads and deduplication. It is a JSON-path split by nesting separator character (`.` by default)\n  of properties that can be used as primary key of each object. E.g. `customer.id` to get `id` from\n  object `{\"customer\":{\"id\":123, \"name\":\"David\"}}`\n- `destination.pk_nesting_separator` [list] (optional) DEFAULT: `.` - String to define object nesting in primary key\n  JSON path. This is useful when the column name contains `.` character. E.g. use `|` and primary key `customer.data|id` to\n  get `id` from object `{\"customer.data\":{\"id\":123, \"name\":\"David\"}}`\n\n#### Configuration Example\n\nIncremental load:\n```\n  \"parameters\": {\n    \"debug\": true,\n    \"destination\": {\n      \"table_name\": \"test\",\n      \"incremental\": true,\n      \"primary_key\": [\"id\", \"customer.id\"]\n      \"pk_nesting_separator\": \".\"\n    },\n    \"add_source_column\": true,\n    \"fail_on_error\": true\n  }\n```\nThe configuration above will create a table named `test` with columns `record`, `source`, `id` and `customer__id` where `id` and `customer__id` are primary keys.\n\nFull load:\n```\n  \"parameters\": {\n    \"destination\": {\n      \"table_name\": \"demo\"\n    }\n  }\n```\nThis configuration will create a table named `demo` with a single column `record`.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.processor-jsonl","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.processor-jsonl","name":"developer-portal-v2/kds-team.processor-jsonl","tag":"1.1.1","options":{},"digest":"sha256:2570a6c3f90c9c624434a7d5a736f9c7a12fb1cb61770510d0f3b9c969fd3d3b"},"publishingStatus":"public","icon":{"32":null,"64":null,"128":null}},{"id":"kds-team.processor-json2csv","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":21,"name":"json2csv","type":"processor","shortDescription":"Convert JSON to CSV files. Generic Extractor style.","longDescription":null,"licenseUrl":"https://github.com/keboola/kds-team.processor-json2csv/blob/master/LICENSE","documentationUrl":"https://github.com/keboola/kds-team.processor-json2csv/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/kds-team.processor-json2csv","requiredMemory":"2048m","processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["appInfo.experimental"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":null,"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.processor-json2csv","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.processor-json2csv","name":"developer-portal-v2/kds-team.processor-json2csv","tag":"1.0.0","options":{},"digest":"sha256:f3b16dcb2495aee7cac89d8bac5260c705ea5c9a078c9e204fba777fd63765fe"},"publishingStatus":"public","icon":{"32":null,"64":null,"128":null}},{"id":"kds-team.ex-k2","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":441,"name":"K2","type":"extractor","shortDescription":"Extracts data objects from the K2 ERP API.","longDescription":"This component fetches defined data objects from the K2 API","licenseUrl":"https://github.com/keboola/component-k2/blob/main/LICENSE.md","documentationUrl":"https://help.keboola.com/components/extractors/erp/k2/","sourceCodeUrl":"https://github.com/keboola/component-k2","requiredMemory":null,"processTimeout":43200,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"K2 Authorization Configuration","required":["username","#password"],"properties":{"ssh":{"type":"object","title":"SSH Tunnel configuration","options":{"dependencies":{"use_ssh":true}},"properties":{"username":{"type":"string","title":"Username","description":"The SSH User for connecting to your SSH server","propertyOrder":10},"remote_port":{"type":"string","title":"K2 API port","description":"The port of the K2 API e.g. 8080","propertyOrder":50},"tunnel_host":{"type":"string","title":"Tunnel host","description":"The host name or host IP associated with your SSH server (Note: Don't use load balancer as host)","propertyOrder":30},"#private_key":{"type":"string","title":"Private key","format":"textarea","options":{"input_height":"150px"},"description":"The base64-encoded private key for the key pair associated with your SSH server","propertyOrder":20},"remote_address":{"type":"string","title":"K2 API source address","description":"The address that is used to query the K2 API e.g. k2api.myfirm.cz","propertyOrder":40},"#private_key_password":{"type":"string","title":"Private key password","format":"password","description":"The password for the provided private key","propertyOrder":25}},"description":"","propertyOrder":80},"use_ssh":{"type":"boolean","title":"Use ssh","format":"checkbox","default":false,"description":"If checked, an SSH tunnel will be used to call the API","propertyOrder":70},"username":{"type":"string","title":"Username","description":"Username for K2","propertyOrder":10},"#password":{"type":"string","title":"Password","format":"password","description":"Password for K2","propertyOrder":20},"source_url":{"type":"string","title":"Source url","options":{"dependencies":{"use_ssh":false}},"description":"The address that is used to query the K2 API, e.g. https://myk2server.com","propertyOrder":70},"service_name":{"type":"string","title":"Service name","description":"Name of the K2 service  http://myk2server.com/{SERVICE_NAME}","propertyOrder":30}}},"configurationRowSchema":{"type":"object","title":"Configuration Schema","properties":{"fields":{"type":"string","title":"Fields","description":"A list of the names of data fields that should be fetched, separated by comma","propertyOrder":50},"conditions":{"type":"string","title":"Conditions","description":"Conditions used for filtering data. Using the format defined in the <a href='https://help.k2.cz/k2ori/02/en/10023272.htm#o106273'>K2 documentation</a>","propertyOrder":60},"data_object":{"type":"string","title":"Data object","description":"Name of object to download from K2","propertyOrder":40},"loading_options":{"type":"object","title":"Loading Options","required":["load_type","incremental_field","date_from","date_to"],"properties":{"date_to":{"type":"string","title":"Date to","default":"now","options":{"dependencies":{"load_type":"Incremental load"}},"description":"What date to fetch data to using the incremental field; either exact date in YYYY-MM-DD format, relative date e.g. 3 days ago, or now to fetch data till the current time","propertyOrder":130},"date_from":{"type":"string","title":"Date from","default":"last run","options":{"dependencies":{"load_type":"Incremental load"}},"description":"What date to fetch data from using the incremental field; either exact date in YYYY-MM-DD format, relative date e.g. 3 days ago, or last run to fetch data since last run ","propertyOrder":120},"load_type":{"enum":["Full Load","Incremental load"],"type":"string","title":"Load type","default":"Full Load","description":"If set to Incremental load, the result tables will be updated based on primary key and new records will be fetched. Full load overwrites the destination table each time.","propertyOrder":100},"incremental_field":{"type":"string","title":"Incremental field","options":{"dependencies":{"load_type":"Incremental load"}},"description":"Field from the K2 Object that should be used for incremental fetching; e.g. Timestamp","propertyOrder":110}},"propertyOrder":90}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":441,"uri":"docker/kds-team.ex-k2","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-k2","name":"developer-portal-v2/kds-team.ex-k2","tag":"1.2.4","options":{},"digest":"sha256:ca33b0b10fe497648ed9b6c14ed66336f245410bdd2bfc74ae99f49ffcf53ee9"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-k2/32/1654006719238.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-k2/64/1654006719238.png","128":null}},{"id":"keboola.ex-kafka","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":50,"name":"Kafka","type":"extractor","shortDescription":"Consumes messages from Apache Kafka topics.","longDescription":"The Kafka Extractor subscribes to selected topics and saves the messages to Keboola by creating one table per topic and appending each message as a new row.\nIt supports text, Avro, and JSON (schemaless) payloads.\n\nMore information about the functionality and how to configure component it can be found in the [documentation](https://github.com/keboola/component-kafka/blob/master/components/ex-kafka/README.md).","licenseUrl":"https://github.com/keboola/component-kafka/blob/master/components/ex-kafka/LICENSE.md","documentationUrl":"https://github.com/keboola/component-kafka/blob/master/components/ex-kafka/README.md","sourceCodeUrl":"https://github.com/keboola/component-kafka/blob/master/components/ex-kafka","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Application configuration","required":["bootstrap_servers"],"properties":{"#ssl_ca":{"type":"string","title":"SSL CA","format":"textarea","options":{"tooltip":"Insert the entire contents of the .pem file, including newlines. Once saved, the value will be encrypted.","dependencies":{"security_protocol":["SSL","SASL_SSL"]}},"propertyOrder":6},"#ssl_key":{"type":"string","title":"SSL Key","format":"textarea","options":{"tooltip":"Insert the entire contents of the .pem file, including newlines. Once saved, the value will be encrypted.","dependencies":{"security_protocol":["SSL","SASL_SSL"]}},"propertyOrder":7},"username":{"type":"string","title":"Username","options":{"dependencies":{"security_protocol":["SASL_PLAINTEXT","SASL_SSL"]}},"propertyOrder":4},"#password":{"type":"string","title":"Password","format":"password","options":{"dependencies":{"security_protocol":["SASL_PLAINTEXT","SASL_SSL"]}},"propertyOrder":5},"sasl_mechanism":{"enum":["PLAIN","SCRAM-SHA-512"],"type":"string","title":"SASL mechanism","options":{"enum_titles":["PLAIN","SCRAM-SHA-512"],"dependencies":{"security_protocol":["SASL_PLAINTEXT","SASL_SSL"]}},"propertyOrder":3},"#ssl_certificate":{"type":"string","title":"SSL Certificate","format":"textarea","options":{"tooltip":"Insert the entire contents of the .pem file, including newlines. Once saved, the value will be encrypted.","dependencies":{"security_protocol":["SSL","SASL_SSL"]}},"propertyOrder":8},"bootstrap_servers":{"type":"array","items":{"enum":[],"type":"string"},"title":"Bootstrap servers","format":"select","options":{"tags":true},"description":"A list of one or more bootstrap servers in the Kafka cluster, specified in the format host:port.","uniqueItems":true,"propertyOrder":1},"security_protocol":{"enum":["PLAINTEXT","SSL","SASL_PLAINTEXT","SASL_SSL"],"type":"string","title":"Security protocol","options":{"enum_titles":["PLAINTEXT","SSL","SASL_PLAINTEXT","SASL_SSL"]},"propertyOrder":2},"kafka_extra_params":{"type":"string","title":"Additional Kafka parameters","description":"Dictionary of additional <a href='https://kafka.apache.org/documentation/#configuration'>Kafka parameters</a> in the format {\"auto.offset.reset\": \"earliest\", \"session.timeout.ms\": 6000\n} ","propertyOrder":9}}},"configurationRowSchema":{"type":"object","title":"Parameters","required":[],"properties":{"topics":{"type":"array","items":{"enum":[],"type":"string"},"title":"Topics to subscribe","format":"select","options":{"tags":true,"async":{"label":"Load topics","action":"list_topics"}},"uniqueItems":true,"propertyOrder":1},"schema_str":{"type":"string","title":"Avro schema string","options":{"dependencies":{"schema_source":"user_defined"}},"propertyOrder":5},"deserialize":{"enum":["text","avro","json"],"type":"string","title":"Deserialize message value","options":{"enum_titles":["Text (UTF-8)","Avro","JSON"]},"propertyOrder":2},"destination":{"type":"object","title":"Destination","required":["load_type"],"properties":{"load_type":{"enum":["incremental_load","full_load"],"type":"string","title":"Load Type","default":"incremental_load","options":{"enum_titles":["Incremental Load","Full Load"]},"description":"If Full load is used, the destination table will be overwritten every run. If Incremental Load is used, data will be upserted into the destination table based on the primary key. Append modes do not contain any primary keys and are not deduplicated.","propertyOrder":91},"table_name":{"type":"string","title":"Table name","default":"","description":"(Optional) Specify the table name. If left blank, the topic name will be used.","propertyOrder":92}},"propertyOrder":9},"schema_source":{"enum":["user_defined","schema_registry"],"type":"string","title":"Schema source","options":{"enum_titles":["User defined","From schema registry"],"dependencies":{"deserialize":"avro"}},"propertyOrder":4},"table_preview":{"type":"button","format":"sync-action","options":{"async":{"label":"Message preview","action":"message_preview"}},"propertyOrder":8},"schema_registry_url":{"type":"string","title":"Schema registry URL","options":{"dependencies":{"schema_source":"schema_registry"}},"description":"Schema registry URL including protocol and port (e.g. http://schema-registry:8081)","propertyOrder":6},"schema_registry_extra_params":{"type":"string","title":"Additional Schema Registry parameters","options":{"dependencies":{"schema_source":"schema_registry"}},"description":"Dictionary of additional <a href='https://docs.confluent.io/platform/current/schema-registry/installation/config.html'>Schema Registry parameters</a> in the format {\"exporter.retries.wait.ms\": 2000, \"exporter.max.retries\n\": 5\n} ","propertyOrder":7},"flatten_message_value_columns":{"type":"boolean","title":"Flatten message value","format":"checkbox","options":{"dependencies":{"deserialize":"avro"}},"description":"Store message value columns to table columns","propertyOrder":3}}},"createConfigurationRowSchema":null,"configurationDescription":"For details on how to configure the component, please refer to the [documentation](https://github.com/keboola/component-kafka/blob/master/components/ex-kafka/README.md).","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["list_topics","message_preview"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-kafka","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-kafka","name":"developer-portal-v2/keboola.ex-kafka","tag":"0.0.7","options":{},"digest":"sha256:809ac972848b29094413c0c2383d26338ac7c2fbca1825779fb67d7bb13f5cef"},"publishingStatus":"public","icon":{"32":null,"64":null,"128":null}},{"id":"keboola.wr-kafka","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":50,"name":"Kafka","type":"writer","shortDescription":"Produces messages to an Apache Kafka topic from input table rows.","longDescription":"The Kafka Writer publishes messages from an input table to a specified topic.\nIt supports payloads in text, Avro, and JSON (schemaless) formats.\n\nMore information about the functionality and how to configure component it can be found in the [documentation](https://github.com/keboola/component-kafka/blob/master/components/wr-kafka/README.md).","licenseUrl":"https://github.com/keboola/component-kafka/blob/master/components/wr-kafka/LICENSE.md","documentationUrl":"https://github.com/keboola/component-kafka/blob/master/components/wr-kafka/README.md","sourceCodeUrl":"https://github.com/keboola/component-kafka/tree/master/components/wr-kafka","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-simpleTableInput","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Application configuration","required":["bootstrap_servers"],"properties":{"#ssl_ca":{"type":"string","title":"SSL CA","format":"textarea","options":{"tooltip":"Insert the entire contents of the .pem file, including newlines. Once saved, the value will be encrypted.","dependencies":{"security_protocol":["SSL","SASL_SSL"]}},"propertyOrder":6},"#ssl_key":{"type":"string","title":"SSL Key","format":"textarea","options":{"tooltip":"Insert the entire contents of the .pem file, including newlines. Once saved, the value will be encrypted.","dependencies":{"security_protocol":["SSL","SASL_SSL"]}},"propertyOrder":7},"username":{"type":"string","title":"Username","options":{"dependencies":{"security_protocol":["SASL_PLAINTEXT","SASL_SSL"]}},"propertyOrder":4},"#password":{"type":"string","title":"Password","format":"password","options":{"dependencies":{"security_protocol":["SASL_PLAINTEXT","SASL_SSL"]}},"propertyOrder":5},"sasl_mechanism":{"enum":["PLAIN","SCRAM-SHA-512"],"type":"string","title":"SASL mechanism","options":{"enum_titles":["PLAIN","SCRAM-SHA-512"],"dependencies":{"security_protocol":["SASL_PLAINTEXT","SASL_SSL"]}},"propertyOrder":3},"#ssl_certificate":{"type":"string","title":"SSL Certificate","format":"textarea","options":{"tooltip":"Insert the entire contents of the .pem file, including newlines. Once saved, the value will be encrypted.","dependencies":{"security_protocol":["SSL","SASL_SSL"]}},"propertyOrder":8},"bootstrap_servers":{"type":"array","items":{"enum":[],"type":"string"},"title":"Bootstrap servers","format":"select","options":{"tags":true},"description":"A list of one or more bootstrap servers in the Kafka cluster, specified in the format host:port.","uniqueItems":true,"propertyOrder":1},"security_protocol":{"enum":["PLAINTEXT","SSL","SASL_PLAINTEXT","SASL_SSL"],"type":"string","title":"Security protocol","options":{"enum_titles":["PLAINTEXT","SSL","SASL_PLAINTEXT","SASL_SSL"]},"propertyOrder":2},"kafka_extra_params":{"type":"string","title":"Additional Kafka parameters","description":"Dictionary of additional <a href='https://kafka.apache.org/documentation/#configuration'>Kafka parameters</a> in the format {\"auto.offset.reset\": \"earliest\", \"session.timeout.ms\": 6000\n} ","propertyOrder":9}}},"configurationRowSchema":{"type":"object","title":"Parameters","required":[],"properties":{"topic":{"enum":[],"type":"string","items":{"enum":[],"type":"string"},"title":"Topic to write","options":{"async":{"cache":false,"label":"Load topics","action":"list_topics","autoload":[]}},"propertyOrder":1},"key_value":{"type":"string","title":"Key","options":{"dependencies":{"key_source":"configuration"}},"propertyOrder":10},"serialize":{"enum":["text","avro","json","no"],"type":"string","title":"Serialize message value","options":{"enum_titles":["Text (UTF-8)","Avro","JSON","No serialization (payload in input table is already serialized)"]},"propertyOrder":2},"key_source":{"enum":["input_table","configuration"],"type":"string","title":"Messages Key Source","default":"from_input_table","options":{"enum_titles":["Input Table","Configuration"]},"description":"Key of the messages can either be specified for each message in the input table, or defined once for the entire table.","propertyOrder":8},"schema_str":{"type":"string","title":"Avro schema string","options":{"dependencies":{"schema_source":"user_defined"}},"propertyOrder":5},"schema_source":{"enum":["user_defined","schema_registry"],"type":"string","title":"Serialization schema source","options":{"enum_titles":["User defined","From schema registry"],"dependencies":{"serialize":"avro"}},"propertyOrder":4},"key_column_name":{"type":"string","title":"Key column name","watch":{"columns":"_metadata_.table.columns"},"options":{"dependencies":{"key_source":"input_table"}},"enumSource":"columns","propertyOrder":9},"value_column_names":{"type":"array","items":{"type":"string","watch":{"columns":"_metadata_.table.columns"},"enumSource":"columns"},"title":"Message value columns","format":"select","options":{"tags":true},"description":"Columns to be added to the message value payload, if empty all columns will be added.","uniqueItems":true,"propertyOrder":11},"schema_registry_url":{"type":"string","title":"Schema registry URL","options":{"dependencies":{"schema_source":"schema_registry"}},"description":"Schema registry URL including protocol and port (e.g. http://schema-registry:8081)","propertyOrder":6},"schema_registry_extra_params":{"type":"string","title":"Additional Schema Registry parameters","options":{"dependencies":{"schema_source":"schema_registry"}},"description":"Dictionary of additional <a href='https://docs.confluent.io/platform/current/schema-registry/installation/config.html'>Schema Registry parameters</a> in the format {\"exporter.retries.wait.ms\": 2000, \"exporter.max.retries\n\": 5\n} ","propertyOrder":7}}},"createConfigurationRowSchema":null,"configurationDescription":"For details on how to configure the component, please refer to the [documentation](https://github.com/keboola/component-kafka/blob/master/components/wr-kafka/README.md).","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["list_topics"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.wr-kafka","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-kafka","name":"developer-portal-v2/keboola.wr-kafka","tag":"0.0.5","options":{},"digest":"sha256:9a6acf81dd6c4d7c33ef24e618dcd7ccbecaeb39131e77602b8a15f94101f824"},"publishingStatus":"public","icon":{"32":null,"64":null,"128":null}},{"id":"kds-team.processor-kb-account-statement-parser","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":414,"name":"KB PDF Account Statement Parser","type":"processor","shortDescription":"Parses Komercni Banka PDF account statements into statement and metadata CSV tables.","longDescription":"Komercni Banka PDF Account Statement Parser long description","licenseUrl":"https://github.com/keboola/processor-kb-account-statement-parser/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/processor-kb-account-statement-parser/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/processor-kb-account-statement-parser","requiredMemory":"1024m","processTimeout":7200,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":[],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"extractor configuration","required":["print_hello"],"properties":{"debug":{"type":"boolean","title":"Debug"},"print_hello":{"type":"boolean","title":"Print Hello"}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"Configuration description.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":414,"uri":"docker/kds-team.processor-kb-account-statement-parser","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.processor-kb-account-statement-parser","name":"developer-portal-v2/kds-team.processor-kb-account-statement-parser","tag":"0.4.4","options":{},"digest":"sha256:860542c5fb0647da8cafdeedcc90ba67489942f53dff4da039da585fd505bc3e"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.processor-kb-account-statement-parser/32/1652688500649.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.processor-kb-account-statement-parser/64/1652688500649.png","128":null}},{"id":"keboola.app-data-gateway","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":291,"name":"Keboola Data Gateway","type":"application","shortDescription":"Keboola Data Gateway creates a read-only Snowflake workspace and loads selected tables from your project.","longDescription":"Keboola Data Gateway creates a read-only Snowflake workspace and loads selected tables from your project.","licenseUrl":"https://github.com/keboola/component-data-gateway/blob/master/LICENSE.md","documentationUrl":"https://help.keboola.com/components/applications/data-gateway/","sourceCodeUrl":"https://github.com/keboola/component-data-gateway","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":true,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-tableInput"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","$defs":{"credentials":{"type":"object","required":["host","user","database","schema"],"properties":{"host":{"type":"string"},"port":{"type":["string","integer"],"default":443},"role":{"type":"string"},"user":{"type":"string"},"driver":{"type":"string"},"region":{"type":"string"},"schema":{"type":"string"},"account":{"type":"string"},"database":{"type":"string"},"loginType":{"type":"string"},"warehouse":{"type":"string"},"#privateKey":{"type":"string"},"workspaceId":{"type":"integer"},"ssoLoginAvailable":{"type":"boolean"}}}},"title":"keboola.app-data-gateway — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","required":["db"],"properties":{"db":{"$ref":"#/$defs/credentials"}}},"configurationRowSchema":{"type":"object","title":"keboola.app-data-gateway — Row Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"clone":{"type":"boolean"},"items":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"size":{"type":["string","integer","null"]},"type":{"type":"string"},"dbName":{"type":"string"},"default":{"type":["string","null"]},"nullable":{"type":"boolean"}}}},"dbName":{"type":"string"},"tables":{"type":"array","options":{"async":{"label":"Re-load tables","action":"getTables"}}},"tableId":{"type":"string"},"primaryKey":{"type":"array","items":{"type":"string"}},"incremental":{"type":"boolean"}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["clean_workspace"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"none","stagingStorageOutput":"none","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.app-data-gateway","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.app-data-gateway","name":"developer-portal-v2/keboola.app-data-gateway","tag":"0.0.19","options":{},"digest":"sha256:a26ae7ddbc14c1f77cb5dbf05acb6b7ecc3d5c09334f2a7d8f6aec2cc2721bc5"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.app-data-gateway/32/1753429924487.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.app-data-gateway/64/1753429924487.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.app-data-gateway/128/1753429924487.png"}},{"id":"keboola.ex-storage","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":55,"name":"Keboola Storage","type":"extractor","shortDescription":"Importing data from another Keboola project.","longDescription":"This component reads single or multiple tables from Keboola projects that are unrelated to your current project, or are from different regions. The data is then stored in a bucket in your current project. \n\nFor sharing data within a single organization, use the [Shared Buckets](https://help.keboola.com/storage/buckets/sharing/) feature.\n\nTo configure this extractor, you need to have a [Storage API token](https://help.keboola.com/management/project/tokens/)  with read-only access to a **single bucket** of the project from which you want to import.\n\nIncremental load is optional.","licenseUrl":"https://github.com/keboola/ex-storage/blob/master/LICENSE","documentationUrl":"https://help.keboola.com/components/extractors/storage/storage-api/","sourceCodeUrl":"https://github.com/keboola/ex-storage/","requiredMemory":"1024m","processTimeout":14400,"features":["container-root-user"],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Database"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"keboola.ex-storage — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"url":{"type":"string"},"#token":{"type":"string"}}},"configurationRowSchema":{"type":"object","title":"keboola.ex-storage — Row Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"fullSync":{"type":"boolean"},"tableName":{"type":"string"},"primaryKey":{"type":"array","items":{"type":"string"}},"incremental":{"type":"boolean"},"changedSince":{"type":"string"},"extractMetadata":{"type":"boolean"}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["list","info","sourceInfo"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-storage","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-storage","name":"developer-portal-v2/keboola.ex-storage","tag":"1.2.0","options":{},"digest":"sha256:ff6ef2fe4303646863032b930961993a7d0781bfd658d3904b1e9cc07eef41a0"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-storage/32/1576251944161.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-storage/64/1576251944161.png","128":null}},{"id":"keboola.wr-storage","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":61,"name":"Keboola Storage","type":"writer","shortDescription":"Exporting data to another Keboola project.","longDescription":"This component writes tables to Keboola Storage. It enables writing to projects unrelated to your project, as well as to different regions. For sharing data within a single organization, use the [Shared Buckets feature](https://help.keboola.com/storage/buckets/sharing/).\n\nTo configure the writer, you need to provide a Storage token with permissions to write to a **single bucket**.","licenseUrl":"https://github.com/keboola/wr-storage/blob/master/LICENSE","documentationUrl":"https://help.keboola.com/writers/storage/storage-api/","sourceCodeUrl":"https://github.com/keboola/wr-storage","requiredMemory":"300m","processTimeout":36000,"features":["container-root-user","dev-branch-configuration-unsafe"],"encryption":true,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Database"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"keboola.wr-storage — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"url":{"type":"string"},"#token":{"type":"string"}}},"configurationRowSchema":{"type":"object","title":"keboola.wr-storage — Row Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"mode":{"enum":["update","replace","recreate"],"type":"string"}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["info"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.wr-storage","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-storage","name":"developer-portal-v2/keboola.wr-storage","tag":"1.4.2","options":{},"digest":"sha256:6077fba054dae04288371b4fa5599dd19e4f69c45c169bfcd335d44cea5786b0"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-storage/32/1576251949270.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-storage/64/1576251949270.png","128":null}},{"id":"kds-team.ex-klaviyo-v2","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":473,"name":"Klaviyo V2","type":"extractor","shortDescription":"Extracts campaigns, profiles, metrics, events, and flows from Klaviyo.","longDescription":"This component uses the Klaviyo APIs to extract data on all objects from Klaviyo. ","licenseUrl":"https://github.com/keboola/component-klaviyo-v2/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-klaviyo-v2/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-klaviyo-v2","requiredMemory":null,"processTimeout":28800,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Authorization configuration","required":["#api_token"],"properties":{"#api_token":{"type":"string","title":"API Token","format":"password","description":"<a href=\"https://help.klaviyo.com/hc/en-us/articles/7423954176283#add-a-scope-to-a-private-api-key-2\">Private API Key</a> with Read-Only access to all Klaviyo Objects","propertyOrder":1},"test_connection":{"type":"button","format":"sync-action","options":{"async":{"label":"TEST CONNECTION","action":"validate_connection"}},"propertyOrder":30}}},"configurationRowSchema":{"id":"rootschema","type":"object","title":"Configuration","required":["objects"],"properties":{"objects":{"type":"object","title":"Endpoints","format":"grid-strict","properties":{"flows":{"type":"boolean","title":"Flows","format":"checkbox","default":true,"options":{"grid_columns":3}},"lists":{"type":"boolean","title":"Lists","format":"checkbox","default":true,"options":{"grid_columns":3}},"events":{"type":"boolean","title":"Events","format":"checkbox","default":false,"options":{"grid_columns":3}},"metrics":{"type":"boolean","title":"Metrics","format":"checkbox","default":true,"options":{"grid_columns":3}},"catalogs":{"type":"boolean","title":"Catalog Items","format":"checkbox","default":true,"options":{"grid_columns":3}},"profiles":{"type":"boolean","title":"Profiles","format":"checkbox","default":false,"options":{"grid_columns":3}},"segments":{"type":"boolean","title":"Segments","format":"checkbox","default":true,"options":{"grid_columns":3}},"campaigns":{"type":"boolean","title":"Campaigns","format":"checkbox","default":true,"options":{"grid_columns":3}},"templates":{"type":"boolean","title":"Templates","format":"checkbox","default":true,"options":{"grid_columns":3}},"metric_aggregates":{"type":"boolean","title":"Metric aggregates","format":"checkbox","default":true,"options":{"grid_columns":3}}},"propertyOrder":10},"flows_hidden":{"type":"string","watch":{"flows_hidden":"rootschema.objects.flows"},"options":{"hidden":true},"template":"{{flows_hidden}}"},"dummy_element":{"type":"string","watch":{"events":"objects.events","aggregates":"objects.metric_aggregates"},"options":{"hidden":true},"template":"{{aggregates}}-{{events}}","description":"Helper dummy element to render time range options"},"catalogs_hidden":{"type":"string","watch":{"catalogs_hidden":"rootschema.objects.catalogs"},"options":{"hidden":true},"template":"{{catalogs_hidden}}"},"profiles_hidden":{"type":"string","watch":{"profiles_hidden":"rootschema.objects.profiles"},"options":{"hidden":true},"template":"{{profiles_hidden}}"},"campaigns_hidden":{"type":"string","watch":{"campaigns_hidden":"rootschema.objects.campaigns"},"options":{"hidden":true},"template":"{{campaigns_hidden}}"},"catalogs_settings":{"type":"object","title":"Catalogs - Additional Options","options":{"dependencies":{"catalogs_hidden":"true"}},"properties":{"fetch_catalog_categories":{"type":"boolean","title":"Fetch Catalog Categories","format":"checkbox","default":true,"propertyOrder":10}},"propertyOrder":30},"profiles_settings":{"type":"object","title":"Profiles - Additional Options","options":{"dependencies":{"profiles_hidden":"true"}},"properties":{"fetch_profiles_mode":{"enum":["fetch_all","fetch_by_segment","fetch_by_list"],"type":"string","title":"Fetch Profiles Mode","options":{"enum_titles":["Fetch All Profiles","Fetch Profiles by Segment IDs","Fetch Profiles by List IDs"]},"required":true,"propertyOrder":10},"fetch_profiles_by_list":{"type":"array","items":{"enum":[],"type":"string"},"title":"List IDs","format":"select","options":{"async":{"label":"Load List IDs","action":"loadListIds","autoload":[]},"dependencies":{"fetch_profiles_mode":"fetch_by_list"}},"description":"Select which List IDs you wish to fetch profiles for","uniqueItems":true,"propertyOrder":20},"fetch_profiles_by_segment":{"type":"array","items":{"enum":[],"type":"string"},"title":"Segment IDs","format":"select","options":{"async":{"label":"Load Segment IDs","action":"loadSegmentIds","autoload":[]},"dependencies":{"fetch_profiles_mode":"fetch_by_segment"}},"description":"Select which Segment IDs you wish to fetch profiles for","uniqueItems":true,"propertyOrder":30}},"propertyOrder":60},"campaigns_settings":{"type":"array","items":{"enum":["email","sms"],"type":"string"},"title":"Campaigns - Channel Options","options":{"dependencies":{"campaigns_hidden":"true"}},"properties":{"fetch_campaign_channels":{"enum":["email","sms"],"title":"Fetch Campaign Channels","format":"string","default":true,"propertyOrder":10}},"propertyOrder":40},"time_range_settings":{"type":"object","title":"Time range options","options":{"dependencies":{"dummy_element":["false-true","true-false","true-true"]}},"properties":{"date_to":{"type":"string","title":"Fetch To Date","default":"now","description":"Date to which data is downloaded. Either date in YYYY-MM-DD format or relative date string i.e. 5 days ago, 1 month ago, now, etc.","propertyOrder":20},"date_from":{"type":"string","title":"Fetch From Date","default":"last run","description":"Date from which data is downloaded. Either date in YYYY-MM-DD format or relative date string i.e. 5 days ago, 1 month ago, yesterday, etc. You can also set this as last run, which will fetch data from the last run of the component.","propertyOrder":10}},"description":"This setting applies to the following endpoints: Events, Metric Aggregates.","propertyOrder":50},"store_nested_attributes":{"type":"boolean","title":"Store Nested Attributes","format":"checkbox","default":false,"description":"You can use this options if you are fetching deeply nested attributes and you are encountering Output mapping errors due to 64 characters limit for columns.","propertyOrder":20},"metric_aggregates_hidden":{"type":"string","watch":{"metric_aggregates_hidden":"rootschema.objects.metric_aggregates"},"options":{"hidden":true},"template":"{{metric_aggregates_hidden}}"},"metric_aggregates_settings":{"type":"object","title":"Metric aggregates - Additional Options","options":{"dependencies":{"metric_aggregates_hidden":"true"}},"properties":{"metric_aggregates_ids":{"type":"array","items":{"enum":[],"type":"string"},"title":"Metric IDs","format":"select","options":{"async":{"label":"Load Metric IDs","action":"loadMetricIds","autoload":[]}},"description":"Select which Metric IDs you wish to download aggregates values for.","uniqueItems":true,"propertyOrder":10},"metric_aggregates_interval":{"enum":["hour","day","week","month"],"type":"string","title":"Aggregate interval","default":"day","propertyOrder":20},"metric_aggregates_partitioning_by":{"type":"array","items":{"type":"string"},"title":"Partitioning by","description":"Optional attribute(s) used for partitioning by the aggregation function","uniqueItems":true,"propertyOrder":30}},"propertyOrder":70}}},"createConfigurationRowSchema":null,"configurationDescription":"# Prerequisites\nto get your API Token:\n\n1. Log into your Klaviyo platform\n2. Your profile name (bottom left)\n3. Account\n4. Settings\n5. API Keys\n6. Create Private API Key with Read-Only privileges\n\nFor more information follow [this guide on from Klaviyo](https://developers.klaviyo.com/en/docs/retrieve_api_credentials)\n\n# Supported endpoints\n\n- [Campaigns](https://developers.klaviyo.com/en/v1-2/reference/get-campaigns)\n- [Catalogs](https://developers.klaviyo.com/en/reference/get_catalog_items)\n- [Segments](https://developers.klaviyo.com/en/reference/get_segments)\n- [Lists](https://developers.klaviyo.com/en/reference/get_lists)\n- [Profiles](https://developers.klaviyo.com/en/reference/get_profiles)\n- [Metrics](https://developers.klaviyo.com/en/reference/get_metrics)\n- [Events](https://developers.klaviyo.com/en/reference/get_events)\n- [Metric aggergates](https://developers.klaviyo.com/en/reference/query_metric_aggregates)\n\n# Limitations\n\nWhen fetching profiles the maximum amount of profiles is 25,000 due to fetching times. If you wish to fetch more, \nit is recommended to create multiple segments or lists and download them in multiple runs of the component.\n\n## Metric aggregates limtation\n\nWhen using the by parameter to aggregate data over a specified period, if no data is available for the selected time range, the endpoint returns a single aggregated value instead of a list of values for each aggregated period. In such cases, the returned values are supplemented with null values, which can result in empty columns in the output of the consuming component. This occurs because the endpoint does not return the expected data points for each aggregation period.\n\nThis behavior should be considered when processing the results, as the absence of data for specific periods may affect the integrity of the final output.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":{"parameters":{"objects":{"flows":true,"lists":true,"events":false,"metrics":true,"catalogs":true,"profiles":false,"segments":true,"campaigns":true,"templates":true},"flows_hidden":"true","events_hidden":"false","catalogs_hidden":"true","profiles_hidden":"false","campaigns_hidden":"true","catalogs_settings":{"fetch_catalog_categories":true}}},"actions":["loadListIds","loadMetricIds","loadSegmentIds","validate_connection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.ex-klaviyo-v2","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-klaviyo-v2","name":"developer-portal-v2/kds-team.ex-klaviyo-v2","tag":"0.3.5","options":{},"digest":"sha256:b16523e15e088e926d9abbdc9a8136385896f1179e6ee14d6db74897f458815d"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-klaviyo-v2/32/1673260199525.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-klaviyo-v2/64/1673260199525.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-klaviyo-v2/128/1673260199525.png"}},{"id":"keboola.ex-langsmith-traces","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":49,"name":"LangSmith Traces","type":"extractor","shortDescription":"Extracts LangSmith run history and feedback into two incremental tables.","longDescription":"ls","licenseUrl":"https://github.com/keboola-rnd/langsmith-trace-extractor/blob/master/LICENSE.md","documentationUrl":"https://help.keboola.com/components/extractors/other/langsmith-traces/","sourceCodeUrl":"https://github.com/keboola/component-langsmith-traces","requiredMemory":"2048m","processTimeout":14400,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-resetState","appInfo.experimental"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"LangSmith Traces Extractor","required":["#langsmith_api_key","date_from"],"ui:order":[{"type":"block","title":"Credentials","elements":["#langsmith_api_key","langsmith_api_url","test_connection"]},{"type":"block","title":"Scope","elements":["project_names","date_from","date_to"],"description":"Control which LangSmith projects and time range are extracted."},{"type":"block","title":"Advanced Parameters","elements":["advanced"],"collapsible":true}],"properties":{"date_to":{"type":"string","title":"Fetch To","default":"Now","description":"End of the interval.","propertyOrder":40},"advanced":{"type":"object","title":"Advanced Parameters","properties":{"max_retries":{"type":"integer","title":"Max Retries","default":5,"minimum":0,"description":"Number of retry attempts when the LangSmith API throttles requests."},"feedback_batch_size":{"type":"integer","title":"Feedback Batch Size","default":200,"minimum":1,"description":"Number of runs processed together when fetching feedback; decrease if you hit memory limits."}},"propertyOrder":200},"date_from":{"type":"string","title":"Fetch From","default":"7 days ago","description":"Supports ISO 8601 timestamps (e.g. 2024-01-01T00:00:00Z) or relative phrases like '7 days ago'.","propertyOrder":30},"project_names":{"type":"array","items":{"enum":[],"type":"string"},"title":"Projects","format":"select","options":{"async":{"label":"Reload projects","action":"listProjects","autoload":["parameters.#langsmith_api_key"]}},"description":"Leave empty to sync every project available to the API key, or pick specific projects from the list.","uniqueItems":true,"propertyOrder":20},"test_connection":{"type":"button","format":"test-connection","propertyOrder":15},"langsmith_api_url":{"type":"string","title":"LangSmith API URL","description":"Optional custom LangSmith API URL. Use 'https://eu.api.smith.langchain.com' for the EU instance. Leave empty to use the default US instance (https://api.smith.langchain.com).","propertyOrder":12},"#langsmith_api_key":{"type":"string","title":"LangSmith API Key","format":"password","description":"Create a LangSmith user API key and paste it here. The value is stored encrypted.","propertyOrder":10}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"Configuration description.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["listProjects","testConnection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-langsmith-traces","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-langsmith-traces","name":"developer-portal-v2/keboola.ex-langsmith-traces","tag":"0.2.0","options":{},"digest":"sha256:9c267fa43437502f9da41d070d5220a85069dc0b85a94135ae8e0a67650c120e"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-langsmith-traces/32/1758616184579.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-langsmith-traces/64/1758616184579.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-langsmith-traces/128/1758616184579.png"}},{"id":"keboola.processor-last-file","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":19,"name":"Last File","type":"processor","shortDescription":"Select last file with a tag","longDescription":"Select last file with a tag.","licenseUrl":"https://github.com/keboola/processor-last-file/blob/master/LICENSE","documentationUrl":"https://github.com/keboola/processor-last-file/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/processor-last-file","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":[],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":null,"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.processor-last-file","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.processor-last-file","name":"developer-portal-v2/keboola.processor-last-file","tag":"0.3.1","options":{},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.processor-last-file/32/1576251954312.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.processor-last-file/64/1576251954312.png","128":null}},{"id":"keboola.processor-line-endings","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":10,"name":"Line endings","type":"processor","shortDescription":"Normalizes line endings to unix type","longDescription":null,"licenseUrl":null,"documentationUrl":"https://github.com/keboola/processor-line-endings/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/processor-line-endings","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":[],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":null,"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":10,"uri":"docker/keboola.processor-line-endings","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.processor-line-endings","name":"developer-portal-v2/keboola.processor-line-endings","tag":"0.2.0","options":{},"digest":"sha256:286229a93011d0ed5ad777282eaaf542d66c45204f3d700c6a05d9da5cff7e2d"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.processor-line-endings/32/1576251959356.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.processor-line-endings/64/1576251959356.png","128":null}},{"id":"keboola.ex-linkedin-ads","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":34,"name":"Linkedin Ads","type":"extractor","shortDescription":"Extracts accounts, campaigns, creatives, and analytics from LinkedIn Ads.","longDescription":"The LinkedIn Ads extractor pulls advertising data from your LinkedIn Ads accounts into Keboola. It supports extracting accounts, campaigns, creatives, and analytics with configurable time granularity (daily, monthly, or all-time) and date ranges. Incremental syncs are supported via the `last_run` date expression, allowing continuous updates from the last successful execution.","licenseUrl":"https://github.com/keboola/component-linkedin-ads/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/component-linkedin-ads/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/component-linkedin-ads","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Social"],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-authorization","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"LinkedIn Ads Extractor","properties":{"debug":{"type":"boolean","title":"Debug Mode","default":false,"description":"Enable verbose debug logging. Useful for diagnosing issues — leave off in production.","propertyOrder":2}}},"configurationRowSchema":{"type":"object","title":"Ad Account Configuration","required":["ad_account_id","endpoint"],"properties":{"date_end":{"type":"string","title":"Date End","default":"today","options":{"dependencies":{"endpoint":"analytics"}},"description":"End of the analytics sync range. Use 'today', '1 day ago', or an absolute date 'YYYY-MM-DD'.","propertyOrder":5},"endpoint":{"enum":["accounts","campaigns","creatives","analytics"],"type":"string","title":"Endpoint to Sync","default":"analytics","options":{"enum_titles":["Accounts","Campaigns","Creatives","Analytics"]},"description":"Select which LinkedIn Ads resource to extract.","propertyOrder":2},"date_start":{"type":"string","title":"Date Start","default":"last_run","options":{"dependencies":{"endpoint":"analytics"}},"description":"Start of the analytics sync range. Use 'last_run' to continue from the last successful run (falls back to 365 days ago on first run), or any dateparser expression such as 'today', '7 days ago', '1 month ago', or an absolute date 'YYYY-MM-DD'.","propertyOrder":4},"ad_account_id":{"enum":[],"type":"string","title":"Ad Account","format":"select","options":{"async":{"label":"Load Accounts","action":"list_accounts","autoload":false},"creatable":true},"description":"Select your LinkedIn Ads account. Click 'Load Accounts' after authorizing, or type the numeric account ID directly.","propertyOrder":1},"analytics_granularity":{"enum":["DAILY","MONTHLY","ALL_TIME"],"type":"string","title":"Analytics Granularity","default":"DAILY","options":{"enum_titles":["Daily","Monthly","All Time (total)"],"dependencies":{"endpoint":"analytics"}},"description":"Time granularity for analytics aggregation.","propertyOrder":3}}},"createConfigurationRowSchema":null,"configurationDescription":"Configuration description.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["list_accounts"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-linkedin-ads","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-linkedin-ads","name":"developer-portal-v2/keboola.ex-linkedin-ads","tag":"0.0.3","options":{},"digest":"sha256:926e65b4c22f982fcd2857d429dd140239c644d876702935023c34d19e09cbbf"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-linkedin-ads/32/1779264333097.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-linkedin-ads/64/1779264333097.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-linkedin-ads/128/1779264333097.png"}},{"id":"leochan.ex-linkedin","vendor":{"id":"leochan","name":"Leo Chan","address":"Richmond, BC","email":"cleojanten@hotmail.com","type":"other"},"version":43,"name":"LinkedIn Ads","type":"extractor","shortDescription":"LinkedIn Ad's Statistics","longDescription":"Extract Campaign Ad's statistics from LinkedIn Ads to Keboola Connection Platform (KBC).\n\n### Retention\n|timeGranularity|Demographic|Non-Demographic|\n|-|-|-|\n|DAILY|Last 6 months|Last 10 Years|\n|MONTHLY|Last 2 years|Last 10 Years|\n|YEARLY|Last 2 years|Last 10 Years|\n|ALL|Last 2 years|Last 10 Years|\n\n### Pre-Configured Templates: \n\n1. Ads Analytics V2\n    - Extracting all campaign statistics with custom configured date range\n2. Ads Analytics V2 - Last 7 days\n    - Extracting all campaign statistics for the last 7 days\n\n### Important Parameters:\n\n1. Pivot\n    - Pivot of the results which each report data point is grouped by\n2. Time Granularity\n    - Time granularity of the results\n3. Start Year / Start Month / Start Day\n    - The inclusive start time range of the analytics\n    - Any inputs in these fields within the \"Today\"'s template will be ignored\n4. End Year / End Month / End Day\n    - The inclusive end time range of the analytics\n    - Any inputs in these fields within the \"Today\"'s template will be ignored\n        \n**Note: Templates can be switched to JSON formatted template for customization.**\n\n","licenseUrl":"https://bitbucket.org/chanleoc/kbc_linkedin/src/ef69bf3c5f92dfafccfa7b2ff9f3559d48fbc329/LICENSE.md?at=master&fileviewer=file-view-default","documentationUrl":"https://bitbucket.org/chanleoc/kbc_linkedin","sourceCodeUrl":null,"requiredMemory":null,"processTimeout":28800,"features":["container-root-user"],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Social","Advertisement"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-authorization","genericTemplatesUI","appInfo.dataIn"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["config"],"properties":{"config":{"type":"object","title":"Config","required":["pivot","timeGranularity","start_year","start_month","start_day","end_year","end_month","end_day"],"properties":{"pivot":{"enum":["COMPANY","ACCOUNT","CAMPAIGN","CAMPAIGN_GROUP"],"type":"string","title":"Pivot","default":"CAMPAIGN","description":"Pivot of results, which each report data point is grouped by. ","propertyOrder":1},"end_day":{"type":"string","title":"End Day","default":"1","minLenght":1,"description":"End time range of the analytics.","propertyOrder":8},"end_year":{"type":"string","title":"End Year","default":"2020","minLenght":4,"description":"End time range of the analytics.","propertyOrder":6},"end_month":{"type":"string","title":"End Month","default":"1","minLength":1,"description":"End time range of the analytics.","propertyOrder":7},"start_day":{"type":"string","title":"Start Day","default":"1","minLenght":1,"description":"Start time range of the analytics.","propertyOrder":5},"start_year":{"type":"string","title":"Start Year","default":"2020","minLenght":4,"description":"Start time range of the analytics.","propertyOrder":3},"start_month":{"type":"string","title":"Start Month","default":"1","minLength":1,"description":"Start time range of the analytics.","propertyOrder":4},"timeGranularity":{"enum":["ALL","DAILY","MONTHLY","YEARLY"],"type":"string","title":"Time Granularity","default":"DAILY","description":"The retention period for the data.","propertyOrder":2}}}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"### Pre-Configured Templates: \n\n1. Ads Analytics V2\n    - Extracting all campaign statistics with custom configured date range\n2. Ads Analytics V2 - Last 7 days\n    - Extracting all campaign statistics for the last 7 days\n\n### Important Parameters:\n\n1. Pivot\n    - Pivot of the results which each report data point is grouped by\n2. Time Granularity\n    - Time granularity of the results\n3. Start Year / Start Month / Start Day\n    - The inclusive start time range of the analytics\n    - Any inputs in these fields within the \"Today\"'s template will be ignored\n4. End Year / End Month / End Day\n    - The inclusive end time range of the analytics\n    - Any inputs in these fields within the \"Today\"'s template will be ignored\n        \n**Note: Templates can be switched to JSON formatted template for customization.**\n","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/leochan.ex-linkedin","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/ex-generic-v2","name":"developer-portal-v2/ex-generic-v2","tag":"3.7.7","options":{},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/leochan.ex-linkedin/32/1674035698771.png","64":"https://ui.keboola-assets.com/developer-portal/icons/leochan.ex-linkedin/64/1674035698771.png","128":"https://ui.keboola-assets.com/developer-portal/icons/leochan.ex-linkedin/128/1674035698771.png"}},{"id":"kds-team.ex-linkedin-pages","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":673,"name":"LinkedIn Pages (Organic)","type":"extractor","shortDescription":"Extracts LinkedIn Pages organizations, posts, and page/follower/share statistics.","longDescription":"This extractor downloads data about organizations, their posts, and statistics about performance of their pages, as well as tables of enumerated types used therein.","licenseUrl":"https://github.com/keboola/component-linkedin-pages/blob/main/LICENSE.md","documentationUrl":"https://help.keboola.com/components/extractors/marketing-sales/linkedin-pages/","sourceCodeUrl":"https://github.com/keboola/component-linkedin-pages","requiredMemory":null,"processTimeout":10800,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-authorization"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"LinkedIn Organization Configuration","properties":{"organizations_array":{"type":"array","items":{"enum":[],"type":"string"},"title":"Organization IDs","format":"select","options":{"async":{"label":"Load organizations","action":"get_organizations"}},"description":"Organisations to include in export; if empty, all are downloaded.","uniqueItems":true,"propertyOrder":10}}},"configurationRowSchema":{"type":"object","title":"Configuration Parameters","required":["endpoints","destination"],"properties":{"endpoints":{"enum":["page_statistics_time_bound","page_statistics_lifetime","follower_statistics_time_bound","follower_statistics_lifetime","share_statistics_time_bound","share_statistics_lifetime","posts","enumerated_types","organizations"],"type":"string","title":"Endpoints","options":{"enum_titles":["Page Statistics (Time-Bound)","Page Statistics (Lifetime)","Follower Statistics (Time-Bound)","Follower Statistics (Lifetime)","Share Statistics (Time-Bound)","Share Statistics (Lifetime)","Posts","Enumerated Types","Organizations"]},"description":"Select the data you wish to download. Lifetime statistics provide current totals. Time-bound statistics retrieve data about the specified time range with daily granularity.","propertyOrder":10},"destination":{"type":"object","title":"Destination","required":["load_type"],"properties":{"load_type":{"enum":["full_load","incremental_load"],"type":"string","title":"Load Type","default":"incremental_load","options":{"enum_titles":["full load","incremental load"]},"description":"If full load is used, the destination table will be overwritten every run. If incremental load is used, data will be upserted into the destination table.","propertyOrder":20}},"propertyOrder":400},"sync_options":{"type":"object","title":"Sync Options","options":{"dependencies":{"endpoints":["page_statistics_time_bound","follower_statistics_time_bound","share_statistics_time_bound"]}},"required":["date_from","date_to"],"properties":{"date_to":{"type":"string","title":"Date To","default":"now","description":"Date to which data is downloaded. Either date in YYYY-MM-DD format or dateparser string; i.e., 5 days ago, 1 month ago, now, etc. Values always get rounded down to the beginning of the day.","propertyOrder":30},"date_from":{"type":"string","title":"Date From","default":"last run","description":"Date from which data is downloaded. Either date in YYYY-MM-DD format or dateparser string; i.e., 5 days ago, 1 month ago, yesterday, etc. You can also set this as 'last run', which will fetch data from the last run of the component; if no previous successful run exists, all data since LinkedIn launch (2003-05-05) are downloaded. Values always get rounded down to the beginning of the day.","propertyOrder":20}},"propertyOrder":20}}},"createConfigurationRowSchema":null,"configurationDescription":"## Configuration\n\n### Global configuraiton\n - Organizaton IDs (organizations) - [OPT] Comma separated list of organization ids you wish to fetch data from e.g. 123, 234. If left empty, data from all organizations will be fetched.\n\n### Row configuration\n - Endpoints (endpoints) - [REQ] Select the data you wish to download. Lifetime statistics provide current totals. Time Bound statistics retrieve data about the specified time range with daily granularity. This must be either of these:\n    - Page Statistics (Time Bound) to download time bound [Organization Page Statistics](https://learn.microsoft.com/en-us/linkedin/marketing/integrations/community-management/organizations/page-statistics?view=li-lms-2022-08&tabs=http). The time range is determined by Sync Options (see below).\n    - Page Statistics (Lifetime) to download lifetime [Organization Page Statistics](https://learn.microsoft.com/en-us/linkedin/marketing/integrations/community-management/organizations/page-statistics?view=li-lms-2022-08&tabs=http).\n    - Follower Statistics (Time Bound) to download time bound [Organization Follower Statistics](https://learn.microsoft.com/en-us/linkedin/marketing/integrations/community-management/organizations/follower-statistics?view=li-lms-2022-08&tabs=http). The time range is determined by Sync Options (see below).\n    - Follower Statistics (Lifetime) to download lifetime [Organization Follower Statistics](https://learn.microsoft.com/en-us/linkedin/marketing/integrations/community-management/organizations/follower-statistics?view=li-lms-2022-08&tabs=http).\n    - Share Statistics (Time Bound) to download time bound [Organization Share Statistics](https://learn.microsoft.com/en-us/linkedin/marketing/integrations/community-management/organizations/share-statistics?view=li-lms-2022-08&tabs=http). The time range is determined by Sync Options (see below).\n    - Share Statistics (Lifetime) to download lifetime [Organization Share Statistics](https://learn.microsoft.com/en-us/linkedin/marketing/integrations/community-management/organizations/share-statistics?view=li-lms-2022-08&tabs=http).\n    - Posts to download data about posts, their comments, and their likes.\n    - Enumerated Types to download tables of enumerated types used in other data tables.\n    - Organizations to download data about organizations themselves.\n - Sync Options (sync_options) [OPT] - Options pertaining only to time bound data extraction:\n    - Date From (date_from) - [REQ] Date from which data is downloaded. Either date in `YYYY-MM-DD` format or dateparser string i.e. `5 days ago`, `1 month ago`, `yesterday`, etc. You can also set this as `last run`, which will fetch data from the last run of the component; if no previous successful run exists, all data since LinkedIn launch (2003-05-05) get downloaded. Values always get rounded down to the beginning of the day.\n    - Date To (date_to) - [REQ] Date to which data is downloaded. Either date in `YYYY-MM-DD` format or dateparser string i.e. `5 days ago`, `1 week ago`, `now`, etc. Values always get rounded down to the beginning of the day.\n - Destination (destination) - [REQ] Options specifying how to save extracted data into Keboola Storage:\n    - Load Type (load_type) - [REQ] If Full load is used, the destination table will be overwritten every run. If Incremental load is used, data will be upserted into the destination table.\n\n### Sample Configuration\nThis sample configuration will download daily time bound Organization Follower Statistics about organizations with IDs equal to 69746054 and 76989094 from the day of the last component run up to today (excluded, i. e. today's possibly incomplete data will **not** be included), and upsert the resultant data into the Keboola Storage table called `time_bound_follower_statistics`.\n```json\n{\n    \"organizations\": \"69746054, 76989094\",\n    \"endpoints\": \"follower_statistics_time_bound\",\n    \"sync_options\": {\n        \"date_from\": \"last run\",\n        \"date_to\": \"today\"\n    },\n    \"destination\": {\n        \"load_type\": \"incremental_load\"\n    }\n}\n```\n\n## Output\nThe output of each configuration row is 1 to N tables with hardcoded name(s) as specified below for each case of the Endpoints row configuration option. Where present, time range columns' values are converted from [Unix time](https://en.wikipedia.org/wiki/Unix_time) into [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) encoded date and time strings. Tables are **not** created if they would end up empty.\n\n<!-- List of tables, foreign keys, schema. -->\n### Page Statistics (Time-Bound)\nTime Bound Organization Page Statistics are extracted as a table called `time_bound_page_statistics` that contains all [the fields the API provides](https://learn.microsoft.com/en-us/linkedin/marketing/integrations/community-management/organizations/page-statistics?view=li-lms-2022-08&tabs=http#sample-response-1) unwrapped and flattened as columns (with the underscore `_` used as a separator).\n\nThe primary key is composed of these these columns: `organization`, `timeRange_start`, `timeRange_end`.\n\n### Page Statistics (Lifetime)\nLifetime Organization Page Statistics are extracted as a table called `total_page_statistics` that contains grand totals, and a set of tables called `page_statistics_by_{enumerated_type}` for each available enumerated type that contain metrics sliced by the given enumerated type dimension. All tables contain all [the fields the API provides](https://learn.microsoft.com/en-us/linkedin/marketing/integrations/community-management/organizations/page-statistics?view=li-lms-2022-08&tabs=http#sample-response) unwrapped and flattened as columns (with the underscore `_` used as a separator). \n\nThe primary key is composed of these columns: `organization`, and, where the data is sliced by an enumerated type, `{enumerated_type}`.\n\n### Follower Statistics (Time-Bound)\nTime Bound Organization Follower Statistics are extracted as a table called `time_bound_follower_statistics` that contains all [the fields the API provides](https://learn.microsoft.com/en-us/linkedin/marketing/integrations/community-management/organizations/follower-statistics?view=li-lms-2022-08&tabs=http#sample-response-1) unwrapped and flattened as columns (with the underscore `_` used as a separator).\n\nThe primary key is composed of these these columns: `organizationalEntity`, `timeRange_start`, `timeRange_end`.\n\n### Follower Statistics (Lifetime)\nLifetime Organization Follower Statistics are extracted as a set of tables called `follower_counts_by_{enumerated_type}` for each [available enumerated type](https://learn.microsoft.com/en-us/linkedin/marketing/integrations/community-management/organizations/follower-statistics?view=li-lms-2022-08&tabs=http#demographic-facets) that contain metrics sliced by the given enumerated type dimension. All tables contain all [the fields the API provides](https://learn.microsoft.com/en-us/linkedin/marketing/integrations/community-management/organizations/follower-statistics?view=li-lms-2022-08&tabs=http#sample-response) unwrapped and flattened as columns (with the underscore `_` used as a separator). \n\nThe primary key is composed of these these columns: `organizationalEntity`, and, where the data is sliced by an enumerated type, `{enumerated_type}`.\n\n### Share Statistics (Time-Bound)\nTime Bound Organization Share Statistics are extracted as a table called `time_bound_share_statistics` that contains all [the fields the API provides](https://learn.microsoft.com/en-us/linkedin/marketing/integrations/community-management/organizations/share-statistics?view=li-lms-2022-08&tabs=http#share-statistics-data-schema) unwrapped and flattened as columns (with the underscore `_` used as a separator).\n\nThe primary key is composed of these these columns: `organizationalEntity`, `timeRange_start`, `timeRange_end`.\n\n### Page Statistics (Lifetime)\nLifetime Organization Share Statistics are extracted as a table called `total_share_statistics` that contains all [the fields the API provides](https://learn.microsoft.com/en-us/linkedin/marketing/integrations/community-management/organizations/share-statistics?view=li-lms-2022-08&tabs=http#share-statistics-data-schema) unwrapped and flattened as columns (with the underscore `_` used as a separator).\n\nThe primary key is composed of only the column `organizationalEntity`.\n\n### Posts\nData about posts, their comments, and their likes are extracted as tables called `posts`, `comments`, and `likes`. These tables contain all the fields the API provides for each case: [Posts](https://learn.microsoft.com/en-us/linkedin/marketing/integrations/community-management/shares/posts-api?view=li-lms-2022-08&tabs=http#post-schema), [Comments](https://learn.microsoft.com/en-us/linkedin/marketing/integrations/community-management/shares/comments-api?view=li-lms-2022-08&tabs=http), [Likes](https://learn.microsoft.com/en-us/linkedin/marketing/integrations/community-management/shares/network-update-social-actions?view=li-lms-2022-08&tabs=http#retrieve-likes-on-shares). In each case the fields are flattened as columns (with the underscore `_` used as a separator).\n\nThe primary key is composed of only the column `URN` in case of `likes`, or the column `id` in case of `posts` and `comments`.\n\n### Enumerated types\nAll Enumerated types' values for Countries, Functions, Industries, Regions and Seniorities are extracted as a tables called `countries`, `functions`, `industries`, `regions` and `seniorities` that contain fields needed to make sense of the pertinent dimension slicing in Lifetime Statistics tables. See the [appropriate documentation pages](https://learn.microsoft.com/en-us/linkedin/shared/references/v2/standardized-data?context=linkedin%2Fmarketing%2Fcontext&view=li-lms-2022-08) for more info.\n\nThe primary key is composed of only the column `id`.\n\n### Organizations\nData about each available or specified Organization are extracted as a table called `organizations` that contains all [the fields the API provides](https://learn.microsoft.com/en-us/linkedin/marketing/integrations/community-management/organizations/organization-lookup-api?view=li-lms-2022-08&tabs=http#sample-response) unwrapped and flattened as columns (with the underscore `_` used as a separator).\n\nThe primary key is composed of only the column `id`.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["get_organizations"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":673,"uri":"docker/kds-team.ex-linkedin-pages","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-linkedin-pages","name":"developer-portal-v2/kds-team.ex-linkedin-pages","tag":"0.3.3","options":{},"digest":"sha256:8241fe930e92557cc249a0a3da5a3f9d7f44eef7abbfef62ec32ab416d8c5d24"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-linkedin-pages/32/1677063033341.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-linkedin-pages/64/1677063033341.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-linkedin-pages/128/1677063033341.png"}},{"id":"kds-team.app-liveramp-identity-resolution","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":155,"name":"LiveRamp Identity Resolution","type":"application","shortDescription":"Solving some of the main challenges with customer and prospect data by returning people-based identifiers and metadata for your consumer records","longDescription":"AbiliTec was designed to solve some of the main challenges with customer and prospect data by returning people-based identifiers and metadata for your consumer records. Clients can use these outputs to connect fragmented data sets, move data without sending PII, and increase the accuracy of CRM files.\n\n## Configuration\nThis component has configured to request against 'Match Endpoints'. The input data is taken through a sequence of matching steps utilizing various components of the PII unitl a match to a maintained AbiliTech ID is found.\n\n## API Usage and Rate Limits\n\n - 50 calls per minute\n - If limit is exceed, your calls will fail and an error message will be returned until the minute is up and you are allowed another 50 calls\n\n## Parameters\n\n1. Client ID\n2. Client Secret\n3. Endpoint\n    1. People\n    2. Places\n    3. Households\n    4. Entities\n4. Test Environment\n    - If user wants to fetch related endpoint data from 'Test Environment'","licenseUrl":"https://bitbucket.org/kds_consulting_team/kds-team.app-liveramp-identity-resolution/src/master/LICENSE.md","documentationUrl":"https://bitbucket.org/kds_consulting_team/kds-team.app-liveramp-identity-resolution/src/master/README.md","sourceCodeUrl":"https://bitbucket.org/kds_consulting_team/kds-team.app-liveramp-identity-resolution","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"API configuration","required":["client_id","#client_secret","endpoint","test_environment","incremental_load","debug_mode"],"properties":{"endpoint":{"enum":["people","places","households","entities"],"type":"string","title":"Endpoint","default":"people","options":{"enum_titles":["People","Places","Households","Entities"]},"propertyOrder":300},"client_id":{"type":"string","title":"Client ID","minLength":4,"propertyOrder":100},"debug_mode":{"type":"boolean","title":"Raw Data Output","default":false,"description":"When set to true, additional table with raw API results in JSON format is also produced.","propertyOrder":600},"#client_secret":{"type":"string","title":"Client Secret","format":"password","minLength":4,"propertyOrder":200},"incremental_load":{"enum":[0,1],"type":"number","title":"Load Type","default":0,"options":{"enum_titles":["Full Load","Incremental Load"]},"propertyOrder":500},"test_environment":{"enum":[0,1],"type":"number","title":"Environment","default":0,"options":{"enum_titles":["Production - https://us.identity.api.liveramp.com/v1/","Test - https://test.api.acxiom.com/v1/"]},"propertyOrder":400}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"This component has configured to request against 'Match Endpoints'. The input data is taken through a sequence of matching steps utilizing various components of the PII unitl a match to a maintained AbiliTech ID is found.\n\n## API Usage and Rate Limits\n\n - 50 calls per minute\n - If limit is exceed, your calls will fail and an error message will be returned until the minute is up and you are allowed another 50 calls\n\n## Parameters\n\n1. Client ID\n2. Client Secret\n3. Endpoint\n    1. People\n    2. Places\n    3. Households\n    4. Entities\n4. Test Environment\n    - If user wants to fetch related endpoint data from 'Test Environment'","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"none","200":"normal","250":"normal","300":"normal","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":155,"uri":"docker/kds-team.app-liveramp-identity-resolution","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.app-liveramp-identity-resolution","name":"developer-portal-v2/kds-team.app-liveramp-identity-resolution","tag":"0.1.0","options":{},"digest":"sha256:d2d5a4ef156303f0609e2caf957a973f8c23172241a25406e3c12d98609ff6e8"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-liveramp-identity-resolution/32/1580337364786.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-liveramp-identity-resolution/64/1580337364786.png","128":null}},{"id":"kds-team.ex-looker","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":60,"name":"Looker","type":"extractor","shortDescription":"Extractor for extracting data from Looker looks.","longDescription":"# Looker Extractor for KBC\n\nLooker extractor for KBC is an extension of extractors, which allows user to download data from looks in Looker via Looker API. Currently, the extractor is in development phase. See [documentation](https://github.com/SMKozuch/ex-looker/blob/master/README.md) for more information.\n\n### API Limitations\nThe extractor is limited by **limitations** of Looker API, which currently are:\n\n* If a look has more than 5000 rows and contains pivot columns, these columns along with dimensions will be omitted. Only non-pivoted columns will be downloaded. \n* If a look has less than 5000 rows, everything will be downloaded, without any limitations to pivoting and/or dimensions.\n* If a look does not contain any pivot columns, everything will be downloaded with no limitations to row limit. \n\nIf a limit is specified as `limit=-1`, all the data will be downloaded, even though it might get truncated due to above limitations.\n\n### API secret and key\nObtaining the API secret and key is rather simple. In order to obtain the client secret and id, an admin access is required.\nYou can simply follow this [document](https://discourse.looker.com/t/using-the-looker-api-3/2988)\nor the following steps:\n\n1. Login to the relevant looker instance.\n\n2. Navigate to **Admin** section (top right) and then **Users** in bar on the left.\n\n3. Click on the edit button next to the relevant user.\n\n4. Click on *Edit keys* in **API3 Keys** section.\n\n5. Two scenarios can happen:\n\t* If API keys were generated previously, client id and secret will be displayed on screen.\n\t* If API keys were not generated previously, simply click on *New API3 Key* to generate the credentials.\n\n6. Use obtained client id and secret to authorize the extractor.\n\n### Input\n\nConfiguration schema accepts following parameters:\n\n* **Client ID** - Client ID obtained in the API section of Looker dashboard.\n* **Client Secret** - Client Secret obtained in the API section of Looker dashboard.\n* **API Endpoint** - API Endpoint via which requests are sent.\n* **Look ID** - ID of a look, from which the data should be downloaded. The look is ran automatically.\n* **Destination Table** - A table in KBC Storage, where data will be loaded. If left blank, data will be downloaded to `in.c-looker.looker_data_xx`, where `xx` is equal to ID of a look.\n* **Incremental Load** - Marks, whether load should be incremental.\n* **Primary Key** - Comma-separated columns, which are to be used as PK.\n* **Limit** - Row limit for look. See API Limitations above.\n\nFor more info about Looker API, see [Looker API Documentation](https://docs.looker.com/reference/api-and-integration/api-getting-started).\n\n### Output\n\nOutput of the extractor is a table in storage data for the given look. By default, table is stored in `c-looker` bucket, with ID denoting the table. This behavior can be overwritten by specifying correct and full KBC destination in configuration schema.","licenseUrl":"https://bitbucket.org/kds_consulting_team/kds-team.ex-looker/src/master/LICENSE.md","documentationUrl":"https://bitbucket.org/kds_consulting_team/kds-team.ex-looker/src/fca8cdd1db2ed6b947e9dcb6d784d7181083e378/README.md?at=master&fileviewer=file-view-default","sourceCodeUrl":"https://bitbucket.org/kds_consulting_team/kds-team.ex-looker/src/fca8cdd1db2ed6b947e9dcb6d784d7181083e378?at=master","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Data Visualization"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["client_id","#client_secret","api_endpoint","looker_objects"],"properties":{"client_id":{"type":"string","title":"Client ID","default":"","minLength":1,"description":"Client ID for API calls.","propertyOrder":1},"api_endpoint":{"type":"string","title":"API Endpoint.","default":"https://company.looker.com:19999/api/3.0/","description":"API endpoint for API calls. Usually in form 'https://company.looker.com:19999/api/3.0/'.","propertyOrder":3},"#client_secret":{"type":"string","title":"Client Secret","format":"password","default":"","minLength":1,"description":"Client secret for API calls.","propertyOrder":2},"looker_objects":{"type":"array","items":{"type":"object","title":"Object","properties":{"id":{"type":"string","title":"Look ID","propertyOrder":1},"limit":{"type":"integer","title":"Limit","default":5000,"propertyOrder":5},"output":{"type":"string","title":"Destination table","default":"","propertyOrder":2},"incremental":{"enum":[false,true],"type":"boolean","title":"Incremental load","default":false,"propertyOrder":3},"primary_key":{"type":"string","title":"Primary key","propertyOrder":4}}},"title":"Looker objects","format":"table","default":[{"id":"1","limit":5000,"output":"","incremental":false,"primary_key":""}],"description":"Look ID - ID of a look to be downloaded. \n Destination table - full path to KBC storage. If left blank, data will be downloaded to in.c-looker.look_data_id, where xx is the ID. \n Incremental - load data incrementally or not. \n Primary key - comma-separated column names to be used as PKs.\n Limit - row limit of the download. See API limitations in documentation.","uniqueItems":true,"propertyOrder":4}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"## Configuration description\n\nBelow is the description of input parameters and expected output.\n\n### API Limitations\nThe extractor is limited by **limitations** of Looker API, which currently are:\n* Pivoted look > 5000 rows - only unpivotted part will be extracted.\n* Pivoted look <= 5000 rows - everything will be extracted.\n* Non-pivoted look - everything will be extracted, regardless of # of rows.\n\nTo specify number of rows to be extracted, use `limit`. To download all rows, use `limit=-1`, even though data might be truncated due to above limitations.\n\n### API secret and key\nObtaining the API secret and key is rather simple. In order to obtain the client secret and id, an admin access is required.\nYou can simply follow this [document](https://discourse.looker.com/t/using-the-looker-api-3/2988)\nor the following steps:\n\n1. Login to the relevant looker instance.\n\n2. Navigate to **Admin** section (top right) and then **Users** in bar on the left.\n\n3. Click on the edit button next to the relevant user.\n\n4. Click on *Edit keys* in **API3 Keys** section.\n\n5. Two scenarios can happen:\n\t* If API keys were generated previously, client id and secret will be displayed on screen.\n\t* If API keys were not generated previously, simply click on *New API3 Key* to generate the credentials.\n\n6. Use obtained client id and secret to authorize the extractor.\n\n### Input\n\nConfiguration schema accepts following parameters:\n* **Client ID** - Client ID obtained in the API section of Looker dashboard.\n* **Client Secret** - Client Secret obtained in the API section of Looker dashboard.\n* **API Endpoint** - API Endpoint via which requests are sent.\n* **Look ID** - ID of a look, from which the data should be downloaded. The look is ran automatically.\n* **Destination Table** - A table in KBC Storage, where data will be loaded. If left blank, data will be downloaded to `in.c-looker.looker_data_id`, where `id` is equal to ID of a look.\n* **Incremental Load** - Marks, whether load should be incremental.\n* **Primary Key** - Comma-separated columns, which are to be used as PK.\n* **Limit** - Row limit for look. See API Limitations above.\n\nFor more info about Looker API, see [Looker API Documentation](https://docs.looker.com/reference/api-and-integration/api-getting-started).\n\n### Output\n\nTable in specified location in KBC storage.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":60,"uri":"docker/kds-team.ex-looker","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-looker","name":"developer-portal-v2/kds-team.ex-looker","tag":"0.6.3","options":{},"digest":"sha256:c1281ba8114c5323a9a896b5ab40f18e0a83a983411f3fd4fef69916e19255b6"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-looker/32/9.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-looker/64/9.png","128":null}},{"id":"keboola.wr-looker-v2","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":59,"name":"Looker","type":"writer","shortDescription":"Loads tables into a Snowflake or BigQuery backend and registers the connection in Looker.","longDescription":"This component streamlines exporting your data to a Looker project. It will create a Snowflake database for the data to reside in and it will also create a Looker connection for you. \n\nWhen the configuration is executed it exports selected data to the Snowflake workspace to be accessed from Looker. It also formats and renames the fields so that the relations are set up automatically when creating the LookML project. ","licenseUrl":"https://github.com/keboola/looker-writer/blob/master/LICENSE","documentationUrl":"https://help.keboola.com/components/writers/bi-tools/looker/","sourceCodeUrl":"https://github.com/keboola/looker-writer","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe","dev-branch-job-blocked"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":true,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"medium","category":null,"categories":["Data Visualization"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","$defs":{"credentials":{"type":"object","required":["host","database"],"properties":{"host":{"type":"string"},"port":{"type":["string","integer"],"default":443},"user":{"type":"string"},"driver":{"type":"string"},"schema":{"type":"string"},"dataset":{"type":"string"},"database":{"type":"string"},"location":{"type":"string"},"#password":{"type":"string"},"warehouse":{"type":"string"},"service_account":{"type":"string"}}}},"title":"keboola.wr-looker-v2 — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","required":["db"],"properties":{"db":{"$ref":"#/$defs/credentials"},"looker":{"type":"object","properties":{"host":{"type":"string"},"#token":{"type":"string"},"credentialsId":{"type":"string"},"connectionName":{"type":"string"}}},"tables":{"type":"array","items":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"size":{"type":["string","integer","null"]},"type":{"type":"string"},"dbName":{"type":"string"},"default":{"type":["string","null"]},"nullable":{"type":"boolean"}}}},"dbName":{"type":"string"},"export":{"type":"boolean"},"tableId":{"type":"string"},"primaryKey":{"type":"array","items":{"type":"string"}},"lookmlViewName":{"type":"string"},"lookmlModelName":{"type":"string"}}}},"useGit":{"type":"boolean"},"db_cache":{"type":"object"},"gitBranch":{"type":"string"},"#gitPrivateKey":{"type":"string"},"generateLookml":{"type":"boolean"},"gitRepositoryUrl":{"type":"string"},"deleteUnusedFields":{"type":"boolean"},"lookerDbConnection":{"type":"string"}}},"configurationRowSchema":{"type":"object","title":"keboola.wr-looker-v2 — Row Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"items":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"size":{"type":["string","integer","null"]},"type":{"type":"string"},"dbName":{"type":"string"},"default":{"type":["string","null"]},"nullable":{"type":"boolean"}}}},"dbName":{"type":"string"},"tables":{"type":"array","options":{"async":{"label":"Re-load tables","action":"getTables"}}},"tableId":{"type":"string"},"primaryKey":{"type":"array","items":{"type":"string"}},"incremental":{"type":"boolean"}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["testConnection","testLookerCredentials"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"none","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":59,"uri":"docker/keboola.wr-looker-v2","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-looker-v2","name":"developer-portal-v2/keboola.wr-looker-v2","tag":"2.0.2","options":{},"digest":"sha256:502f14631687abd491fb071e1ad76e19f8a742e76c599d90f9fb8edf2086fc20"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-looker-v2/32/1666646645842.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-looker-v2/64/1666646645842.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-looker-v2/128/1666646645842.png"}},{"id":"kds-team.app-looker-schedule-runner","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":151,"name":"Looker Schedule Runner","type":"application","shortDescription":"Creating an one-time schedule plan to send out the target dashboards to the target contacts","longDescription":"The purpose of this application is to create a one-time schedule plan pre-caching/refreshing target dashboards and send the reports to the traget audiences. \n\n### Configuration Parameters\n\n1. Client ID\n2. Client Secret\n3. Looker Host URL\n    - Full Looker URL\n        - Can be found following path below\n            - Your Looker instance > \"Admin\" > \"API\" > \"View API Docs\"\n            - Your API URL will be in the URL with the port number\n            - API URL Details can be found [here](https://docs.looker.com/reference/api-and-integration/api-getting-started)\n    - Please include '/' at the end of the URL address\n    - Example: https://{{looker_id}}.looker.com/\n    - Exmaple 2: https://{{looker_id}}.cloud.looker.com/\n\n### Input Mapping Requirements\n\nThe application will be fetching all tables from the input mapping as an input. File names will not be a factor to cause the application to fail! However, each table from the input mapping must contain the all of the following columns (*all lower case*):\n\n  1. dashboard_id\n\n      - The ID of the dashboard to refresh\n  \n  2. recipients\n\n      - The application supports sending out Emails only, FTP is not supported.\n      - If entered recipient email address is invalid, the application will proceed with the incorrect email address and only refresh the dashboard with the given parameters.\n      - Each row of the recipient can only contain 1 email address. If 1 or more email address is entered in the same row, the application will deem that email address is invalid. \n      - If the sole purpose of using this application is to refresh the dashboard and not to receive an email, user must enter a random `string` into the cell. This can be as random as entering `nobody` or `someone`.\n\n      Examples:\n\n      |Recipients|Email Sent|Dashboard Refresh|\n      |-|-|-|\n      someone@keboola.com|True|True\n      some_random_string|False|True\n      invalid_email@invalid.email|False|True\n\n  3. filters\n\n      - Looker will be executing the dashboard with the filters specified in the same row\n      - This cell's value *MUST* be in `JSON` formatted string\n      - If user does not want to filter anything, please leave this field blank. Application will then proceed to refresh the dashboard with its `default preset filters`\n\nSample Input File\n\n|dashboard_id|recipients|filters|\n|-|-|-|\n|1|leo@keboola.com|{\"Company\":\"Keboola\",\"Position\":\"Ninja\"}|\n|2|fisa@keboola.com|{\"Company\":\"Keboola\",\"Position\":\"Master\"}|\n|3|marcus@keboola.com|{\"Company\":\"Keboola\",\"Position\":\"Chef\"}|","licenseUrl":"https://github.com/keboola/component-looker-schedule-runner/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-looker-schedule-runner/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-looker-schedule-runner","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Scheduler Configuration","required":["client_id","#client_secret","looker_host_url"],"properties":{"client_id":{"type":"string","title":"Client ID","minLength":1,"propertyOrder":100},"#client_secret":{"type":"string","title":"Client Secret","minLenght":1,"propertyOrder":200},"looker_host_url":{"type":"string","title":"Looker Host URL","default":"https://","minLength":1,"description":"Full Looker URL. Please include '/' at the very end of the address","propertyOrder":400}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"### Configuration Parameters\n\n1. Client ID\n2. Client Secret\n3. Looker Host URL\n    - Full URL of the Looker URL that is used for your Looker API instance\n        - Can be found following path below\n            - Your Looker instance > \"Admin\" > \"API\" > \"View API Docs\"\n            - Your API URL will be in the URL with the port number\n            - API URL Details can be found [here](https://docs.looker.com/reference/api-and-integration/api-getting-started)\n    - Please include '/' at the end of the URL address\n    - Example: https://{{looker_id}}.looker.com/\n    - Exmaple 2: https://{{looker_id}}.cloud.looker.com/\n\n### Input Mapping Requirements\n\nThe application will be fetching all tables from the input mapping as an input. File names will not be a factor to cause the application to fail! However, each table from the input mapping must contain the all of the following columns (*all lower case*):\n\n  1. dashboard_id\n\n      - The ID of the dashboard to refresh\n  \n  2. recipients\n\n      - The application supports sending out Emails only, FTP is not supported.\n      - If entered recipient email address is invalid, the application will proceed with the incorrect email address and only refresh the dashboard with the given parameters.\n      - Each row of the recipient can only contain 1 email address. If 1 or more email address is entered in the same row, the application will deem that email address is invalid. \n      - If the sole purpose of using this application is to refresh the dashboard and not to receive an email, user must enter a random `string` into the cell. This can be as random as entering `nobody` or `someone`.\n\n      Examples:\n\n      |Recipients|Email Sent|Dashboard Refresh|\n      |-|-|-|\n      someone@keboola.com|True|True\n      some_random_string|False|True\n      invalid_email@invalid.email|False|True\n\n  3. filters\n\n      - Looker will be executing the dashboard with the filters specified in the same row\n      - This cell's value *MUST* be in `JSON` formatted string\n      - If user does not want to filter anything, please leave this field blank. Application will then proceed to refresh the dashboard with its `default preset filters`\n\nSample Input File\n\n|dashboard_id|recipients|filters|\n|-|-|-|\n|1|leo@keboola.com|{\"Company\":\"Keboola\",\"Position\":\"Ninja\"}|\n|2|fisa@keboola.com|{\"Company\":\"Keboola\",\"Position\":\"Master\"}|\n|3|marcus@keboola.com|{\"Company\":\"Keboola\",\"Position\":\"Chef\"}|","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":151,"uri":"docker/kds-team.app-looker-schedule-runner","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.app-looker-schedule-runner","name":"developer-portal-v2/kds-team.app-looker-schedule-runner","tag":"0.0.5","options":{},"digest":"sha256:970404e4dbc0f1a2ce6e130a685a03e3c684fb025305fc1ff9aebac52754275c"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-looker-schedule-runner/32/1574980707994.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-looker-schedule-runner/64/1574980707994.png","128":null}},{"id":"kds-team.ex-lytics","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":19,"name":"Lytics","type":"extractor","shortDescription":"Extracts data from the Lytics customer data platform.","longDescription":"Download Segments and Users from the [Lytics platform](https://www.lytics.com/)\n\n**NOTE** that this extractor fetches only default fields from the `User` endpoint. The scope of the extractor might \nbe extended by altering the JSON configuration and following [Generic Extractor tutorial](https://developers.keboola.com/extend/generic-extractor/tutorial/).   ","licenseUrl":"https://github.com/keboola/kbc-ui-templates/blob/master/resources/kds-team.ex-lytics/templates/LICENSE","documentationUrl":"https://github.com/keboola/kbc-ui-templates/blob/main/resources/kds-team.ex-lytics/templates/README.md","sourceCodeUrl":"https://github.com/keboola/generic-extractor","requiredMemory":null,"processTimeout":21600,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Marketing"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","appInfo.dataIn","genericTemplatesUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["config"],"properties":{"config":{"type":"object","title":"Config","required":["incrementalOutput","#token"],"properties":{"#token":{"type":"string","title":"API token","format":"password","propertyOrder":200},"incrementalOutput":{"type":"boolean","title":"Incremental mode","format":"checkbox","description":"If set to Incremental update, the result tables will be updated based on primary key. Full load overwrites the destination table each time. NOTE: If you wish to remove deleted records, this needs to be set to Full load and the Period from attribute empty.","propertyOrder":300}}}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"## Parameters\n* **Token** (required): Your Lytics API token.\n* **Incremental mode** (required): Set to true to load \n[incrementally](https://developers.keboola.com/extend/generic-extractor/incremental/) into Storage.\n\n**NOTE** that this extractor fetches only default fields from the `User` endpoint. The scope of the extractor might \nbe extended by altering the JSON configuration and following [Generic Extractor tutorial](https://developers.keboola.com/extend/generic-extractor/tutorial/).   \n\nTo add a new string field add following to the `mapping` section: `\"new_field_name\": \"result_field_name\"`\n\nWhere `new_field_name` is field name as seen in the API response and `result_field_name` is the name of the result column.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":19,"uri":"docker/kds-team.ex-lytics","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/ex-generic-v2","name":"developer-portal-v2/ex-generic-v2","tag":"3.8.0","options":{},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-lytics/32/1613407741267.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-lytics/64/1613407741267.png","128":null}},{"id":"kds-team.wr-lytics-v2","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":97,"name":"Lytics","type":"writer","shortDescription":"Writes data to custom Lytics streams via the bulk upload API.","longDescription":"Write data to custom Lytics streams. Allows sending large volumes of data using gzipped stream and dry run mode \nto verify your data.","licenseUrl":"https://bitbucket.org/kds_consulting_team/kds-team.wr-lytics-v2/src/master/LICENSE.md","documentationUrl":"https://bitbucket.org/kds_consulting_team/kds-team.wr-lytics-v2/src/master/README.md","sourceCodeUrl":"https://bitbucket.org/kds_consulting_team/kds-team.wr-lytics-v2","requiredMemory":null,"processTimeout":86400,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Marketing"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-tableInput","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Authorization","format":"object","required":["#token"],"properties":{"#token":{"type":"string","title":"API token","format":"password","propertyOrder":200}}},"configurationRowSchema":{"type":"object","title":"Streams","format":"grid","required":["stream","model_type","raw_query"],"properties":{"stream":{"type":"string","title":"Stream","options":{"grid_columns":10},"minLength":1,"description":"Stream path","propertyOrder":300},"raw_query":{"type":"string","title":"Raw query","format":"sql","description":"Raw LQL query (Hacker Mode), overrides any blocks.","propertyOrder":1000},"lql_blocks":{"type":"array","items":{"type":"object","title":"Block","properties":{"name":{"type":"string","title":"Block name","propertyOrder":1},"model_mapping":{"type":"array","items":{"title":"column","format":"grid-strict","properties":{"type":{"enum":["INT","NUMBER","STRING","DATE","EMAIL","EMAIL_DOMAIN","CUSTOM_LQL"],"type":"string","title":"Type","options":{"grid_columns":3},"description":"Column data type","propertyOrder":4},"is_by":{"type":"boolean","title":"Is Identifier","format":"checkbox","options":{"grid_columns":2},"propertyOrder":5},"src_col":{"type":"string","title":"Column","format":"textarea","options":{"grid_columns":6},"minLength":1,"description":"Source column","propertyOrder":1},"dst_name":{"type":"string","title":"Column Name","format":"textarea","options":{"grid_columns":6},"minLength":1,"description":"Destination column","propertyOrder":2},"short_desc":{"type":"string","title":"Description","format":"textarea","options":{"grid_columns":5},"description":"Short description","propertyOrder":3}}},"title":"Columns","uniqueItems":true,"propertyOrder":5}}},"title":"LQL Blocks","format":"tabs-top","minItems":1,"description":"Model column mapping that will generate / update the underlying LQL query.","propertyOrder":900},"model_type":{"type":"string","title":"Model Type","default":"user","options":{"grid_columns":10},"minLength":1,"description":"This is USER for all user profiles. (Technically you could create other types, such as \"account\".)","propertyOrder":320},"loading_options":{"type":"object","title":"Loading Options","format":"grid","properties":{"dryrun":{"type":"boolean","title":"Dry run","format":"checkbox","options":{"grid_columns":6},"description":"Dry run to verify the data and dry run the LQL query (result outputted in the job log).","propertyOrder":400},"load_type":{"enum":["UPDATE_MODEL_AND_DATA","MODEL_ONLY","DATA_ONLY"],"type":"string","title":"Load type","options":{"enum_titles":["Update Model and Data","Update Model only","Update Data Only"],"grid_columns":4},"required":true,"minLength":1,"description":"Data load type","propertyOrder":350},"timestamp_field":{"type":"string","title":"Timestamp Field [Optional]","description":"The name of the column or field in file that contains event timestamp.","propertyOrder":600}},"propertyOrder":400}}},"createConfigurationRowSchema":null,"configurationDescription":"A **single table** on the input must be specified.\n\n- The data is sent as gzipped csv via the [bulk upload API](https://learn.lytics.com/documentation/developer/api-docs/data-upload#bulk-csv-upload-bulk-csv-upload-post) \nso large volumes are supported. \n- The event stream is automatically created if does not exist.\n- Creates / Updates a LQL query based on parameters with alias matching the Stream Name.\n- May be executed multiple times\n\n### Dry run\n\nDry run to verify the data. Only do a dry-run to see if the data is formatted correctly and the query is structured properly. \n\n**NOTE:**  The data upload and query dry run is executed regardless the `Model -> Load Type` setup. \nWhen in dry run mode a sample data row is sent to the `query/test` endpoint and the result printed in the \njob log to verify it behaves properly. The job log will contain record like this:\n\n```\nRunning dry run of the LQL / data upload.\n{\"_created\": \"2020-09-22T13:33:43.741754223Z\", \"_modified\": \"2020-09-22T13:33:43.741754223Z\", \"email\": \"david@keboola.com\", \"last_order_date\": \"2020-01-01T00:00:00Z\", \"name\": \"keboola.com\", \"order_value\": \"150\", \"test\": \"a\"}\n```\nMoreover, the generated LQL query will be available in the log detail after clicking on `Running dry run of the LQL / data upload.` event.\n\n## LQL blocks\n\nModel mapping that will generate the LQL query. It is structured into separate blocks, that are visually separated for better readability. \nIt is recommended to keep the first block `Identifiers` containing only identifier columns.\n\nQuery with the same alias as the `Stream name` will be created or updated according to the specified mapping.\n\nNo model is created if the mapping is empty.\n\n\n### Block column definition\n\nMapping of source column tables to the destination table columns\n\n- **Column** - Name of the input table column\n- **Column name** - Destination (LQL) column name. Must not contain blank characters\n- **Description** - Column description\n- **Type** - if set to `Email`, `email()` function will be applied to the field\n- **Is Identifier** - If set to true, the field will be used in the `BY` clause. May be set only on one column.\n\n![lql block](docs/imgs/lql_block.png)\n\n#### Data Types\n\nApart from standard primitive datatypes, additional are supported:\n\n- **EMAIL** - `email()` function will be applied to the field\n- **EMAIL_DOMAIN** - `emaildomain()` function will be applied to the field\n\n##### **CUSTOM_LQL**\n\nWhen `CUSTOM_LQL` datatype is selected you may specify custom LQL (function) in the `Column` field \ninstead of the source table column name. This allows to apply some\n additional LQL functions such as `Map` datatypes. \n The name of the actual existing column from the source table must be included.\n It is possible to define the KIND as well.\n \n **Examples**:\n \n `map(key1, todate(date_field)) KIND map[string]time` - where `date_field` is a column in the input table\n `domain(url)`- where `url` is a column in the input table\n\n\n\n## Raw query (hacker mode)\n\nOptionally you may choose to specify the whole LQL query manually. In such case you may paste your LQL code\ninto the `Raw query field` and all LQL blocks will be overridden. Also the `Stream name` will take no effect. \n\n**NOTE** Be sure to refer to existing column names in the input table.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":97,"uri":"docker/kds-team.wr-lytics-v2","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.wr-lytics-v2","name":"developer-portal-v2/kds-team.wr-lytics-v2","tag":"1.1.0","options":{},"digest":"sha256:32e4a4f949dc9c0f849aa4e1054b14e305c1651e0614b180dc78ed9ca57236bc"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.wr-lytics-v2/32/1613406831221.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.wr-lytics-v2/64/1613406831221.png","128":null}},{"id":"leochan.ex-magento2","vendor":{"id":"leochan","name":"Leo Chan","address":"Richmond, BC","email":"cleojanten@hotmail.com","type":"other"},"version":35,"name":"Magento 2","type":"extractor","shortDescription":"Open-source e-commerce platform","longDescription":"Extract users' data from e-commerce platform, Magento.","licenseUrl":"https://bitbucket.org/chanleoc/kbc_magento2/raw/d703e656e09fc5a7f83a3e6715c5cd74542a87a0/component_registeration/Licence.md","documentationUrl":"https://bitbucket.org/chanleoc/kbc_magento2/raw/d703e656e09fc5a7f83a3e6715c5cd74542a87a0/component_registeration","sourceCodeUrl":null,"requiredMemory":null,"processTimeout":null,"features":["container-root-user"],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["E-commerce"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericTemplatesUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["config"],"properties":{"config":{"type":"object","title":"Magento 2","required":["url","magento_username","#magento_password"],"properties":{"url":{"type":"string","title":"baseURL","default":"http://","description":"The domain of your Magento server","propertyOrder":1},"magento_username":{"type":"string","title":"Username","description":"Please ensure your account has the right to access defined endpoints.","propertyOrder":2},"#magento_password":{"type":"string","title":"Password","propertyOrder":3}}}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"## Component Configuration\nExtract one company's E-Commerce information from Magento 2 Online to KBC.\n\n## Important Parameters\n  1. URL\n      - The URL of your Magento eCommerce Platform\n      - **Please enter your URL input before '/rest/V1/'**\n      - Example: \n           - Full Link: http://www.myshop.net/index.php/rest/V1/\n           - Input: http://www.myshop.net/index.php\n           \n  2. Username  \n      - Please ensure your acount has the right privilege to access the defined endpoint\n      - Instructions on how to add user or modify users' rights: [Here](https://help.aftership.com/hc/en-us/articles/115008297607-Finding-Magento-API-credentials)\n         \n  3. Password   \n\n  4. Templates Selection  \n      - Carts\n      - Categories\n      - Coupons\n      - Customers\n      - Invoices\n      - Orders\n      - Products\n      - Transactions\n\n**Note: Templates can be switched to JSON formatted template for customization**\n\nDetail Magento 2 Online Documentation & Enedpoints can be found [here](http://devdocs.magento.com/swagger/#/)","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/leochan.ex-magento2","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/ex-generic-v2","name":"developer-portal-v2/ex-generic-v2","tag":"3.1.1","options":{},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/leochan.ex-magento2/32/1591275356156.png","64":"https://ui.keboola-assets.com/developer-portal/icons/leochan.ex-magento2/64/1591275356156.png","128":null}},{"id":"keboola.ex-mailchimp","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":24,"name":"Mailchimp","type":"extractor","shortDescription":"Extracts lists, members, campaigns, automations, and reports from Mailchimp.","longDescription":"This component uses the [Mailchimp API](http://developer.mailchimp.com/documentation/mailchimp/) to extract data from mailing lists sent by the [Mailchimp](https://mailchimp.com/) service.\n\nYou can import data such as\n\n- list and members,\n- campaigns,\n- automations,\n- reports,\n- reports with click details,\n- lists of member activity, and\n- all campaigns.\n\nTo configure this extractor, you need to have a Mailchimp\n\n- [account](https://login.mailchimp.com/signup/) filled with [data](https://us13.admin.mailchimp.com/campaigns/), and\n- [API key](http://kb.mailchimp.com/integrations/api-integrations/about-api-keys#Find-or-Generate-Your-API-Key).","licenseUrl":"https://github.com/keboola/kbc-ui-templates/blob/main/LICENSE","documentationUrl":"https://help.keboola.com/extractors/marketing-sales/mailchimp/","sourceCodeUrl":"https://github.com/keboola/kbc-ui-templates/tree/main/resources/keboola.ex-mailchimp/templates","requiredMemory":"256m","processTimeout":14400,"features":["container-root-user"],"encryption":true,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"medium","category":null,"categories":["Marketing"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericTemplatesUI","genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":{},"configurationSchema":{"type":"object","title":"Parameters","required":["config"],"properties":{"config":{"type":"object","title":"Mailchimp Extractor Configuration","properties":{"dc":{"type":"string","title":"Datacenter","minLength":2,"description":"Last part of your API key after dash (e.g.: us13)"},"username":{"type":"string","title":"Username","minLength":1},"#password":{"type":"string","links":[{"rel":"Get a Mailchimp API Key","href":"http://kb.mailchimp.com/accounts/management/about-api-keys"}],"title":"Mailchimp API Key","minLength":1},"outputBucket":{"type":"string","title":"Output bucket","default":"mailchimp","minLength":4,"description":"Storage bucket for storing results, prefix in.c- added automatically."}},"requiredProperties":["outputBucket","username","#password","dc"]}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-mailchimp","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/ex-generic-v2","name":"developer-portal-v2/ex-generic-v2","tag":"3.15.1","options":{},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-mailchimp/32/1677061694382.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-mailchimp/64/1677061694382.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-mailchimp/128/1677061694382.png"}},{"id":"kds-team.app-mailgun-v2","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":139,"name":"Mailgun","type":"application","shortDescription":"Sends personalized emails to a mailing list via Mailgun.","longDescription":"# Mailgun\n\nMailgun is an email automation service. It offers a complete cloud-based email service for sending, receiving and tracking email sent through your websites and applications. This component allows to connect Mailgun with Keboola platform, for sending automation.\n\nTo successfully operate the component, following parameters are required:\n\n- a private API key for Mailgun,\n- a Mailgun domain.\n\nIf you're unsure on where to find the API key, follow the steps mentioned in the [documentation](https://help.mailgun.com/hc/en-us/articles/203380100-Where-Can-I-Find-My-API-Key-and-SMTP-Credentials-) on how to obtain the API key. When it comes to Mailgun domains, upon registering each user is provisioned a sandbox domain. The sandbox domain can only send email to [**authorized recipients**](https://help.mailgun.com/hc/en-us/articles/217531258-Authorized-Recipients). The limit is 5 authorized recipients per sandbox domain. It is therefore highly recommended to [register your own domain with Mailgun](https://help.mailgun.com/hc/en-us/articles/202256730-How-do-I-pick-a-domain-name-for-my-Mailgun-account-) to not be limited by sandbox restrictions.\n\n##### Pricing\n\nNote that Mailgun is a paid service and is subject to [Mailgun's Terms Of Service](https://www.mailgun.com/terms/). By default, each domain can send up to 10 000 emails per month for free. For more information about pricing, please visit [Mailgun's pricing explorer](https://www.mailgun.com/pricing).\n\n## Changes from previous version\n\nWith a new version of Mailgun component, there were some changes, which make this version non-backwards compatible and hence some effort is required to migrate. Major changes include:\n\n1. A region can be specified in the configuration (see [Parameters](https://bitbucket.org/kds_consulting_team/kds-team.app-mailgun-v2/src/master/README.md#markdown-header-parameters))\n2. Changed column names for input table and support of more Mailgun features (see [Mailing list](https://bitbucket.org/kds_consulting_team/kds-team.app-mailgun-v2/src/master/README.md#markdown-header-mailing-list))\n3. Sending tabular attachments straight from Keboola storage (see [Table input mapping](https://bitbucket.org/kds_consulting_team/kds-team.app-mailgun-v2/src/master/README.md#markdown-header-table-input-mapping))\n4. Improved specification of attachments and templates and automatic selection of latest available file (see [Path specification to template or file attachment](https://bitbucket.org/kds_consulting_team/kds-team.app-mailgun-v2/src/master/README.md#markdown-header-path-specification-to-template-or-file-attachment))\n5. Subject, plain-text or html template are now customized using `{{COLUMN_NAME}}` tags, instead of `%(COLUMN_NAME)s` as before (see [Email customization](https://bitbucket.org/kds_consulting_team/kds-team.app-mailgun-v2/src/master/README.md#markdown-header-email-customization))","licenseUrl":"https://github.com/keboola/component-mailgun-v2/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-mailgun-v2/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-mailgun-v2","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput","genericDockerUI-fileInput"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["#apiToken","domainName","domainRegion","fromName"],"properties":{"fromName":{"type":"string","title":"Sender Name","description":"Name to be displayed as email signature of the sender. E.g. '<b>John Doe</b>'","propertyOrder":400},"#apiToken":{"type":"string","title":"API Key","format":"password","minLength":1,"description":"API key for authentication purposes. See <a target='_blank' href='https://help.mailgun.com/hc/en-us/articles/203380100-Where-Can-I-Find-My-API-Key-and-SMTP-Credentials-'>Mailgun documentation</a> for more information.","propertyOrder":100},"fromEmail":{"type":"string","title":"Sender's Local Part of Address","description":"Local part of sender's email. Allows customization of the first part of sending email address. E.g. <b>johndoe</b> @mydomain.com","propertyOrder":500},"domainName":{"type":"string","title":"Domain","minLength":1,"description":"Mailgun domain; either sandbox or production version. E.g. johndoe@<b>mydomain.com</b> </br>If sandbox domain is used, please make sure, that all recipients are registered as <a target='_blank' href='https://help.mailgun.com/hc/en-us/articles/217531258-Authorized-Recipients'>authorized recipients</a>.","propertyOrder":200},"domainRegion":{"enum":["US","EU"],"type":"string","title":"Region","default":"US","description":"Region, where the domain is located.","uniqueItems":true,"propertyOrder":300},"validation_button":{"type":"button","format":"test-connection","options":{"async":{"label":"TEST CONNECTION","action":"test_api_key"}},"propertyOrder":350}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"### Changes from previous version\n\nWith a new version of Mailgun component, there were some changes, which make this version non-backwards compatible and hence some effort is required to migrate. Major changes include:\n\n1. A region can be specified in the configuration (see [Parameters](https://bitbucket.org/kds_consulting_team/kds-team.app-mailgun-v2/src/master/README.md#markdown-header-parameters))\n2. Changed column names for input table and support of more Mailgun features (see [Mailing list](https://bitbucket.org/kds_consulting_team/kds-team.app-mailgun-v2/src/master/README.md#markdown-header-mailing-list))\n3. Sending tabular attachments straight from Keboola storage (see [Table input mapping](https://bitbucket.org/kds_consulting_team/kds-team.app-mailgun-v2/src/master/README.md#markdown-header-table-input-mapping))\n4. Improved specification of attachments and templates and automatic selection of latest available file (see [Path specification to template or file attachment](https://bitbucket.org/kds_consulting_team/kds-team.app-mailgun-v2/src/master/README.md#markdown-header-path-specification-to-template-or-file-attachment))\n5. Subject, plain-text or html template are now customized using `{{COLUMN_NAME}}` tags, instead of `%(COLUMN_NAME)s` as before (see [Email customization](https://bitbucket.org/kds_consulting_team/kds-team.app-mailgun-v2/src/master/README.md#markdown-header-email-customization))\n\n### Configuration\n\nThe configuration of the component is done via a set of parameters, an input table and optional files. This, and all of the functionalities of the component, will be covered in this section. The documentation will extensively use the provided [sample configuration](https://bitbucket.org/kds_consulting_team/kds-team.app-mailgun-v2/src/master/component_config/sample-config/) to showcase the behavior of the application and how to cover special cases.\n\n#### Parameters\n\nThe component takes a total of 5 parameters. Four of the parameters can be configured in the UI of Keboola, one is only configurable via API as its configuration is rather excess.\n\nThe four required parameters are:\n\n- API Key \n    - **type:** required\n    - **configuration name:** `#apiToken`\n    - **description:** An API key used to authenticate all requests against Mailgun API. If invalid value is provided, the application fails. More information on how to obtain the API key can be found in the [documentation](https://help.mailgun.com/hc/en-us/articles/203380100-Where-Can-I-Find-My-API-Key-and-SMTP-Credentials-).\n- Domain\n    - **type:** required\n    - **configuration name:** `domainName`\n    - **description:** The name of the domain, which will be used for delivering emails. You can find a list of all your domain in the *Control Panel* under the *Domains* tab. For sandbox domains, the domain is in form `sandbox[uniqueId].mailgun.org`, e.g. `sandbox15d3020e03ca4f8db4895fca549a8b3a.mailgun.org`. If the provided domain is not associated with the API key, or the domain is not found, the application will fail.\n- Region\n    - **type:** required\n    - **configuration name**: `domainRegion`\n    - **default:** US\n    - **description**: The region where the Mailgun account or domain is located. Available values are US (sending via [https://api.mailgun.net/](https://api.mailgun.net/)) or EU (sending via [https://api.eu.mailgun.net/](https://api.eu.mailgun.net/)). If incorrect region is specified, the application will fail due to domain not existing in the region.\n- Sender Name\n    - **type:** required\n    - **configuration name:** `fromName`\n    - **description:** The name which will be displayed as a sender of the messages from Mailgun. Can be left blank, in which case only the sender's email will be used as sender's identification.\n\nAn optional parameter, configurable only via API is:\n\n- Sender Email\n    - **type:** optional\n    - **configuration name:** `fromEmail`\n    - **description:** The local part of the email address used to send messages. [fromEmail]@[domainName]\n    - **default:** `postmaster`\n\n#### Mailing list\n\nMailing list is the input table of emails, with other specified parameters, to which the messages will be sent. Mailing list can be configured in the table input mapping section, or must be stored in `/data/in/tables/` folder, and must not contain `_tableattachment_` in the destination name, as that is reserved for tabular attachments. \n\nA combination of 3 columns is required and other columns could be used to specify the parameters of each message as well as customize the template.\n\nThe three mandatory columns are:\n\n- `email`\n    - **description:** A single email address or a comma-separated list of email addresses, to which a message will be sent. The column is mandatory, thus if the column is not provided, the application will fail.\n    - **example:** `testy.mctesface@domain.com`; `sterling.archer@fx.com, mallory.archer@fx.com`\n- `subject`\n    - **description:** A mandatory column defining the subject of the message.\n    - **example:** `Testing email`; `New job announcement`\n- `html_file` or `text`\n    - **description:** Column `html_file` defines the file name of the html template, which shall be used as the message body (see section **Customization and attachments**). Column `text` defines the plain text body of the message. Either of the columns or both can be provided. If both columns have a valid value, by default Mailgun API prioritizes the html content over plain text content. Both of the columns can be customized with additional parameters (more on that in section **Customization and attachments**).\n    - **example:**\n        - `template.html`; `questionnaire.html`\n        - `A very warm welcome!`; `This is a sample message.`\n\nIn addition to three (four) mandatory columns, a set of optional columns can be provided to alter the behavior of the message. All of these columns have a blank default value. These columns are:\n\n- `delivery_time`\n    - **description:** A timestamp in **RFC 2822** format, i.e. format `Fri, 25 Oct 2019 19:00:00 +0200`. If undefined or left blank, the message will be delivered instantly. The email delivery can't be scheduled more than three days in advance by design of the API.\n    - **Mailgun mapping:** `o:deliverytime`\n    - **example:** `Fri, 25 Oct 2019 19:00:00 +0200`; `Fri, 25 Oct 2019 17:00:00 GMT`\n    - **hints:**\n        - in Snowflake, the RFC 2282 format can be achieved using format `DY, DD MON YYYY HH24:MI:SS TZHTZM`\n        - in Python, the RFC 2282 format can be achieved using format `%a, %d %b %Y %H:%M:%S %z`\n- `cc`\n    - **description:** A single email address or a comma-separated list of email addresses, to which a copy of the email will be delivered.\n    - **Mailgun mapping:** `cc`\n    - **example:** same as `email`\n- `bcc`\n    - **description:** A single email address or a comma-separated list of email addresses, to which a blind copy of the email will be delivered.\n    - **Mailgun mapping:** `bcc`\n    - **example:** same as `email`\n- `tags`\n    - **description:** A single tag or a comma-separated list of tags, which will be attached to the image. Tags are very useful for tracking specific emails or campaigns. Up to 3 tags can be applied to a single message; if more than 3 are provided, only the first three in the list will be applied, by design of the API.\n    - **Mailgun mapping:** `o:tag`\n    - **example:** `abc`; `abc, 123, 567`\n- `attachments`\n    - **description:** A single file name or a comma-separated list of filenames, which will attached to a message. See section **Sending attachments** for more information on how to correctly specify attachments.\n    - **Mailgun mapping:** `attachments`\n    - **example:** `__tableattachment__data.csv`; `graph.png, 123456789_data.json`\n- `custom_fields`\n    - **description:** All other custom fields and headers which should be added to a message. Must be a valid JSON object. If the object passed is not a valid object, email sending is not halted. See [documentation](https://documentation.mailgun.com/en/latest/api-sending.html#sending) for all available options.\n    - **example:** `{\"h:Reply-To\": \"reply_email@keboola.com\"}`\n\nBesides all of the columns mentioned above, it is possible to specify additional columns which will be used to customize either the html template, or the plain text body of the message. In fact, any of the columns can be used for message body customization. More about customization is covered in **Customizing messages**.\n\n#### File input mapping\n\nNon-tabular files, such as html files, images, json, etc. can be used as attachments, or in case of html files as templates. In Keboola, all of these files must be properly mapped in *File input mapping* section, specifying the correct tags.\n\n![](https://bitbucket.org/kds_consulting_team/kds-team.app-mailgun-v2/raw/master/docs/file-input-mapping.png)\n\nAll of the files are automatically stored in `/data/in/files/` folder.\n\n#### Table input mapping\n\nAll tabular files from Keboola storage can be specified directly from Keboola's UI in the table input mapping section and must have a prefix `_tableattachment_`, otherwise they will be used as a mailing list; table without `_tableattachment_` prefix is not recognized as an attachment.\n\n![](https://bitbucket.org/kds_consulting_team/kds-team.app-mailgun-v2/raw/master/docs/table-input-mapping.png)\n\nAll of the tables are automatically stored in `/data/in/tables/` folder.\n\n### Customization and attachments\n\nThe Mailgun component is able to handle some forms of customizations for each email. Along with sending attachments from file and table storage, the component is able to send a customized html template for each email. **All templates must be stored in file storage (see section *File Input Mapping*) and attachments can be stored either in file storage, or if applicable in standard table storage.**\n\nIn this section, a customization of templates as well as specifying attachments will be discussed. But firstly, let's start with how the component chooses files based on specification.\n\n#### Path specification to template or file attachment\n\nIn the previous version of Mailgun, a template or file attachment (further referred to as a file) had to be specified by it's full name only. Mailgun component could not perform any kind of search for patterns in names (glob search). This, of course, poised a problem when sending files from Keboola storage, since each filename is preceeded by its identificator, which is unknown to the user prior to uploading the file. For files, which are static and only uploaded once (e.g. templates), this might not be a problem. However, for files which are generated each day and then sent via Mailgun, this poised a problem. Often, a structure of files, similar to the one below, was created in Keboola file storage and users needed an extra transformation to determine the latest file's name.\n\n```\n445515655_report.pdf    321312312_template.html\n446461182_report.pdf    760989809_template.html\n446461232_report.pdf    944598324_template.html\n451982978_report.pdf    131242341_logo.jpeg\n478942334_report.pdf    542342123_graph.png\n563242313_report.pdf    857923432_graph.png\n589321233_report.pdf    878080998_graph.png\n591233212_report.pdf    975763234_graph.png\n623421321_report.pdf    653423674_report.pdf\n```\n\nWith a new version of Mailgun, users are offered a much improved experience of file specification. Files (both html templates and files used for attachments) can be specified using a \"simple\" file name, without the identificator and Mailgun application will automatically choose the latest file based on available metadata.\n\nFor example, a following table with template and attachments can be specified.\n\n| html_file               | attachments|\n|-------------------------|------------|\n| template.html           | report.pdf |\n| 321312312_template.html | logo.jpeg  |\n\nIn the first row, the component first matches all files using glob, with a pattern of `*template.html`, which would in this case result in 3 files. Afterwards, the latest file is determined by using metadata (manifests) resulting in final file `944598324_template.html`, which will be used as a template. In case of attachments, identicall process is performed.\n\nIf you need to match a specific file precisely, you can do so by specifying its full name as is the case in the second row. Template `321312312_template.html` is one of the files present in the \"environment\" and is therefore used directly.\n\n#### Email customization\n\nEach email body can be specified either by a plain text (using column `text`) or by an html template (using column `html_file`). Mailgun component allows further customizations of the body (both plain text and html) and subject using special word tags. These word tags take a form of `{{COLUMN_NAME}}`, where `COLUMN_NAME` is a name of the column, with which value the tag should be replaced. \n\nAs an example, imagine, that a following input table is provided:\n\n| email                | subject                          | text                                                                             | name  | order_id |\n|----------------------|----------------------------------|----------------------------------------------------------------------------------|-------|----------|\n| testy@mctestface.com | Your order summary #{{order_id}} | Hello {{name}},   Summary of your order: Order ID: {{order_id}} Email: {{email}} | Testy | 12345678 |\n\nThe component would read the contents of the plain text specified, and iterate over each column and replace the column tag `{{}}`, with its column value. In this case, an email would be sent with a following form:\n\n```\nTo: testy@mctestface.com\nSubject: Your order summary #12345678\n\nBody:\nHello Testy,\n\nSummary of your order:\nOrder ID: 12345678\nEmail: testy@mctestface.com\n```\n\nNote, that any of the attributes in the mailing list table can be used to fill subject, plain-text body, or html-template body. In case, a tag specified in the body of the email is not present in the input table, it will not be replaced. As an example, let's have a following html file `greetings.html`:\n\n```html\n<p>\n    <strong>\n        Hello {{name}},<br>\n    </strong>\n</p>\n<p>\n    Here's your order {{order_id}} of product {{product}}, it will arrive soon.\n</p>\n```\n\nand following input table:\n\n| email                | subject                          | html_file      | name  | order_id | product |\n|----------------------|----------------------------------|----------------|-------|----------|---------|\n| testy@mctestface.com | Your order summary #{{order_id}} | greetings.html | Testy | 12345678 |  12345  |\n\nTogether, they will generate an email with the following form:\n\n```\nTo: testy@mctestface.com\nSubject: Your order summary #12345678\n\nBody:\nHello Testy,\n\nHere's your order 12345678 of product {{product}}, it will arrive soon.\n```\n\n#### Sending attachments\n\nMailgun component allows to send attachments both, from storage and file storage. Note, that total size of email **must no exceed 25MB**, otherwise it will not be accepted by the API and will be returned. Component performs a strict check for size prior to sending and all over-size emails are recorded in results table.\n\nAs discussed in previous sections, tabular attachments must have a suffix `_tableattachment_` and must be specified by their full name in the mailing list table. If multiple attachments are specified, their names must be separated by a comma. A combination of both tabular and file attachments is allowed, as long as they do not exceed 25MB.\n\nExamples of attachments specification include:\n\n```\n_tableattachment_table1.csv, graph.png, report.pdf\n131242341_logo.jpeg, _tableattachment_orders.csv\n```","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["testConnection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":139,"uri":"docker/kds-team.app-mailgun-v2","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.app-mailgun-v2","name":"developer-portal-v2/kds-team.app-mailgun-v2","tag":"0.2.0","options":{},"digest":"sha256:1a38125ac5815a75de31b9cc1e1cfe2ec1e2406b80aed298cd95d38d9e65ed00"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-mailgun-v2/32/1571533592594.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-mailgun-v2/64/1571533592594.png","128":null}},{"id":"keboola.ex-mailkit","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":243,"name":"Mailkit","type":"extractor","shortDescription":"Extracts campaign, report, message, bounce, and unsubscribe data from the Mailkit API.","longDescription":"The component allows retrieving all datasets provided by [Mailkit Reporting API](https://www.mailkit.com/cz/podpora/api/uvod-do-api) along with list of all available campaigns into KBC Storage. Mailkit is the most comprehensive tool for emailing and sms marketing on the market. Providing unrivaled overview of your email campaigns combined with a simple user interface and automated processing of emails. The level of automation in Mailkit allows you to create templates used for regular messaging with content automatically updated from data sources.","licenseUrl":"https://github.com/keboola/component-mailkit-extractor/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/component-mailkit-extractor/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/component-mailkit-extractor","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":true,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Marketing"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Configuration","required":["clientId","#clientMd5","datasets","dateFrom","dateTo","daysPeriod","campaignIds"],"properties":{"dateTo":{"type":"string","title":"Absolute – Date To","default":null,"options":{"dependencies":{"dateRange":["absolute",""]}},"description":"Sets range period end date in format YYYY-MM-DD. <strong>Mailkit API limitation:</strong> CAMPAIGNS, ENGAGEMENT and RAW_* datasets do not support date filtering and will always return all available data. MLIST_UNSUBSCRIBED ignores this field — its end date is always the time of extraction.","propertyOrder":80},"clientId":{"type":"string","title":"Client ID","description":"Mailkit client ID","propertyOrder":10},"datasets":{"type":"array","items":{"enum":["CAMPAIGNS","REPORT","REPORT_CAMPAIGN","MSG_LINKS","RAW_MESSAGES","RAW_BOUNCES","RAW_RESPONSES","MLIST_UNSUBSCRIBED","ENGAGEMENT"],"type":"string"},"title":"Datasets","format":"checkbox","default":[],"minItems":0,"uniqueItems":true,"propertyOrder":40},"dateFrom":{"type":"string","title":"Absolute – Date From","default":null,"options":{"dependencies":{"dateRange":["absolute",""]}},"description":"Sets range period start date in format YYYY-MM-DD. <strong>Mailkit API limitation:</strong> CAMPAIGNS, ENGAGEMENT and RAW_* datasets do not support date filtering and will always return all available data. MLIST_UNSUBSCRIBED uses this as the start date only (end date is always today).","propertyOrder":70},"dateRange":{"enum":["relative","absolute"],"type":"string","title":"Date Range","format":"radio","default":"relative","options":{"enum_titles":["Relative","Absolute"]},"propertyOrder":50},"#clientMd5":{"type":"string","title":"Client MD5","description":"Mailkit client MD5 hash","propertyOrder":20},"daysPeriod":{"type":"integer","title":"Relative – Days Before Today","default":7,"options":{"dependencies":{"dateRange":["relative",""]}},"description":"Sets the range period as number of days from now. When set to 0, all data is fetched. <strong>Mailkit API limitation:</strong> CAMPAIGNS, ENGAGEMENT and RAW_* datasets do not support date filtering and will always return all available data. MLIST_UNSUBSCRIBED only supports a start date (end date is always today).","propertyOrder":60},"campaignIds":{"type":"array","items":{"type":"string","title":"Campaign"},"title":"Campaign IDs","options":{"tooltip":"If specified, only these campaigns will be downloaded"},"propertyOrder":90},"minPageSize":{"type":"integer","title":"Minimum Page Size","default":200,"options":{"tooltip":"Warning: On frequently updated datasets, the job may run indefinitely and eventually crash, causing both credit usage and data loss. Use the default value unless you understand the risks."},"description":"Stops paginating RAW_* datasets when a page returns fewer items than this threshold. Set to 0 to always paginate until the end.","propertyOrder":110},"mailingListIds":{"type":"array","items":{"type":"string","title":"Mailing List ID"},"title":"Mailing List IDs","options":{"tooltip":"Optional for the ENGAGEMENT dataset. If left empty, all enabled mailing lists are fetched automatically."},"propertyOrder":100},"verificationButton":{"type":"button","format":"sync-action","options":{"async":{"label":"Verify Credentials","action":"verifyCredentials"}},"propertyOrder":30}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"Configuration description.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["verifyCredentials"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-mailkit","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-mailkit","name":"developer-portal-v2/keboola.ex-mailkit","tag":"0.2.8","options":{},"digest":"sha256:ab3486ef6f3233f3b66938bd1e322f3a633c5ee4bb0d1d2e2f0a2df367a8a4da"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-mailkit/32/1758190386602.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-mailkit/64/1758190386602.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-mailkit/128/1758190386602.png"}},{"id":"keboola.wr-mailkit","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":151,"name":"Mailkit","type":"writer","shortDescription":"Writes a Keboola table to a Mailkit mailing list as email recipients.","longDescription":"The component allows you to create and update [Mailkit](https://www.mailkit.eu/en/) mailing lists. Mailkit is the most comprehensive tool for emailing and sms marketing on the market. Providing unrivaled overview of your email campaigns combined with a simple user interface and automated processing of emails. The level of automation in Mailkit allows you to create templates used for regular messaging with content automatically updated from data sources. With this component, you can simply import recipients from your KBC Storage tables.","licenseUrl":"https://github.com/keboola/component-mailkit-writer/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/component-mailkit-writer/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/component-mailkit-writer","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Marketing"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Configuration","required":["clientId","#clientMd5","listId"],"properties":{"listId":{"type":"integer","title":"Mailing list ID","options":{"tooltip":"Check the URL of the mailing list. The ID is the number after `ID_user_list,`"},"propertyOrder":40},"clientId":{"type":"string","title":"Client ID","options":{"tooltip":"Client ID as stated in Mailkit (Profil – Integrace – API ID)"},"propertyOrder":10},"#clientMd5":{"type":"string","title":"Client MD5","options":{"tooltip":"Client MD5 as stated in Mailkit (Profil – Integrace – MD5 kód)"},"propertyOrder":20},"columnMapping":{"type":"array","items":{"type":"object","title":"Mapping","required":["srcCol","destCol"],"properties":{"srcCol":{"type":"string","title":"Source Column"},"destCol":{"enum":["first_name","last_name","email","status","company","prefix","vocative","reply_to","nick_name","gender","phone","mobile","fax","street","city","state","country","zip","custom1","custom2","custom3","custom4","custom5","custom6","custom7","custom8","custom9","custom10","custom11","custom12","custom13","custom14","custom15","custom16","custom17","custom18","custom19","custom20","custom21","custom22","custom23","custom24","custom25"],"type":"string","title":"Mailkit Column"}}},"title":"Column mapping","description":"Assign columns in the source file to the correct fields in Mailkit.","uniqueItems":true,"propertyOrder":50},"verification_button":{"type":"button","format":"sync-action","options":{"async":{"label":"Verify Credentials","action":"verifyCredentials"}},"propertyOrder":30}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"Configuration description.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["verifyCredentials"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":151,"uri":"docker/keboola.wr-mailkit","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-mailkit","name":"developer-portal-v2/keboola.wr-mailkit","tag":"0.2.2","options":{},"digest":"sha256:e8b2d130043e68d351319b7bf6e0214599e8796110484085dc559ad6c671c8e8"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-mailkit/32/1758190398482.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-mailkit/64/1758190398482.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-mailkit/128/1758190398482.png"}},{"id":"medio.ex-majestic","vendor":{"id":"medio","name":"Taste","address":"Hybernská 1271/32\n110 00 Prague 1\nCzech republic","email":"keboola@taste.cz","type":"other"},"version":46,"name":"Majestic","type":"extractor","shortDescription":"SEO Tool - The Largest Link Index database","longDescription":"# Majestic\n**Created with love by Medio**\n\nKBC Docker app for extracting data from Majestic (https://majestic.com). \n\nThe Extractor gets multiple tables from Majestic tool and saves the data to Storage API. Date range of downloaded stats can be changed in configuration.","licenseUrl":"https://github.com/tastecz/keboola-components/blob/master/majestic/license","documentationUrl":"https://github.com/tastecz/keboola-components/tree/master/majestic","sourceCodeUrl":null,"requiredMemory":"512m","processTimeout":null,"features":["container-root-user"],"encryption":true,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","appInfo.experimental"],"imageParameters":{},"stackParameters":{},"testConfiguration":{},"configurationSchema":{"type":"object","title":"Parameters","required":["username","#password","bucket","domain","folder","since","until"],"properties":{"since":{"type":"string","title":"Date from","default":"","minLength":1,"description":"Any format supported by https://secure.php.net/manual/en/datetime.construct.php","propertyOrder":3},"until":{"type":"string","title":"Date to","default":"","minLength":1,"description":"Any format supported by https://secure.php.net/manual/en/datetime.construct.php","propertyOrder":4},"bucket":{"type":"string","title":"Output bucket","default":"in.c-ex-majestic-seo","minLength":1,"propertyOrder":7},"domain":{"type":"string","title":"Domain","default":"","minLength":1,"propertyOrder":5},"folder":{"type":"string","title":"Folder","default":"","minLength":1,"propertyOrder":6},"username":{"type":"string","title":"Username","default":"","minLength":1,"propertyOrder":1},"#password":{"type":"string","title":"Password","format":"password","default":"","minLength":1,"propertyOrder":2}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"## Configuration Parameters\n\n* **Output bucket** - Name of bucket where the data will be saved\n\n* **Domain** - URL of the domain you want to download data from (e. g. ``https://www.example.cz/``). If left empty, data for all domains under authorized account will be downloaded. **NOTICE: Put exact naming used in Majestic tool.** \n\n* **Folder** - Name of the folder, where the domain reports are saved, use the whole string from URL after ``folder=`` query.\n\n* **Username/Password** - Use Majestic credentials. \n\n## Output\n\nData are saved into tables **incrementally**:\n* **Target_URL**\t\n* **Source_URL**\t\n* **Anchor_Text**\n* **Source_Crawl_Date**\n* **Source_First_Found_Date**\n* **FlagNoFollow**\t\n* **FlagImageLink**\t\t\n* **FlagRedirect**\t\t\n* **FlagFrame**\n* **FlagOldCrawl**\t\t\n* **FlagAltText**\t\n* **FlagMention**\n* **SourceCitationFlow**\t\t\n* **SourceTrustFlow**\t\n* **TargetCitationFlow**\t\t\n* **TargetTrustFlow**\n* **SourceTopicalTrustFlow_Topic_0**\t\t\n* **SourceTopicalTrustFlow_Value_0**\t\t\n* **RefDomainTopicalTrustFlow_Topic_0**\t\t\n* **RefDomainTopicalTrustFlow_Value_0**\t\t\n* **downLoaded** - date when the statistics were extracted","configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/medio.ex-majestic","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/medio.ex-majestic","name":"developer-portal-v2/medio.ex-majestic","tag":"0.0.6","options":{},"digest":"sha256:e9f8e1529f54ad8bf0c32ae318510ca83c11787a0b8064ddbef009df378e6daa"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/medio.ex-majestic/32/3.png","64":"https://ui.keboola-assets.com/developer-portal/icons/medio.ex-majestic/64/3.png","128":null}},{"id":"kds-team.app-mapbox","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":362,"name":"Mapbox","type":"application","shortDescription":"Enriches data with Mapbox isochrone and routing results.","longDescription":"This application is a tool that enhances your data with [Mapbox API](https://docs.mapbox.com/api/overview/) capabilities. It currently supports two endpoints: \n\n[Isochrone](https://docs.mapbox.com/api/navigation/isochrone/): computes areas accessible within the same travel time or distance.\n\n[Matrix](https://docs.mapbox.com/api/navigation/matrix/):  provides travel times or distances between source and destination.","licenseUrl":"https://bitbucket.org/kds_consulting_team/kds-team.app-mapbox/src/master/LICENSE.md","documentationUrl":"https://bitbucket.org/kds_consulting_team/kds-team.app-mapbox/src/master/README.md","sourceCodeUrl":"https://bitbucket.org/kds_consulting_team/kds-team.app-mapbox/src/master/src/","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"out","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"medium","category":null,"categories":["API"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-simpleTableInput"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Data source configuration","required":["credentials"],"properties":{"credentials":{"type":"object","title":"Authorization","required":["#api_token"],"properties":{"#api_token":{"type":"string","title":"API token","format":"password","propertyOrder":1}},"propertyOrder":1}}},"configurationRowSchema":{"type":"object","title":"Configuration Parameters","required":["endpoint","isochrone_parameters","matrix_parameters"],"properties":{"endpoint":{"enum":["isochrone","directions-matrix"],"type":"string","title":"Endpoint","options":{"enum_titles":["Isochrone","Directions matrix"]},"required":true,"description":"Select the endpoint you want to use.","propertyOrder":1},"coordinates":{"type":"object","title":"Source coordinates columns","format":"grid","required":["longitude_column","latitude_column"],"properties":{"latitude_column":{"type":"string","title":"Latitude column name","watch":{"columns":"_metadata_.table.columns"},"required":true,"enumSource":"columns","propertyOrder":1},"longitude_column":{"type":"string","title":"Longitude column name","watch":{"columns":"_metadata_.table.columns"},"required":true,"enumSource":"columns","propertyOrder":2}},"description":"Columns in the input table with coordinates in <a href=\"https://en.wikipedia.org/wiki/Decimal_degrees\">decimal degrees</a> format","propertyOrder":3},"destination":{"type":"object","title":"Destination","properties":{"table_name":{"type":"string","title":"Table name (optional)","description":"The name of the output table; if empty, it defaults to the row configuration ID and the endpoint name.","propertyOrder":1}},"propertyOrder":9},"routing_profile":{"enum":["driving","walking","cycling"],"type":"string","title":"Routing profile","default":"driving","description":"Routing profile used to calculate results","propertyOrder":2},"matrix_parameters":{"type":"object","title":"Matrix parameters","options":{"dependencies":{"endpoint":"directions-matrix"}},"properties":{"annotations":{"type":"array","items":{"enum":["duration","distance"],"type":"string"},"title":"Annotations","format":"select","default":"duration","description":"Annotation of the resulting table","uniqueItems":true,"propertyOrder":5}},"propertyOrder":5},"isochrone_parameters":{"type":"object","title":"Isochrone parameters","options":{"dependencies":{"endpoint":"isochrone"}},"properties":{"polygons":{"type":"boolean","title":"Polygons","default":false,"required":true,"description":"Return GeoJSON polygons (true) or linestrings (false)","propertyOrder":7},"generalize":{"type":"number","title":"Generalize","default":"50.0","description":"A positive floating point value, in meters, used as the tolerance for Douglas-Peucker generalization","propertyOrder":6},"contours_type":{"enum":["meters","minutes"],"type":"string","title":"Contour type","default":"meters","description":"Type used for each isochrone contour","propertyOrder":4},"contours_value":{"type":"string","title":"Contour value or values separated by comma","default":"1000, 2000","description":"Maximum is 60 minutes or 100,000 meters","propertyOrder":5}},"propertyOrder":5},"destination_coordinates":{"type":"object","title":"Destination coordinates column","options":{"dependencies":{"endpoint":"directions-matrix"}},"properties":{"destination_coordinates_column":{"type":"string","title":"Destination coordinates column name","propertyOrder":1}},"description":"Column containing up to 24 coordinates: longitude, latitude separated by semicolon; e.g., 14.538, 50.053; 13.538, 49.053;","propertyOrder":4}}},"createConfigurationRowSchema":null,"configurationDescription":"To use the Mapbox application, you first need to provide a Mapbox API token in the Configuration tab.\n\nThen, you can create one or more row configurations where you set the table input, specify the endpoint to use ([Isochrone API](https://docs.mapbox.com/api/navigation/isochrone/) or [Matrix API](https://docs.mapbox.com/api/navigation/matrix/)), and set the parameters for the API call. Optionally, you can also specify the name of the output table.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.app-mapbox","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.app-mapbox","name":"developer-portal-v2/kds-team.app-mapbox","tag":"0.1.1","options":{},"digest":"sha256:9e75296cf6041e097c878e336e61f9d1e0966ffaf572111e072628aea93f0ff1"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-mapbox/32/1704354548162.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-mapbox/64/1704354548162.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-mapbox/128/1704354548162.png"}},{"id":"kds-team.ex-market-vision","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":119,"name":"Market Vision","type":"extractor","shortDescription":"Extracts form and question data from the Market Vision mystery-shopping API.","longDescription":"This data source allows you to extract form and question data from the Market Vision API.","licenseUrl":"https://bitbucket.org/kds_consulting_team/kds-team.ex-market-vision/src/master/LICENSE.md","documentationUrl":"https://bitbucket.org/kds_consulting_team/kds-team.ex-market-vision/src/master/README.md","sourceCodeUrl":"https://bitbucket.org/kds_consulting_team/kds-team.ex-market-vision/src/master/","requiredMemory":null,"processTimeout":14400,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-resetState"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Configuration","required":["username","#password"],"properties":{"username":{"type":"string","title":"Username","propertyOrder":10},"#password":{"type":"string","title":"Password","format":"password","propertyOrder":20}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"Enter your username and password to retrieve all data from all projects in Market Vision. \nThe data is extracted incrementally, so only data that has been changed since the last run is fetched. \nThe component has backfill implemented, meaning that if not all data could be fetched in the first run due to large amounts of data, it will be fetched in the following runs.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":119,"uri":"docker/kds-team.ex-market-vision","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-market-vision","name":"developer-portal-v2/kds-team.ex-market-vision","tag":"0.0.7","options":{},"digest":"sha256:2d8ff5f5241c6984568c509c9772957bbf672e04bfb5441dcb5a6965c20f7b82"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-market-vision/32/1642669692255.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-market-vision/64/1642669692255.png","128":null}},{"id":"marketingminer.ex-marketing-miner","vendor":{"id":"marketingminer","name":"Marketing Miner s.r.o","address":"Pražská 108/10\n266 01 Beroun","email":"info@marketingminer.com","type":"other"},"version":21,"name":"Marketing Miner","type":"extractor","shortDescription":"Fetch project rank tracking data from the Marketing Miner into Keboola.","longDescription":"Fetch project rank tracking data from the **Marketing Miner** into Keboola. Who are we? Marketing Miner is all-in-one data mining tool for online marketers which allows you to mine valuable data about your keywords, domains, URLs or products.","licenseUrl":"https://www.marketingminer.com/en/terms-and-conditions","documentationUrl":"https://www.marketingminer.com/en/tutorials","sourceCodeUrl":null,"requiredMemory":null,"processTimeout":null,"features":["container-root-user"],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Marketing"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericTemplatesUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["config"],"properties":{"config":{"type":"object","title":"Config","required":["dateFrom","dateTo","projectId"],"properties":{"dateTo":{"type":"string","title":"Date to","default":"","maxLength":10,"minLength":10,"description":"Date in YYYY-MM-DD format (e.g. 2018-12-24)","propertyOrder":3},"dateFrom":{"type":"string","title":"Date from","default":"","maxLength":10,"minLength":10,"description":"Date in YYYY-MM-DD format (e.g. 2018-12-01)","propertyOrder":2},"projectId":{"type":"string","title":"Marketing Miner Project ID","default":"","maxLength":36,"minLength":36,"description":"Enter the project’s ID from the project detail page URL in xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx format","propertyOrder":1}}}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/marketingminer.ex-marketing-miner","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/ex-generic-v2","name":"developer-portal-v2/ex-generic-v2","tag":"3.4.0","options":{"region":""},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/marketingminer.ex-marketing-miner/32/2.png","64":"https://ui.keboola-assets.com/developer-portal/icons/marketingminer.ex-marketing-miner/64/2.png","128":null}},{"id":"kds-team.ex-marketo","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":32,"name":"Marketo","type":"extractor","shortDescription":"Extracts leads, lead activities and changes, campaigns, and activity types from the Marketo REST API.","longDescription":"This component allows KBC to get data from a few endpoints of the Marketo REST API (http://developers.marketo.com/rest-api/). \nIt relies heavily on package marketorestpython (https://github.com/jepcastelein/marketo-rest-python).\n\nAs of now, the component can be used for extracting data from 5 endpoints, but it can be easily extended:\n- extract_leads_by_ids\n- extract_leads_by_filter\n- get_lead_activities\n- get_lead_changes\n- get_deleted_leads\n- get_campaigns\n- get_activity_types\n\n## Parameters\nThere are 10 options in the UI:\n- Munchkin ID\n- Client ID\n- Client Secret\n- Input/Output tables. *The tables need to mapped to specific names (names can be found in main.py)*\n- Desired Fields. *write down the column names you want to extract and separate them by white space*\n- Method. *denotes the endpoint*\n- Until Date\n- Since Date\n- Column with Filter Values *Denotes the column in the input file that contains the values you want to filter for*\n- Field to filter on *Denotes the field in the API to filter on*\n- How many days back you want to go? *Alternative to Since Date. The Until Date is automatically set to current date if this field is used.*\n\n## Endpoints\n- extract_leads_by_ids\n    * Takes in _Desired Fields_ parameter\n    * The output is mapped to `leads_by_ids`\n    * The input needs to contain column with name `lead_id` with list of id\n    * The _Desired Fields_ parameter denotes which fields should be retrieved\n- extract_leads_by_filter\n    * Takes in _Desired Fields_ and _Column with Filter Values_ parameter\n    * The output is mapped to `leads_by_filter`\n    * The input needs to contain column with the values to input to the filter (the column is specified by the _Filter Values Column_)\n    * The _Desired Fields_ parameter denotes which fields should be retrieved\n    * Current functionality allows only filtering on e-mail\n- get_lead_activities\n    * Takes in _Since Date_ and _Until_date_ parameter. These denote the date when the activity occured.\n    * The output is mapped to `lead_activites`\n    * The input needs to contain columns 'activity_type_ids' and 'lead_ids'\n    * output file will contain columns based on the fields in extracted responses \n    * it can definitely happen that different runs will produce different number of columns!!\n    * _Since Date_ and _until_date_ parameters are self-explanatory\n- get_lead_changes\n    * Takes in _Since Date, Until Date_ and _Desired Fields_ parameter. These denote the date of the change in a lead.\n    * The output is mapped to `lead_changes`\n    * Output file will contain columns `leadId`, `activityDate` and `activityTypeId`\n    * _Since Date_  and _Until Date_ parameters are self-explanatory\n    * _Desired Fields_ parameter denotes the list of field names to return changes for, field names can be retrieved with the Describe Lead API\n- get_deleted_leads\n    * Takes in the _Since Date_ parameter. This denotes the date when a lead was deleted.\n    * The output is mapped to `deleted_leads`\n- get_campaigns\n    * Takes in the _Field to filter on_ and _Column with Filter Values_\n    * If the above parameters are left blank, all campaigns are retrieved.\n    * The output is mapped to `campaigns`\n- get_activity_types\n    * Doesn't require any parameters.\n    * The output is mapped to `activity_types`.\n    ","licenseUrl":"https://github.com/keboola/component-marketo/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-marketo/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-marketo","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Marketo Database","required":["#munchkin_id","#client_id","#client_secret","method","since_date","until_date","filter_column","desired_fields","filter_field","dayspan"],"properties":{"method":{"enum":["extract_leads_by_ids","extract_leads_by_filter","get_deleted_leads","get_lead_changes","get_lead_activities","get_companies","get_campaigns","get_activity_types"],"type":"string","title":"Method","default":"extract_leads_by_ids","propertyOrder":5},"dayspan":{"type":"string","title":"How many days back you want to go?","description":"Alternative to Since Date. The Until Date is automatically set to current date if this field is used.","propertyOrder":10},"#client_id":{"type":"string","title":"Client ID token","format":"password","propertyOrder":2},"since_date":{"type":"string","title":"Since Date (From)","description":"Start date for the extraction. Format: YYYY-MM-DD","propertyOrder":6},"until_date":{"type":"string","title":"Until Date (To)","description":"End date for the extraction. Format: YYYY-MM-DD","propertyOrder":7},"#munchkin_id":{"type":"string","title":"Munchkin ID token","format":"password","description":"Can be found in Admin > Web Services menu in the REST API section","propertyOrder":1},"filter_field":{"type":"string","title":"Field to filter on","description":"The API fields you want to filter on.","propertyOrder":9},"filter_column":{"type":"string","title":"Column with Filter Values","description":"Denotes the column in the input file that contains the values you want to filter for. Relevant only for [extract_leads_by_filter] and [get_campaigns].","propertyOrder":8},"#client_secret":{"type":"string","title":"Client Secret token","format":"password","propertyOrder":3},"desired_fields":{"type":"string","title":"Desired Fields","description":"Comma seperated. Column names you want to extract. Relevant to some endpoints only.","propertyOrder":4}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"### Configurations\n\n1. Desired Fields\n    - Specifying the columns you want to extract\n    - Relevant to the endpoints below\n        1. `extract_leads_by_ids`\n        2. `extract_leads_by_filter`\n        3. `get_lead_changes`\n        4. `get_companies`\n\n2. Since Date (From)\n    - Specifing the date range of the extraction\n    - Relevant to the endpoints below\n        1. `get_deleted_leads`\n        2. `get_lead_changes`\n        3. `get_lead_activities`\n\n3. Until Date (To)\n    - Specifing the date range of the extraction\n    - Relevant to the endpoints below\n        1. `get_lead_changes`\n        2. `get_lead_activities`\n\n4. Filter Column\n    - Denotes the column in the input file that contains the values you want to filter\n    - Relevant to the endpoints below\n        1. `extract_leads_by_filter`\n        2. `get_campaigns`\n\n5. Field to filter on\n    - The API fields you want to filter on\n\n6. How many days back you want to go?\n    - Alternative to `Since Date`. The `Until Date` is automatically set to current date if this field is used","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":32,"uri":"docker/kds-team.ex-marketo","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-marketo","name":"developer-portal-v2/kds-team.ex-marketo","tag":"0.1.0","options":{},"digest":"sha256:80f6efbf798bb64fb433282560bb33e184bf462ac2cc2dda5807515083354c05"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-marketo/32/1616195429460.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-marketo/64/1616195429460.png","128":null}},{"id":"kds-team.ex-marketo-bulk-v2","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":147,"name":"Marketo Bulk V2","type":"extractor","shortDescription":"Extracts Marketo leads and lead activities via the Bulk Extract API.","longDescription":"Marketo is a platform where users can develops and sells marketing automation software for account-based marketing and other marketing services and products including SEO and content creation.\n\nThis component will allow users to extract their leads and lead activities into Keboola to conduct further analysis.\n\n\n## Configuration Parameters\n1. Munchkin ID\n    - Available in `Admin` > `Web Services` menu in the REST API section\n2. Client ID\n3. Client Secret\n\n## Endpoint Parameters\n1. Leads\n    - Created At - `Required`\n        - `Leads` endpoint is required to have either `Created At` or `Updated At` parameters configured. The componet will fail if none of them is configured\n        - `month/year`\n            - Mainly use for backfill\n            - Required format - MMM YYYY (e.g. Jan 2019)\n        - `timespan`\n            - Specifying the amount days back you want to extract\n    - Updated At - `Optional`\n        - `Leads` endpoint is required to have either `Created At` or `Updated At` parameters configured. The componet will fail if none of them is configured\n        - `month/year`\n            - Mainly use for backfill\n            - Required format - MMM YYYY (e.g. Jan 2019)\n        - `timespan`\n            - Specifying the amount days back you want to extract\n    - Desired Fields - `Required`\n2. Activities\n    - Created At - `Required`\n        - `month/year`\n            - Mainly use for backfill\n            - Required format - MMM YYYY (e.g. Jan 2019)\n        - `timespan`\n            - Specifying the amount days back you want to extract\n    - Desired Activities - `Optional`\n        - IDs of activities you want to extract and separate them by comma. Note: The “Delete Lead” activity is not supported.\n\n## Output Tables\nFor `Leads` endpoint the resulting table contains all possible columns. This is hardcoded and cannot be changed. The PK is `id`, loads are incremental.\n\nFor `Activities` endpoint the PK is `MarketoGUID`, the loads are incremental as well.","licenseUrl":"https://github.com/keboola/component-marketo-bulk-v2/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-marketo-bulk-v2/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-marketo-bulk-v2","requiredMemory":"1g","processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Marketing"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Marketo Database","required":["munchkinid","client_id","#client_secret"],"properties":{"client_id":{"type":"string","title":"Client ID","propertyOrder":2},"munchkinid":{"type":"string","title":"Munchkin ID","description":"Can be found in [Admin] > [Web Services] menu in the REST API section","propertyOrder":1},"#client_secret":{"type":"string","title":"Client Secret","format":"password","propertyOrder":3}}},"configurationRowSchema":{"type":"object","title":"Marketo Database","required":["query","debug"],"properties":{"debug":{"type":"boolean","title":"Debug","default":false,"propertyOrder":200},"query":{"type":"object","anyOf":[{"type":"object","title":"Leads","options":{"keep_oneof_values":false},"required":["endpoint","desired_fields"],"properties":{"endpoint":{"enum":["Leads"],"type":"string","options":{"hidden":true}},"created_at":{"type":"object","title":"Created At - [Required]","properties":{"type":{"enum":["month/year","dayspan"],"type":"string","title":"Type","default":"month/year"},"value":{"type":"string","title":"Value","description":"[month/year] required format: MM YYYY, eg: Oct 2018; [dayspan] - number of days back to fetch 'Created At'."}},"propertyOrder":100},"updated_at":{"type":"object","title":"Updated At - [Optional]","properties":{"type":{"enum":["month/year","dayspan"],"type":"string","title":"Type","default":"month/year"},"value":{"type":"string","title":"Value","description":"[month/year] required format: MM YYYY, eg: Oct 2018; [dayspan] - number of days back to fetch 'Updated At'."}},"propertyOrder":200},"desired_fields":{"type":"string","title":"Desired Fields - [Required]","description":"Values must be comma separated. Specifying the columns you want to extractor and [id] column needs to be include as it is the primary key. ","propertyOrder":300}},"description":"Leads endpoint is required to have either [Created At] or [Updated At] parameters configured. The componet will fail if none of them is configured","additionalProperties":false},{"type":"object","title":"Activities","options":{"keep_oneof_values":false},"required":["endpoint","created_at"],"properties":{"endpoint":{"enum":["Activities"],"type":"string","options":{"hidden":true}},"created_at":{"type":"object","title":"Created At - [Required]","properties":{"type":{"enum":["month/year","dayspan"],"type":"string","title":"Type","default":"month/year"},"value":{"type":"string","title":"Value","description":"[month/year] required format: MM YYYY, eg: Oct 2018; [dayspan] - number of days back to fetch 'Created At'."}},"propertyOrder":200},"desired_activities":{"type":"string","title":"Desired Activities - [Optional]","description":"IDs of activities you want to extract and separate them by comma. Note: The “Delete Lead” activity is not supported.","propertyOrder":300}},"additionalProperties":false}],"title":"Endpoint","options":{"keep_oneof_values":false},"propertyOrder":100}}},"createConfigurationRowSchema":null,"configurationDescription":"## Output Tables\nFor `Leads` endpoint the resulting table contains all possible columns. This is hardcoded and cannot be changed. The PK is `id`, loads are incremental.\n\nFor `Activities` endpoint the PK is `MarketoGUID`, the loads are incremental as well.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":147,"uri":"docker/kds-team.ex-marketo-bulk-v2","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-marketo-bulk-v2","name":"developer-portal-v2/kds-team.ex-marketo-bulk-v2","tag":"0.1.0","options":{},"digest":"sha256:8d517fff74b57842d853873299c42a78e64223ea13a1e6f558f3282fb1cb5568"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-marketo-bulk-v2/32/1617127396389.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-marketo-bulk-v2/64/1617127396389.png","128":null}},{"id":"keboola.ex-medallia","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":57,"name":"Medallia Experience Cloud","type":"extractor","shortDescription":"Extracts any Medallia Experience Cloud object (feedback, invitations, customers, and more) via the Query API, or runs a raw GraphQL query.","longDescription":"# Medallia Experience Cloud Extractor\n\nPulls data from Medallia Experience Cloud into Keboola through Medallia's Query API. Add one row per thing you want to load — feedback, invitations, customers, programs, and other collections your instance exposes — or write your own query for advanced cases.\n\n## Features\n\n- **Any object, one table per row.** Pick what to extract from a list loaded from your instance (or type its name), and it lands in its own table.\n- **Pick your fields.** Choose the fields to load by name, or leave it empty to take everything available. Each field becomes a column.\n- **Load only new records.** For an object with a date field, pick it and the component remembers where it left off, so each run brings in only newer records. Objects without a date field load in full.\n- **Date range.** Limit a load to a Start/End date window.\n- **Optional filters.** Narrow a load further with a simple JSON filter.\n- **Raw query mode.** For advanced use, write your own GraphQL query and the component handles paging through the results.\n\n## Authentication\n\nSign in with the API credentials from your Medallia administrator: your instance address, company (account) name, API address, and a client ID and secret.\n\n## Output\n\nOne table per row. Rows are matched by the record's own id where Medallia provides one, so re-runs update existing rows instead of duplicating them; for records without an id, a stable row fingerprint is used instead.","licenseUrl":"https://github.com/keboola/component-ex-medallia/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-ex-medallia/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-ex-medallia","requiredMemory":null,"processTimeout":null,"features":[],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"medium","category":null,"categories":[],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Medallia Connection","required":["instance_host","company_name","api_host","client_id","#client_secret"],"properties":{"api_host":{"type":"string","title":"API Host","options":{"tooltip":"The address that serves your data — for example `mycompany.apis.medallia.com`. It is different from the Instance Host above, and test/sandbox instances use a different one, so enter exactly the address your administrator gives you.","inputAttributes":{"placeholder":"mycompany.apis.medallia.com"}},"description":"The API address for your instance","propertyOrder":30},"client_id":{"type":"string","title":"Client ID","options":{"tooltip":"Part of the API credentials your Medallia administrator creates for you (sometimes called an app or integration key)."},"description":"The Client ID from your API credentials","propertyOrder":40},"company_name":{"type":"string","title":"Company Name","options":{"tooltip":"Your company (account) name, as given by your administrator — usually your organization's short name. It is entered separately because some instances spell it differently in the API address, so it can't be filled in automatically.","inputAttributes":{"placeholder":"mycompany"}},"description":"Your company (account) name","propertyOrder":20},"instance_host":{"type":"string","title":"Instance Host","options":{"tooltip":"The address you use to reach Medallia — for example `mycompany.medallia.com` (leave out `https://`). Your Medallia administrator can confirm it if you're unsure.","inputAttributes":{"placeholder":"mycompany.medallia.com"}},"description":"The address of your instance, without https://","propertyOrder":10},"#client_secret":{"type":"string","title":"Client Secret","format":"password","options":{"tooltip":"The secret that goes with the Client ID — treat it like a password. Your Medallia administrator issues it, and it is stored encrypted."},"description":"The Client Secret that pairs with the Client ID","propertyOrder":50},"test_connection":{"type":"button","format":"test-connection","options":{"async":{"label":"Test Connection","action":"testConnection"}},"propertyOrder":60}}},"configurationRowSchema":{"type":"object","title":"Medallia Object Extraction","properties":{"mode":{"enum":["structured","raw"],"type":"string","title":"Mode","default":"structured","options":{"tooltip":"Guided mode extracts one object with the fields you pick, over the date range you set. Raw mode runs a GraphQL query you write yourself (always loads everything).","enum_titles":["Guided (pick an object)","Raw GraphQL query"]},"description":"Pick an object to extract, or write your own query","propertyOrder":10},"fields":{"type":"array","items":{"enum":[],"type":"string"},"title":"Fields","format":"select","options":{"async":{"cache":true,"label":"Load Fields","action":"listFields","autoload":["data_object","only_program_fields"]},"tooltip":"Each field you pick becomes one column in the output table. Fields are listed as `Name (api_id)` — the id is what Medallia's own documentation and filters use, so you can search the list by either. The list reloads when you change the object or the toggle above. Leave empty to take every available field.","dependencies":{"mode":"structured"}},"description":"The fields to extract; leave empty to take all of them","uniqueItems":true,"propertyOrder":30},"filters":{"type":"string","title":"Filters","format":"editor","options":{"editor":{"mode":"application/json","placeholder":"{\"fieldIds\": [\"e_creationdate\"], \"gte\": \"2026-01-01\"}"},"tooltip":"A Medallia filter tree (JSON), AND-joined with the date range above. A leaf clause is `{\"fieldIds\": [\"FIELD_ID\"], \"OP\": VALUE}`, where `OP` is one of `eq`, `in`, `gt`, `gte`, `lt`, `lte`, `isNull`; combine leaves with `and` / `or` / `not`. Example: `{\"and\": [{\"fieldIds\": [\"e_creationdate\"], \"gte\": \"2026-01-01\"}, {\"fieldIds\": [\"a_survey_channel\"], \"in\": [\"web\", \"email\"]}]}`. Field ids come from the Load Fields picker. Full grammar: [Medallia Query API — Filter and sort data](https://docs.medallia.com/en/medallia-experience-cloud/integration/apis/query-api/data-queries/filter-and-sort-data). Leave empty for no extra filtering.","dependencies":{"mode":"structured"}},"description":"Optional extra filter, written as JSON","propertyOrder":100},"end_date":{"type":"string","title":"End Date","options":{"tooltip":"The end of the date range to load (that whole day is included). In guided mode it is the latest date pulled; empty means up to now. In raw mode it replaces `{{end_date}}` in your query. Accepts a date like `2026-01-31`, a number of seconds since 1970, or words like `yesterday`."},"description":"The latest date to load up to; empty means up to now","propertyOrder":95},"load_type":{"enum":["incremental_load","full_load"],"type":"string","title":"Load Type","options":{"tooltip":"How the table is written. **Incremental Load** adds new rows and updates changed ones, matched by the table's primary key. **Full Load** overwrites the entire table every run. This setting controls writing only — the date range comes from the Date Field, Start Date and End Date below, and is the same either way. Left unset, behaves as Incremental Load.","enum_titles":["Incremental Load","Full Load"],"dependencies":{"mode":"structured"}},"description":"Write mode: Incremental upserts by primary key; Full Load overwrites the table. Defaults to Incremental Load when left unset.","propertyOrder":70},"page_size":{"type":"integer","title":"Page Size","default":100,"maximum":500,"minimum":25,"options":{"tooltip":"How many records to fetch per request (default 100, allowed 25–500). Each batch is held in memory before it is written out, so if you extract many fields at once, keep this lower (e.g. 50–100) to avoid running out of memory. Values outside 25–500 are adjusted into range."},"description":"Records fetched per request (25–500). Lower it if you select many fields.","propertyOrder":110},"raw_query":{"type":"string","title":"Raw GraphQL Query","format":"editor","options":{"editor":{"mode":"text/plain"},"tooltip":"Must declare $first and $after variables (with your connection's ACTUAL argument types — on Medallia these are typically first: Int! and after: ID, not Int/String), pass them to exactly one top-level connection, and select nodes { … } and pageInfo { hasNextPage endCursor }. The component injects first/after (after starts as null, then the endCursor) and pages via pageInfo, but runs your query verbatim without rewriting variable types. You may also use {{start_date}} and {{end_date}} placeholders anywhere in the query — they are replaced with the resolved Start Date / End Date (relative dates like '5 days ago' supported), e.g. `gte: \"{{start_date}}\"`. Raw mode is always a full load.","dependencies":{"mode":"raw"}},"description":"A GraphQL query returning exactly one paginated connection.","propertyOrder":40},"data_object":{"enum":[],"type":"string","title":"Data Object","format":"select","options":{"tags":true,"async":{"cache":true,"label":"Load Objects","action":"listObjects","autoload":true},"tooltip":"The list is loaded from your instance. If it stays empty, your instance blocks automatic discovery — type the object name manually (e.g. `feedback`, `customers`, `programs`).","dependencies":{"mode":"structured"}},"description":"The object to extract into one table","propertyOrder":20},"output_table":{"type":"string","title":"Storage Table Name","options":{"tooltip":"The name of the output table. In guided mode it is optional and defaults to the object name; in raw mode you must set it, because there is no object name to fall back on. Use different names to extract the same object several ways in one configuration."},"description":"Name for the output table (required in raw mode)","propertyOrder":50},"initial_start":{"type":"string","title":"Start Date","options":{"tooltip":"The start of the date range to load. It applies to **every** run, not just the first — set it to `5 days ago` and every run loads the last five days. Change it and the next run uses the new value straight away, so this is also how you go back and pick up a period you missed. Accepts a date like `2026-01-01`, a number of seconds since 1970, or words like `yesterday`, `5 days ago`, or `last monday`. In raw mode it replaces `{{start_date}}` in your query. Leave empty for no start limit — but note that then every run loads the object's entire history.\n\nA rolling value such as `5 days ago` re-reads the same days each run. That is deliberate: records often reach Medallia after the date they carry, and re-reading catches them. Rows are matched on the primary key, so nothing is duplicated. Set it as far back as records can realistically arrive late."},"description":"The earliest date to load from, on every run; empty means no start limit","propertyOrder":90},"validate_query":{"type":"button","format":"sync-action","options":{"async":{"label":"Validate & Preview Query","action":"validateQuery"},"dependencies":{"mode":"raw"}},"propertyOrder":60},"incremental_field":{"enum":[],"type":"string","title":"Date Field","format":"select","options":{"async":{"cache":true,"label":"Load Date Fields","action":"listDateFields","autoload":["data_object"]},"tooltip":"The date field that the Start Date and End Date apply to. Leave empty to load the whole object with no date limit.\n\n**Which field to pick matters.** Choose one that reflects when a record became *available* in Medallia rather than when it was originally created — Medallia recommends `e_initialfinishdate`. With a creation date such as `e_creationdate`, a survey created on the 1st and answered on the 20th still carries the 1st, so your Start Date has to reach back far enough to cover the whole answering delay or that record is never loaded.","dependencies":{"mode":"structured"}},"description":"The date field that the Start Date and End Date below apply to","propertyOrder":80},"only_program_fields":{"type":"boolean","title":"Only fields used on a survey program","format":"checkbox","options":{"tooltip":"Off (default): the Fields list shows every field available for this object. On: it shows only fields tied to at least one survey program, which can be a much shorter list. If a field you expect is missing, leave this off. Changing it reloads the Fields list.","dependencies":{"mode":"structured"}},"description":"Show only fields collected on a survey program","propertyOrder":25}}},"createConfigurationRowSchema":null,"configurationDescription":"### Connection\n\nEnter your Medallia API credentials — instance address, company (account) name, API address, client ID, and client secret. Use **Test Connection** to check them before saving.\n\n### Data Extraction\n\nAdd one row per object you want to load. Choose a **Mode**:\n\n- **Guided** — pick a **Data Object** (**Load Objects** lists what your instance exposes, or type a name), then the **Fields** to load (**Load Fields** shows them by name; leave empty to take everything). To load only new records, pick a **Date Field** (**Load Date Fields**) — the component remembers the latest value it has loaded and continues from there next time; objects without a date field load in full. You can also set a Start/End date or a JSON **Filters** clause.\n- **Raw GraphQL query** — write a query that returns one paginated result; the component handles paging for you. Use **Validate Query** to check it. Raw mode always loads everything.\n\nRows are matched by the record's own `id` where available, otherwise by a stable row fingerprint.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["listDateFields","listFields","listObjects","testConnection","validateQuery"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":57,"uri":"docker/keboola.ex-medallia","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-medallia","name":"developer-portal-v2/keboola.ex-medallia","tag":"0.1.1","options":{},"digest":"sha256:a9b913e1aca7c1ecba53ca0496c3fc675bfd7fa93685c714acd8adec6e076e89"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-medallia/32/1784633217828.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-medallia/64/1784633217828.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-medallia/128/1784633217828.png"}},{"id":"keboola.ex-facebook-ads-v2","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":240,"name":"Meta Ads V2 (form. Facebook Ads)","type":"extractor","shortDescription":"Extracts advertising data from Facebook Ads.","longDescription":"This component uses the [Facebook Marketing API](https://developers.facebook.com/docs/marketing-api/reference/v3.0) to extract \n[ads](https://developers.facebook.com/docs/marketing-api/reference/adgroup) (including ad sets and campaigns) and [ads insights](https://developers.facebook.com/docs/marketing-api/reference/adgroup/insights/) from your Facebook Ad Account.\n\nTo extract your Facebook Pages feed (comments, likes, etc.) along with Page and Page post Insights, use the Facebook Pages extractor.","licenseUrl":"https://github.com/keboola/component-meta/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/component-meta/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/component-meta","requiredMemory":"512m","processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Advertisement"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-authorization"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["accounts","adaccounts","igaccounts"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-facebook-ads-v2","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-facebook-ads-v2","name":"developer-portal-v2/keboola.ex-facebook-ads-v2","tag":"0.1.5","options":{},"digest":"sha256:b6331f9b6f577d1f6f87674866ca191cfb2ddecc7e677dfc4ea239832ec947de"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-facebook-ads-v2/32/1752567565375.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-facebook-ads-v2/64/1752567565375.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-facebook-ads-v2/128/1752567565375.png"}},{"id":"kds-team.ex-bing-ads","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":780,"name":"Microsoft Advertising (Bing Ads)","type":"extractor","shortDescription":"Extracts Bing Ads campaign entities and performance reports.","longDescription":"This data source connector downloads reports from [Microsoft Advertising](https://ads.microsoft.com/), giving users\ninsight into the performance of their campaigns. It offers an easy way to access key metrics and insights that can be\nused to optimize your advertising efforts.\n\nThe report data can be downloaded incrementally allowing for automated retrieval of increments. Users can either define\na **custom report** or use one of the **predefined presets:**\n\n- Account Performance\n- Account Impression Performance\n- AdGroup Performance\n- AdGroup Impression Performance\n- Campaign Performance\n- Campaign Impression Performance\n- Product Dimension Performance\n- Keyword Performance\n- Geographic Performance","licenseUrl":"https://github.com/keboola/component-bingads-ex/blob/main/LICENSE.md","documentationUrl":"https://help.keboola.com/components/extractors/marketing-sales/bing-ads/","sourceCodeUrl":"https://github.com/keboola/component-bingads-ex","requiredMemory":null,"processTimeout":14400,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-authorization","genericVariablesUI"],"imageParameters":{"developer_token":"120034G508084627"},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"BingAds extractor configuration","required":["authorization"],"properties":{"authorization":{"type":"object","title":"Authorization","format":"table","required":["customer_id"],"properties":{"account_id":{"type":"array","items":{"enum":[],"type":"string","title":"AccountId"},"title":"Account ID","format":"select","options":{"async":{"label":"Re-load available accounts","action":"get_accounts","autoload":["parameters.authorization.customer_id"],"required":["customer_id"]}},"description":"Account identifier.See how to obtain it <a href=\"https://learn.microsoft.com/en-us/advertising/guides/get-started?view=bingads-13#get-ids\">here</a>","uniqueItems":true,"propertyOrder":5000},"customer_id":{"enum":[],"type":"string","title":"Customer ID","format":"select","options":{"async":{"label":"Re-load available customer Id","action":"get_customers","autoload":[]}},"description":"Customer identifier. See how to obtain it <a href=\"https://learn.microsoft.com/en-us/advertising/guides/get-started?view=bingads-13#get-ids\">here</a>","uniqueItems":true,"propertyOrder":4000}},"description":"Parameters used for authorization"}}},"configurationRowSchema":{"type":"object","title":"BingAds extractor row configuration","required":["destination","object_type"],"properties":{"destination":{"type":"object","title":"Destination","required":["output_table_name","load_type"],"properties":{"load_type":{"enum":["full_load","incremental_load"],"type":"string","title":"Load Type","default":"incremental_load","options":{"enum_titles":["Full Load","Incremental Load"]},"description":"If Full load is used, the destination table will be overwritten every run. If Incremental Load is used, data will be upserted into the destination table.","propertyOrder":10},"output_table_name":{"type":"string","title":"Storage Table Name","description":"Name of the table stored in Storage. Default object name used if left empty.","propertyOrder":20}},"propertyOrder":1000},"object_type":{"enum":["entity","report_prebuilt","report_custom"],"type":"string","title":"Object Type","default":"report_prebuilt","options":{"enum_titles":["Entity","Report (Prebuilt)","Report (Custom)"]},"propertyOrder":1},"bulk_settings":{"type":"object","title":"Entity Settings","options":{"dependencies":{"object_type":["entity"]}},"required":["download_entities","since_last_sync_time"],"properties":{"download_entities":{"type":"array","items":{"enum":[],"type":"string"},"title":"Entities","format":"select","default":["Campaigns","Ads"],"options":{"async":{"label":"Re-load available entities","action":"get_bulk_entities"}},"description":"Comma separated list of entities to download, find supported entities in the <a href='https://learn.microsoft.com/en-us/advertising/bulk-service/downloadentity?view=bingads-13'>documentation</a>.","uniqueItems":true,"propertyOrder":3000},"since_last_sync_time":{"type":"boolean","title":"Only download changes since the last run","format":"checkbox","default":true,"description":"If checked, only changes since the last component run will be downloaded. If checked for the first run of this component row, it will be ignored (i.e. all data will be downloaded)."}},"propertyOrder":20,"additionalProperties":false},"report_settings_custom":{"type":"object","title":"Report Settings Custom","options":{"dependencies":{"object_type":["report_custom"]}},"required":["report_type","aggregation","time_range","return_only_complete_data","columns_array","primary_key_array"],"properties":{"time_range":{"$ref":"#/definitions/time_range","propertyOrder":30},"aggregation":{"enum":["Daily","DayOfWeek","Hourly","HourOfDay","Monthly","Weekly","WeeklyStartingMonday","Yearly","Summary"],"type":"string","title":"Report Aggregation","default":"Daily","description":"The type of aggregation to use to aggregate the report data.","propertyOrder":20},"report_type":{"enum":["AccountPerformance","AdDynamicTextPerformance","AdExtensionByAd","AdExtensionByKeyword","AdExtensionDetail","AdGroupPerformance","AdPerformance","AgeGenderAudience","AssetGroupPerformance","AssetPerformance","AudiencePerformance","BudgetSummary","CallDetail","CampaignPerformance","ConversionPerformance","DSAAutoTargetPerformance","DSACategoryPerformance","DSASearchQueryPerformance","DestinationUrlPerformance","GeographicPerformance","GoalsAndFunnels","KeywordPerformance","NegativeKeywordConflict","ProductDimensionPerformance","ProductMatchCount","ProductNegativeKeywordConflict","ProductPartitionPerformance","ProductPartitionUnitPerformance","ProductSearchQueryPerformance","ProfessionalDemographicsAudience","PublisherUsagePerformance","SearchCampaignChangeHistory","SearchQueryPerformance","ShareOfVoice","UserLocationPerformance"],"type":"string","title":"Report type","default":"Object","description":"Select one of the available report types described in the <a href='https://learn.microsoft.com/en-us/advertising/guides/report-types?view=bingads-13'>offical documentation</a>","propertyOrder":10},"columns_array":{"type":"array","items":{"enum":[],"type":"string"},"title":"Columns","format":"select","options":{"async":{"label":"Re-load available columns","action":"get_report_columns"}},"description":"Comma separated list of columns to use for the report. ","uniqueItems":true,"propertyOrder":50},"primary_key_array":{"type":"array","items":{"type":"string","watch":{"dim":"report_settings_custom.columns_array"},"enumSource":"dim"},"title":"Primary Key","format":"select","description":"List of columns (from selected dimensions) to be used as primary key of the resulting table. We recommend using ID columns where possible, to avoid ambiguity in case the dimension name is changed.","uniqueItems":true,"propertyOrder":60},"return_only_complete_data":{"$ref":"#/definitions/return_only_complete_data","propertyOrder":40}},"propertyOrder":20},"report_settings_prebuilt":{"type":"object","title":"Report Settings","options":{"dependencies":{"object_type":["report_prebuilt"]}},"required":["preset_name","aggregation","time_range","return_only_complete_data"],"properties":{"time_range":{"$ref":"#/definitions/time_range","propertyOrder":30},"aggregation":{"enum":["Daily","Hourly"],"type":"string","title":"Report aggregation","default":"Daily","description":"The type of aggregation to use to aggregate the report data. Only hourly and daily aggregation is available for prebuilt reports.","propertyOrder":20},"preset_name":{"enum":["AccountPerformance","AccountImpressionPerformance","AdGroupPerformance","AdGroupImpressionPerformance","CampaignPerformance","CampaignImpressionPerformance","ProductDimensionPerformance","KeywordPerformance","GeographicPerformance","AssetPerformance","AssetGroupPerformance"],"type":"string","title":"Preset Name","default":"Object","description":"Select one of the available report presets. The columns and primary key that will be used for each preset are described in <a href='https://github.com/keboola/component-bingads-ex/blob/main/docs/report_presets_columns_and_pk.md'>this markdown file</a>.","propertyOrder":10},"return_only_complete_data":{"$ref":"#/definitions/return_only_complete_data","propertyOrder":40}},"propertyOrder":20}},"definitions":{"time_range":{"type":"object","title":"Time Range","required":["time_zone","period"],"properties":{"period":{"enum":["CustomTimeRange","Last14Days","Last30Days","LastFourWeeks","LastFourWeeksStartingMonday","LastMonth","LastSevenDays","LastSixMonths","LastThreeMonths","LastWeek","LastWeekStartingMonday","LastYear","ThisMonth","ThisWeek","ThisWeekStartingMonday","ThisYear","Today","Yesterday"],"type":"string","title":"Report Period","default":"Last14Days","propertyOrder":20},"date_to":{"type":"string","title":"Date To","default":"now","options":{"dependencies":{"period":"CustomTimeRange"}},"description":"End date of the report. Either date in YYYY-MM-DD format or relative date string i.e. 5 days ago, 1 month ago, yesterday, etc.","propertyOrder":50},"date_from":{"type":"string","title":"Date From","default":"1 week ago","options":{"dependencies":{"period":"CustomTimeRange"}},"description":"Start date of the report. Either date in YYYY-MM-DD format or a relative date string i.e. 5 days ago, 1 month ago, yesterday, etc. Can also be specified as `last run` to start the reporting period at the time of last extraction (this cannot be done in case of the first run for obvious reasons).","propertyOrder":40},"time_zone":{"enum":["AbuDhabiMuscat","Adelaide","Alaska","AlmatyNovosibirsk","AmsterdamBerlinBernRomeStockholmVienna","Arizona","AstanaDhaka","AthensIslandanbulMinsk","AtlanticTimeCanada","AucklandWellington","Azores","Baghdad","BakuTbilisiYerevan","BangkokHanoiJakarta","BeijingChongqingHongKongUrumqi","BelgradeBratislavaBudapestLjubljanaPrague","BogotaLimaQuito","Brasilia","Brisbane","BrusselsCopenhagenMadridParis","Bucharest","BuenosAiresGeorgetown","Cairo","CanberraMelbourneSydney","CapeVerdeIsland","CaracasLaPaz","CasablancaMonrovia","CentralAmerica","CentralTimeUSCanada","ChennaiKolkataMumbaiNewDelhi","ChihuahuaLaPazMazatlan","Darwin","EasternTimeUSCanada","Ekaterinburg","FijiKamchatkaMarshallIsland","Greenland","GreenwichMeanTimeDublinEdinburghLisbonLondon","GuadalajaraMexicoCityMonterrey","GuamPortMoresby","HararePretoria","Hawaii","HelsinkiKyivRigaSofiaTallinnVilnius","Hobart","IndianaEast","InternationalDateLineWest","IrkutskUlaanBataar","IslandamabadKarachiTashkent","Jerusalem","Kabul","Kathmandu","Krasnoyarsk","KualaLumpurSingapore","KuwaitRiyadh","MagadanSolomonIslandNewCaledonia","MidAtlantic","MidwayIslandandSamoa","MoscowStPetersburgVolgograd","MountainTimeUSCanada","Nairobi","Newfoundland","Nukualofa","OsakaSapporoTokyo","PacificTimeUSCanadaTijuana","Perth","Rangoon","Santiago","SarajevoSkopjeWarsawZagreb","Saskatchewan","Seoul","SriJayawardenepura","Taipei","Tehran","Vladivostok","WestCentralAfrica","Yakutsk"],"type":"string","title":"Report Time Zone","default":"BelgradeBratislavaBudapestLjubljanaPrague","options":{"enum_titles":["Abu Dhabi and Muscat","Adelaide, Australia","Alaska","Almaty and Novosibirsk","Amsterdam, Berlin, Bern, Rome, Stockholm, and Vienna","Arizona","Astana and Dhaka","Athens, Istanbul, Beirut, and Minsk","Atlantic Time and Canada","Auckland and Wellington, New Zealand","Azores","Baghdad","Baku, Tbilisi, and Yerevan","Bangkok, Hanoi, and Jakarta","Beijing, Chongqing, Hong Kong, and Urumqi","Belgrade, Bratislava, Budapest, Ljubljana, and Prague","Bogota, Lima, and Quito","Brasilia","Brisbane","Brussels, Copenhagen, Madrid, and Paris","Bucharest","Buenos Aires and Georgetown","Cairo","Canberra, Melbourne, and Sydney","Cape Verde Island","Caracas and La Paz (Bolivia)","Casablanca and Monrovia","Central America","Central Time U.S. and Canada","Chennai, Kolkata, Mumbai, and New Delhi","Chihuahua, La Paz (Mexico), and Mazatlan","Darwin","Eastern Time U.S. and Canada","Ekaterinburg","Fiji, Kamchatka, and Marshall Island","Greenland","Greenwich Mean Time, Dublin, Edinburgh, Lisbon, and London","Guadalajara, Mexico City, and Monterrey","Guam and Port Moresby","Harare and Pretoria","Hawaii","Helsinki, Kyiv, Riga, Sofia, Tallinn, and Vilnius","Hobart","Indiana (East)","International Date Line (West)","Irkutsk and Ulaanbaatar","Islamabad, Karachi, and Tashkent","Jerusalem","Kabul","Kathmandu","Krasnoyarsk","Kuala Lumpur and Singapore","Kuwait and Riyadh","Magadan, Solomon Islands, and New Caledonia","Mid-Atlantic","Midway Island and Samoa","Moscow, St Petersburg, and Volgograd","Mountain Time U.S. and Canada","Nairobi","Newfoundland","Nuku'alofa","Osaka, Sapporo, and Tokyo","Pacific Time, U.S. and Canada, and Tijuana","Perth","Rangoon","Santiago","Sarajevo, Skopie, Warsaw, and Zagreb","Saskatchewan","Seoul","Magadan, Solomon Islands, and New Caledonia","Sri Jayawardenepura","Taipei","Tehran","Vladivostok","West Central Africa","Yakutsk"]},"description":"Determines the time zone that is used to establish today's date.","propertyOrder":10}},"propertyOrder":20},"return_only_complete_data":{"type":"boolean","title":"Return only complete data","format":"checkbox","default":true,"description":"Determines whether or not the service must ensure that all the data has been processed and is available. If checked, and the requested data are (partially) incomplete or unavailable, an error will be raised.","propertyOrder":30}}},"createConfigurationRowSchema":null,"configurationDescription":"**Prerequisites:**\n\n1. Find your Bing Ads Account ID and Customer ID. Follow [this part of the official documentation](https://learn.microsoft.com/en-us/advertising/guides/get-started?view=bingads-13#get-ids). Both should be numbers such as `391827251`.\n\n2. Log into your account using the Authorize Account button in the Keboola interface. ","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["get_accounts","get_bulk_entities","get_customers","get_report_columns"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.ex-bing-ads","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-bing-ads","name":"developer-portal-v2/kds-team.ex-bing-ads","tag":"1.2.21","options":{},"digest":"sha256:2cd4e282665b6f0ef6d934f24c0ede28eb35a01779a1a0eba1bedeecffc1176d"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-bing-ads/32/1670924561688.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-bing-ads/64/1670924561688.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-bing-ads/128/1670924561688.png"}},{"id":"kds-team.wr-microsoft-dynamics","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":157,"name":"Microsoft Dynamics 365","type":"writer","shortDescription":"Writes data to Microsoft Dynamics 365 entities.","longDescription":"# Microsoft Dynamics 365 Writer\n\nMicrosoft Dynamics 365 is a product line of customer relationship management by Microsoft. The Microsoft Dynamics 365 writer for Keboola allows users to write data to their Dynamics instance with data directly from Keboola. The writer supports writing data to any available entity in Dynamics 365 instance, including custom entities.\n\nThe writer utilizes WebAPI Graph API and supports all versions of the API. For more information about the WebAPI, please read [the API reference](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/about).\n\n## Useful links\n\n- [Create an entity record](https://docs.microsoft.com/en-us/powerapps/developer/common-data-service/webapi/create-entity-web-api)\n- [Update or delete an entity record](https://docs.microsoft.com/en-us/powerapps/developer/common-data-service/webapi/update-delete-entities-using-web-api)\n- [Create relationships between entities using `@odata.bind`](https://docs.microsoft.com/en-us/powerapps/developer/common-data-service/webapi/associate-disassociate-entities-using-web-api#associate-entities-on-update-using-single-valued-navigation-property)\n- [Lookup vs. Navigation properties](https://docs.microsoft.com/en-us/powerapps/developer/common-data-service/webapi/web-api-types-operations#lookup-properties)\n- [WebAPI reference](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/about)","licenseUrl":"https://github.com/keboola/component-microsoft-dynamics-wr/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/component-microsoft-dynamics-wr/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/component-microsoft-dynamics-wr","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"out","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["CRM","ERP"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput","genericDockerUI-authorization"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["organization_url","api_version","operation","continue_on_error"],"properties":{"operation":{"enum":["delete","create_and_update","upsert"],"type":"string","title":"Operation","default":"create_and_update","options":{"enum_titles":["delete","create and update","upsert"]},"description":"The API operation to be performed with the data. Check the documentation for more information.","propertyOrder":300},"api_version":{"type":"string","title":"API Version","default":"v9.2","minLength":4,"description":"The API version, which will be used to query the data. For a list of available versions, please, refer to <a href='https://docs.microsoft.com/en-us/dynamics365/customerengagement/on-premises/developer/webapi/web-api-versions' target='_blank'>Microsoft's Web API documentation</a>.","propertyOrder":200},"organization_url":{"type":"string","title":"Organization URL","minLength":20,"description":"URL to the CRM system located in the Dynamics 365 cloud. Usually in format <a href='https://<organization>.crm.dynamics.com' target='_blank'>https://&ltorganization&gt.crm.dynamics.com</a>.","propertyOrder":100},"continue_on_error":{"type":"boolean","title":"Continue on Error","default":true,"description":"Marks, if the writer should continue writing data, if an error with any record occured.","propertyOrder":400}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"### Input tables\n\nFor each run, at least one input table needs to be specified. The name of the input table names marks the endpoint, to which the data will be loaded. For example, data from table `contacts.csv` will be written to endpoint `contacts`, data from `leads.csv` will be written to endpoint `leads`, etc. \n\n#### Valid entities (endpoints)\n\nIf one of the tables defines an entity (endpoint), which is not part of the target Dynamics CRM instance, an error will be raised before writing begins.\n\nFor a list of default Microsoft defined entities, please visit [Web API EntityType Reference](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/entitytypes). This list, however, does not include custom created entities and fields. For a complete list of entities, visit `[ORGANIZATION_URL]/api/data/[API_VERSION]/EntityDefinitions?%24select=EntitySetName`, where `ORGANIZATION_URL` is a unique URL of the Dynamics CRM instance for your organization, and `API_VERSION` is the API version specification, you'd like to use; e.g. `https://keboola.crm.dynamics.com/api/data/v9.1/EntityDefinitions?%24select=EntitySetName`. \n*Note: If the above request returns page error (i.e. HTTP ERROR 401), you need to be logged in first to access the resouce.*\n\n#### Mandatory columns\n\nEach operation requires a set of columns to be included with each table.\n\n##### Delete operation\n\nFor `delete` operation, which deletes records from target entities, only column `id` is required, which contains unique identificators of records to be deleted. IDs of particular records can be found in the URL of said record in the UI version of Microsoft Dynamics 365 or using the accompanying extractor component for Dynamics 365.\n\n![record_id](https://bitbucket.org/kds_consulting_team/kds-team.wr-microsoft-dynamics/raw/master/docs/images/record_id.png)\n\n##### Upsert operation\n\nFor operation `upsert`, columns `id` and `data` are required. `id`, as is the case in previous case, must contain unique identifier of records to be upserted. The field cannot be left empty, i.e. every row must have a valid ID, which will be accepted by the WebAPI. This way, the upsert operation allows users to specify their own ID for each record (more on that in *Parameters* section).\n\nIn `data` column, a valid JSON or Python Dictionary representation must be provided, which will be forwarded to the API.\n\n##### Create and update operation\n\nAll tables for this operation must have the same fields as in `upsert` operation with one exception, the `id` can be left blank. All blank IDs will be automatically created by the API and automatically assigned an ID. **This operation is recommended to be used over upsert.**\n\n### Parameters\n\n#### Organization URL (`organization_url`)\n\nThe URL of Dynamics 365 instance, where all API calls will be made. The URL can be discovered using [Global Discovery Service](https://docs.microsoft.com/en-us/powerapps/developer/common-data-service/webapi/discover-url-organization-web-api) or from the URL of web instance:\n\n![organization_url](https://bitbucket.org/kds_consulting_team/kds-team.wr-microsoft-dynamics/raw/master/docs/images/organization_url.png)\n\n#### API Version (`api_version`)\n\nThe API version of WebAPI which will be used to query the data. For a list of available APIs, please visit [API reference](https://docs.microsoft.com/en-us/dynamics365/customerengagement/on-premises/developer/webapi/web-api-versions).\n\n#### Operation (`operation`)\n\nThe operation, which should be performed on the data in the CRM. Available options are:\n\n- **delete**\n    - configuration name: `delete`\n    - description: The operation deletes all records from the target CRM instance, which match the IDs provided. The operation cannot be reversed and deletes the records forever.\n- **create and update**\n    - configuration name: `create_and_update`\n    - description: The operation updates records, which have an ID specified in the input table and creates those, where ID is left blank. This operation is **preferred over upserting the data**, since IDs creation and all necessary relationships are handled automatically via the API.\n- **upsert**\n    - configuration name: `upsert`\n    - description: All of the data is upserted into the API, i.e. all existing records are updated and non-existent records are created. For each non-existent record, an ID **must** be provided, which matches the ID format used by CRM instance. Non-comfortable IDs will be rejected by the API.\n\n#### Continue on Error (`continue_on_error`)\n\nA boolean flag, which marks, whether the writer should continue, when an exception, either from the API or configuration table, is encountered. An exception can be any 4xx response from the API, i.e. error when creating/updating/deleting a record, or an invalid JSON, missing ID, etc.\n\nIf set to `true`, writer continues executing until all rows from input tables are processed. After the component is finished, **an output table** with all operations is created, where success or failure of each operation is recorded. If set to `false`, the application raises an exception immediately after encountering any error.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["get_endpoints","validate_input_tables","validate_input_data"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":157,"uri":"docker/kds-team.wr-microsoft-dynamics","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.wr-microsoft-dynamics","name":"developer-portal-v2/kds-team.wr-microsoft-dynamics","tag":"0.1.21","options":{},"digest":"sha256:ef7f8e1b25a895dec329770d63112daf704d7c4fd15cc45c9bbbaee7a7163f92"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.wr-microsoft-dynamics/32/1579217221694.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.wr-microsoft-dynamics/64/1579217221694.png","128":null}},{"id":"kds-team.ex-microsoft-dynamics-365-finance-operations","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":256,"name":"Microsoft Dynamics 365 - Finance & Operations","type":"extractor","shortDescription":"Extracts data from Microsoft Dynamics 365 Finance & Operations entities.","longDescription":"Microsoft Dynamics 365 for Finance and Operations is an enterprise resource planning (ERP) solution developed by\nMicrosoft. It is designed to help enterprises manage critical business functions such as finance, accounting,\nproduction, warehousing, and transportation management.\n\nThis connector uses the [OData service](https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/data-entities/odata) to query the finance and operations entities.","licenseUrl":"https://github.com/keboola/component-microsoft-dynamics-365-finance-operations/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-microsoft-dynamics-365-finance-operations/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-microsoft-dynamics-365-finance-operations","requiredMemory":"1024m","processTimeout":21600,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"easy","category":null,"categories":["ERP"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","appInfo.beta","genericDockerUI-authorization"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"API Settings","required":["organization_url"],"properties":{"test_connection":{"type":"button","format":"test-connection","propertyOrder":500},"organization_url":{"type":"string","title":"Organization URL","minLength":20,"description":"Your organization's root URL. Usually in format https://[ORGANIZATION].operations.dynamics.com.","propertyOrder":100}}},"configurationRowSchema":{"type":"object","title":"Parameters","required":["endpoint","query","destination"],"properties":{"query":{"type":"string","title":"Query (Expert option)","format":"textarea","options":{"input_height":"100px"},"description":"A Microsoft OData query will be sent along with the request. All query pieces can be separated by a newline or \"&\".</br>Please refer to <a href='https://docs.oasis-open.org/odata/odata/v4.0/errata03/os/complete/part1-protocol/odata-v4.0-errata03-os-part1-protocol-complete.html#_The_$filter_System'>this article</a> for details about the Odata filter.","propertyOrder":400},"columns":{"type":"array","items":{"enum":[],"type":"string"},"title":"Columns","format":"select","options":{"async":{"label":"Re-load columns","action":"list_columns"},"inputAttributes":{"placeholder":"Download all columns"}},"description":"Select the columns to be downloaded (if left empty, all columns are fetched).","uniqueItems":true,"propertyOrder":310},"endpoint":{"enum":[],"type":"string","title":"Endpoint","format":"select","options":{"async":{"label":"Re-load endpoints","action":"list_endpoints"}},"description":"The entity to be queried","propertyOrder":300},"destination":{"type":"object","title":"Destination","required":["incremental"],"properties":{"table_name":{"type":"string","title":"Storage table name","description":"Name of the destination table for this query. If left empty, the object name is used.","propertyOrder":10},"incremental":{"enum":[false,true],"type":"boolean","title":"Load Type","default":true,"options":{"enum_titles":["Full Load","Incremental Load"]},"description":"If full load is used, the destination table will be overwritten every run. If incremental load is used, data will be upserted into the destination table.","propertyOrder":30}},"propertyOrder":600},"initial_since":{"type":"string","title":"Initial Since Value","description":"Starting date/time for the first run (e.g. 2024-01-01T00:00:00Z). Subsequent runs will use the last run time from state.","propertyOrder":460},"incremental_field":{"enum":[],"type":"string","title":"Incremental Field","format":"select","default":"","options":{"async":{"label":"Re-load columns","action":"list_columns"}},"description":"Field to use for time-based incremental loading (e.g. ModifiedDateTime). Will filter records greater than the last run time.","propertyOrder":450}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["generate_schema","list_columns","list_endpoints","testConnection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.ex-microsoft-dynamics-365-finance-operations","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-microsoft-dynamics-365-finance-operations","name":"developer-portal-v2/kds-team.ex-microsoft-dynamics-365-finance-operations","tag":"0.1.4","options":{},"digest":"sha256:d72212d803af935f7957b3cba22d2cc724d92749354dfd4cb9ad5ac0717fd730"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-microsoft-dynamics-365-finance-operations/32/1702636787682.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-microsoft-dynamics-365-finance-operations/64/1702636787682.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-microsoft-dynamics-365-finance-operations/128/1702636787682.png"}},{"id":"kds-team.ex-microsoft-dynamics","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":197,"name":"Microsoft Dynamics 365 CRM (Dataverse)","type":"extractor","shortDescription":"Extracts data from any Microsoft Dynamics 365 entity.","longDescription":"# Microsoft Dynamics 365 Extractor\n\nMicrosoft Dynamics 365 is a product line of customer relationship management by Microsoft. The Microsoft Dynamics 365 extractor for Keboola allows users to extract data from their Dynamics instance. The extractor supports downloading data from any available entity in Dynamics 365 instance, including custom entities.\n\nThe extractor utilizes WebAPI Graph API and supports all versions of the API. For more information about the WebAPI, please read [the API reference](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/about).\n\n## Useful links\n\n- [WebAPI Reference](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/about)\n- [Query Data Using WebAPI](https://docs.microsoft.com/en-us/powerapps/developer/common-data-service/webapi/query-data-web-api)\n- [Use WebAPI functions](https://docs.microsoft.com/en-us/powerapps/developer/common-data-service/webapi/use-web-api-functions)\n- [WebAPI Query Function Reference](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/queryfunctions)\n- [LastXDays Function](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/lastxdays)","licenseUrl":"https://github.com/keboola/component-microsoft-dynamics-ex/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-microsoft-dynamics-ex/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-microsoft-dynamics-ex","requiredMemory":"512m","processTimeout":72000,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["CRM","ERP"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-authorization","genericVariablesUI","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"API Settings","required":["organization_url","api_version"],"properties":{"api_version":{"type":"string","title":"API Version","minLength":4,"description":"The API version, which will be used to query the data. For a list of available versions, please, refer to <a href='https://docs.microsoft.com/en-us/dynamics365/customerengagement/on-premises/developer/webapi/web-api-versions' target='_blank'>Microsoft's Web API Versions</a> article, or <a href='https://docs.microsoft.com/en-us/powerapps/developer/common-data-service/webapi/compose-http-requests-handle-errors#web-api-url-and-versions' target='_blank'>here</a> for the most recent version number.","propertyOrder":200},"organization_url":{"type":"string","title":"Organization URL","minLength":20,"description":"URL to the CRM system located in the Dynamics 365 cloud. Usually in format <a href='https://<organization>.crm.dynamics.com'>https://&ltorganization&gt.crm.dynamics.com</a>.","propertyOrder":100}}},"configurationRowSchema":{"type":"object","title":"Parameters","required":["endpoint","advanced_mode","incremental"],"properties":{"query":{"type":"string","title":"Query (advanced)","format":"textarea","options":{"dependencies":{"advanced_mode":true},"input_height":"100px"},"description":"A Microsoft Web API query, which will be sent along with the request. All pieces of query can be separated by new-line or \"&\".</br>Please, refer to <a href='https://docs.microsoft.com/en-us/powerapps/developer/common-data-service/webapi/query-data-web-api'>this article</a> explaining how to use the querying language.","propertyOrder":410},"endpoint":{"enum":[],"type":"string","title":"Endpoint","format":"select","options":{"async":{"label":"Re-load available endpoints","action":"list_endpoints"}},"description":"The entity, which will be queried against. For a list of available entities, please, refer to <a href='https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/entitytypes' target='_blank'>entity documentation</a>. For a list of custom entities, please refer to component documentation, or check the job log.","uniqueItems":true,"propertyOrder":300},"incremental":{"enum":[1,0],"type":"number","title":"Load Type","default":1,"options":{"enum_titles":["Incremental Load","Full Load"]},"description":"Incremental load will load the table with primary keys and upsert new data. Full load will overwrite existing table all of the time.","propertyOrder":450},"advanced_mode":{"type":"boolean","title":"Use advanced mode - custom query","format":"checkbox","default":false,"propertyOrder":400},"download_formatted_values":{"type":"boolean","title":"Download Formatted Values","format":"checkbox","description":"Select this option to receive formatted values for properties with the results","propertyOrder":425}}},"createConfigurationRowSchema":null,"configurationDescription":"### Organization URL (`organization_url`)\n\nThe URL of Dynamics 365 instance, where all API calls will be made. The URL can be discovered using [Global Discovery Service](https://docs.microsoft.com/en-us/powerapps/developer/common-data-service/webapi/discover-url-organization-web-api) or from the URL of web instance:\n\n![organization_url](https://bitbucket.org/kds_consulting_team/kds-team.ex-microsoft-dynamics/raw/master/docs/images/organization_url.png)\n\n\n### API Version (`api_version`)\n\nThe API version of WebAPI which will be used to query the data. For a list of available APIs, please visit [API reference](https://docs.microsoft.com/en-us/dynamics365/customerengagement/on-premises/developer/webapi/web-api-versions).\n\n### Endpoint (`endpoint`)\n\nFor a list of default Microsoft defined entities, please visit [Web API EntityType Reference](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/entitytypes). This list, however, does not include custom created entities and fields. For a complete list of entities, visit `[ORGANIZATION_URL]/api/data/[API_VERSION]/EntityDefinitions?%24select=EntitySetName`, where `ORGANIZATION_URL` is a unique URL of the Dynamics CRM instance for your organization, and `API_VERSION` is the API version specification, you'd like to use; e.g. `https://keboola.crm.dynamics.com/api/data/v9.1/EntityDefinitions?%24select=EntitySetName`.\n\n*Note: If the above request returns page error (i.e. HTTP ERROR 401), you need to be logged in first to access the resouce.*\n\nIf application receives an endpoint (entity), which is not part of the CRM instance, the run will be terminated.\n\n### Query (`query`)\n\nA WebAPI query allows users to further specify results which should be retrieved from the Microsoft Dynamics 365 instance. A basic tutorial on how to query data can be found in the [WebAPI documentation](https://docs.microsoft.com/en-us/powerapps/developer/common-data-service/webapi/query-data-web-api). Individual pieces of the query need to be separated by a new line or by ampersand (&). Below are discussed some examples.\n\nFor a complete list of query functions that can be used in the query, refer to [Query Function reference](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/queryfunctions). Please note, that all keywords must start with `$`.\n\n### Download Formatted Values (`download_formatted_values`)\n\nWhen you want to receive [formatted values](https://learn.microsoft.com/en-us/power-apps/developer/data-platform/webapi/query-data-web-api#include-formatted-values) \nfor properties with the results, set this value to true. The response will include the raw values with properties that match the following naming convention:\n<propertyname>_formattedValue.\n\n#### Selecting relevant columns\n\nUsing keyword `$select`, it's possible to only specify columns which should be returned from the API. The list of columms should be comma-separated. If nothing is specified, all columns are returned.\n*Please note, that all **columns which start with `fk`** in the output table from the extractor, **do not contain the `fk` prefix** in the API. Thus, if you'd like to query a column starting with `fk`, **omit the prefix**; e.g. in the output table, a column named `fk_primarycontactid_value` would be queried using `$select=_primarycontactid_value`.*\n\nAn example of `$select` query would be:\n```\n$select=firstname,lastname,emailaddress1,_accountid_value\n```\n\n#### Downloading a sample of the data\n\nUsing keyword `$top`, you can limit the number of results returned by the API. This is especially useful, if you're unaware what attributes are returned by the API and want to avoid lengthy downloads of all records and all attributes. The `$top` keyword will only returned first X specified records.\n\nAn example of `$top` query would be:\n\n```\n$top=5000\n```\n\n#### Filtering results\n\nUsing keyword `$filter`, it's possible to only filter results, which satisy all conditions specified. WebAPI offers a wide range of functions, which allow to filter results to the utmost detail.\n\n**Time-based filtering**\nEach record in the Dynamics CRM contains two metadata columns `createdon` and `modifiedon`, which can be used query data with latest changes. Upon creation of each record, `createdon` and `modifiedon` share the same value; once a record is modified, `modifiedon` takes on a new value while `createdon` does not change. It is therefore recommended to query on field `modifiedon`, to capture all of the changes in records, including newly created records.\n\nAn example of time-based filtering could be:\n\n```\n-- download data for past 30 days\n$filter=Microsoft.Dynamics.CRM.LastXDays(PropertyName='modifiedon',PropertyValue=30)\n\n-- download data with modified date greater than\n$filter=modifiedon gt 2020-01-01\n```\n\n**Attrribute-based filtering**\nAttribute-based filtering allows to filter data based on values of attributes of each records. \n\nAn example of attribute-based filtering could be:\n```\n-- download data which have 'test' in emailaddress1\n$filter=contains(emailaddress1,'test')\n\n-- download data which start with 'Name' in property firstname\n$filter=startswith(firstname,'Name')\n```\n\n#### Complete queries\n\nComplete queries need to be new-line separated or \"&\" separated. Examples of complete queries are below combining both `$select` and `$filter` are below:\n\n**Select and filter in last 7 days**\n\n```\n$select=leadid,firstname\n$filter=Microsoft.Dynamics.CRM.LastXDays(PropertyName='modifiedon',PropertyValue=7)\n```\n\n**Select and attribute and time-based chained filter**\n\n```\n$select=leadid,firstname\n$filter=Microsoft.Dynamics.CRM.LastXDays(PropertyName='modifiedon',PropertyValue=7) and contains(firstname, 'Name')\n```\n\n**Ampersand delimited query**\n\n```\n$filter=modifiedon gt 2019-01-01&select=emailaddress1\n```\n\n**Select and limit**\n\n```\n$select=contactid,fullname,emailaddress1,address1_city\n$top=500\n```","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["list_endpoints"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":197,"uri":"docker/kds-team.ex-microsoft-dynamics","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-microsoft-dynamics","name":"developer-portal-v2/kds-team.ex-microsoft-dynamics","tag":"1.1.3","options":{},"digest":"sha256:f4d3b29310a420b71ef1b3898bd4142b038e93103d0959b7d61babf1abbc67c9"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-microsoft-dynamics/32/1578581331408.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-microsoft-dynamics/64/1578581331408.png","128":null}},{"id":"kds-team.app-azure-sql-procedure-trigger","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":104,"name":"Microsoft SQL Procedure Trigger","type":"application","shortDescription":"Application capable of executing stored procedures in Microsoft SQL Server databases. (Synapse, SQL Server, Azure, etc.)","longDescription":"Application capable of executing stored procedures in Microsoft SQL Server databases. (Synapse, SQL Server, Azure, etc.)","licenseUrl":"https://bitbucket.org/kds_consulting_team/kds-team.app-azure-sql-procedure-trigger/src/master/LICENSE.md","documentationUrl":"https://bitbucket.org/kds_consulting_team/kds-team.app-azure-sql-procedure-trigger/src/master/README.md","sourceCodeUrl":"https://bitbucket.org/kds_consulting_team/kds-team.app-azure-sql-procedure-trigger/src/master/","requiredMemory":null,"processTimeout":14400,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Credentials","required":["server","database","user_name","#password"],"properties":{"server":{"type":"string","title":"Server","propertyOrder":1},"database":{"type":"string","title":"Database","propertyOrder":10},"#password":{"type":"string","title":"Password","format":"password","propertyOrder":30},"user_name":{"type":"string","title":"User Name","propertyOrder":20}}},"configurationRowSchema":{"type":"object","title":"Parameters","required":["name","procedure_parameters"],"properties":{"name":{"type":"string","title":"Procedure name","minLength":1,"description":"Name of the procedure to execute.","propertyOrder":1},"procedure_parameters":{"type":"array","items":{"type":"object","title":"Argument","required":["name","value"],"properties":{"name":{"type":"string","title":"Argument Name","minLength":1,"description":"Do not include the @ character.","propertyOrder":1},"value":{"type":"string","title":"Argument Value","minLength":1,"description":"Characters like ' to mark the datatype may be included.","propertyOrder":2}}},"title":"Procedure Arguments","format":"table","description":"Arguments to passed to procedure.","uniqueItems":true,"propertyOrder":5}}},"createConfigurationRowSchema":null,"configurationDescription":"- In the credential settings below, fill in the credentials for the Microsoft SQL Server where you want to trigger the procedure.\n\n\n- Add one configuration for each procedure you want to trigger. You can pass multiple arguments by specifying the name and value.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.app-azure-sql-procedure-trigger","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.app-azure-sql-procedure-trigger","name":"developer-portal-v2/kds-team.app-azure-sql-procedure-trigger","tag":"0.3.0","options":{},"digest":"sha256:9ab1a26ddc444d79a942f3b647a5b4fd67d692d3c05a3f82ff9b2a3fa8b11a46"},"publishingStatus":"public","icon":{"32":null,"64":null,"128":null}},{"id":"keboola.ex-db-mssql","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":196,"name":"Microsoft SQL Server","type":"extractor","shortDescription":"Extracts tables or query results from Microsoft SQL Server, including CDC mode.","longDescription":"This component imports data from selected tables or results from arbitrary SQL queries from the [Microsoft SQL Server](https://www.microsoft.com/en-us/sql-server/sql-server-2017) database. It connects to the database, executes your queries, and stores the results in Keboola Connection Storage.\n\nTo configure this extractor, you need to\n\n- provide database credentials, and \n- have a connection to the database you want to read, preferably [secure](https://help.keboola.com/extractors/database/#connecting-to-database).\n\nIncremental load is optional.\n","licenseUrl":"https://github.com/keboola/db-extractor-mssql/blob/master/LICENSE","documentationUrl":"https://help.keboola.com/extractors/database/sqldb/","sourceCodeUrl":"https://github.com/keboola/db-extractor-mssql","requiredMemory":"2048m","processTimeout":86400,"features":["container-root-user","has-sample-data","has-simplified-ui"],"encryption":true,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"easy","category":null,"categories":["Database"],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":{},"configurationSchema":{"type":"object","$defs":{"credentials":{"type":"object","required":["host","user","#password","database"],"properties":{"ssh":{"type":"object","properties":{"keys":{"type":"object","properties":{"public":{"type":"string"},"#private":{"type":"string"}}},"user":{"type":["string","null"]},"enabled":{"type":"boolean"},"sshHost":{"type":["string","null"]},"sshPort":{"type":["string","integer","null"],"default":22},"localPort":{"type":["string","integer"]},"remoteHost":{"type":"string"},"remotePort":{"type":["string","integer"]}}},"ssl":{"type":"object","properties":{"ca":{"type":["string","null"]},"#ca":{"type":["string","null"]},"#key":{"type":["string","null"]},"cert":{"type":["string","null"]},"#cert":{"type":["string","null"]},"cipher":{"type":"string"},"enabled":{"type":"boolean"},"verifyServerCert":{"type":"boolean"},"ignoreCertificateCn":{"type":"boolean"}}},"host":{"type":"string"},"port":{"type":["string","integer"]},"user":{"type":"string"},"database":{"type":"string"},"#password":{"type":"string"}}}},"title":"keboola.ex-db-mssql — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","required":["db"],"properties":{"db":{"$ref":"#/$defs/credentials"}}},"configurationRowSchema":{"type":"object","title":"keboola.ex-db-mssql — Row Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"id":{"type":["string","integer"]},"name":{"type":"string"},"query":{"type":"string"},"table":{"oneOf":[{"type":"string"},{"type":"object","properties":{"schema":{"type":"string"},"tableName":{"type":"string"}}}]},"nolock":{"type":"boolean"},"tables":{"type":"array","options":{"async":{"label":"Re-load tables","action":"getTables"}}},"cdcMode":{"type":"boolean"},"columns":{"type":"array","items":{"type":"string"}},"enabled":{"type":"boolean"},"primaryKey":{"type":"array","items":{"type":"string"}},"incremental":{"type":"boolean"},"outputTable":{"type":"string"},"advancedMode":{"type":"boolean"},"disableFallback":{"type":"boolean"},"incrementalFetchingLimit":{"type":"integer"},"incrementalFetchingColumn":{"type":"string"}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":["testConnection","getTables"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-db-mssql","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-db-mssql","name":"developer-portal-v2/keboola.ex-db-mssql","tag":"8.11.2","options":{},"digest":"sha256:5d4d1d6450605330abd8edca2578ef880c0e76f269fbdd2ce6f173d3e4dbffef"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-db-mssql/32/1592828421493.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-db-mssql/64/1592828421493.png","128":null}},{"id":"kds-team.ex-mixpanel","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":276,"name":"MixPanel","type":"extractor","shortDescription":"MixPanel service analyzes user behavior across sites and applications.","longDescription":"# MixPanel\n\n## Overview\n\nThe MixPanel is a service analyzing user behavior across sites and apps. The extractor uses the [MixPanel API](https://developer.mixpanel.com/docs/exporting-raw-data) to export raw data about user behavior and allows to analyze data further. All of the data is returned in `json` format, delimited by new line between records. However, not all records consist of same parameter keys, hence the extractor processes the output into name-value pair (NVP) format.\n\nThe output is a table of 3 columns, which is **not** loaded incrementally.\n\n#### Note on the exports\nDue to vast amount of data, the extractor may run for hours, hence it is recommended to split the data into parts, if a full download is required. You can do so, by correctly specifying `From date` and `To date` parameters.\nIn case that full download of the data is not required (i.e. extractor is ran every night in the orchestration), it's best to use `Throwback` parameter, which automatically downloads the specified number of full days of data. Specifying `Throwback=-1` downloads 1 last day full of data, i.e. date prior to day; `Throwback=-2` downloads data for 2 full days prior to today, etc.","licenseUrl":"https://github.com/keboola/kds-team.ex-mixpanel/blob/master/LICENSE.md","documentationUrl":"https://help.keboola.com/components/extractors/marketing-sales/mixpanel/","sourceCodeUrl":"https://github.com/keboola/kds-team.ex-mixpanel","requiredMemory":"512m","processTimeout":14400,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Analytics"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["#api_secret","from_date","to_date","throwback","timezone","incremental","raw_extract","residency_server"],"properties":{"where":{"type":"string","title":"Where","description":"An expression to filter events by. More info on expression sequence structure can be found <a href='https://developer.mixpanel.com/reference/segmentation-expressions'>here</a>.","propertyOrder":455},"events":{"type":"array","items":{"type":"string","title":"Event Name","description":"Name of the filtering event"},"title":"Events","default":[],"description":"A list of events, for which the Mixpanel export will be filtered. If left empty, all events are downloaded.","propertyOrder":450},"to_date":{"type":"string","title":"To date","default":"","description":"Upper date bound of extraction in YYYY-MM-DD format. Leave blank for relative date.","propertyOrder":300},"timezone":{"enum":["Africa/Abidjan","Africa/Accra","Africa/Addis_Ababa","Africa/Algiers","Africa/Asmara","Africa/Asmera","Africa/Bamako","Africa/Bangui","Africa/Banjul","Africa/Bissau","Africa/Blantyre","Africa/Brazzaville","Africa/Bujumbura","Africa/Cairo","Africa/Casablanca","Africa/Ceuta","Africa/Conakry","Africa/Dakar","Africa/Dar_es_Salaam","Africa/Djibouti","Africa/Douala","Africa/El_Aaiun","Africa/Freetown","Africa/Gaborone","Africa/Harare","Africa/Johannesburg","Africa/Juba","Africa/Kampala","Africa/Khartoum","Africa/Kigali","Africa/Kinshasa","Africa/Lagos","Africa/Libreville","Africa/Lome","Africa/Luanda","Africa/Lubumbashi","Africa/Lusaka","Africa/Malabo","Africa/Maputo","Africa/Maseru","Africa/Mbabane","Africa/Mogadishu","Africa/Monrovia","Africa/Nairobi","Africa/Ndjamena","Africa/Niamey","Africa/Nouakchott","Africa/Ouagadougou","Africa/Porto-Novo","Africa/Sao_Tome","Africa/Timbuktu","Africa/Tripoli","Africa/Tunis","Africa/Windhoek","America/Adak","America/Anchorage","America/Anguilla","America/Antigua","America/Araguaina","America/Argentina/Buenos_Aires","America/Argentina/Catamarca","America/Argentina/ComodRivadavia","America/Argentina/Cordoba","America/Argentina/Jujuy","America/Argentina/La_Rioja","America/Argentina/Mendoza","America/Argentina/Rio_Gallegos","America/Argentina/Salta","America/Argentina/San_Juan","America/Argentina/San_Luis","America/Argentina/Tucuman","America/Argentina/Ushuaia","America/Aruba","America/Asuncion","America/Atikokan","America/Atka","America/Bahia","America/Bahia_Banderas","America/Barbados","America/Belem","America/Belize","America/Blanc-Sablon","America/Boa_Vista","America/Bogota","America/Boise","America/Buenos_Aires","America/Cambridge_Bay","America/Campo_Grande","America/Cancun","America/Caracas","America/Catamarca","America/Cayenne","America/Cayman","America/Chicago","America/Chihuahua","America/Coral_Harbour","America/Cordoba","America/Costa_Rica","America/Creston","America/Cuiaba","America/Curacao","America/Danmarkshavn","America/Dawson","America/Dawson_Creek","America/Denver","America/Detroit","America/Dominica","America/Edmonton","America/Eirunepe","America/El_Salvador","America/Ensenada","America/Fort_Nelson","America/Fort_Wayne","America/Fortaleza","America/Glace_Bay","America/Godthab","America/Goose_Bay","America/Grand_Turk","America/Grenada","America/Guadeloupe","America/Guatemala","America/Guayaquil","America/Guyana","America/Halifax","America/Havana","America/Hermosillo","America/Indiana/Indianapolis","America/Indiana/Knox","America/Indiana/Marengo","America/Indiana/Petersburg","America/Indiana/Tell_City","America/Indiana/Vevay","America/Indiana/Vincennes","America/Indiana/Winamac","America/Indianapolis","America/Inuvik","America/Iqaluit","America/Jamaica","America/Jujuy","America/Juneau","America/Kentucky/Louisville","America/Kentucky/Monticello","America/Knox_IN","America/Kralendijk","America/La_Paz","America/Lima","America/Los_Angeles","America/Louisville","America/Lower_Princes","America/Maceio","America/Managua","America/Manaus","America/Marigot","America/Martinique","America/Matamoros","America/Mazatlan","America/Mendoza","America/Menominee","America/Merida","America/Metlakatla","America/Mexico_City","America/Miquelon","America/Moncton","America/Monterrey","America/Montevideo","America/Montreal","America/Montserrat","America/Nassau","America/New_York","America/Nipigon","America/Nome","America/Noronha","America/North_Dakota/Beulah","America/North_Dakota/Center","America/North_Dakota/New_Salem","America/Ojinaga","America/Panama","America/Pangnirtung","America/Paramaribo","America/Phoenix","America/Port-au-Prince","America/Port_of_Spain","America/Porto_Acre","America/Porto_Velho","America/Puerto_Rico","America/Punta_Arenas","America/Rainy_River","America/Rankin_Inlet","America/Recife","America/Regina","America/Resolute","America/Rio_Branco","America/Rosario","America/Santa_Isabel","America/Santarem","America/Santiago","America/Santo_Domingo","America/Sao_Paulo","America/Scoresbysund","America/Shiprock","America/Sitka","America/St_Barthelemy","America/St_Johns","America/St_Kitts","America/St_Lucia","America/St_Thomas","America/St_Vincent","America/Swift_Current","America/Tegucigalpa","America/Thule","America/Thunder_Bay","America/Tijuana","America/Toronto","America/Tortola","America/Vancouver","America/Virgin","America/Whitehorse","America/Winnipeg","America/Yakutat","America/Yellowknife","Antarctica/Casey","Antarctica/Davis","Antarctica/DumontDUrville","Antarctica/Macquarie","Antarctica/Mawson","Antarctica/McMurdo","Antarctica/Palmer","Antarctica/Rothera","Antarctica/South_Pole","Antarctica/Syowa","Antarctica/Troll","Antarctica/Vostok","Arctic/Longyearbyen","Asia/Aden","Asia/Almaty","Asia/Amman","Asia/Anadyr","Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat","Asia/Ashkhabad","Asia/Atyrau","Asia/Baghdad","Asia/Bahrain","Asia/Baku","Asia/Bangkok","Asia/Barnaul","Asia/Beirut","Asia/Bishkek","Asia/Brunei","Asia/Calcutta","Asia/Chita","Asia/Choibalsan","Asia/Chongqing","Asia/Chungking","Asia/Colombo","Asia/Dacca","Asia/Damascus","Asia/Dhaka","Asia/Dili","Asia/Dubai","Asia/Dushanbe","Asia/Famagusta","Asia/Gaza","Asia/Harbin","Asia/Hebron","Asia/Ho_Chi_Minh","Asia/Hong_Kong","Asia/Hovd","Asia/Irkutsk","Asia/Istanbul","Asia/Jakarta","Asia/Jayapura","Asia/Jerusalem","Asia/Kabul","Asia/Kamchatka","Asia/Karachi","Asia/Kashgar","Asia/Kathmandu","Asia/Katmandu","Asia/Khandyga","Asia/Kolkata","Asia/Krasnoyarsk","Asia/Kuala_Lumpur","Asia/Kuching","Asia/Kuwait","Asia/Macao","Asia/Macau","Asia/Magadan","Asia/Makassar","Asia/Manila","Asia/Muscat","Asia/Nicosia","Asia/Novokuznetsk","Asia/Novosibirsk","Asia/Omsk","Asia/Oral","Asia/Phnom_Penh","Asia/Pontianak","Asia/Pyongyang","Asia/Qatar","Asia/Qostanay","Asia/Qyzylorda","Asia/Rangoon","Asia/Riyadh","Asia/Saigon","Asia/Sakhalin","Asia/Samarkand","Asia/Seoul","Asia/Shanghai","Asia/Singapore","Asia/Srednekolymsk","Asia/Taipei","Asia/Tashkent","Asia/Tbilisi","Asia/Tehran","Asia/Tel_Aviv","Asia/Thimbu","Asia/Thimphu","Asia/Tokyo","Asia/Tomsk","Asia/Ujung_Pandang","Asia/Ulaanbaatar","Asia/Ulan_Bator","Asia/Urumqi","Asia/Ust-Nera","Asia/Vientiane","Asia/Vladivostok","Asia/Yakutsk","Asia/Yangon","Asia/Yekaterinburg","Asia/Yerevan","Atlantic/Azores","Atlantic/Bermuda","Atlantic/Canary","Atlantic/Cape_Verde","Atlantic/Faeroe","Atlantic/Faroe","Atlantic/Jan_Mayen","Atlantic/Madeira","Atlantic/Reykjavik","Atlantic/South_Georgia","Atlantic/St_Helena","Atlantic/Stanley","Australia/ACT","Australia/Adelaide","Australia/Brisbane","Australia/Broken_Hill","Australia/Canberra","Australia/Currie","Australia/Darwin","Australia/Eucla","Australia/Hobart","Australia/LHI","Australia/Lindeman","Australia/Lord_Howe","Australia/Melbourne","Australia/NSW","Australia/North","Australia/Perth","Australia/Queensland","Australia/South","Australia/Sydney","Australia/Tasmania","Australia/Victoria","Australia/West","Australia/Yancowinna","Brazil/Acre","Brazil/DeNoronha","Brazil/East","Brazil/West","CET","CST6CDT","Canada/Atlantic","Canada/Central","Canada/Eastern","Canada/Mountain","Canada/Newfoundland","Canada/Pacific","Canada/Saskatchewan","Canada/Yukon","Chile/Continental","Chile/EasterIsland","Cuba","EET","EST","EST5EDT","Egypt","Eire","Etc/GMT","Etc/GMT+0","Etc/GMT+1","Etc/GMT+10","Etc/GMT+11","Etc/GMT+12","Etc/GMT+2","Etc/GMT+3","Etc/GMT+4","Etc/GMT+5","Etc/GMT+6","Etc/GMT+7","Etc/GMT+8","Etc/GMT+9","Etc/GMT-0","Etc/GMT-1","Etc/GMT-10","Etc/GMT-11","Etc/GMT-12","Etc/GMT-13","Etc/GMT-14","Etc/GMT-2","Etc/GMT-3","Etc/GMT-4","Etc/GMT-5","Etc/GMT-6","Etc/GMT-7","Etc/GMT-8","Etc/GMT-9","Etc/GMT0","Etc/Greenwich","Etc/UCT","Etc/UTC","Etc/Universal","Etc/Zulu","Europe/Amsterdam","Europe/Andorra","Europe/Astrakhan","Europe/Athens","Europe/Belfast","Europe/Belgrade","Europe/Berlin","Europe/Bratislava","Europe/Brussels","Europe/Bucharest","Europe/Budapest","Europe/Busingen","Europe/Chisinau","Europe/Copenhagen","Europe/Dublin","Europe/Gibraltar","Europe/Guernsey","Europe/Helsinki","Europe/Isle_of_Man","Europe/Istanbul","Europe/Jersey","Europe/Kaliningrad","Europe/Kiev","Europe/Kirov","Europe/Lisbon","Europe/Ljubljana","Europe/London","Europe/Luxembourg","Europe/Madrid","Europe/Malta","Europe/Mariehamn","Europe/Minsk","Europe/Monaco","Europe/Moscow","Europe/Nicosia","Europe/Oslo","Europe/Paris","Europe/Podgorica","Europe/Prague","Europe/Riga","Europe/Rome","Europe/Samara","Europe/San_Marino","Europe/Sarajevo","Europe/Saratov","Europe/Simferopol","Europe/Skopje","Europe/Sofia","Europe/Stockholm","Europe/Tallinn","Europe/Tirane","Europe/Tiraspol","Europe/Ulyanovsk","Europe/Uzhgorod","Europe/Vaduz","Europe/Vatican","Europe/Vienna","Europe/Vilnius","Europe/Volgograd","Europe/Warsaw","Europe/Zagreb","Europe/Zaporozhye","Europe/Zurich","GB","GB-Eire","GMT","GMT+0","GMT-0","GMT0","Greenwich","HST","Hongkong","Iceland","Indian/Antananarivo","Indian/Chagos","Indian/Christmas","Indian/Cocos","Indian/Comoro","Indian/Kerguelen","Indian/Mahe","Indian/Maldives","Indian/Mauritius","Indian/Mayotte","Indian/Reunion","Iran","Israel","Jamaica","Japan","Kwajalein","Libya","MET","MST","MST7MDT","Mexico/BajaNorte","Mexico/BajaSur","Mexico/General","NZ","NZ-CHAT","Navajo","PRC","PST8PDT","Pacific/Apia","Pacific/Auckland","Pacific/Bougainville","Pacific/Chatham","Pacific/Chuuk","Pacific/Easter","Pacific/Efate","Pacific/Enderbury","Pacific/Fakaofo","Pacific/Fiji","Pacific/Funafuti","Pacific/Galapagos","Pacific/Gambier","Pacific/Guadalcanal","Pacific/Guam","Pacific/Honolulu","Pacific/Johnston","Pacific/Kiritimati","Pacific/Kosrae","Pacific/Kwajalein","Pacific/Majuro","Pacific/Marquesas","Pacific/Midway","Pacific/Nauru","Pacific/Niue","Pacific/Norfolk","Pacific/Noumea","Pacific/Pago_Pago","Pacific/Palau","Pacific/Pitcairn","Pacific/Pohnpei","Pacific/Ponape","Pacific/Port_Moresby","Pacific/Rarotonga","Pacific/Saipan","Pacific/Samoa","Pacific/Tahiti","Pacific/Tarawa","Pacific/Tongatapu","Pacific/Truk","Pacific/Wake","Pacific/Wallis","Pacific/Yap","Poland","Portugal","ROC","ROK","Singapore","Turkey","UCT","US/Alaska","US/Aleutian","US/Arizona","US/Central","US/East-Indiana","US/Eastern","US/Hawaii","US/Indiana-Starke","US/Michigan","US/Mountain","US/Pacific","US/Samoa","UTC","Universal","W-SU","WET","Zulu"],"type":"string","title":"Project timezone","default":"UTC","description":"Timezone setting of the project. <a href='https://help.mixpanel.com/hc/en-us/articles/115004547203-Project-Timezone'>Click here</a> for more information.","propertyOrder":500},"from_date":{"type":"string","title":"From date","default":"","description":"Lower date bound of extraction in YYYY-MM-DD format. Leave blank for relative date.","propertyOrder":200},"throwback":{"type":"integer","title":"Throwback","default":-1,"maximum":-1,"description":"The number of full days of data, before today, to be extracted.","propertyOrder":400},"#api_secret":{"type":"string","title":"API Secret","format":"password","default":"","description":"API Secret for MixPanel API.","propertyOrder":100},"incremental":{"enum":[1,0],"type":"number","title":"Load Type","default":0,"options":{"enum_titles":["Incremental Load","Full Load"]},"description":"Incremental load will load the table with primary keys and upsert new data. Full load will overwrite existing table all of the time.","propertyOrder":600},"raw_extract":{"type":"boolean","title":"Raw Data Export","default":false,"description":"If set to true, the raw JSON response of the API will be pasted into the resulting table. If set to false, the JSON response will be parsed and stored in key-value pair table.","propertyOrder":700},"residency_server":{"enum":["US","EU"],"type":"string","title":"Residency Data Server","default":"US","description":"Marks in what region are the data located.","propertyOrder":150}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"### Input\n\nThe extractor accepts 5 parameters, of which 2 are required and the rest requires to have a combination present. The parameters are:\n\n  - `API Secret` (required) - API secret for the project from which the data should be downloaded. [Click here](https://help.mixpanel.com/hc/en-us/articles/115004490503-Project-Token-API-Key-API-Secret) for information on how to retrieve the API secret.\n  - `Residency Server Region` (optional) - Region, where your data are located. Currently, US and EU regions are supported.\n  - `From date` (optional) - The date from which, the data should be downloaded. It's required to use `YYYY-MM-DD` format, otherwise, an exception is raised. If left blank, extractor will automatically ignore the parameter and use the value from `Throwback`.\n  - `To date` (optional) - The date to which, the data should be downloaded. It's required to use `YYYY-MM-DD` format, otherwise, an exception is raised. If left blank, extractor will automatically ignore the parameter and use the value from `Throwback`.\n  - `Throwback` (optional) - Number of the latest full days prior to today, that should be downloaded. The parameter is ignored if both `From date` and `To date` are specified.\n  - `Events` (optional) - A list of events, for which the export should be filtered.\n  - `Where` (optional) - An expression to filter events by. More info on expression sequence structure can be found [here](https://developer.mixpanel.com/reference/segmentation-expressions)\n  - `Timezone` (required) - Timezone, in which your project is located. The parameter is required for `Throwback` parameter to work correctly. Improper definition of `Timezone` may lead to incomplete data. [Click here](https://help.mixpanel.com/hc/en-us/articles/115004547203-Project-Timezone) for more information.\n  - `Load Type` (optional) - Choose whether to load table incrementally or via full load.\n  - `Raw Data Export` (optional) - If set to `false`, the response from the API will be parsed and stored in storage in a key-value pair table. This is due to inconsistency of the returned JSON for each row. If set to `true`, the raw JSON response will be output to the storage and can be later parsed in e.g. Snowflake, Python transformations.\n\n### Output\n\nIf raw data export is disabled, the extractor returns an output table with 3 columns. The output table is in the name-value pair format and may take the following form:\n\n| id \t| parameter \t| value \t|\n|----------------------------------\t|-------------------------\t|--------------------\t|\n| 149883e1c6000df0f5dc4d521725679b \t| event \t| View Payslip Page \t|\n| 149883e1c6000df0f5dc4d521725679b \t| properties__time \t| 1561420800 \t|\n| 149883e1c6000df0f5dc4d521725679b \t| properties__distinct_id \t| 0051o000009eqc1AAA \t|\n| 149883e1c6000df0f5dc4d521725679b \t| properties__$city \t| Evesham \t|\n\nThe `id` column is created as an MD5 sum of the **unprocessed row** and is hence unique to each row in the **unprocessed output**. The column can be used to piece back together the desired `parameter`s and their `value`s.\n\nIf raw data export is enabled, the extractor returns and output table with 2 columns: `id` and `raw`. The `id` columns is created as mentioned above. The `raw` column contains the **unprocessed output**.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":276,"uri":"docker/kds-team.ex-mixpanel","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-mixpanel","name":"developer-portal-v2/kds-team.ex-mixpanel","tag":"0.5.3","options":{},"digest":"sha256:28aa43fba0748f931ada9f4363f60a8c4264591843a9c04b0fa0d534e15a4495"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-mixpanel/32/103.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-mixpanel/64/103.png","128":null}},{"id":"keboola.ex-money-s3","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":40,"name":"Money S3","type":"extractor","shortDescription":"Extracts data from the Money S3 (Seyfor) accounting system via its GraphQL API.","longDescription":"The Money S3 (Seyfor) extractor pulls data from the Money S3 accounting system through its\nGraphQL API.\n\nIt is a generic, introspection-driven, row-based extractor: each configuration row targets one\nAPI endpoint (e.g. issued invoices, received invoices, the address book, accounting journals or\nany codebook). The component reads the API schema at runtime, so it covers every available\nendpoint and field without hardcoding.\n\nFeatures:\n\n- **Field selection** — pick the exact fields to extract, or leave the selection empty to pull\n  every available field. Nested objects are flattened into columns and repeating lists are\n  written as separate child tables.\n- **Typed output** — column data types and nullability are derived from the GraphQL schema.\n- **Primary keys** — detected automatically from the API metadata, with an optional override.\n- **Full and incremental loads** — incremental loads use a server-side date filter and track a\n  watermark between runs.\n- **Date range** — optionally bound the extraction with Date From / Date To.\n\nAuthentication uses OAuth2 client credentials (Client ID, Client Secret) against a selected\nAgenda (company file).","licenseUrl":"https://github.com/keboola/component-ex-money-s3/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/component-ex-money-s3/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/component-ex-money-s3","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","appInfo.beta"],"imageParameters":{"app_id":"S2Vib29sYQ==.9HKhbTQEb+SGlzcVjFHRrHlfJAcAc7ye9/9aPDmfZBK+nx5SSEXWoYX+yOKsOd3mE1aORSbvKACd7cHxiBA5Xg=="},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Money S3 Connection","required":["base_url","client_id","#client_secret","agenda_id"],"properties":{"base_url":{"type":"string","title":"Base URL","default":"http://localhost:28085","propertyOrder":1},"agenda_id":{"enum":[],"type":"string","title":"Agenda","format":"select","options":{"async":{"label":"Load agendas","action":"list_agendas"}},"propertyOrder":6},"client_id":{"type":"string","title":"Client ID","propertyOrder":3},"#client_secret":{"type":"string","title":"Client Secret","format":"password","propertyOrder":4},"test_connection":{"type":"button","title":"Test Connection","format":"test-connection","propertyOrder":7}}},"configurationRowSchema":{"type":"object","title":"Extraction","format":"grid","required":["endpoint","load_type"],"properties":{"debug":{"type":"boolean","title":"Debug","format":"checkbox","default":false,"options":{"grid_columns":12},"description":"Enable verbose debug logging.","propertyOrder":9},"fields":{"type":"array","items":{"enum":[],"type":"string"},"title":"Fields","format":"select","options":{"async":{"label":"Load fields","action":"list_fields"},"grid_columns":12},"description":"Fields to extract. Leave empty to extract all available fields.","uniqueItems":true,"propertyOrder":2},"date_to":{"type":"string","title":"Date To","options":{"grid_columns":6},"description":"ISO date (YYYY-MM-DD) upper bound on the incremental field. Optional.","propertyOrder":6},"endpoint":{"enum":[],"type":"string","title":"Endpoint","format":"select","options":{"async":{"label":"Load endpoints","action":"list_endpoints"},"grid_columns":12},"propertyOrder":1},"date_from":{"type":"string","title":"Date From","options":{"grid_columns":6},"description":"ISO date (YYYY-MM-DD) lower bound on the incremental field. Optional.","propertyOrder":5},"load_type":{"enum":["full_load","incremental_load"],"type":"string","title":"Load Type","default":"full_load","options":{"enum_titles":["Full Load","Incremental Load"],"grid_columns":12},"propertyOrder":3},"page_size":{"type":"integer","title":"Page Size","default":500,"minimum":1,"options":{"grid_columns":12},"description":"Number of records fetched per API request (skip/take pagination).","propertyOrder":8},"destination":{"type":"object","title":"Destination","options":{"grid_columns":12},"properties":{"table_name":{"type":"string","title":"Table Name (defaults to endpoint)","propertyOrder":1},"primary_key":{"type":"array","items":{"enum":[],"type":"string"},"title":"Primary Key override","format":"select","options":{"async":{"label":"Load primary key fields","action":"list_scalar_fields"}},"description":"Override the auto-detected primary key. Leave empty to let the component detect it. Pick one or more scalar fields of the endpoint.","uniqueItems":true,"propertyOrder":2}},"propertyOrder":7},"incremental_field":{"enum":[],"type":"string","title":"Incremental Field","format":"select","default":"lastChange","options":{"async":{"label":"Load incremental fields","action":"list_incremental_fields"},"dependencies":{"load_type":"incremental_load"},"grid_columns":12},"description":"Date/datetime field used as the incremental watermark and for the Date From/To bounds. Only fields the API supports as server-side date filters are listed, so this is a subset of Fields.","propertyOrder":4}}},"createConfigurationRowSchema":null,"configurationDescription":"Configuration description.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["list_agendas","list_endpoints","list_fields","list_incremental_fields","list_scalar_fields","testConnection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-money-s3","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-money-s3","name":"developer-portal-v2/keboola.ex-money-s3","tag":"0.0.2","options":{},"digest":"sha256:fb88833d8f328b6a1b183f154e8272757cc0b82fef2b58751d9da5b44fa053c7"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-money-s3/32/1781175576845.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-money-s3/64/1781175576845.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-money-s3/128/1781175576845.png"}},{"id":"keboola.wr-money-s3","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":49,"name":"Money S3","type":"writer","shortDescription":"Writes data from Keboola Storage tables to the Money S3 ERP system via its GraphQL API.","longDescription":"The Money S3 Writer pushes data from Keboola Storage into the Money S3 ERP system (moneys3.eu) using its GraphQL mutation API. Each configuration row targets one Money S3 object (such as Company or IssuedInvoice) and maps source columns to the object's input fields. The writer supports both **create** and **update** write modes, optional per-record error handling (failed records are captured in the `write_log` output table instead of aborting the job), and a **document mode** for objects that carry line-item sub-collections (e.g. invoices) — in document mode a second input table supplies the line rows, joined to their header rows by a configurable key column. Field mapping is assisted by the **Re-load mapping** sync action, which introspects the selected endpoint's input type and fuzzy-matches incoming column names to API field names.","licenseUrl":"https://github.com/keboola/component-wr-money-s3/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/component-wr-money-s3/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/component-wr-money-s3","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"out","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","appInfo.beta","genericDockerUI-tableInput"],"imageParameters":{"app_id":"S2Vib29sYQ==.9HKhbTQEb+SGlzcVjFHRrHlfJAcAc7ye9/9aPDmfZBK+nx5SSEXWoYX+yOKsOd3mE1aORSbvKACd7cHxiBA5Xg=="},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Money S3 Connection","required":["base_url","client_id","#client_secret"],"properties":{"base_url":{"type":"string","title":"Base URL","description":"Money S3 API base URL, e.g. https://{domain}.api.moneys3.eu","propertyOrder":1},"agenda_id":{"enum":[],"type":"string","title":"Agenda","format":"select","options":{"async":{"label":"Re-load agendas","action":"list_agendas"}},"description":"Target Money S3 agenda (company database). Required to write data; use 'Re-load agendas' after testing the connection.","propertyOrder":6},"client_id":{"type":"string","title":"Client ID","propertyOrder":3},"#client_secret":{"type":"string","title":"Client Secret","format":"password","propertyOrder":4},"test_connection":{"type":"button","format":"test-connection","propertyOrder":7}}},"configurationRowSchema":{"type":"object","title":"Row Configuration","properties":{"debug":{"type":"boolean","title":"Debug","format":"checkbox","default":false,"propertyOrder":110},"endpoint":{"enum":[],"type":"string","title":"Endpoint","format":"select","options":{"async":{"label":"Re-load endpoints","action":"list_endpoints"}},"description":"The Money S3 object to write to (e.g. Company, IssuedInvoice).","propertyOrder":10},"key_field":{"type":"string","title":"Key Field","default":"guid","options":{"dependencies":{"write_mode":"update"}},"description":"Source column whose value is recorded in the write_log output (key_value) for traceability. Note: this does NOT drive update matching — to match existing records on update, map the identifier column in Field Mapping.","propertyOrder":30},"_metadata_":{"type":"object","options":{"hidden":true},"properties":{"api_fields":{"type":"array","items":{"type":"object"}},"line_api_fields":{"type":"array","items":{"type":"object"}}},"propertyOrder":120},"batch_size":{"type":"integer","title":"Batch Size","default":100,"maximum":1000,"minimum":1,"description":"Number of records submitted before their import states are polled. A larger batch lets the agenda's async imports overlap (faster for big tables); a smaller batch confirms records sooner.","propertyOrder":90},"line_items":{"type":"object","title":"Line Items (Optional)","options":{"dependencies":{"endpoint":["CashVoucher","IssuedDeliveryNote","IssuedInquiry","IssuedInvoice","IssuedOffer","IssuedOrder","IssuedSlip","ReceivedDeliveryNote","ReceivedInquiry","ReceivedInvoice","ReceivedOffer","ReceivedOrder","ReceivedSlip","SaleSlip","StockTakingDocument","TransferNote"]}},"properties":{"lines_table":{"type":"string","title":"Lines Table (destination filename)","description":"Destination filename of the second input table that contains line items. Required for document mode (e.g. invoices with line rows).","propertyOrder":10},"lines_join_key":{"type":"array","items":{"type":"string"},"title":"Lines Join Key(s)","watch":{"header_columns":"field_mapping"},"format":"select","options":{"creatable":true},"enumSource":[{"title":"{{item.source_column}}","value":"{{item.source_column}}","source":"header_columns"}],"description":"Header column(s) that link each header row to its line rows; must also exist in the lines table. Pick from the header's mapped columns or type names. Add more than one for a composite join key.","uniqueItems":true,"propertyOrder":20},"lines_field_mapping":{"type":"array","items":{"type":"object","required":["source_column","destination_field"],"properties":{"source_column":{"type":"string","title":"Source Column","options":{"readOnly":true}},"destination_field":{"type":"string","title":"Destination Field","watch":{"line_api_fields":"_metadata_.line_api_fields"},"format":"select","options":{"tags":true},"enumSource":[{"title":"{{item.label}}","value":"{{item.field_name}}","source":"line_api_fields"}]}}},"title":"Lines Field Mapping","format":"table","description":"Field mapping for line items. Pick the Money S3 API field for each line column (or type one); run Re-load mapping to prefill.","propertyOrder":30}},"description":"Shown only for document endpoints that have a line-item collection (invoices, orders, delivery notes, etc.).","propertyOrder":60},"write_mode":{"enum":["create","update"],"type":"string","title":"Write Mode","format":"select","default":"create","options":{"enum_titles":["Create","Update"]},"propertyOrder":20},"load_mapping":{"type":"button","format":"sync-action","options":{"async":{"cache":false,"label":"Re-load mapping","action":"load_field_mapping","autoload":["endpoint"]}},"propertyOrder":50},"field_mapping":{"type":"array","items":{"type":"object","required":["source_column","destination_field"],"properties":{"source_column":{"type":"string","title":"Source Column","options":{"readOnly":true}},"destination_field":{"type":"string","title":"Destination Field","watch":{"api_fields":"_metadata_.api_fields"},"format":"select","options":{"tags":true},"enumSource":[{"title":"{{item.label}}","value":"{{item.field_name}}","source":"api_fields"}]}}},"title":"Field Mapping","format":"table","propertyOrder":40},"poll_timeout_s":{"type":"integer","title":"Import Confirmation Timeout (s)","default":30,"minimum":0,"description":"Seconds to poll Money S3 for each record's final import state. Set to 0 to submit and report immediately — the agenda's S3 Automatic processes the import queue asynchronously.","propertyOrder":95},"continue_on_error":{"type":"boolean","title":"Continue on Error","format":"checkbox","default":false,"description":"When enabled, failed records are written to the write_log output table instead of failing the whole job.","propertyOrder":100}}},"createConfigurationRowSchema":null,"configurationDescription":"Configuration description.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["list_agendas","list_endpoints","load_field_mapping","testConnection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.wr-money-s3","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-money-s3","name":"developer-portal-v2/keboola.wr-money-s3","tag":"0.0.3","options":{},"digest":"sha256:c0246c4ebedfe317ac241905436761197540d618eb6cf5669c1063af94b4ebf8"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-money-s3/32/1781175580698.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-money-s3/64/1781175580698.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-money-s3/128/1781175580698.png"}},{"id":"keboola.ex-mongodb","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":109,"name":"MongoDB","type":"extractor","shortDescription":"Extracts data from MongoDB collections.","longDescription":"This component allows you to fetch data from the NoSQL [MongoDB database](https://www.mongodb.com/).\n\nTo configure this extractor, you need to \n\n- provide database credentials, and \n- be familiar with [JSON](http://www.json.org/).\n\nIncremental load is optional.","licenseUrl":"https://github.com/keboola/ex-mongodb/blob/main/LICENSE","documentationUrl":"https://help.keboola.com/extractors/database/mongodb/","sourceCodeUrl":"https://github.com/keboola/ex-mongodb","requiredMemory":"2560m","processTimeout":79200,"features":["container-root-user"],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"medium","category":null,"categories":["Database"],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":{},"configurationSchema":{"type":"object","title":"keboola.ex-mongodb — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","required":["db"],"properties":{"db":{"type":"object","properties":{"ssh":{"type":"object","properties":{"keys":{"type":"object","properties":{"public":{"type":"string"},"#private":{"type":"string"}}},"user":{"type":["string","null"]},"enabled":{"type":"boolean"},"sshHost":{"type":["string","null"]},"sshPort":{"type":["string","integer","null"]}}},"ssl":{"type":"object","properties":{"#ca":{"type":"string"},"#key":{"type":"string"},"#cert":{"type":"string"},"enabled":{"type":"boolean"}}},"uri":{"type":"string"},"host":{"type":"string"},"port":{"type":["string","integer"]},"user":{"type":"string"},"database":{"type":"string"},"protocol":{"enum":["","mongodb+srv","custom_uri"],"type":"string","options":{"enum_titles":["Default (mongodb)","SRV (mongodb+srv)","Custom URI"]}},"#password":{"type":"string"},"authenticationDatabase":{"type":"string"},"authenticationMechanism":{"enum":["SCRAM-SHA-1","SCRAM-SHA-256","MONGODB-X509","GSSAPI","PLAIN","MONGODB-AWS"],"type":"string"}}}}},"configurationRowSchema":{"type":"object","title":"keboola.ex-mongodb — Row Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"mode":{"enum":["mapping","raw"],"type":"string"},"sort":{"type":"string"},"limit":{"type":["string","integer"]},"query":{"type":"string"},"mapping":{"type":"object"},"tableName":{"type":"string"},"collection":{"type":"string"},"incremental":{"type":"boolean"},"includeParentInPK":{"type":"boolean"},"incrementalFetchingColumn":{"type":"string"}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":["testConnection"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-mongodb","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-mongodb","name":"developer-portal-v2/keboola.ex-mongodb","tag":"3.4.4","options":{},"digest":"sha256:ee57f28730d402db7e7f736320a7e0607bbd226f49218b2170ce6a1d8142f2e3"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-mongodb/32/1591274756665.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-mongodb/64/1591274756665.png","128":null}},{"id":"phalanx-ai.ex-monitora","vendor":{"id":"phalanx-ai","name":"Phalanx s.r.o.","address":"Grösslingova 61,\nBratislava,\nSlovakia","email":"marek.grac@phalanx.ai","type":"other"},"version":71,"name":"Monitora - Media monitoring ","type":"extractor","shortDescription":"The media monitoring of Czech/Slovak media from Monitora","longDescription":"## Media monitoring extractor\n\nMonitora offers media monitoring of Czech and Slovak media via their web application and API. In order to download data, you have to specify feed that filters news according to your needs. \n\nThe API add-on is sold separately but if you do not need web application at all, we can provide you with special offer. Feel free to contact us on <sales@phalanx.ai>. \n\n## Configuration\n\nA configuration consist of two mandatory parameters.\n\n* api_token - a token used to authorize for Monitora API\n* feed_id - identification of news feed\n\n## Output\n\nOutput table as defined in the configuration mapping.","licenseUrl":"https://github.com/Phalanx-Ai/ex-monitora/blob/master/LICENSE.md","documentationUrl":"https://github.com/Phalanx-Ai/ex-monitora/blob/master/README.md","sourceCodeUrl":"https://github.com/Phalanx-Ai/ex-monitora","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableOutput"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["#api_token","feed_id"],"properties":{"feed_id":{"type":"string","title":"Feed ID","propertyOrder":2},"#api_token":{"type":"string","title":"Authorization Token","format":"password","propertyOrder":1}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"Testing configuration description.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":71,"uri":"docker/phalanx-ai.ex-monitora","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/phalanx-ai.ex-monitora","name":"developer-portal-v2/phalanx-ai.ex-monitora","tag":"0.4.0","options":{},"digest":"sha256:d7d5ab284fb8909987b5a691477fd06dfec3984c953f99864124da3e507e8aab"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/phalanx-ai.ex-monitora/32/1657792659224.png","64":"https://ui.keboola-assets.com/developer-portal/icons/phalanx-ai.ex-monitora/64/1657792659224.png","128":null}},{"id":"keboola.ex-motherduck","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":32,"name":"MotherDuck","type":"extractor","shortDescription":"MotherDuck is a cloud data warehouse built on top of DuckDB","longDescription":"MotherDuck Writer writes data from KBC to MotherDuck. It allows you to specify which columns to write, their data types, nullability, and default values. The component supports full load, append, and upsert modes.","licenseUrl":"https://github.com/keboola/component-motherduck/blob/main/components/ex-motherduck/LICENSE.md","documentationUrl":"https://github.com/keboola/component-motherduck/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/component-motherduck","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","appInfo.experimental"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Connection","required":["#token","db","db_schema"],"properties":{"db":{"enum":[],"type":"string","title":"Database","format":"select","default":"","options":{"async":{"label":"Load databases","action":"list_databases","autoload":["parameters.#token"]}},"propertyOrder":3},"#token":{"type":"string","title":"Access Token","format":"password","description":"The MotherDuck access token. More information on how to get the token can be found in the <a href=\"https://motherduck.com/docs/key-tasks/authenticating-and-connecting-to-motherduck/authenticating-to-motherduck/#authentication-using-an-access-token\">documentation</a>.","propertyOrder":1},"db_schema":{"enum":[],"type":"string","title":"Schema","format":"select","default":"","options":{"async":{"label":"Load schemas","action":"list_schemas","autoload":["parameters.database"]}},"propertyOrder":4},"test_connection":{"type":"button","format":"sync-action","options":{"async":{"label":"TEST CONNECTION","action":"testConnection"}},"propertyOrder":2}}},"configurationRowSchema":{"type":"object","title":"Component configuration","required":["data_selection","destination","debug"],"properties":{"debug":{"type":"boolean","title":"Debug mode","format":"checkbox","default":false,"description":"If enabled, the component will produce detailed logs","propertyOrder":5},"destination":{"type":"object","title":"Destination","required":["load_type"],"properties":{"load_type":{"enum":["incremental_load","full_load"],"type":"string","title":"Load Type","default":"incremental_load","options":{"enum_titles":["Incremental Load","Full Load"]},"description":"If Full load is used, the destination table will be overwritten every run. If Incremental Load is used, data will be upserted into the destination table based on the primary key. Append modes do not contain any primary keys and are not deduplicated.","propertyOrder":42},"table_name":{"type":"string","title":"Table name","default":"","description":"(Optional) Specify the table name (without the file extension). If you leave this field empty, the name of the source table from the database will be used.","propertyOrder":44},"primary_key":{"type":"array","items":{"enum":[],"type":"string"},"title":"Primary key","format":"select","options":{"tags":true,"async":{"label":"Re-load columns","action":"list_columns"}},"uniqueItems":true,"propertyOrder":43},"preserve_insertion_order":{"type":"boolean","title":"Preserve insertion order","format":"checkbox","default":true,"description":"If enabled, the extractor will preserve the order of the rows in the destination table, when encountering OOM error, disabling this option may help","propertyOrder":46}},"propertyOrder":4},"data_selection":{"type":"object","title":"Data selection","required":["mode"],"properties":{"mode":{"enum":["all_data","select_columns","custom_query"],"type":"string","title":"Load Type","default":"all_data","options":{"enum_titles":["All Data","Select Columns","Custom Query"]},"propertyOrder":31},"query":{"type":"string","title":"Query","options":{"tooltip":"For query preview, a LIMIT 10 is automatically added to ensure completion within the 30-second time limit for sync actions. When the query is run as a job, it is executed without any modifications.","dependencies":{"mode":"custom_query"}},"description":"The SQL query that will be used to extract data. Use the placeholder %s to reference the input table in your query. For example: `SELECT * FROM %s WHERE is_active = true`","propertyOrder":32},"table":{"enum":[],"type":"string","title":"Table","format":"select","options":{"async":{"label":"Load tables","action":"list_tables","autoload":[]}},"propertyOrder":1},"columns":{"type":"array","items":{"enum":[],"type":"string"},"title":"Columns to extract","format":"select","options":{"tags":true,"async":{"label":"Re-load columns","action":"list_columns"},"dependencies":{"mode":"select_columns"}},"uniqueItems":true,"propertyOrder":34},"query_preview":{"type":"button","format":"sync-action","options":{"async":{"label":"Query preview","action":"query_preview"},"dependencies":{"mode":"custom_query"}},"propertyOrder":33},"table_preview":{"type":"button","format":"sync-action","options":{"async":{"label":"Table preview","action":"table_preview"}},"propertyOrder":2}},"propertyOrder":3}}},"createConfigurationRowSchema":null,"configurationDescription":"At the configuration level, insert your MotherDuck token and select the database and schema. At the row level, choose the table to write to, the load type, and define the columns.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["list_columns","list_databases","list_schemas","list_tables","query_preview","table_preview","testConnection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-motherduck","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-motherduck","name":"developer-portal-v2/keboola.ex-motherduck","tag":"0.0.15","options":{},"digest":"sha256:ca28eb51e1b110dfff518cc7ddfdafcb0e3ebe0168cb7741bf1a16357ab96d3d"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-motherduck/32/1747314810748.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-motherduck/64/1747314810748.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-motherduck/128/1747314810748.png"}},{"id":"keboola.wr-motherduck","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":248,"name":"MotherDuck","type":"writer","shortDescription":"MotherDuck is a cloud data warehouse built on top of DuckDB","longDescription":"MotherDuck Writer writes data from KBC to MotherDuck. It allows you to specify which columns to write, their data types, nullability, and default values. The component supports full load, append, and upsert modes.","licenseUrl":"https://github.com/keboola/component-motherduck/blob/main/components/wr-motherduck/LICENSE.md","documentationUrl":"https://github.com/keboola/component-motherduck/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/component-motherduck","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":true,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-simpleTableInput","appInfo.experimental"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Connection","required":["#token","db","db_schema"],"properties":{"db":{"enum":[],"type":"string","title":"Database","format":"select","default":"","options":{"async":{"label":"Load databases","action":"list_databases","autoload":["parameters.#token"]}},"propertyOrder":3},"#token":{"type":"string","title":"Access Token","format":"password","description":"The MotherDuck access token. More information on how to get the token can be found in the <a href=\"https://motherduck.com/docs/key-tasks/authenticating-and-connecting-to-motherduck/authenticating-to-motherduck/#authentication-using-an-access-token\">documentation</a>.","propertyOrder":1},"db_schema":{"enum":[],"type":"string","title":"Schema","format":"select","default":"","options":{"async":{"label":"Load schemas","action":"list_schemas","autoload":["parameters.database"]}},"propertyOrder":4},"test_connection":{"type":"button","format":"sync-action","options":{"async":{"label":"TEST CONNECTION","action":"testConnection"}},"propertyOrder":2}}},"configurationRowSchema":{"type":"object","title":"Table configuration","required":["destination"],"properties":{"debug":{"type":"boolean","title":"Debug mode","format":"checkbox","default":false,"description":"If enabled, the component will produce detailed logs","propertyOrder":3},"destination":{"type":"object","title":"Destination","required":["columns"],"properties":{"table":{"enum":[],"type":"string","title":"Table","format":"select","options":{"tags":true,"async":{"label":"Load tables","action":"list_tables","autoload":[]},"creatable":true},"propertyOrder":1},"columns":{"type":"array","items":{"type":"object","title":"Column","required":["source_name","destination_name"],"properties":{"pk":{"type":"boolean","title":"Primary Key","format":"checkbox","propertyOrder":4},"dtype":{"enum":["BIGINT","BIT","BLOB","BOOLEAN","DATE","DECIMAL(18,3)","DOUBLE","FLOAT","HUGEINT","INTEGER","INTERVAL","JSON","SMALLINT","TIME","TIMESTAMP WITH TIME ZONE","TIMESTAMP","TINYINT","UBIGINT","UHUGEINT","UINTEGER","USMALLINT","UTINYINT","UUID","VARCHAR"],"type":"string","title":"Data Type","default":"VARCHAR","propertyOrder":3},"nullable":{"type":"boolean","title":"Nullable","format":"checkbox","propertyOrder":5},"source_name":{"type":"string","title":"Source Column","watch":{"columns":"_metadata_.table.columns"},"enumSource":"columns","propertyOrder":1},"default_value":{"type":"string","title":"Defaul Value","propertyOrder":6},"destination_name":{"type":"string","title":"Destination Column","propertyOrder":2}}},"title":"Columns","format":"table","propertyOrder":3},"load_type":{"enum":["incremental_load","full_load"],"type":"string","title":"Load Type","default":"incremental_load","options":{"enum_titles":["Incremental Load","Full Load"],"dependencies":{"parquet_output":false}},"description":"If Full load is used, the destination table will be overwritten every run. If Incremental Load is used, data will be upserted into the destination table based on the primary key. If Incremental Load is used without a defined primary key, all rows will be appended.\n","propertyOrder":2},"_metadata_":{"type":"object","options":{"hidden":true},"properties":{"table":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"columns":{"type":"array"},"primaryKey":{"type":"array"}}}}},"load_columns":{"type":"button","format":"sync-action","options":{"async":{"cache":false,"label":"Load columns","action":"return_columns_data","autoload":[]}},"propertyOrder":4}},"propertyOrder":1}}},"createConfigurationRowSchema":null,"configurationDescription":"At the configuration level, insert your MotherDuck token and select the database and schema. At the row level, choose the table to write to, the load type, and define the columns.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["list_databases","list_schemas","list_tables","return_columns_data","testConnection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.wr-motherduck","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-motherduck","name":"developer-portal-v2/keboola.wr-motherduck","tag":"0.0.15","options":{},"digest":"sha256:5cab6d0fd67e0f563a135b19f6f423390c93918bd34811191849613be21e245e"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-motherduck/32/1745477844930.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-motherduck/64/1745477844930.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-motherduck/128/1745477844930.png"}},{"id":"keboola.processor-move-files","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":29,"name":"Move Files","type":"processor","shortDescription":"Move files to tables and vice versa","longDescription":"Move files to tables and vice versa.","licenseUrl":"https://github.com/keboola/processor-move-files/blob/master/LICENSE","documentationUrl":"https://github.com/keboola/processor-move-files/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/processor-move-files","requiredMemory":"16000m","processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":[],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":null,"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.processor-move-files","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.processor-move-files","name":"developer-portal-v2/keboola.processor-move-files","tag":"v3.1.1","options":{},"digest":"sha256:cdad50dc7628820ba2d83a4438a4ae7e259f4fb9e7b96adf62a99c25644a7019"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.processor-move-files/32/1576251965775.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.processor-move-files/64/1576251965775.png","128":null}},{"id":"keboola.ex-mpohoda","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":24,"name":"mPOHODA","type":"extractor","shortDescription":"Extracts data from the mPOHODA cloud accounting REST API — invoices, orders, offers, business partners, stock/price-list and reference lists — with incremental loading.","longDescription":"## mPOHODA extractor\n\nReads data from the [mPOHODA](https://www.mpohoda.cz) cloud accounting REST API (Stormware) into\nKeboola Storage. One configuration row extracts one agenda (a list endpoint).\n\nEach record is flattened into a typed table; nested arrays (e.g. invoice line items) become child\ntables linked by `parent_id` + `index`. The record GUID (`id`) is the primary key.\n\n**Incremental loading** uses the API's `ModifiedSince` filter — after each run a watermark is stored\nin state and the next run fetches only changed records (upserted by primary key). Full mode replaces\nthe table.\n\n**Available agendas** include issued/received invoices and advance invoices, issued/received orders,\nissued offers, issue slips, other liabilities, business partners, price-list items, selling prices,\nregistration numbers, activities, cash registers, bank accounts, establishments, centres, and\nreference lists (banks, countries, currencies, VAT rates, payment methods, regions, exchange rates,\ncity/post codes).\n\n### Authentication\n\nmPOHODA API key (`Api-Key` header), generated in mPOHODA under *Nastavení → Open API*. The API is\navailable in the **mPOHODA Pro** edition only. The company is fixed by the key.\n\n### Documentation\n\nOfficial API documentation: https://api.mpohoda.cz/doc","licenseUrl":"https://github.com/keboola/component-mpohoda/blob/main/LICENSE.md","documentationUrl":"https://help.keboola.com/components/extractors/erp/mpohoda/","sourceCodeUrl":"https://github.com/keboola/component-mpohoda","requiredMemory":"256m","processTimeout":null,"features":[],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"easy","category":null,"categories":["Accounting","ERP"],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"mPOHODA Connection","required":["#api_key"],"properties":{"timeout":{"type":"integer","title":"Request timeout (s)","default":60,"minimum":1,"propertyOrder":5},"#api_key":{"type":"string","title":"API key","format":"password","description":"mPOHODA API key from Nastavení → Open API. Requires the mPOHODA Pro edition.","propertyOrder":2},"base_url":{"type":"string","title":"API base URL","default":"https://api.mpohoda.cz/v1","options":{"inputAttributes":{"placeholder":"https://api.mpohoda.cz/v1"}},"description":"https://api.mpohoda.cz/v1 for the Czech mPOHODA, https://api.mpohoda.sk/v1 for the Slovak one.","propertyOrder":1},"test_connection":{"type":"button","format":"test-connection","options":{"async":{"label":"Test connection","action":"testConnection"}},"propertyOrder":3}}},"configurationRowSchema":{"type":"object","title":"Agenda extraction","required":["agenda"],"properties":{"agenda":{"enum":["Activities","BankAccounts","Banks","BusinessPartners","CashRegisters","Centres","CityPostCodes","Countries","Currencies","Establishments","ExchangeRates","IssueSlips","IssuedAdvanceInvoices","IssuedInvoiceCorrectiveTaxDocuments","IssuedInvoices","IssuedOffers","IssuedOrders","OtherLiabilities","PaymentMethodTypes","PaymentMethods","PriceListItems","ReceivedInvoices","ReceivedOrders","Regions","RegistrationNumbers","SellingPrices","VatRates"],"type":"string","title":"Agenda","options":{"enum_titles":["Activities (Činnosti)","Bank accounts (Bankovní účty)","Banks (Banky)","Business partners (Adresář)","Cash registers (Pokladny)","Centres (Střediska)","City / post codes (PSČ)","Countries (Země)","Currencies (Měny)","Establishments (Provozovny)","Exchange rates (Kurzy)","Issue slips (Výdejky)","Issued advance invoices (Vydané zálohové faktury)","Issued corrective tax documents (Vydané opravné daňové doklady)","Issued invoices (Vydané faktury)","Issued offers (Vydané nabídky)","Issued orders (Vydané objednávky)","Other liabilities (Ostatní závazky)","Payment method types (Typy forem úhrad)","Payment methods (Formy úhrad)","Price list items (Ceník)","Received invoices (Přijaté faktury)","Received orders (Přijaté objednávky)","Regions (Kraje)","Registration / serial numbers (Výrobní čísla)","Selling prices (Prodejní ceny)","VAT rates (Sazby DPH)"]},"description":"mPOHODA list endpoint to extract.","propertyOrder":1},"columns":{"type":"array","items":{"type":"string"},"title":"Columns to keep","options":{"tags":true},"description":"Optional. Output only these columns from the main table (the id primary key is always kept). Leave empty to output every attribute. Names are the flattened, snake_case column names, e.g. vat_percent.","uniqueItems":true,"propertyOrder":4},"load_mode":{"enum":["incremental","full"],"type":"string","title":"Load mode","default":"incremental","options":{"enum_titles":["Incremental — only records changed since the last run (ModifiedSince)","Full — all records, replacing the table"]},"propertyOrder":2},"page_size":{"type":"integer","title":"Page size","default":50,"maximum":50,"minimum":1,"description":"Records per API page. The mPOHODA API caps this at 50.","propertyOrder":6},"destination":{"type":"string","title":"Output table name","description":"Optional. Defaults to the agenda name in snake_case (e.g. issued_invoices).","propertyOrder":5},"changed_since":{"type":"string","title":"Changed since (initial date)","options":{"dependencies":{"load_mode":["incremental"]}},"description":"Optional. ISO date (2026-01-01) or date-time. Used only on the first incremental run when there is no saved state, so you can start from a date instead of loading all history. Later runs continue from the last run's watermark.","propertyOrder":3}}},"createConfigurationRowSchema":null,"configurationDescription":"### Connection (configuration level)\n\n- **API base URL** — `https://api.mpohoda.cz/v1` (CZ) or `https://api.mpohoda.sk/v1` (SK).\n- **API key** — from mPOHODA *Nastavení → Open API* (mPOHODA Pro only).\n- **Test connection** — verifies the key and base URL.\n- **Page size** / **Request timeout** — paging and HTTP tuning.\n\n### Extraction (per row)\n\n- **Agenda** — which list endpoint to read.\n- **Load mode** — *Incremental* (only records changed since the last run) or *Full*.\n- **Output table name** — optional; defaults to the agenda name in snake_case.\n\nNested line items are written to a child table named `<table>__items`.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["testConnection"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-mpohoda","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-mpohoda","name":"developer-portal-v2/keboola.ex-mpohoda","tag":"0.1.0","options":{},"digest":"sha256:64f01db5f6aa164c74de671737fb0fbf916e55f677e5d63d1a6cbc1c84b0220c"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-mpohoda/32/1781655995822.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-mpohoda/64/1781655995822.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-mpohoda/128/1781655995822.png"}},{"id":"keboola.wr-mpohoda","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":24,"name":"mPOHODA","type":"writer","shortDescription":"Creates records in the mPOHODA cloud accounting REST API — issued/received invoices, orders, offers, business partners and more — from Keboola tables.","longDescription":"## mPOHODA writer\n\nCreates records in the [mPOHODA](https://www.mpohoda.cz) cloud accounting REST API (Stormware) from\nKeboola tables. One configuration row writes to one agenda (a creatable resource).\n\n**Writable agendas**: business partners, issued invoices, issued advance invoices, received\ninvoices, issued orders, received orders, issued offers, issue slips, other liabilities, payment\nmethods.\n\n### Input modes\n\n- **Column mapping** (default) — map input columns to mPOHODA fields. Document agendas take line\n  items from a second input table linked to the header by a key column; an `item_type` column\n  (`price_list` or `text`) selects the line variant. Use *Load columns* to prefill the mapping.\n- **Raw JSON** — one input column holds the full mPOHODA request body (one JSON object per row),\n  posted verbatim. An escape hatch for fields the curated mapping does not expose.\n\nEach record's outcome (ok / assigned document number / validation error) is written to a\n`write_results` output table. Validation errors (HTTP 422) are recorded per record; the run fails\nonly if every record fails.\n\n### Authentication\n\nmPOHODA API key (`Api-Key` header), from *Nastavení → Open API* (mPOHODA Pro only). The company is\nfixed by the key.\n\n### Documentation\n\nOfficial API documentation: https://api.mpohoda.cz/doc","licenseUrl":"https://github.com/keboola/component-mpohoda/blob/main/LICENSE.md","documentationUrl":"https://help.keboola.com/components/writers/erp/mpohoda/","sourceCodeUrl":"https://github.com/keboola/component-mpohoda","requiredMemory":"256m","processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":true,"forwardTokenDetails":true,"injectEnvironment":false,"complexity":"medium","category":null,"categories":["Accounting","ERP"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"mPOHODA Connection","required":["#api_key"],"properties":{"timeout":{"type":"integer","title":"Request timeout (s)","default":60,"minimum":1,"propertyOrder":5},"#api_key":{"type":"string","title":"API key","format":"password","description":"mPOHODA API key from Nastavení → Open API. Requires the mPOHODA Pro edition.","propertyOrder":2},"base_url":{"type":"string","title":"API base URL","default":"https://api.mpohoda.cz/v1","options":{"inputAttributes":{"placeholder":"https://api.mpohoda.cz/v1"}},"description":"https://api.mpohoda.cz/v1 for the Czech mPOHODA, https://api.mpohoda.sk/v1 for the Slovak one.","propertyOrder":1},"test_connection":{"type":"button","format":"test-connection","options":{"async":{"label":"Test connection","action":"testConnection"}},"propertyOrder":3}}},"configurationRowSchema":{"type":"object","title":"Agenda import","required":["agenda"],"properties":{"agenda":{"enum":["BusinessPartners","IssueSlips","IssuedAdvanceInvoices","IssuedInvoices","IssuedOffers","IssuedOrders","OtherLiabilities","PaymentMethods","ReceivedInvoices","ReceivedOrders"],"type":"string","title":"Agenda","options":{"enum_titles":["Business partners (Adresář)","Issue slips (Výdejky)","Issued advance invoices (Vydané zálohové faktury)","Issued invoices (Vydané faktury)","Issued offers (Vydané nabídky)","Issued orders (Vydané objednávky)","Other liabilities (Ostatní závazky)","Payment methods (Formy úhrad)","Received invoices (Přijaté faktury)","Received orders (Přijaté objednávky)"]},"description":"mPOHODA agenda (resource) to create records in.","propertyOrder":1},"_metadata_":{"type":"object","options":{"hidden":true},"properties":{"table":{"type":"object","properties":{"columns":{"type":"array"}}},"pohoda_fields":{"type":"array"}}},"input_mode":{"enum":["mapping","json"],"type":"string","title":"Input mode","default":"mapping","options":{"enum_titles":["Column mapping — map input columns to mPOHODA fields","Raw JSON — one column holds the full request body"]},"propertyOrder":2},"key_column":{"type":"string","title":"Document key column","options":{"dependencies":{"input_mode":["mapping"]}},"description":"Column present in both header and line-item tables that links items to their document. Required when the line items table is set explicitly.","propertyOrder":6},"body_column":{"type":"string","title":"JSON body column","default":"body","options":{"dependencies":{"input_mode":["json"]}},"description":"Raw JSON mode: the input column holding the full mPOHODA request body (one JSON object per row).","propertyOrder":3},"items_table":{"type":"string","title":"Line items table","options":{"dependencies":{"input_mode":["mapping"]}},"description":"Optional override. Input table with line items for document agendas, linked to the header by the key column. Auto-detected when blank. Ignored for non-document agendas (Business partners, Payment methods).","propertyOrder":5},"header_table":{"type":"string","title":"Header table","options":{"dependencies":{"input_mode":["mapping"]}},"description":"Optional override. Input table with one row per record (document header). Auto-detected when blank.","propertyOrder":4},"load_columns":{"type":"button","format":"sync-action","options":{"async":{"label":"Load columns","action":"loadColumns"},"dependencies":{"input_mode":["mapping"]}},"propertyOrder":8},"column_mapping":{"type":"array","items":{"type":"object","required":["source","destination"],"properties":{"source":{"type":"string","title":"Input column","watch":{"columns":"_metadata_.table.columns"},"options":{"tags":true},"enumSource":"columns","propertyOrder":1},"destination":{"type":"string","title":"mPOHODA field","watch":{"fields":"_metadata_.pohoda_fields"},"format":"select","options":{"tags":true},"enumSource":[{"title":"{{item.label}}","value":"{{item.field_name}}","source":"fields"}],"propertyOrder":2}}},"title":"Column mapping","format":"table","options":{"dependencies":{"input_mode":["mapping"]}},"description":"Map input columns to mPOHODA fields. Leave empty if your columns already use the mPOHODA field names. For line items, map an item_type column with values price_list or text.","propertyOrder":7}}},"createConfigurationRowSchema":null,"configurationDescription":"### Connection (configuration level)\n\n- **API base URL** — `https://api.mpohoda.cz/v1` (CZ) or `https://api.mpohoda.sk/v1` (SK).\n- **API key** — from mPOHODA *Nastavení → Open API* (mPOHODA Pro only).\n- **Test connection** — verifies the key and base URL.\n\n### Import (per row)\n\n- **Agenda** — the resource to create records in.\n- **Input mode** — *Column mapping* or *Raw JSON*.\n- **Column mapping mode**: optionally set the header / line-items tables and the key column linking\n  them (auto-detected when blank), then *Load columns* to map input columns to mPOHODA fields. For\n  line items, include an `item_type` column with `price_list` or `text`.\n- **Raw JSON mode**: set the column that holds the full request body.\n\nOutcomes are written to the `write_results` table (row, agenda, status, id, number, message).","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["loadColumns","testConnection"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.wr-mpohoda","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-mpohoda","name":"developer-portal-v2/keboola.wr-mpohoda","tag":"0.1.0","options":{},"digest":"sha256:07cd167330acf6acda4736fdb419cabb8c75c6bd7a183b0fa17eb19fdcf16f3a"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-mpohoda/32/1781656002574.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-mpohoda/64/1781656002574.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-mpohoda/128/1781656002574.png"}},{"id":"kds-team.ex-ms-outlook-email-content","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":164,"name":"MS Outlook IMAP Email Content and Attachments (Office 365)","type":"extractor","shortDescription":"Download email content (body), metadata and/or attachments from Office 365 mailbox using IMAP or Microsoft Graph API.","longDescription":"This extractor allows you to automatically retrieve email contents and/or its attachments from Office 365.\nIt supports two connection methods and uses oAuth 2.0 for authentication.\n\n### IMAP\n\nEmails stay intact in your original inbox and can be queried using a standardized [IMAP query syntax](https://help.keboola.com/components/extractors/communication/email-imap/query-syntax).\nSupports standard IMAP search keywords: FROM, SUBJECT, SINCE, BEFORE, UNSEEN, etc.\n\n### Graph API\n\nUses Microsoft Graph API directly. Supports two filtering mechanisms:\n\n**Graph API Filter** — OData `$filter` for exact matches. Can be combined with the Period from date field.\n\n| Need | Example |\n|---|---|\n| Exact sender | `from/emailAddress/address eq 'someone@example.com'` |\n| Exact subject | `subject eq 'Exact Subject Line'` |\n| Has attachments | `hasAttachments eq true` |\n| Combined | `from/emailAddress/address eq 'x@y.com' and subject eq 'text'` |\n\nNote: `contains()` on subject/body is not supported by the messages endpoint and returns HTTP 400.\n\n**Graph API Search (KQL)** — keyword and partial matching. Cannot be combined with Graph API Filter or Period from date — this is a [Microsoft Graph API limitation](https://learn.microsoft.com/en-us/graph/known-issues#some-limitations-apply-to-query-parameters). Returns up to 1,000 results.\n\n| Need | Example |\n|---|---|\n| Subject keyword | `subject:weekly` |\n| Subject exact phrase | `subject:\"exact multi-word phrase\"` |\n| Sender (substring) | `from:someone@example.com` or `from:MSSecurity` |\n| Date exact | `received:2026-03-17` |\n| Date range | `received:2026-01-01..2026-01-31` |\n| All combined | `from:sender subject:keyword received:2026-01-01..2026-03-18` |\n\nNote: relative date keywords (`received:this week`, `received:today`) are not supported on the messages endpoint.","licenseUrl":"https://github.com/keboola/component-email-content/blob/main/LICENSE.md","documentationUrl":"https://help.keboola.com/components/extractors/communication/ms-outlook/","sourceCodeUrl":"https://github.com/keboola/component-email-content","requiredMemory":"512m","processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"medium","category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-processors","genericVariablesUI","genericDockerUI-authorization"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Connection Settings","required":["user_name","connection_method"],"properties":{"host":{"type":"string","title":"IMAP Host","options":{"dependencies":{"connection_method":"imap"}},"description":"IMAP server hostname, e.g. outlook.office365.com","propertyOrder":300},"port":{"type":"number","title":"IMAP Port","default":993,"options":{"dependencies":{"connection_method":"imap"}},"propertyOrder":400},"user_name":{"type":"string","title":"Email Address","propertyOrder":100},"connection_method":{"enum":["imap","graph_api"],"type":"string","title":"Connection Method","default":"imap","options":{"enum_titles":["IMAP (default)","Microsoft Graph API"]},"description":"IMAP connects via traditional IMAP protocol. Graph API uses Microsoft 365 REST API (use when IMAP is disabled on your tenant).","propertyOrder":50}}},"configurationRowSchema":{"type":"object","title":"extractor configuration","required":["date_since","download_content","download_attachments"],"properties":{"query":{"type":"string","title":"IMAP Search Query","default":"ALL","options":{"tooltip":"**IMAP search keywords:**\n`FROM \"sender@email.com\"`\n`SUBJECT \"text\"`\n`UNSEEN`, `SEEN`, `ALL`\n`SINCE 01-Jan-2026`\n\n**Combined example:**\n`(FROM \"sender\" SUBJECT \"text\" UNSEEN)`"},"description":"IMAP search query. <strong>Does not apply to Graph API connection.</strong> <a href=\"https://help.keboola.com/components/extractors/communication/email-imap/query-syntax/\">Syntax reference.</a>","propertyOrder":100},"mark_seen":{"type":"boolean","title":"Mark seen","format":"checkbox","default":true,"description":"When set to true, emails that have been extracted will be marked as seen/read.","propertyOrder":350},"date_since":{"type":"string","title":"Period from date (including)","default":"","options":{"tooltip":"**Format:** `YYYY-MM-DD` or dateparser string (`1 month ago`, `yesterday`, etc).\n\n**Note:** Cannot be combined with Graph API Search – use `received:YYYY-MM-DD..YYYY-MM-DD` in KQL instead."},"description":"Date or relative expression (e.g. 5 days ago, yesterday). If empty, all records are downloaded.","propertyOrder":150},"imap_folder":{"type":"string","title":"Mail Folder","default":"","options":{"tooltip":"**IMAP:** Use folder path, e.g. `INBOX`, `Sent Items`\n**Graph API:** Use well-known name (`inbox`, `sentitems`, `drafts`) or display name."},"description":"Defaults to Inbox if empty.","propertyOrder":110},"graph_filter":{"type":"string","title":"Graph API Filter","default":"","options":{"tooltip":"**Exact match examples:**\n`from/emailAddress/address eq 'someone@example.com'`\n`subject eq 'exact subject'`\n`hasAttachments eq true`\n\n**Note:** `contains()` on subject/body is NOT supported and will return HTTP 400.","dependencies":{"_connection_method":"graph_api"}},"description":"OData $filter for exact matching. Can be combined with Period from date. See <a href=\"https://learn.microsoft.com/en-us/graph/api/user-list-messages?view=graph-rest-1.0\">syntax reference</a>.","propertyOrder":105},"graph_search":{"type":"string","title":"Graph API Search (KQL)","default":"","options":{"tooltip":"**Keyword search:**\n`subject:weekly`\n`from:someone@example.com` (substring match)\n\n**Exact phrase:**\n`subject:\"my exact phrase\"`\n\n**Date range:**\n`received:2026-01-01..2026-01-31`\n\n**Combined:**\n`from:sender subject:keyword received:2026-01-01..2026-03-18`\n\n**Note:** Relative dates (`received:this week`) do NOT work.","dependencies":{"_connection_method":"graph_api"}},"description":"KQL keyword search. <strong>Cannot be combined with Graph API Filter or Period from date</strong> (<a href=\"https://learn.microsoft.com/en-us/graph/known-issues#some-limitations-apply-to-query-parameters\">MS limitation</a>). Max 1,000 results.","propertyOrder":107},"download_content":{"type":"boolean","title":"Download Content","format":"checkbox","default":true,"description":"When set to true, the content of the message will be downloaded.","propertyOrder":200},"_connection_method":{"type":"string","watch":{"val":"_metadata_.root.parameters.connection_method"},"options":{"hidden":true},"template":"{{val}}","propertyOrder":1},"attachment_pattern":{"type":"string","title":"Attachment Pattern","default":".+\\.csv","options":{"dependencies":{"download_attachments":true}},"description":"Regex pattern to filter particular attachments. e.g. to retrieve only pdf file types use: .+\\.pdf If left empty, all attachments are downloaded.","propertyOrder":400},"download_attachments":{"type":"boolean","title":"Download Attachments","format":"checkbox","default":false,"description":"When set to true, also the attachments will be downloaded. By default into the File Storage. Use processors to control the behaviour.","propertyOrder":300}}},"createConfigurationRowSchema":null,"configurationDescription":"- The content and metadata of emails are stored in the `emails` table.\n- The attachments will be by default stored in the File Storage. To change this behaviour please use [processors](https://developers.keboola.com/extend/component/tutorial/processors/). See the example below.\n\nAdditional documentation [available](https://help.keboola.com/components/extractors/communication/email-imap/)\n\n#### Example - Storing CSV attachments in Table Storage.\n\nIf your attachments are in csv format you can use this combination of processors to store them in the Table Storage:\n\n- The `folder` parameter of the [first processor](https://github.com/keboola/processor-move-files) matches the resulting table name\n- The [second processor](https://components.keboola.com/components/keboola.processor-create-manifest) defines that the result will always replace the destination table and expects header in the csv file.\n- NOTE that in this setup all attachments will be stored in the same table, so they have to share the same structure.\n\n```json\n{\n  \"before\": [],\n  \"after\": [\n    {\n        \"definition\": {\n          \"component\": \"keboola.processor-move-files\"\n        },\n        \"parameters\": {\n          \"direction\": \"tables\",\n          \"folder\": \"result_table\"\n        }\n      },\n      {\n        \"definition\": {\n          \"component\": \"keboola.processor-create-manifest\"\n        },\n        \"parameters\": {\n          \"delimiter\": \",\",\n          \"enclosure\": \"\\\"\",\n          \"incremental\": false,\n          \"primary_key\": [],\n          \"columns_from\": \"header\"\n        }\n      }]\n}\n```","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.ex-ms-outlook-email-content","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-ms-outlook-email-content","name":"developer-portal-v2/kds-team.ex-ms-outlook-email-content","tag":"1.5.3","options":{},"digest":"sha256:ce635691e4a8c2569580328aff4e6de2f1117af490e3432f6ee2b62486a73aeb"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-ms-outlook-email-content/32/1693922409631.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-ms-outlook-email-content/64/1693922409631.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-ms-outlook-email-content/128/1693922409631.png"}},{"id":"kds-team.ex-ms-sharepoint","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":166,"name":"MS SharePoint Lists","type":"extractor","shortDescription":"Extracts Microsoft SharePoint lists.","longDescription":"Download `Lists` and `List Items` from MS Sharepoint. If you're looking for fetching documents and files from the \nSharepoint platform, use the [One Drive extractor](https://components.keboola.com/components/keboola.ex-onedrive).","licenseUrl":"https://github.com/keboola/component-ms-sharepoint/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-ms-sharepoint/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-ms-sharepoint","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["File Storage"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-authorization"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"extractor configuration","required":["base_host_name","lists"],"properties":{"lists":{"type":"array","items":{"type":"object","title":"List","format":"grid","required":["site_url_rel_path","list_name","include_additional_cols","use_display_names","load_setup"],"properties":{"list_name":{"type":"string","title":"List name","description":"Name of the Sharepoint List. Exactly as displayed in the UI.","propertyOrder":2000},"load_setup":{"type":"object","title":"Storage load setup","format":"grid","required":["load_mode_incremental","result_table_name"],"properties":{"result_table_name":{"type":"string","title":"Result table name","description":"Name of the result table in the storage.","propertyOrder":5000},"load_mode_incremental":{"enum":[0,1],"type":"number","title":"Load type","default":1,"options":{"enum_titles":["Full Load","Incremental Update"],"grid_columns":6},"description":"If set to Incremental update, the result tables will be updated based on primary key. Full load overwrites the destination table each time.","propertyOrder":4000}},"propertyOrder":4000},"site_url_rel_path":{"type":"string","title":"Site relative URL path","default":"/sites/root","description":"Relative path of the Sharepoint site on your Sharepoint server. E.g. /sites/MyTeamSite. If left empty, a root site is used.","propertyOrder":1000},"use_display_names":{"type":"boolean","title":"Use column display names","format":"checkbox","default":true,"description":"If set to false, underlying API column names will be used in the result table.","propertyOrder":3100},"include_additional_cols":{"type":"boolean","title":"Include additional system columns","format":"checkbox","description":"Sharepoint lists contain also metadata column invisible in the default UI view. Check this to include them in the export.","propertyOrder":3000}}},"title":"Sharepoint lists","description":"Sharepoint Lists to download."},"base_host_name":{"type":"string","title":"Sharepoint host base name","description":"e.g. my-tenant.sharepoint.com","propertyOrder":100}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"Additional documentation is [available](https://bitbucket.org/kds_consulting_team/kds-team.ex-ms-sharepoint/src/master/README.md).","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":166,"uri":"docker/kds-team.ex-ms-sharepoint","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-ms-sharepoint","name":"developer-portal-v2/kds-team.ex-ms-sharepoint","tag":"1.0.6","options":{},"digest":"sha256:85f80f2d52b8c54341e0dd8f2e5142341b6deed1ff133f3ec69f7eab4ce59b61"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-ms-sharepoint/32/1579083248596.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-ms-sharepoint/64/1579083248596.png","128":null}},{"id":"kds-team.wr-ms-sharepoint-lists","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":111,"name":"MS SharePoint Lists","type":"writer","shortDescription":"Writes tables to Microsoft SharePoint lists.","longDescription":"Create and upload `Lists` and `List Items` to MS SharePoint. If you're looking for uploading documents and files to the \nSharepoint platform, use the [One Drive writer](https://components.keboola.com/components/jakub-bartel.wr-onedrive).","licenseUrl":"https://github.com/keboola/component-ms-sharepoint-lists/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-ms-sharepoint-lists/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-ms-sharepoint-lists","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["File Storage"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","appInfo.dataOut","genericDockerUI-authorization","genericDockerUI-tableInput"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"extractor configuration","required":["base_host_name","site_url_rel_path","list_name","create_new"],"properties":{"list_name":{"type":"string","title":"List name","description":"Name of the new or existing Sharepoint List. To overwrite existing list the name must be specified exactly as displayed in the UI.","propertyOrder":2000},"create_new":{"type":"array","items":{"type":"object","title":"New list parameters","required":["list_description","title_column","column_setup"],"properties":{"column_setup":{"type":"array","items":{"type":"object","title":"Column","format":"grid","required":["name","display_name","col_type","description","required"],"properties":{"name":{"type":"string","title":"Source column name","options":{"grid_columns":3},"description":"Source table column name","propertyOrder":10},"col_type":{"enum":["text","number","dateTime","date"],"type":"number","title":"Column data type","default":"text","options":{"grid_columns":3},"propertyOrder":30},"required":{"type":"boolean","title":"Required","format":"checkbox","propertyOrder":6000},"description":{"type":"string","title":"description","format":"textarea","options":{"input_height":"50px"},"propertyOrder":4000},"display_name":{"type":"string","title":"Display name","options":{"grid_columns":3},"description":"Display name in Sharepoint","propertyOrder":20}}},"title":"List column parameters","description":"Optional parameters of the list columns. If left empty, all fields will be treated as text. If specified list already exist, this section is ignored.","propertyOrder":4000},"title_column":{"type":"object","title":"Title column","format":"grid","required":["name"],"properties":{"name":{"type":"string","title":"Source column name","description":"Source table column name","propertyOrder":10}},"description":"List will be generated with the genericTemplate that requires one Title column. Specify, which column you want to use as Title. It may be for example you index column."},"list_description":{"type":"string","title":"List description","maxItems":1,"description":"Result list description","propertyOrder":1}}},"title":"Create new list","maxItems":1,"description":"If you wish to create a new list add its properties. If left empty, existing list will be overwritten.","propertyOrder":4000},"base_host_name":{"type":"string","title":"Sharepoint host base name","description":"e.g. my-tenant.sharepoint.com","propertyOrder":100},"site_url_rel_path":{"type":"string","title":"Site relative URL path","default":"/sites/root","description":"Relative path of the Sharepoint site on your Sharepoint server. E.g. /sites/MyTeamSite. If left empty, a root site is used.","propertyOrder":1000}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"### Warning: \nThe writer currently supports only **`full load`**. \nAll existing items in the destination list will be removed prior the load. \n\n### Creating new list\n\nNew list may be created directly from configuration. If the list already exists, the configuration section `Create new list`\n is ignored. Once created, changes made in that configuration section will ignored.\n \n**NOTE**: When creating a new list the `genericList` template is used and the resulting list always contains a required column named `Title`\n\n### Column definition\n \n- Currently only `text`, `number`, `date`, `dateTime` column types are available when creating a new list.\n- When no column parameters are specified, all columns will be created as `text` fields and the resulting column display names \nwill match the input table.\n- Title column name mapping is always required.\n- Once created, any changes made to this section will be ignored. It is not possible to update column definition of an exisitng list.\n\n### Writing to an existing list\n\nWhen the `Create new list` section is empty, a list with the specified name is expected to exist, otherwise the job fails.\n\n**NOTE**: During each execution all existing list items are removed from the destination list prior upload.\n\n\nAdditional documentation is available [here](https://bitbucket.org/kds_consulting_team/kds-team.wr-ms-sharepoint-lists/src/master/README.md).","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":111,"uri":"docker/kds-team.wr-ms-sharepoint-lists","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.wr-ms-sharepoint-lists","name":"developer-portal-v2/kds-team.wr-ms-sharepoint-lists","tag":"1.0.4","options":{},"digest":"sha256:cc4c45a99e5cb612d5916a1e1dae9c7d6831a997b85a42f0934adc44e3074768"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.wr-ms-sharepoint-lists/32/1579196255508.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.wr-ms-sharepoint-lists/64/1579196255508.png","128":null}},{"id":"keboola.ex-db-mysql","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":168,"name":"MySQL","type":"extractor","shortDescription":"Extracts tables or query results from a MySQL database, with SSL and SSH tunnelling.","longDescription":"This component imports data from selected tables or results from arbitrary SQL queries from the [MySQL](https://www.mysql.com/) database. It connects to the database, executes your queries, and stores the results in Keboola Connection Storage.\n\nTo configure this extractor, you need to\n\n- provide database credentials, and \n- have a connection to the database you want to read, preferably [secure](https://help.keboola.com/extractors/database/#connecting-to-database).\n\nIncremental load is optional.","licenseUrl":"https://github.com/keboola/db-extractor-mysql/blob/master/LICENSE","documentationUrl":"https://help.keboola.com/extractors/database/sqldb/","sourceCodeUrl":"https://github.com/keboola/db-extractor-mysql","requiredMemory":"1024m","processTimeout":25200,"features":["container-root-user","has-sample-data","has-simplified-ui"],"encryption":true,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"easy","category":null,"categories":["Database"],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":{},"configurationSchema":{"type":"object","$defs":{"credentials":{"type":"object","required":["host","port","user","#password"],"properties":{"ssh":{"type":"object","properties":{"keys":{"type":"object","properties":{"public":{"type":"string"},"#private":{"type":"string"}}},"user":{"type":["string","null"]},"enabled":{"type":"boolean"},"sshHost":{"type":["string","null"]},"sshPort":{"type":["string","integer","null"],"default":22},"localPort":{"type":["string","integer"]},"remoteHost":{"type":"string"},"remotePort":{"type":["string","integer"]}}},"ssl":{"type":"object","properties":{"ca":{"type":["string","null"]},"#ca":{"type":["string","null"]},"#key":{"type":["string","null"]},"cert":{"type":["string","null"]},"#cert":{"type":["string","null"]},"cipher":{"type":"string"},"enabled":{"type":"boolean"},"verifyServerCert":{"type":"boolean"},"ignoreCertificateCn":{"type":"boolean"}}},"host":{"type":"string"},"port":{"type":["string","integer"]},"user":{"type":"string"},"database":{"type":"string"},"#password":{"type":"string"},"initQueries":{"type":"array","items":{"type":"string"}},"networkCompression":{"type":"boolean"},"transactionIsolationLevel":{"type":"string"}}}},"title":"keboola.ex-db-mysql — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","required":["db"],"properties":{"db":{"$ref":"#/$defs/credentials"}}},"configurationRowSchema":{"type":"object","title":"keboola.ex-db-mysql — Row Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"id":{"type":["string","integer"]},"name":{"type":"string"},"query":{"type":"string"},"table":{"oneOf":[{"type":"string"},{"type":"object","properties":{"schema":{"type":"string"},"tableName":{"type":"string"}}}]},"tables":{"type":"array","options":{"async":{"label":"Re-load tables","action":"getTables"}}},"columns":{"type":"array","items":{"type":"string"}},"enabled":{"type":"boolean"},"primaryKey":{"type":"array","items":{"type":"string"}},"incremental":{"type":"boolean"},"outputTable":{"type":"string"},"advancedMode":{"type":"boolean"},"incrementalFetchingLimit":{"type":"integer"},"incrementalFetchingColumn":{"type":"string"}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":["testConnection","getTables","probe"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-db-mysql","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-db-mysql","name":"developer-portal-v2/keboola.ex-db-mysql","tag":"7.8.0","options":{},"digest":"sha256:03d3365e27f07c12930c1f1caa446a9de20dfd29fe02af9c195ebd5a452c2821"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-db-mysql/32/1666644582092.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-db-mysql/64/1666644582092.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-db-mysql/128/1666644582092.png"}},{"id":"keboola.wr-db-mysql","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":75,"name":"MySQL","type":"writer","shortDescription":"Writes data to a MySQL database.","longDescription":"This component sends tables from Keboola Connection Storage to a [MySQL](https://www.mysql.com/products/) or [MariaDB](https://mariadb.org/) database.\n\nTo configure the writer, you need to\n\n- provide database credentials, and\n- have a connection to the database you want to write to, preferably [secure](https://help.keboola.com/extractors/database/#connecting-to-database).\n\nThe writer supports incremental writing and incremental processing.","licenseUrl":"https://github.com/keboola/db-writer-mysql/blob/master/LICENSE","documentationUrl":"https://help.keboola.com/writers/database/mysql/","sourceCodeUrl":"https://github.com/keboola/db-writer-mysql/","requiredMemory":"256m","processTimeout":86400,"features":["container-root-user","dev-branch-configuration-unsafe"],"encryption":true,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Database"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput","genericDockerUI-rows"],"imageParameters":{},"stackParameters":{},"testConfiguration":{},"configurationSchema":{"type":"object","$defs":{"credentials":{"type":"object","required":["host","port","user","#password","database"],"properties":{"ssh":{"type":"object","properties":{"keys":{"type":"object","properties":{"public":{"type":"string"},"#private":{"type":"string"}}},"user":{"type":["string","null"]},"enabled":{"type":"boolean"},"sshHost":{"type":["string","null"]},"sshPort":{"type":["string","integer","null"],"default":22},"localPort":{"type":["string","integer"]},"remoteHost":{"type":"string"},"remotePort":{"type":["string","integer"]}}},"ssl":{"type":"object","properties":{"ca":{"type":["string","null"]},"#ca":{"type":["string","null"]},"#key":{"type":["string","null"]},"cert":{"type":["string","null"]},"#cert":{"type":["string","null"]},"cipher":{"type":"string"},"enabled":{"type":"boolean"},"verifyServerCert":{"type":"boolean"},"ignoreCertificateCn":{"type":"boolean"}}},"host":{"type":"string"},"port":{"type":["string","integer"],"default":3306},"user":{"type":"string"},"driver":{"type":"string"},"database":{"type":"string"},"#password":{"type":"string"}}}},"title":"keboola.wr-db-mysql — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","required":["db"],"properties":{"db":{"$ref":"#/$defs/credentials"}}},"configurationRowSchema":{"type":"object","title":"keboola.wr-db-mysql — Row Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"items":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"size":{"type":["string","integer","null"]},"type":{"type":"string"},"dbName":{"type":"string"},"default":{"type":["string","null"]},"nullable":{"type":"boolean"}}}},"dbName":{"type":"string"},"tables":{"type":"array","options":{"async":{"label":"Re-load tables","action":"getTables"}}},"tableId":{"type":"string"},"primaryKey":{"type":"array","items":{"type":"string"}},"incremental":{"type":"boolean"}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":["testConnection"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.wr-db-mysql","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-db-mysql","name":"developer-portal-v2/keboola.wr-db-mysql","tag":"2.0.2","options":{},"digest":"sha256:a77476ff00ccbedef18c58e2989a21f3e368032a49a4f3719e2de1b6096995f1"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-db-mysql/32/1677062445094.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-db-mysql/64/1677062445094.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-db-mysql/128/1677062445094.png"}},{"id":"kds-team.ex-mysql-cdc","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":199,"name":"MySQL CDC","type":"extractor","shortDescription":"Captures row-level inserts, updates, and deletes from MySQL or MariaDB (CDC).","longDescription":"MySQL (MariaDB) has a binary log (binlog) that records all operations in the order in which they are committed to the database.\nThis includes changes to table schemas and changes to the table data. MySQL uses the binlog for replication and\nrecovery. This MySQL connector reads the binlog, produces change events for row-level `INSERT`, `UPDATE`, and `DELETE` operations.\n\n**Functionality** \n\n- The connector performs an initial sync of the tables.\n  - This step can be skipped or modified by custom snapshot queries for each table. \n- The connector reads the binlog, produces change events for row-level `INSERT`, `UPDATE`, and `DELETE` operations.\n- The schema changes are handled automatically without interruption and without needing a re-sync.\n- You can choose to keep all changes in the resulting tables or deduplicate the batch result so that only the latest states of each record are reflected in the result table.\n- The connector uses micro-batches, so you can schedule them as often as needed, whether every 5 minutes or twice a day.\n  - This approach gives you more control over the resulting cost of the solution and lets you leverage the power of log-based replication even for smaller use cases if needed.\n  - If your use case requires short interval syncs, reach out to us for information about a cost-efficient CDC add-on license.","licenseUrl":null,"documentationUrl":"https://help.keboola.com/components/extractors/database/mysql/#mysql-log-based-cdc","sourceCodeUrl":"https://github.com/keboola/python-cdc-component/tree/main/db_components/ex_mysql_cdc","requiredMemory":"8000m","processTimeout":172800,"features":["container-root-user"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":true,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"medium","category":null,"categories":["Database"],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-resetState"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Authorization","required":["db_settings"],"properties":{"db_settings":{"type":"object","title":"Connection Settings","format":"grid-strict","required":["#password","host","port","user"],"properties":{"host":{"type":"string","title":"Hostname","options":{"grid_columns":8},"propertyOrder":2},"port":{"type":"integer","title":"Port","default":3306,"options":{"grid_columns":4},"propertyOrder":10},"user":{"type":"string","title":"User","options":{"grid_columns":12},"propertyOrder":20},"adapter":{"enum":["MySQL","MariaDB"],"type":"string","title":"Connector adapter","default":"MySQL","options":{"grid_columns":8},"propertyOrder":1},"#password":{"type":"string","title":"Password","format":"password","options":{"grid_columns":12},"propertyOrder":40},"ssh_options":{"type":"object","format":"ssh-editor","propertyOrder":60},"server_timezone":{"type":"string","title":"Optional Server Timezone","options":{"tooltip":"If the server uses a non GMT/UTC timezone the underlying JDBC driver needs a specification of the timezone in the supported format. For instance `Europe/Prague`. \n\n This property will set the JDBC connection property `connectionTimeZone`.","grid_columns":12},"description":"Set this in case of connection errors related to timezone representation. In most cases, this can be left empty.","propertyOrder":13},"test_connection":{"type":"button","format":"sync-action","options":{"async":{"label":"Validate Connection","action":"validate_connection"}},"propertyOrder":500}},"propertyOrder":1},"destination":{"type":"object","title":"Destination","required":["load_type"],"properties":{"load_type":{"enum":["incremental_load","full_load","append_incremental","append_full"],"type":"string","title":"Load Type","default":"incremental_load","options":{"tooltip":"Append modes do not perform deduplication and do not set output table primary key. The result tables will include additional columns: `KBC__EVENT_TIMESTAMP_MS` and `KBC__BATCH_EVENT_ORDER`. \n\n **Note** that changing this parameter after the initial run **may result in errors and drop of the existing tables is recommended** prior changing this parameter.","enum_titles":["Incremental Load - Deduplicated","Full Load - Deduplicated","Incremental Load - Append","Full Load - Append"]},"description":"If Full load is used, the destination table will be overwritten every run. If Incremental Load is used, data will be upserted into the destination table based on the primary key. Append modes do not contain any primary keys and are not deduplicated.","propertyOrder":30},"outputBucket":{"type":"string","title":"Output Bucket","default":"","options":{"tooltip":"Specify the bucket name **without the stage prefix**. The default bucket name will be used if empty. The result bucket path will be `in.c-<bucket_name>`","placeholder":"my-bucket"},"description":"(Optional) The name of bucket in Keboola (without the stage prefix) storage where the data. Keboola will create a bucket for you if not specified. The result bucket path will be `in.c-<bucket_name>","propertyOrder":200}},"propertyOrder":600},"column_masks":{"type":"object","title":"Column Masks","properties":{"hash_masks":{"type":"array","items":{"type":"object","title":"Column","required":["algorithm","salt","columns"],"properties":{"salt":{"type":"string","title":"Salt","options":{"tooltip":"The salt that will be used to hash the string.","inputAttributes":{"placeholder":"CzQMA0cB5K"}},"propertyOrder":10},"columns":{"$ref":"#/definitions/column_list_regex","title":"Columns","options":{"tags":true,"tooltip":"(comma separated list) of fully-qualified names for columns are of the form `databaseName.tableName.columnName`.\n\nTo match the name of a column, connector applies the regular expression that you specify as an **anchored regular expression**. That is, the expression is used to match the entire name string of the column; it does not match substrings that might be present in a column name.","inputAttributes":{"placeholder":"databaseName.tableName.columnName,inventory.*.email"}},"description":"","propertyOrder":20},"algorithm":{"enum":["MD2","MD5","SHA-256","SHA-384","SHA-512"],"type":"string","title":"Algorithm","options":{"tooltip":"The algorithm that will be used to hash the string. \n\nBased on the hash function that is used, referential integrity is maintained, while column values are replaced with pseudonyms. \n\nSupported hash functions are described in the [MessageDigest section](https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#MessageDigest) of the Java Cryptography Architecture Standard Algorithm Name Documentation.\n\n**NOTE** Hashing strategy version 2 is used to ensure fidelity across job runs and configurations."},"propertyOrder":1}}},"title":"Hash Masks","format":"table","options":{"dependencies":{"enable_hash_masks":true}},"minItems":1,"propertyOrder":35},"length_masks":{"type":"array","items":{"type":"object","title":"Column","required":["length","columns"],"properties":{"length":{"type":"integer","title":"Length","options":{"tooltip":"The length of the string that will be replaced with the `*` character. If 0 is selected, the entire string is replaced with empty character."},"propertyOrder":10},"columns":{"$ref":"#/definitions/column_list_regex","title":"Columns","options":{"tags":true,"tooltip":"(comma separated list) of fully-qualified names for columns are of the form `databaseName.tableName.columnName`.\n\nTo match the name of a column, connector applies the regular expression that you specify as an **anchored regular expression**. That is, the expression is used to match the entire name string of the column; it does not match substrings that might be present in a column name.","inputAttributes":{"placeholder":"databaseName.tableName.columnName,inventory.*.email"}},"description":"","propertyOrder":20}}},"title":"Length Masks","format":"table","options":{"dependencies":{"enable_length_masks":true}},"minItems":1,"propertyOrder":20},"enable_hash_masks":{"type":"boolean","title":"Hash Mask","format":"checkbox","default":false,"description":"If enabled, the connector will hash the string columns in the output data using selected algorithm and salt.","propertyOrder":30},"enable_length_masks":{"type":"boolean","title":"Length Mask","format":"checkbox","default":false,"description":"If enabled, the connector will mask the length of the string columns in the output data. The length of the string will be replaced with the `*` character.","propertyOrder":10}},"propertyOrder":15},"sync_options":{"type":"object","title":"Sync Options","required":["snapshot_mode"],"properties":{"max_wait_s":{"type":"integer","title":"Max Wait [s]","default":100,"description":"Maximum time in seconds to wait for the next CDC event before the component stops. Default is 100 seconds.","propertyOrder":60},"handle_binary":{"enum":["hex","base64","base64-url-safe"],"type":"string","title":"Binary data handler","default":"hex","options":{"tooltip":"Specifies how binary (bytea) columns should be represented in change events:\n\n- `base64` represents binary data as base64-encoded strings.\n- `base64-url-safe` represents binary data as base64-url-safe-encoded strings.\n- `hex` represents binary data as hex-encoded (base16) strings."},"description":"Marks how to handle binary data.","propertyOrder":7},"max_runtime_s":{"type":"integer","title":"Max Runtime [s]","maximum":85500,"description":"Maximum total runtime of the CDC run in seconds. If not set, the component timeout is used.","propertyOrder":70},"snapshot_mode":{"enum":["chunked_blocking","no_data"],"type":"string","title":"Replication Mode","options":{"enum_titles":["Standard","Changes only"]},"description":"Standard mode performs full sync of the tables on the first run. The Changes only mode will skip the initial full sync.","propertyOrder":5},"ro_mode_helper":{"type":"string","watch":{"val":"db_settings.ro_mode"},"options":{"hidden":true},"template":"{{val}}","description":"Helper dummy element to render source_signal_table"},"snapshot_statements":{"type":"array","items":{"type":"object","properties":{"table":{"type":"string","title":"Table","options":{"input_width":"300px","inputAttributes":{"placeholder":"customers.orders"}},"description":"Fully qualified table name, e.g. `databaseName.tableName`.","propertyOrder":10},"statement":{"type":"string","title":"Statement","format":"sql","options":{"inputAttributes":{"placeholder":"SELECT * FROM [customers].[orders] WHERE delete_flag = 0 ORDER BY id DESC"}},"description":"The custom SQL SELECT statement that will be used to fetch the initial snapshot.","propertyOrder":20}}},"title":"Snapshot Statements","format":"table","options":{"dependencies":{"snapshot_statement_override":true}},"description":"Define a custom SQL SELECT statement that will be used to fetch the initial snapshot for specified tables. ","uniqueItems":true,"propertyOrder":50},"source_signal_table":{"enum":[],"type":"string","title":"Signalling Table","format":"select","default":"","options":{"async":{"label":"Re-load tables","action":"get_tables","autoload":["parameters.source_settings.schemas"]},"tooltip":"You need to create a signaling table by submitting a standard SQL DDL query to the source database. \n\nThe following example shows a `CREATE TABLE` command that creates a three-column `debezium_signal` table: \n\n```sql\nCREATE TABLE debezium_signal (id VARCHAR(42) PRIMARY KEY, type VARCHAR(32) NOT NULL, data TEXT NULL);\n``` \n\n **Note** that the connector must have write access to the signaling table.","dependencies":{"ro_mode_helper":"false"}},"description":"A system signal table that will be used by to connector to store various signal events and incremental snapshot watermarks.","propertyOrder":2},"snapshot_locking_mode":{"enum":["none","minimal","extended"],"type":"string","title":"Snapshot Locking Mode","default":"minimal","options":{"tooltip":"[Specifies](https://debezium.io/documentation/reference/stable/connectors/mysql.html#mysql-property-snapshot-locking-mode) \nhow long the connector holds the MySQL global read lock during a snapshot:\n\n- **`minimal`**: Locks only during initial schema read, then releases while using a `REPEATABLE READ` transaction for consistency.\n- **`extended`**: Locks for the entire snapshot to avoid conflicts with concurrent operations.\n- **`none`**: No table locks, safe if no schema changes occur. MyISAM tables still lock by default.","dependencies":{"snapshot_mode":"initial"}},"propertyOrder":10},"snapshot_statement_override":{"type":"boolean","title":"Snapshot Statement Override","format":"checkbox","description":"Define a custom SQL SELECT statement that will be used to fetch the initial snapshot. ","propertyOrder":40}},"propertyOrder":20},"source_settings":{"type":"object","title":"Data Source","properties":{"tables":{"type":"array","items":{"enum":[],"type":"string"},"title":"Tables to sync","format":"select","options":{"tags":true,"async":{"label":"Re-load tables","action":"get_tables","autoload":["parameters.source_settings.schemas"]}},"description":"If left empty all tables are synced.","uniqueItems":true,"propertyOrder":102},"schemas":{"type":"array","items":{"enum":[],"type":"string"},"title":"Databases","format":"select","options":{"tags":true,"async":{"label":"Re-load databases","action":"get_schemas","autoload":["parameters.db_settings.user","parameters.db_settings.#password","parameters.db_settings.database"]}},"uniqueItems":true,"propertyOrder":100},"column_filter":{"$ref":"#/definitions/column_list_regex","title":"Column List","options":{"tags":true,"tooltip":"(comma separated list) of fully-qualified names for columns are of the form `databaseName.tableName.columnName`.\n\nTo match the name of a column, connector applies the regular expression that you specify as an **anchored regular expression**. That is, the expression is used to match the entire name string of the column; it does not match substrings that might be present in a column name.","dependencies":{"column_filter_type":["exclude","include"]},"inputAttributes":{"placeholder":"databaseName.tableName.columnName,\\w+\\.\\w+\\.email"}},"propertyOrder":120},"column_filter_type":{"enum":["none","exclude","include"],"type":"string","title":"Column Filter Type","default":"none","description":"If not specified all columns are synced. Define filters as list of regular expressions that match the fully-qualified names of columns that should be included or excluded from change event record values.","propertyOrder":103}},"propertyOrder":10},"advanced_parameters":{"type":"object","title":"Advanced parameters","format":"editor","options":{"dependencies":{"use_advanced_parameters":true}},"description":"Advanced parameters to be passed to Debezium. Use a JSON object format to pass parameters as key/value pairs. Example: `{\"key\":\"value\"}`","propertyOrder":810},"use_advanced_parameters":{"type":"boolean","title":"Pass advanced parameters to Debezium","format":"checkbox","description":"If checked, users can specify advanced parameters to be passed to Debezium. Use at your own risk!","propertyOrder":800}},"definitions":{"column_list_regex":{"type":"array","items":{"type":"string"},"title":"Column List","format":"select","options":{"tags":true,"tooltip":"(comma separated list) of fully-qualified names for columns are of the form `databaseName.tableName.columnName`.\n\nTo match the name of a column, connector applies the regular expression that you specify as an **anchored regular expression**. That is, the expression is used to match the entire name string of the column; it does not match substrings that might be present in a column name.","inputAttributes":{"placeholder":"databaseName.tableName.columnName,\\w+\\.\\w+\\.email"}},"description":"Define filters as list of regular expressions that match the fully-qualified names of columns that should be filtered in change event record values.","uniqueItems":true}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"The connector is based on [Debezium Connector](https://debezium.io/documentation/reference/stable/connectors/mysql.html)","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["testConnection","get_schemas","get_tables","validate_connection","show_snapshot_stats"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"verbose","200":"verbose","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.ex-mysql-cdc","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-mysql-cdc","name":"developer-portal-v2/kds-team.ex-mysql-cdc","tag":"0.14.6","options":{},"digest":"sha256:ff771a6f74a799b84f086aa6335fd6526e098fe714ac4bb41dd2f168bb796238"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-mysql-cdc/32/1714135056070.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-mysql-cdc/64/1714135056070.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-mysql-cdc/128/1714135056070.png"}},{"id":"kds-team.ex-neo4j","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":106,"name":"Neo4j","type":"extractor","shortDescription":"Extracts data from Neo4j graph databases.","longDescription":"[Neo4j](https://neo4j.com/) is a native graph database, built from the ground up to leverage not only data but also data relationships. Neo4j connects data as it's stored, enabling queries never beofre imagined, at speed never thought possible.\n\nThis component allows users to extract data out of Neo4j using graph query language, Cypher.\n\nFor more information regarding Neo4j, please refer to [Neo4j developer](https://neo4j.com/developer/get-started/).","licenseUrl":"https://bitbucket.org/kds_consulting_team/kds-team.ex-neo4j/src/master/LICENSE.md","documentationUrl":"https://bitbucket.org/kds_consulting_team/kds-team.ex-neo4j/src/master/README.md","sourceCodeUrl":"https://bitbucket.org/kds_consulting_team/kds-team.ex-neo4j/src/master/","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Database"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Authentication","required":["auth_type","url","username","#password"],"properties":{"url":{"type":"string","title":"Connection URI","default":"bolt://","description":"Identifying the graph database connection.","propertyOrder":100},"scheme":{"type":"string","title":"Custom Authentication Scheme","description":"Required when [Custom Authentication] is selected.","propertyOrder":400},"username":{"type":"string","title":"User Name / Principle","description":"Specifying who is being authenticated.","propertyOrder":200},"#password":{"type":"string","title":"Credentials","propertyOrder":300},"auth_type":{"enum":["basic","kerberos","custom"],"type":"string","title":"Type","default":"basic","options":{"enum_titles":["Basic Authentication","Kerberos Authentication","Custom Authentication"]},"propertyOrder":50}}},"configurationRowSchema":{"type":"object","title":"Query","required":["query","storage_name","incremental"],"properties":{"query":{"type":"string","title":"Cypher Query","propertyOrder":100},"incremental":{"type":"boolean","title":"Incremental Load","default":false,"propertyOrder":300},"primary_key":{"type":"array","items":{"type":"object","title":"Primary Key","properties":{"value":{"type":"string"}}},"title":"Primary Key","format":"table","uniqueItems":true,"propertyOrder":250},"storage_name":{"type":"string","title":"Output Table name","description":"Name of the output table in storage","propertyOrder":200}}},"createConfigurationRowSchema":null,"configurationDescription":"Each row configuration is configured to extract data from one Cypher query and export the response into a pre-defined output table.\n\n## Authentication\n\n### Type\n- Type of authenticatino supported for this component\n- Available method\n    1. [Basic Authentication](https://neo4j.com/docs/driver-manual/current/client-applications/#driver-authentication-basic)\n        - User authenticate server using their user name and password.\n        - This authentication scheme can be used to authenticate against LDAP server.\n    2. [Kerberos Authentication](https://neo4j.com/docs/driver-manual/current/client-applications/#driver-authentication-kerberos)\n        - User authenticate server by using a Kerberos authentication token with a base64 encoded server authentication ticket.\n        - The Kerberos authentication token can only be understood by the server if the server has the Kerberos Add-on installed.\n    3. [Custom Authentication](https://neo4j.com/docs/driver-manual/current/client-applications/#driver-authentication-custom)\n        - This authentication method allows users to connect to any servers which are built with a custom security provider.\n  \n### Connection URI\n- A connection URI identifies a graph database and how to connec to it.\n- Typical URIs pattern\n    ```\n    neo4j://<HOST>:<PORT>[?<ROUTING_CONTEXT>]\n    ```\n- Available schemes below on how the connection URIs are formed\n\n| URI Scheme | Routing | Description |\n|-|-|-|\n| `neo4j` | Yes | Unsecured |\n| `neo4j+s` | Yes | Secured with full certificate |\n| `neo4j+ssc` | Yes | Secured with self-signed certificate |\n| `bolt` | No | Unsecured |\n| `bolt+s` | No | Secured with full certificate |\n| `bolt+ssc` | No | Secured with self-signed certificate |\n\n### User Name / Principle\n- Specifies who is being authenticated\n\n### Credentials\n- Credentials to authenticate the user name / principle\n\n### Custom Authentication Scheme\n- `Required` when [Custom Authentication] is selected\n- Specifies the type of the authentication provider\n\n\n## Row Configuration\n\n### Cypher Query\n- A query that retrieve sets of data that fall into the specified criteria.\n- Example: `MATCH (n:Movie) RETURN n LIMIT 25` \n- To learn how to construct [Cyhper Query](https://neo4j.com/developer/cypher/#learn-cypher)\n\n### Output Table Name\n- The designated output table name in Keboola storage\n\n### Primary Key\n- Specifying a list of primary keys for the output table in Keboola\n\n### Load Type\n- Specifies whether to use `incremental load` or `full load` into Keboola storage","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":106,"uri":"docker/kds-team.ex-neo4j","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-neo4j","name":"developer-portal-v2/kds-team.ex-neo4j","tag":"0.0.1","options":{},"digest":"sha256:afb1b42bf44b0dee0971c4fab5e439f83523733df73553f55a7f8f94d1ac4bf5"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-neo4j/32/1609895638494.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-neo4j/64/1609895638494.png","128":null}},{"id":"keboola.ex-netsuite-http","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":81,"name":"NetSuite HTTP","type":"extractor","shortDescription":"Extracts NetSuite data over its HTTP APIs: records, SuiteQL, saved searches, RESTlets, and schema metadata.","longDescription":"The NetSuite HTTP extractor pulls data from NetSuite over its native HTTP interfaces, authenticating with Token-Based Authentication (TBA).\n\nIt supports five extraction modes:\n\n- **Record** — read a NetSuite record type, with optional field projection, a `q` filter, and sublist flattening or a separate child table.\n- **SuiteQL** — run an arbitrary SuiteQL query, with an optional date range substituted into the query so you can pull just a recent window.\n- **Saved Search** — execute an existing saved search (`customsearch_*`), selecting the underlying record type used to build the request. Filtering is defined inside the saved search itself.\n- **RESTlet** — call a deployed RESTlet script (GET/POST/PUT/DELETE) with an optional JSON body and query parameters, and extract rows from its JSON response, with optional cursor-based pagination.\n- **Metadata** — dump the account's schema catalog: every record type and its field definitions, written to two fixed tables (`record_types` and `fields`). Takes no other row settings; it is always a full-load snapshot.\n\nBoth full and incremental loads are supported: full load rewrites the table each run, while incremental load upserts the fetched rows on the configured primary key. The component emits authoritative table schema manifests describing the output columns and their data types.","licenseUrl":"https://github.com/keboola/ex-netsuite-http/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/ex-netsuite-http/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/ex-netsuite-http","requiredMemory":null,"processTimeout":null,"features":[],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","appInfo.dataIn","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"NetSuite Connection","required":["account_id","consumer_key","#consumer_secret","token_id","#token_secret"],"properties":{"token_id":{"type":"string","title":"Token ID","description":"TBA access token id.","propertyOrder":4},"account_id":{"type":"string","title":"Account ID","options":{"inputAttributes":{"placeholder":"1234567 or 1234567_SB1"}},"description":"NetSuite account ID. For a sandbox, add the sandbox suffix (e.g. 1234567_SB1).","propertyOrder":1},"consumer_key":{"type":"string","title":"Consumer Key","description":"TBA integration consumer key.","propertyOrder":2},"#token_secret":{"type":"string","title":"Token Secret","format":"password","description":"TBA access token secret.","propertyOrder":5},"test_connection":{"type":"button","format":"sync-action","options":{"async":{"label":"Test Connection","action":"testConnection"}},"propertyOrder":6},"#consumer_secret":{"type":"string","title":"Consumer Secret","format":"password","description":"TBA integration consumer secret.","propertyOrder":3}}},"configurationRowSchema":{"type":"object","title":"Extraction Target","required":["mode"],"properties":{"mode":{"enum":["record","suiteql","saved_search","restlet","metadata"],"type":"string","title":"Mode","default":"suiteql","options":{"tooltip":"**Record** reads a NetSuite record type with an optional filter. **SuiteQL** runs an arbitrary SuiteQL query. **Saved Search** runs an existing saved search. **RESTlet** calls a customer-deployed RESTlet script. **Metadata** dumps the schema catalog into two tables — `record_types` (every record type) and `fields` (their field definitions); it takes no other settings and issues one API call per record type, so a run is API-heavy.","enum_titles":["Record","SuiteQL","Saved Search","RESTlet","Metadata"]},"description":"What to extract","propertyOrder":1},"query":{"type":"string","title":"SuiteQL Query","format":"editor","options":{"editor":{"mode":"text/x-sql"},"tooltip":"A [SuiteQL](https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_156257770590.html) query. To filter by the date range below, put the `:date_from` and `:date_to` placeholders in the WHERE clause, e.g. `WHERE lastmodifieddate BETWEEN :date_from AND :date_to`. A single range is issued as-is (no automatic chunking), so narrow the range if it would exceed NetSuite's ~100k-row SuiteQL result ceiling. NetSuite returns every value as text, with dates in the date format of the NetSuite user; use e.g. `TO_CHAR(trandate, 'YYYY-MM-DD') AS trandate` to get ISO dates.","dependencies":{"mode":"suiteql"}},"description":"SuiteQL query to run","propertyOrder":20},"fields":{"type":"array","items":{"enum":[],"type":"string"},"title":"Fields","format":"select","options":{"async":{"label":"Load fields","action":"listFields"},"dependencies":{"mode":"record"}},"description":"Optional column projection; leave empty for all fields","uniqueItems":true,"propertyOrder":11},"method":{"enum":["GET","POST","PUT","DELETE"],"type":"string","title":"HTTP Method","options":{"enum_titles":["GET","POST","PUT","DELETE"],"dependencies":{"mode":"restlet"}},"propertyOrder":42},"date_to":{"type":"string","title":"End Date","options":{"tooltip":"An absolute date (`2024-03-01`) or a relative expression (`now`, `today`, `yesterday`). Substituted into the query's `:date_to` placeholder at run time. Defaults to `now`.","dependencies":{"mode":"suiteql"}},"description":"End of the date range for the :date_to placeholder","propertyOrder":22},"date_from":{"type":"string","title":"Start Date","options":{"tooltip":"An absolute date (`2024-01-01`) or a relative expression (`5 days ago`, `2 months ago`). Substituted into the query's `:date_from` placeholder at run time. Leave empty to disable date substitution. If set, the query must contain `:date_from` / `:date_to`.","dependencies":{"mode":"suiteql"}},"description":"Start of the date range for the :date_from placeholder","propertyOrder":21},"deploy_id":{"type":"string","title":"Deploy ID","options":{"dependencies":{"mode":"restlet"}},"propertyOrder":41},"load_type":{"enum":["full_load","incremental_load"],"type":"string","title":"Load Type","default":"incremental_load","options":{"tooltip":"**Full load** rewrites the whole table on every run. **Incremental load** upserts the fetched rows into the table by the primary key, keeping rows that are not in the current batch. Incremental requires a primary key.","enum_titles":["Full load","Incremental load"],"dependencies":{"mode":["record","suiteql","saved_search","restlet"]}},"description":"How the output table is written to Storage","propertyOrder":62},"page_size":{"type":"integer","title":"Page Size","options":{"tooltip":"Rows fetched per search page. Leave empty to use the default (1000).","dependencies":{"mode":"saved_search"},"inputAttributes":{"placeholder":"1000"}},"propertyOrder":32},"script_id":{"type":"string","title":"Script ID","options":{"dependencies":{"mode":"restlet"}},"propertyOrder":40},"page_limit":{"type":"integer","title":"Page Size","options":{"tooltip":"The number of records fetched per API page. Leave empty to use the default (1000). NetSuite's REST/SuiteQL surfaces cap this at 1000; higher values are capped to that maximum.","dependencies":{"mode":["record","suiteql"]},"inputAttributes":{"placeholder":"1000"}},"propertyOrder":63},"primary_key":{"type":"array","items":{"enum":[],"type":"string"},"title":"Primary Key","format":"select","options":{"tags":true,"async":{"label":"Load columns","action":"getColumns"},"tooltip":"The column(s) that uniquely identify a row. Load suggestions or type any column name. On an incremental load the table is upserted (deduplicated) on this key; a primary key is required when Load Type is Incremental.","dependencies":{"mode":["record","suiteql","saved_search","restlet"]}},"description":"Columns that uniquely identify a row","uniqueItems":true,"propertyOrder":61},"record_path":{"type":"string","title":"Record Path","options":{"tooltip":"The dotted path to the array (or object) of records in the RESTlet response, e.g. `data.results`. Leave empty when the records are at the top level of the response.","dependencies":{"mode":"restlet"}},"description":"Dotted path to the rows in the response, e.g. data.results","propertyOrder":45},"record_type":{"enum":[],"type":"string","title":"Record Type","format":"select","options":{"async":{"cache":true,"label":"Load record types","action":"listRecordTypes","autoload":true},"dependencies":{"mode":"record"}},"description":"NetSuite record type to extract","propertyOrder":10},"column_types":{"type":"array","items":{"type":"object","title":"Column","required":["column","type"],"properties":{"type":{"enum":["string","integer","numeric","float","boolean","date","timestamp"],"type":"string","title":"Type","default":"string","options":{"enum_titles":["String","Integer","Numeric","Float","Boolean","Date","Timestamp"]},"propertyOrder":2},"column":{"type":"string","title":"Column","minLength":1,"propertyOrder":1}}},"title":"Column Types","format":"table","options":{"tooltip":"SuiteQL returns every value as text, so the output columns are strings unless you set a type here. Use the column name as it appears in the output table. Date values are converted from the date format of the NetSuite user to ISO. NetSuite returns a date with time as the date only, so for a Timestamp column convert it in the query, e.g. `TO_CHAR(lastmodifieddate, 'YYYY-MM-DD\"T\"HH24:MI:SS') AS lastmodifieddate`. Boolean `T`/`F` values are converted to `true`/`false`. Storage does not change the type of an existing column, so the run fails. To change the type, delete the table (or the column) and run again.","dependencies":{"mode":"suiteql"}},"description":"Storage data types for the columns that should not be strings","uniqueItems":true,"propertyOrder":24},"query_filter":{"type":"string","title":"Query Filter (q)","options":{"tooltip":"A NetSuite record-filter expression, e.g. `email CONTAINS \"acme\"` or `id BETWEEN [100, 200]`. See [Filtering results using the q parameter](https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_1545222128.html). Leave empty to extract everything.","dependencies":{"mode":"record"}},"description":"Optional record filter using NetSuite's q syntax","propertyOrder":12},"query_params":{"type":"string","title":"Query Parameters","format":"editor","options":{"editor":{"mode":"application/json"},"tooltip":"A JSON object of extra query parameters sent to the RESTlet, e.g. `{\"since\": \"2024-01-01\"}`. Must be valid JSON. Leave empty for none. See [RESTlets](https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_N2971511.html).","dependencies":{"mode":"restlet"}},"description":"Optional query parameters as a JSON object","propertyOrder":43},"request_body":{"type":"string","title":"Request Body","format":"editor","options":{"editor":{"mode":"application/json"},"tooltip":"The JSON body sent to the RESTlet on POST/PUT requests. Must be valid JSON (an object or an array). Leave empty for no body.","dependencies":{"mode":"restlet","method":["POST","PUT"]}},"description":"Optional JSON request body (for POST/PUT)","propertyOrder":44},"preview_restlet":{"type":"button","format":"sync-action","options":{"async":{"label":"Preview RESTlet","action":"previewRestlet"},"dependencies":{"mode":"restlet"}},"propertyOrder":47},"saved_search_id":{"enum":[],"type":"string","title":"Saved Search","format":"select","options":{"async":{"label":"Load saved searches","action":"listSavedSearches"},"tooltip":"Define any filters inside the saved search itself — the component runs the search exactly as defined and does not add filtering. See [Defining a Saved Search](https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_N611578.html).","dependencies":{"mode":"saved_search"}},"description":"Saved search to execute (customsearch_*)","propertyOrder":30},"sublist_handling":{"enum":["flatten","child_table"],"type":"string","title":"Sublist Handling","options":{"tooltip":"How to handle record sublists (line items). **Keep in the parent row** stores each sublist as a JSON-string column on the parent row. **Split into a separate table** writes each sublist to its own table, linked to the parent row by its ID; each table is named `<output_table>_<sublistName>`.","enum_titles":["Keep in the parent row (as a JSON column)","Split into a separate table (linked to the parent row)"],"dependencies":{"mode":"record"}},"propertyOrder":13},"validate_suiteql":{"type":"button","format":"sync-action","options":{"async":{"label":"Validate SuiteQL","action":"validateSuiteQL"},"dependencies":{"mode":"suiteql"}},"propertyOrder":23},"output_table_name":{"type":"string","title":"Output Table Name","options":{"dependencies":{"mode":["record","suiteql","saved_search","restlet"]}},"description":"Destination table name; defaults to a name derived from the target","propertyOrder":60},"search_record_type":{"enum":["Transaction","Customer","Item","Contact","Employee","Vendor","SupportCase","Task","Opportunity"],"type":"string","title":"Search Record Type","format":"select","options":{"tags":true,"tooltip":"The record type the saved search is built on — it selects the request type used to run the search. Pick a standard type from the list, or type any other value, including custom record types (`customrecord_*`).","enum_titles":["Transaction","Customer","Item","Contact","Employee","Vendor","Support Case","Task","Opportunity"],"dependencies":{"mode":"saved_search"}},"description":"The saved search's underlying record type","propertyOrder":31},"pagination_cursor_field":{"type":"string","title":"Pagination Cursor Field","options":{"tooltip":"The response field whose value is passed back as the `cursor` query parameter to fetch the next page. Leave empty when the RESTlet is not paginated.","dependencies":{"mode":"restlet"}},"description":"Optional response field holding the next-page cursor","propertyOrder":46}}},"createConfigurationRowSchema":null,"configurationDescription":"Configure the NetSuite connection (account ID and Token-Based Authentication credentials) at the configuration level, then add a row per extraction target.\n\n### Connection\n\nSet the **Account ID** and the four TBA secrets (consumer key/secret and token ID/secret). Use **Test Connection** to verify the credentials.\n\n### Extraction row\n\nEach row picks a **Mode** — Record, SuiteQL, Saved Search, RESTlet, or Metadata — and exposes only the fields relevant to that mode. For the data modes, set the output table name, primary key, and load type (full or incremental) per row. Metadata takes no other settings: it always writes a full-load snapshot of the schema catalog into fixed tables.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["testConnection","listRecordTypes","listFields","getColumns","listSavedSearches","validateSuiteQL","previewRestlet"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-netsuite-http","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-netsuite-http","name":"developer-portal-v2/keboola.ex-netsuite-http","tag":"0.3.0","options":{},"digest":"sha256:e1ec68761c0f56f6f051027f33e9618aecdd72c26306859f8e752a4bef565302"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-netsuite-http/32/1787046648633.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-netsuite-http/64/1787046648633.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-netsuite-http/128/1787046648633.png"}},{"id":"keboola.ex-odoo","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":534,"name":"Odoo","type":"extractor","shortDescription":"Extract data from Odoo ERP via XML-RPC or JSON-2 with dynamic model/field selection and incremental loading","longDescription":"# Odoo Extractor\n\nExtract data from Odoo ERP systems via XML-RPC or JSON-2 API with intelligent model/field discovery and incremental loading.\n\n## Key Features\n\n### Dynamic UI Experience\n- **Test Connection** - Validate Odoo credentials before running extractions\n- **Model Discovery** - Browse and select from 146+ Odoo models automatically\n- **Field Discovery** - Load field definitions dynamically based on selected model\n- **No Manual Entry** - All models and fields discovered from your Odoo instance\n\n### Powerful Data Extraction\n- **Multiple Endpoints** - Configure multiple models in a single extraction\n- **Incremental Loading** - `write_date`-based state tracking for efficient updates\n- **Auto-Flattening** - Handles Odoo many2one and many2many relationships\n- **Flexible Filtering** - Use Odoo domain filters for targeted extraction\n\n### Production-Ready\n- **State Management** - Reliable tracking across all endpoints with nested structure\n- **Modern Python 3.13** - Full type safety with modern type hints\n- **Quality Standards** - Ruff formatted, lint-free, proper error handling\n- **Well-Tested** - Verified against Odoo 19.0 with 40+ test records\n\n## Common Use Cases\n\n- **Customer Data**: Extract contacts, companies, addresses from `res.partner`\n- **Sales Orders**: Pull sales data from `sale.order` and `sale.order.line`\n- **Invoicing**: Extract invoices from `account.move` and `account.move.line`\n- **Product Catalogs**: Get products from `product.product` and `product.template`\n- **Inventory**: Track stock movements via `stock.move`\n- **CRM**: Extract leads and opportunities from `crm.lead`\n- **Custom Modules**: Access any custom Odoo model\n\n## How It Works\n\n1. **Connect**: Enter your Odoo URL, database, and credentials\n2. **Test**: Click \"Test Connection\" to validate access\n3. **Select Models**: Choose models from the dynamic dropdown (146+ available)\n4. **Pick Fields**: Select specific fields or extract all\n5. **Configure**: Set incremental loading, limits, and sort order\n6. **Extract**: Run extraction and get clean CSV output\n\n## Technical Highlights\n\n- **Sync Actions**: Real-time model and field loading via Keboola sync actions\n- **Nested State**: Clean state structure with `state[\"endpoints\"][table][\"last_id\"]`\n- **Type Safety**: Full Python 3.13 type hints throughout\n- **API Discovery**: Uses `ir.model` and `fields_get()` for metadata\n- **Error Handling**: Clear UserException messages for all failure scenarios\n\nPerfect for integrating Odoo data into your data warehouse or analytics platform!","licenseUrl":"https://github.com/keboola/component-odoo/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-odoo/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-odoo","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Odoo Extractor Configuration","required":["odoo_url"],"properties":{"#api_key":{"type":"string","title":"API Key","format":"password","description":"Generate in user preferences","propertyOrder":40},"database":{"enum":[],"type":"string","title":"Database Name","options":{"async":{"label":"Load Databases","action":"listDatabases"},"creatable":true},"description":"Odoo database name","propertyOrder":20},"odoo_url":{"type":"string","title":"Odoo URL","description":"Your Odoo instance URL (e.g., https://mycompany.odoo.com or http://localhost:8069)","propertyOrder":10},"username":{"type":"string","title":"Username","options":{"dependencies":{"api_protocol":"xmlrpc"}},"description":"Required for XML-RPC","propertyOrder":30},"api_protocol":{"enum":["json2","xmlrpc"],"type":"string","title":"API Protocol","format":"radio","default":"xmlrpc","options":{"tooltip":"Select JSON-2 for Odoo 19+ (recommended). XML-RPC is deprecated in Odoo 19 and will be removed in Odoo 20, but works with all older versions.","enum_titles":["JSON-2","XML-RPC"]},"propertyOrder":25},"test_connection":{"type":"button","format":"test-connection","options":{"async":{"label":"Test Connection","action":"testConnection"}},"propertyOrder":50}}},"configurationRowSchema":{"type":"object","title":"Odoo Model Extraction","required":["model"],"properties":{"model":{"enum":[],"type":"string","title":"Odoo Model","options":{"async":{"label":"Load Models","action":"listModels"}},"description":"Odoo model name (e.g., res.partner, sale.order)","propertyOrder":10},"domain":{"type":"string","title":"Domain Filter (Optional)","format":"textarea","description":"Odoo domain filter as JSON array, e.g. [[\"is_company\", \"=\", true]]","propertyOrder":30},"fields":{"enum":[],"type":"array","items":{"type":"string"},"title":"Fields to Extract","format":"select","options":{"tags":true,"async":{"label":"Load Fields","action":"listFields","watchFor":["model"]},"creatable":true},"description":"Select specific fields to extract, or leave empty to extract all available fields","uniqueItems":true,"propertyOrder":20},"page_size":{"type":"integer","title":"Page Size","default":1000,"maximum":10000,"minimum":100,"description":"Number of records to fetch per page","propertyOrder":50},"incremental":{"type":"boolean","title":"Incremental Loading","format":"checkbox","default":false,"description":"Extract only records created or modified since the last run (based on the write_date field). Models without a write_date field capture new records only.","propertyOrder":40}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["listDatabases","listFields","listModels","testConnection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-odoo","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-odoo","name":"developer-portal-v2/keboola.ex-odoo","tag":"0.1.8","options":{},"digest":"sha256:ef02913464fe14ed7bbaa472fbd2e3b63fa353432e2b66227dca331aa20c2d9e"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-odoo/32/1769174818092.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-odoo/64/1769174818092.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-odoo/128/1769174818092.png"}},{"id":"keboola.wr-odoo","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":115,"name":"Odoo","type":"writer","shortDescription":"Write data to Odoo ERP via XML-RPC or JSON-2 — create records in any model from a Keboola input table","longDescription":"# Odoo Writer\n\nWrite data from Keboola Storage into Odoo ERP via XML-RPC or JSON-2 API. Maps CSV columns directly to Odoo field names and creates records in any configured model.\n\n## Key Features\n\n### Dynamic UI Experience\n- **Test Connection** - Validate Odoo credentials before running\n- **Model Discovery** - Browse and select from 146+ Odoo models automatically\n- **Field Discovery** - Load field definitions to know the expected column names\n- **No Manual Mapping** - CSV columns map directly to Odoo field names\n\n### Flexible Data Writing\n- **Any Model** - Write to any Odoo model: contacts, products, orders, custom models\n- **Batch Processing** - Configurable batch size for efficient bulk creates\n- **Smart Defaults** - Empty CSV values are omitted, letting Odoo apply field defaults\n- **Protocol Choice** - Use XML-RPC (all versions) or JSON-2 (Odoo 19+)\n\n### Production-Ready\n- **Fail Fast** - Clear error reporting with batch number and record range on failure\n- **Modern Python 3.13** - Full type safety with modern type hints\n- **Quality Standards** - Ruff formatted, lint-free, proper error handling\n- **Well-Tested** - Verified against Odoo 19.0\n\n## Common Use Cases\n\n- **Import Contacts**: Create new partners in `res.partner` from a CRM export\n- **Sync Products**: Push product catalog changes to `product.product`\n- **Load Orders**: Create sales orders in `sale.order` from an external system\n- **Populate Custom Models**: Write records into any custom Odoo module\n- **Data Migration**: Bulk-create records during an Odoo migration project\n\n## How It Works\n\n1. **Connect**: Enter your Odoo URL, database, and credentials\n2. **Test**: Click \"Test Connection\" to validate access\n3. **Select Model**: Choose the target model from the dynamic dropdown\n4. **Check Fields**: Use \"List Fields\" to see available field names\n5. **Prepare Data**: Name your CSV columns to match Odoo field names\n6. **Write**: Run the component — records are created in Odoo immediately\n\n## Column Mapping\n\nCSV column names map directly to Odoo field names — no explicit mapping required:\n\n| CSV column | Odoo field |\n|------------|------------|\n| `name` | `name` |\n| `email` | `email` |\n| `phone` | `phone` |\n\nUse the **List Fields** sync action to discover the exact field names for your target model.\n\n## Technical Highlights\n\n- **Sync Actions**: Real-time model and field loading via Keboola sync actions\n- **Batch Creates**: Single `create()` API call per batch for efficiency\n- **ID Column Ignored**: Any `id` column in the CSV is silently skipped (Odoo assigns IDs)\n- **Type Safety**: Full Python 3.13 type hints throughout\n- **Error Handling**: Clear UserException messages for all failure scenarios\n\nPerfect for pushing data from your data warehouse or external systems into Odoo!","licenseUrl":"https://github.com/keboola/component-odoo/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-odoo/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-odoo","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":true,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","appInfo.beta","genericDockerUI-tableInput"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Odoo Writer Configuration","required":["odoo_url"],"properties":{"#api_key":{"type":"string","title":"API Key","format":"password","description":"Generate in user preferences","propertyOrder":40},"database":{"enum":[],"type":"string","title":"Database Name","options":{"async":{"label":"Load Databases","action":"listDatabases"},"creatable":true},"description":"Odoo database name","propertyOrder":20},"odoo_url":{"type":"string","title":"Odoo URL","description":"Your Odoo instance URL (e.g., https://mycompany.odoo.com or http://localhost:8069)","propertyOrder":10},"username":{"type":"string","title":"Username","options":{"dependencies":{"api_protocol":"xmlrpc"}},"description":"Required for XML-RPC","propertyOrder":30},"api_protocol":{"enum":["json2","xmlrpc"],"type":"string","title":"API Protocol","format":"radio","default":"xmlrpc","options":{"tooltip":"Select JSON-2 for Odoo 19+ (recommended). XML-RPC is deprecated in Odoo 19 and will be removed in Odoo 20, but works with all older versions.","enum_titles":["JSON-2","XML-RPC"]},"propertyOrder":25},"test_connection":{"type":"button","format":"test-connection","options":{"async":{"label":"Test Connection","action":"testConnection"}},"propertyOrder":50}}},"configurationRowSchema":{"type":"object","title":"Odoo Write Job","required":["model","input_table"],"properties":{"model":{"enum":[],"type":"string","title":"Odoo Model","options":{"async":{"label":"Load Models","action":"listModels"}},"description":"Odoo model name to write into (e.g., res.partner, sale.order)","propertyOrder":10},"_metadata_":{"type":"object","options":{"hidden":true},"properties":{"api_fields":{"type":"array"}},"propertyOrder":70},"batch_size":{"type":"integer","title":"Batch Size","default":100,"minimum":1,"description":"Number of records per create() API call","propertyOrder":30},"input_table":{"enum":[],"type":"string","title":"Input Table","options":{"async":{"label":"Load Tables","action":"listInputTables"}},"description":"Keboola input table to read records from","propertyOrder":20},"load_mapping":{"type":"button","title":"Load Field Mapping","format":"sync-action","options":{"async":{"cache":false,"label":"Load Field Mapping","action":"loadFieldMapping","autoload":["model","input_table"]}},"propertyOrder":50},"field_mapping":{"type":"array","items":{"type":"object","required":["source_column","destination_field"],"properties":{"source_column":{"type":"string","title":"Source Column","options":{"readOnly":true}},"destination_field":{"type":"string","title":"Destination Field","watch":{"api_fields":"_metadata_.api_fields"},"format":"select","options":{"tags":true},"enumSource":[{"title":"{{item.label}}","value":"{{item.field_name}}","source":"api_fields"}]}}},"title":"Field Mapping","format":"table","description":"Map input table columns to Odoo model fields. Use 'Load Field Mapping' to auto-populate.","propertyOrder":40},"continue_on_error":{"type":"boolean","title":"Continue on Error","format":"checkbox","default":false,"description":"If enabled, failed records are written to an output table instead of stopping the job","propertyOrder":60}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["listInputTables","loadFieldMapping"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.wr-odoo","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-odoo","name":"developer-portal-v2/keboola.wr-odoo","tag":"0.1.8","options":{},"digest":"sha256:538136fd89032b33c7568d740c96fe012f982e60775719d3730e254011ca0bb1"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-odoo/32/1772591368032.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-odoo/64/1772591368032.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-odoo/128/1772591368032.png"}},{"id":"kds-team.ex-okta","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":334,"name":"Okta","type":"extractor","shortDescription":"Extracts data from Okta.","longDescription":"This extractor Extracts data from Okta platform. Supported endpoints are:\n\n- users\n- user types\n- devices","licenseUrl":"https://bitbucket.org/kds_consulting_team/kds-team.ex-okta/src/master/LICENSE.md","documentationUrl":"https://bitbucket.org/kds_consulting_team/kds-team.ex-okta/src/master/README.md","sourceCodeUrl":"https://bitbucket.org/kds_consulting_team/kds-team.ex-okta","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Okta Extractor configuration","properties":{"credentials":{"type":"object","title":"Credentials","required":["org_url","#api_token"],"properties":{"org_url":{"type":"string","title":"Organization url","propertyOrder":11},"#api_token":{"type":"string","title":"API Token","format":"password","description":"API Key to Authenticate the connection with Octa.","propertyOrder":12}},"propertyOrder":10}}},"configurationRowSchema":{"type":"object","title":"Okta Extractor configuration","required":["endpoint"],"properties":{"search":{"type":"string","title":"Search","options":{"dependencies":{"endpoint":["users","devices"]}},"description":"Refer to <a href=https://developer.okta.com/docs/reference/api/users/#list-users-with-search>Okta Docs</a> for query syntax.","propertyOrder":20},"endpoint":{"enum":["users","user_types","devices"],"type":"string","title":"Endpoint","description":"Endpoint of Octa from which data will be fetched","propertyOrder":10},"destination":{"type":"object","title":"Destination","required":["output_table_name","load_type"],"properties":{"load_type":{"enum":["full_load","incremental_load"],"type":"string","title":"Load Type","format":"checkbox","default":"full_load","options":{"enum_titles":["Full Load","Incremental Load"]},"description":"If Full load is used, the destination table will be overwritten every run. If incremental load is used, data will be upserted into the destination table. Tables with a primary key will have rows updated, tables without a primary key will have rows appended.","propertyOrder":20},"output_table_name":{"type":"string","title":"Storage Table Name","description":"Name of the table stored in Storage. Defaults to Endpoint name if left empty.","propertyOrder":10}},"propertyOrder":400},"sync_options":{"type":"object","title":"Sync Options","properties":{"date_to":{"type":"string","title":"Date to","default":"now","options":{"dependencies":{"sync_mode":"incremental_sync"}},"description":"Date to which data is downloaded. Either date in YYYY-MM-DD format or dateparser string i.e. 5 days ago, 1 month ago, now, etc.","propertyOrder":30},"date_from":{"type":"string","title":"Date From","default":"last run","options":{"dependencies":{"sync_mode":"incremental_sync"}},"description":"Date from which data is downloaded. Either date in YYYY-MM-DD format or dateparser string i.e. 5 days ago, 1 month ago, yesterday, etc. You can also set this as last run, which will fetch data from the last run of the component.","propertyOrder":20},"sync_mode":{"enum":["full_sync","incremental_sync"],"type":"string","title":"Sync Mode","default":"full_sync","options":{"enum_titles":["Full Sync","Incremental Sync"]},"required":true,"description":"Full Sync downloads all data from the source every run, Incremental Sync downloads data updated since the last run time.","propertyOrder":10}},"propertyOrder":200}}},"createConfigurationRowSchema":null,"configurationDescription":"\n## Authorization configuration\n - Organization url (org_url) - [REQ] see Sample Configuration for example\n - API Token (#api_token) - [REQ] API Key to Authenticate the connection with Octa.\n\n\n## Okta Extractor configuration\n - Endpoint (endpoint) - [REQ] Endpoint of Octa from which data will be fetched\n - Search (search) - [OPT] Refer to <a href=https://developer.okta.com/docs/reference/api/users/#list-users-with-search>Okta Docs</a> for query syntax.\n - Sync Mode (sync_mode) - [OPT] Full Sync downloads all data from the source every run, Incremental Sync downloads data updated since the last run time.\n - Storage Table Name (output_table_name) - [REQ] Name of the table stored in Storage.\n - Load Type (load_type) - [REQ] If Full load is used, the destination table will be overwritten every run. If incremental load is used, data will be upserted into the destination table. Tables with a primary key will have rows updated, tables without a primary key will have rows appended.\n - Primary Keys (primary_keys) - [OPT] List of primary keys separated by commas e.g. id, other_id. If a primary key is set, updates can be done on the table by selecting incremental loads. The primary key can consist of multiple columns. The primary key of an existing table cannot be changed.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.ex-okta","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-okta","name":"developer-portal-v2/kds-team.ex-okta","tag":"0.0.17","options":{},"digest":"sha256:d2770573430d4295b492dd27fffac26fb73ad24698cc7f732847f090de4e1e84"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-okta/32/1678954187534.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-okta/64/1678954187534.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-okta/128/1678954187534.png"}},{"id":"keboola.ex-onedrive","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":72,"name":"OneDrive Excel Sheets","type":"extractor","shortDescription":"This component imports data from OneDrive/SharePoint Excel Sheets.","longDescription":"This component imports data from OneDrive Excel Sheets.\nSource is specified by sheet (worksheet) in XLSX file (workbook) which is stored on OneDrive account or connected SharePoint site.\n\nTo configure this writer, you need to \n\n- login to your OneDrive account using OAuth\n- configure source sheet\n","licenseUrl":"https://github.com/keboola/ex-onedrive/blob/master/LICENSE","documentationUrl":"https://help.keboola.com/components/extractors/storage/onedrive/","sourceCodeUrl":"https://github.com/keboola/ex-onedrive","requiredMemory":"1024m","processTimeout":null,"features":["has-sample-data"],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["File Storage"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-authorization"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"keboola.ex-onedrive — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"configurationRowSchema":{"type":"object","title":"keboola.ex-onedrive — Row Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"workbook":{"type":"object","properties":{"fileId":{"type":"string"},"driveId":{"type":"string"},"metadata":{"type":"object","properties":{"name":{"type":"string"}}}}},"worksheet":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"metadata":{"type":"object","properties":{"name":{"type":"string"}}}}}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["search","getWorksheets"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":72,"uri":"docker/keboola.ex-onedrive","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-onedrive","name":"developer-portal-v2/keboola.ex-onedrive","tag":"v1.5.0","options":{},"digest":"sha256:9fd110a4c468bdf0c94a40d4e073f368cdd588c5ae152b83036e5b3a9cc0164a"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-onedrive/32/1591274820362.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-onedrive/64/1591274820362.png","128":null}},{"id":"keboola.wr-onedrive","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":61,"name":"OneDrive Excel Sheets","type":"writer","shortDescription":"This component exports data to OneDrive/SharePoint Excel Sheets.","longDescription":"This component writes data to OneDrive Excel Sheets.\nTarget is specified by sheet (worksheet) in XLSX file (workbook) which is stored on OneDrive account or connected SharePoint site.\n\nTo configure this writer, you need to \n\n- login to your OneDrive account using OAuth\n- configure target sheet\n","licenseUrl":"https://github.com/keboola/wr-onedrive/blob/master/LICENSE","documentationUrl":"https://help.keboola.com/components/writers/storage/onedrive/","sourceCodeUrl":"https://github.com/keboola/wr-onedrive","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"out","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["File Storage"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput","genericDockerUI-authorization","genericDockerUI-rows"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"keboola.wr-onedrive — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"configurationRowSchema":{"type":"object","title":"keboola.wr-onedrive — Row Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"append":{"type":"boolean"},"workbook":{"type":"object","properties":{"fileId":{"type":"string"},"driveId":{"type":"string"},"metadata":{"type":"object","properties":{"name":{"type":"string"}}}}},"worksheet":{"type":"object","properties":{"id":{"type":"string"},"metadata":{"type":"object","properties":{"name":{"type":"string"}}}}}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["search","getWorksheets","createWorkbook","createWorksheet"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":61,"uri":"docker/keboola.wr-onedrive","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-onedrive","name":"developer-portal-v2/keboola.wr-onedrive","tag":"v1.6.5","options":{},"digest":"sha256:068353409879bf80f053bb3435d8e475cbbce8cae5b4ceb15d421ff22d997456"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-onedrive/32/1591274828518.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-onedrive/64/1591274828518.png","128":null}},{"id":"kds-team.ex-onedrive","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":663,"name":"OneDrive Files","type":"extractor","shortDescription":"Downloads files from Microsoft OneDrive and SharePoint.","longDescription":"This connector downloads files from [Microsoft OneDrive](https://www.microsoft.com/en-us/microsoft-365/onedrive/online-cloud-storage) and stores them in your project.\n\nThe Microsoft OneDrive cloud storage integrates the [Office365](https://www.office.com/) and [SharePoint](https://www.microsoft.com/en-us/microsoft-365/sharepoint/collaboration) sites. It also supports SharePoint's document libraries. This connector lets you access all your files in your personal or business account.\n\nWith the flexibility of file path masks, you can now download multiple files within a single configuration. Additionally, you can selectively download only the files that have been updated.","licenseUrl":"https://github.com/keboola/component-onedrive/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/component-onedrive/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/component-onedrive","requiredMemory":"512m","processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"medium","category":null,"categories":["File Storage"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-authorization"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Account configuration","properties":{"account":{"type":"object","title":"Account","properties":{"site_url":{"type":"string","title":"Site Url","options":{"dependencies":{"account_type":"sharepoint"}},"description":"Enter the URL of the SharePoint site you want to access. The site URL can be found in your browser's address bar when you visit the SharePoint site (e.g., https://your_domain.sharepoint.com/sites/your_site_name). Make sure to include the full URL, including the 'https://' prefix.","propertyOrder":3},"tenant_id":{"type":"string","title":"Tenant ID","options":{"dependencies":{"account_type":["onedrive_for_business","sharepoint"]}},"description":"You can find the Tenant ID in the <a href='https://portal.azure.com/#home'>Azure Portal</a>. After signing in, click on 'Azure Active Directory' in the left-hand menu. The Tenant ID can be found in the 'Tenant information' section on the 'Azure Active Directory' overview page.","propertyOrder":2},"account_type":{"enum":["private_onedrive","onedrive_for_business","sharepoint"],"type":"string","title":"Account Type","default":"work_school","options":{"enum_titles":["Private OneDrive","OneDrive for Business","SharePoint"]},"propertyOrder":1},"library_name":{"enum":[],"type":"string","items":{"enum":[],"type":"string"},"title":"Library Name (optional)","options":{"async":{"label":"List Libraries","action":"listLibraries"},"dependencies":{"account_type":"sharepoint"}},"description":"Name of the Document Library to download the data from.","propertyOrder":4}},"propertyOrder":1}}},"configurationRowSchema":{"type":"object","title":"Data source configuration","properties":{"settings":{"type":"object","title":"Settings","properties":{"file_path":{"type":"string","title":"File path","default":"*","description":"Source file path. You can use `*` as a wildcard.","propertyOrder":1},"new_files_only":{"type":"boolean","title":"New files only","format":"checkbox","default":false,"description":"Every job stores the timestamp of the last downloaded file, and a subsequent job can pick up from there.","propertyOrder":3},"include_subfolders":{"type":"boolean","title":"Include subfolders","format":"checkbox","default":true,"description":"When enabled (the default, and the long-standing behaviour), the file path is used as a starting folder and the filename is matched in every subfolder below it too. Because downloaded files are stored flat, same-named files in different subfolders overwrite each other. Uncheck this to match the filename only in the folder you specified. Note that paths with a wildcard before the filename (for example db_exports/2022_*/*.csv) can only work with subfolders included; the job fails with an explanatory error if you disable this option for such a path.","propertyOrder":2}},"propertyOrder":1},"destination":{"type":"object","title":"Destination","properties":{"permanent":{"type":"boolean","title":"Permanent files","format":"checkbox","default":false,"description":"If set to true, downloaded files will be stored in Keboola Storage permanently. Otherwise, they will be deleted after 14 days.","propertyOrder":2},"custom_tag":{"type":"string","title":"Custom tag (optional)","description":"Adds a custom tag to Keboola Storage for all downloaded files.","propertyOrder":1}},"propertyOrder":2}}},"createConfigurationRowSchema":null,"configurationDescription":"Configuration\n=============\n\n- **account_type**: Account Type - This field is only used in GUI to display relevant fields for different Account types.\n- **tenant_id**: Tenant ID is needed for OneDrive for Business and SharePoint. You can find the Tenant ID in the Azure Portal. After signing in, click on 'Azure Active Directory' in the left-hand menu. The Tenant ID can be found in the 'Tenant information' section on the 'Azure Active Directory' overview page.\n- **site_url**: Site URL is only needed for SharePoint. You can find the site name in the url address when you visit your SharePoint online.\n- **library_name**: Library name (optional) is used to select Document Library from which you want to download files from. If you do not wish to download files from Document Library, leave this field empty.\n- **file_path**: Path to file/s you want to download from selected service. Supports wildcards.\n     - Examples: \n       - \\*.csv - Downloads all available csv files.\n       - /reports/\\*.csv - Downloads all available csv files from reports folder and it's subfolders.\n       - db_exports/report_\\*.xlsx - Downloads all .xlsx files that are named like report_\\* (\\* is wildcard) from db_exports folder and it's subfolders. \n       - db_exports/2022_\\*/\\*.csv - Downloads all csv files from folders matching db_exports/2022_\\* (\\* is wildcard) \n- **new_files_only**: New Files Only (optional). If set to true, the component will use timestamp of the freshest file downloaded last run to download only newer files. LastModifiedAt value from GraphAPI is used.\n- **custom_tag**: Custom Tag (optional). Adds custom tag to Keboola Storage for all downloaded files. Only one custom tag is supported.\n- **permanent**: Permanent Files (optional). If set to true, downloaded files will be stored as permanent in Keboola storage. Otherwise, they will be deleted after 14 days.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["listLibraries"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.ex-onedrive","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-onedrive","name":"developer-portal-v2/kds-team.ex-onedrive","tag":"1.2.0","options":{},"digest":"sha256:7e9030e7222fc42cad07010ac46747c067fe3536857231d1596d2d34e023ce2e"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-onedrive/32/1705669226991.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-onedrive/64/1705669226991.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-onedrive/128/1705669226991.png"}},{"id":"blueskydigital.ex-ooyala","vendor":{"id":"blueskydigital","name":"Blue Sky Digital, LLC","address":"7585 E. Redfield Rd.\nSuite 209\nScottsdale AZ 85260\nUSA","email":"hello@bluesky.pro","type":"other"},"version":12,"name":"Ooyala Analytics","type":"extractor","shortDescription":"Retrieve personalised analytics data through deep insights that drive increased viewer engagement and revenue from video","longDescription":null,"licenseUrl":"https://github.com/blueskydigital/keboola-ex-ooyala/blob/master/LICENCE.md","documentationUrl":"https://github.com/blueskydigital/keboola-ex-ooyala/blob/master/README.md","sourceCodeUrl":null,"requiredMemory":"512m","processTimeout":3600,"features":["container-root-user"],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Analytics"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":1024,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":{},"configurationSchema":{},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/blueskydigital.ex-ooyala","repository":{"type":"dockerhub","uri":"blueskydigital/keboola-ex-ooyala","name":null,"tag":"latest","options":{},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/blueskydigital.ex-ooyala/32/1.png","64":"https://ui.keboola-assets.com/developer-portal/icons/blueskydigital.ex-ooyala/64/1.png","128":null}},{"id":"keboola.wr-openlineage","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":38,"name":"OpenLineage","type":"writer","shortDescription":"Writes jobs data to OpenLineage API","longDescription":"Imports lineage data taken from Keboola Connection jobs and imports them into an OpenLineage API e.g. Marquez.","licenseUrl":"https://github.com/keboola/wr-openlineage/blob/main/LICENSE","documentationUrl":"https://github.com/keboola/wr-openlineage/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/wr-openlineage","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe","container-root-user"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":true,"forwardTokenDetails":true,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","anyOf":[{"$ref":"#/definitions/configuration_basic","title":"No Authentication"},{"$ref":"#/definitions/configuration_ssh","title":"SSH Tunnel"}],"title":"Authentication","definitions":{"api_endpoint":{"type":"string","title":"Open Lineage API endpoint","minLength":1},"since_filter":{"type":"string","title":"Export jobs since","default":"7 days ago","minLength":1,"description":"Relative period in format: '5 hours ago', 'yesterday', '3 days ago', '4 months ago', '2 years ago', 'today'. All jobs from this point will be imported into your OpenLineage API."},"configuration_ssh":{"type":"object","required":["openlineage_api_url","created_time_from"],"properties":{"ssh":{"type":"object","title":"SSH Tunnel","required":["user","enabled","ssh_host","#key_private"],"properties":{"user":{"type":"string","title":"SSH user","minLength":1,"propertyOrder":600},"enabled":{"type":"boolean","title":"Enabled","format":"checkbox","default":true,"propertyOrder":400},"ssh_host":{"type":"string","title":"SSH host","minLength":1,"propertyOrder":500},"#key_private":{"type":"string","title":"SSH private key","format":"textarea","minLength":1,"propertyOrder":700}}},"created_time_from":{"$ref":"#/definitions/since_filter","propertyOrder":200},"openlineage_api_url":{"$ref":"#/definitions/api_endpoint","propertyOrder":100}},"additionalProperties":false},"configuration_basic":{"type":"object","required":["openlineage_api_url","created_time_from"],"properties":{"created_time_from":{"$ref":"#/definitions/since_filter","propertyOrder":200},"openlineage_api_url":{"$ref":"#/definitions/api_endpoint","propertyOrder":100}},"additionalProperties":false}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"**Authentication**\n- Select a *SSH tunnel* option if you want to connect through SSH tunnel. \n\n\n**Open Lineage API endpoint**\n- Endpoint of your Marquez instance.\n\n\n**Export jobs since**\n- Jobs younger than this date will be imported to your OpenLineage API server.\n","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":38,"uri":"docker/keboola.wr-openlineage","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-openlineage","name":"developer-portal-v2/keboola.wr-openlineage","tag":"2.0.1","options":{},"digest":"sha256:4925318c3a8f255103541ccad1b5f9ba2940f33613ce6b91e0771cd25e8a58c3"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-openlineage/32/1677849588965.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-openlineage/64/1677849588965.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-openlineage/128/1677849588965.png"}},{"id":"keboola.ex-db-oracle","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":180,"name":"Oracle","type":"extractor","shortDescription":"Extracts tables or query results from an Oracle database via host/port or TNS names.","longDescription":"This component imports data from selected tables or results from arbitrary SQL queries from the [Oracle](https://www.oracle.com/database/) database. It connects to the database, executes your queries, and stores the results in Keboola Connection Storage.\n\nTo configure this extractor, you need to\n\n- provide database credentials, and \n- have a connection to the database you want to read, preferably [secure](https://help.keboola.com/extractors/database/#connecting-to-database).\n\nIncremental load is optional.","licenseUrl":null,"documentationUrl":"https://help.keboola.com/extractors/database/sqldb/","sourceCodeUrl":"https://github.com/keboola/db-extractor-oracle","requiredMemory":"4096m","processTimeout":86400,"features":["container-root-user","has-simplified-ui"],"encryption":true,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":true,"forwardTokenDetails":true,"injectEnvironment":false,"complexity":"easy","category":null,"categories":["Database"],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{"connection.east-us-2.azure.keboola-testing.com":{"db":{"defaultRowPrefetch":"5000"},"checkUsername":{"enabled":true,"userAccountRegexp":"~^[a-z][a-z0-9]{2}[0-9]{5}$~i"}}},"testConfiguration":{},"configurationSchema":{"type":"object","$defs":{"credentials":{"type":"object","required":["user","#password"],"properties":{"ssh":{"type":"object","properties":{"keys":{"type":"object","properties":{"public":{"type":"string"},"#private":{"type":"string"}}},"user":{"type":["string","null"]},"enabled":{"type":"boolean"},"sshHost":{"type":["string","null"]},"sshPort":{"type":["string","integer","null"],"default":22},"localPort":{"type":["string","integer"]},"remoteHost":{"type":"string"},"remotePort":{"type":["string","integer"]}}},"host":{"type":"string"},"port":{"type":["string","integer"]},"user":{"type":"string"},"database":{"type":"string"},"tnsnames":{"type":"string"},"#password":{"type":"string"},"initQueries":{"type":"array","items":{"type":"string"}},"connectThrough":{"type":"boolean"}}}},"title":"keboola.ex-db-oracle — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","required":["db"],"properties":{"db":{"$ref":"#/$defs/credentials"}}},"configurationRowSchema":{"type":"object","title":"keboola.ex-db-oracle — Row Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"id":{"type":["string","integer"]},"name":{"type":"string"},"query":{"type":"string"},"table":{"oneOf":[{"type":"string"},{"type":"object","properties":{"schema":{"type":"string"},"tableName":{"type":"string"}}}]},"tables":{"type":"array","options":{"async":{"label":"Re-load tables","action":"getTables"}}},"columns":{"type":"array","items":{"type":"string"}},"enabled":{"type":"boolean"},"primaryKey":{"type":"array","items":{"type":"string"}},"incremental":{"type":"boolean"},"outputTable":{"type":"string"},"advancedMode":{"type":"boolean"},"incrementalFetchingLimit":{"type":"integer"},"incrementalFetchingColumn":{"type":"string"}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":{"processors":{"after":[{"definition":{"component":"keboola.processor-split-table"},"parameters":{"mode":"slices","numberOfSlices":60}}]}},"actions":["testConnection","getTables"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-db-oracle","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-db-oracle","name":"developer-portal-v2/keboola.ex-db-oracle","tag":"8.1.1","options":{},"digest":"sha256:5d1bc3620d61c103aa0942109bf124e442e90733fb036c44679f11610a64f76c"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-db-oracle/32/1591274842627.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-db-oracle/64/1591274842627.png","128":null}},{"id":"keboola.wr-db-oracle","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":61,"name":"Oracle","type":"writer","shortDescription":"Writes data to an Oracle database via host/port or TNS names.","longDescription":"This component exports tables from Keboola Connection Storage to an [Oracle](https://www.oracle.com/database/) database.\n\nTo configure this writer, you need to \n\n- provide database credentials, and\n- have a connection to the database you want to write to, preferably [secure](https://help.keboola.com/extractors/database/#connecting-to-database).\n\nThe writer supports incremental writing and incremental processing.","licenseUrl":null,"documentationUrl":"https://help.keboola.com/writers/database/oracle/","sourceCodeUrl":"https://github.com/keboola/db-writer-oracle","requiredMemory":"256m","processTimeout":86400,"features":["container-root-user","dev-branch-configuration-unsafe"],"encryption":true,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":true,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Database"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput","genericDockerUI-rows"],"imageParameters":{},"stackParameters":{},"testConfiguration":{},"configurationSchema":{"type":"object","$defs":{"credentials":{"type":"object","required":["user","#password"],"properties":{"ssh":{"type":"object","properties":{"keys":{"type":"object","properties":{"public":{"type":"string"},"#private":{"type":"string"}}},"user":{"type":["string","null"]},"enabled":{"type":"boolean"},"sshHost":{"type":["string","null"]},"sshPort":{"type":["string","integer","null"],"default":22},"localPort":{"type":["string","integer"]},"remoteHost":{"type":"string"},"remotePort":{"type":["string","integer"]}}},"host":{"type":"string"},"port":{"type":["string","integer"],"default":1521},"user":{"type":"string"},"driver":{"type":"string"},"schema":{"type":"string"},"database":{"type":"string"},"tnsnames":{"type":"string"},"#password":{"type":"string"}}}},"title":"keboola.wr-db-oracle — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","required":["db"],"properties":{"db":{"$ref":"#/$defs/credentials"}}},"configurationRowSchema":{"type":"object","title":"keboola.wr-db-oracle — Row Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"items":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"size":{"type":["string","integer","null"]},"type":{"type":"string"},"dbName":{"type":"string"},"default":{"type":["string","null"]},"nullable":{"type":"boolean"}}}},"dbName":{"type":"string"},"tables":{"type":"array","options":{"async":{"label":"Re-load tables","action":"getTables"}}},"tableId":{"type":"string"},"bulkSize":{"type":"integer"},"primaryKey":{"type":"array","items":{"type":"string"}},"incremental":{"type":"boolean"}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":["testConnection","getTablesInfo"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.wr-db-oracle","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-db-oracle","name":"developer-portal-v2/keboola.wr-db-oracle","tag":"3.9.0","options":{},"digest":"sha256:8a40e9e8edd0d951819e9751b13075cfdc174e33d14257f57f2cfbed6723a8b7"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-db-oracle/32/1591274855702.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-db-oracle/64/1591274855702.png","128":null}},{"id":"keboola.ex-oracle-ebs","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":177,"name":"Oracle E-Business Suite","type":"extractor","shortDescription":"Extract data from Oracle E-Business Suite via direct database connection.","longDescription":"Oracle E-Business Suite (EBS) extractor connects directly to the Oracle database underlying your EBS instance and extracts data from standard EBS tables.\n\n**Two extraction modes:**\n\n- **Preset mode** — select an EBS module (AP, AR, GL, PO, INV, HR, OM, TCA) and entity from a dropdown. The component generates optimized SQL with proper JOINs (e.g., AP Invoices joined with Supplier names).\n- **Custom SQL mode** — write any SELECT query against the EBS database for full flexibility.\n\n**Features:**\n\n- Incremental loading via `LAST_UPDATE_DATE` columns\n- Multi-org filtering via Operating Unit (org_id) picker\n- GL Ledger picker for General Ledger queries\n- 18 pre-built entity queries across 8 EBS modules\n- Uses `oracledb` thin driver — no Oracle client installation required\n\n**Supported modules:** Accounts Payable, Accounts Receivable, General Ledger, Purchasing, Inventory, Human Resources, Order Management, Trading Community Architecture (Customers).","licenseUrl":"https://github.com/keboola/component-ex-oracle-ebs/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-ex-oracle-ebs/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-ex-oracle-ebs","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"medium","category":null,"categories":["ERP"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Oracle EBS Extractor — Connection Settings","properties":{"connection":{"type":"object","title":"Connection Settings","format":"grid-strict","required":["db_host","db_service_name","db_user","#db_password"],"properties":{"db_host":{"type":"string","title":"Database Host","options":{"grid_columns":8},"description":"Hostname or IP address of the Oracle database server","propertyOrder":1},"db_port":{"type":"integer","title":"Port","default":1521,"options":{"grid_columns":2},"propertyOrder":2},"db_user":{"type":"string","title":"Username","options":{"grid_columns":6},"propertyOrder":5},"#db_password":{"type":"string","title":"Password","format":"password","options":{"grid_columns":6},"propertyOrder":6},"db_service_name":{"type":"string","title":"Service Name","options":{"grid_columns":12},"description":"Oracle service name (e.g. ebs_EBSDB)","propertyOrder":4},"test_connection":{"type":"button","format":"test-connection","options":{"grid_columns":2},"propertyOrder":3}},"propertyOrder":1},"ssh_options":{"type":"object","title":"SSH Tunnel","format":"ssh-editor","propertyOrder":2}}},"configurationRowSchema":{"type":"object","title":"Extraction Row","required":["source","destination"],"properties":{"source":{"type":"object","title":"Source","format":"collapse","properties":{"entity":{"enum":[],"type":"string","title":"Entity","format":"select","options":{"async":{"label":"Load Entities","action":"listEntities"},"dependencies":{"source.extraction_mode":"Preset"}},"propertyOrder":3},"module":{"enum":["ap","ar","gl","po","inv","hr","om","tca"],"type":"string","title":"EBS Module","options":{"enum_titles":["Accounts Payable (AP)","Accounts Receivable (AR)","General Ledger (GL)","Purchasing (PO)","Inventory (INV)","Human Resources (HR)","Order Management (OM)","Trading Community (TCA)"],"dependencies":{"source.extraction_mode":"Preset"}},"propertyOrder":2},"org_id":{"enum":[],"type":"string","title":"Operating Unit (Org ID)","format":"select","options":{"async":{"label":"Load Operating Units","action":"listOperatingUnits"},"dependencies":{"source.extraction_mode":"Preset"}},"propertyOrder":4},"ledger_id":{"enum":[],"type":"string","title":"Ledger","format":"select","options":{"async":{"label":"Load Ledgers","action":"listLedgers"},"dependencies":{"source.module":"gl","source.extraction_mode":"Preset"}},"propertyOrder":5},"custom_query":{"type":"string","title":"Custom SQL Query","format":"textarea","options":{"dependencies":{"source.extraction_mode":"Custom"}},"description":"Write a SQL SELECT query. Use apps. schema prefix for EBS tables.","propertyOrder":6},"extraction_mode":{"enum":["Preset","Custom"],"type":"string","title":"Extraction Mode","default":"Preset","propertyOrder":1}},"propertyOrder":1},"destination":{"type":"object","title":"Destination","format":"collapse","required":["output_table"],"properties":{"incremental":{"type":"boolean","title":"Incremental Loading","default":false,"description":"When enabled, only rows updated since the last run are extracted (uses LAST_UPDATE_DATE).","propertyOrder":2},"primary_key":{"type":"array","items":{"enum":[],"type":"string"},"title":"Primary Key Columns","format":"select","options":{"tags":true},"description":"Leave empty to use the preset default.","uniqueItems":true,"propertyOrder":3},"output_table":{"type":"string","title":"Output Table Name","propertyOrder":1}},"propertyOrder":2}}},"createConfigurationRowSchema":null,"configurationDescription":"Configure the Oracle database connection (host, port, service name, credentials), then add extraction rows. Each row extracts one table or query result into Keboola Storage. Use preset mode for guided EBS module extraction, or custom mode for any SQL query.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["listEntities","listLedgers","listOperatingUnits","listTables","testConnection","validateQuery"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":177,"uri":"docker/keboola.ex-oracle-ebs","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-oracle-ebs","name":"developer-portal-v2/keboola.ex-oracle-ebs","tag":"0.1.0","options":{},"digest":"sha256:6aa1cb5c04bd1085bd037780de5fdd21587d34f314fe29915d88f199b49b3fee"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-oracle-ebs/32/1776759912945.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-oracle-ebs/64/1776759912945.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-oracle-ebs/128/1776759912945.png"}},{"id":"keboola.wr-oracle-ebs","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":256,"name":"Oracle E-Business Suite","type":"writer","shortDescription":"Write data to Oracle E-Business Suite via direct database connection and ISG REST API.","longDescription":"Oracle E-Business Suite (EBS) writer loads data from Keboola Storage into your EBS instance using the two standard EBS integration patterns: interface tables + concurrent programs, and ISG REST APIs.\n\n**Two write paths:**\n\n- **Interface tables (JDBC)** — bulk writes for transactional data. The component inserts rows into the `*_INTERFACE` staging tables, submits the corresponding EBS concurrent program via `FND_REQUEST.SUBMIT_REQUEST`, and polls for completion. Supported: AP Invoices / Invoice Lines, PO Headers / Lines, INV Transactions, OM Order Headers / Lines, GL Journal Interface.\n- **ISG REST API** — synchronous per-row writes for master-data entities. Supported: TCA Create Organization / Create Person / Create Customer Account, AR Create Invoice.\n\n**Features:**\n\n- Preset mode: guided UI with dropdowns for module, target entity, operating unit, and ledger. Required and optional columns are pre-declared per preset.\n- Custom mode: write into any Oracle table for full flexibility.\n- Write operations: `INSERT` and `UPSERT` (Oracle `MERGE` by primary key).\n- Column mapping: rename input CSV columns to Oracle target columns.\n- Automatic enrichment: default values, multi-org `ORG_ID` injection, GL `LEDGER_ID` injection, sequence-generated primary keys (e.g. `APPS.AP_INVOICES_INTERFACE_S.NEXTVAL`).\n- Batched writes with configurable batch size.\n- Sync actions: test connection, list operating units, list ledgers, list modules, list target entities, list target columns.\n\n**Oracle Instant Client bundled in-image** — the component ships with Oracle Instant Client Basic Light under the Oracle Free Use Terms and Conditions license. No Oracle client installation is required on customer infrastructure, and the component works out of the box against EBS installs that use the legacy 10G password verifier or `SEC_CASE_SENSITIVE_LOGON=FALSE` — scenarios where the pure-Python thin driver cannot authenticate.\n\n**Supported modules:** Accounts Payable (AP), Accounts Receivable (AR), General Ledger (GL), Purchasing (PO), Inventory (INV), Order Management (OM), Trading Community Architecture (TCA).","licenseUrl":"https://github.com/keboola/component-wr-oracle-ebs/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-wr-oracle-ebs/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-wr-oracle-ebs","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":true,"forwardTokenDetails":true,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-oneTableInput","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Oracle EBS Writer — Connection Settings","properties":{"connection":{"type":"object","title":"Database Connection","format":"grid-strict","required":["db_host","db_service_name","db_user","#db_password"],"properties":{"db_host":{"type":"string","title":"Database Host","options":{"grid_columns":8},"description":"Hostname or IP address of the Oracle database server","propertyOrder":1},"db_port":{"type":"integer","title":"Port","default":1521,"options":{"grid_columns":2},"propertyOrder":2},"db_user":{"type":"string","title":"DB Username","options":{"grid_columns":6},"description":"Database user with write access to EBS interface tables","propertyOrder":5},"#db_password":{"type":"string","title":"DB Password","format":"password","options":{"grid_columns":6},"propertyOrder":6},"db_service_name":{"type":"string","title":"Service Name","options":{"grid_columns":12},"description":"Oracle service name (e.g. ebs_EBSDB)","propertyOrder":4},"test_connection":{"type":"button","format":"test-connection","options":{"grid_columns":2},"propertyOrder":3}},"propertyOrder":1},"ssh_options":{"type":"object","title":"SSH Tunnel","format":"ssh-editor","propertyOrder":5},"apps_connection":{"type":"object","title":"APPS-Equivalent User (for Concurrent Programs)","format":"grid-strict","properties":{"apps_user":{"type":"string","title":"APPS Username","options":{"dependencies":{"apps_connection.enable_apps_user":true},"grid_columns":6},"description":"Database user with APPS-equivalent grants (typically APPS). Used only to submit concurrent programs.","propertyOrder":2},"#apps_password":{"type":"string","title":"APPS Password","format":"password","options":{"dependencies":{"apps_connection.enable_apps_user":true},"grid_columns":6},"propertyOrder":3},"enable_apps_user":{"type":"boolean","title":"Use Dedicated APPS-Equivalent User for Concurrent Programs","format":"checkbox","default":false,"options":{"grid_columns":12},"description":"Required if 'DB Username' is not APPS and lacks the grants from Oracle Support Note 822225.1. The component opens a separate connection with these credentials only when submitting concurrent programs (FND_GLOBAL.APPS_INITIALIZE + FND_REQUEST.SUBMIT_REQUEST). Bulk INSERTs always run as the regular DB user.","propertyOrder":1},"test_apps_connection":{"type":"button","title":"Test APPS Connection","format":"sync-action","options":{"async":{"label":"Test APPS Connection","action":"testAppsConnection"},"dependencies":{"apps_connection.enable_apps_user":true},"grid_columns":12},"propertyOrder":4}},"propertyOrder":3},"rest_connection":{"type":"object","title":"REST Connection","format":"grid-strict","properties":{"rest_url":{"type":"string","title":"EBS REST API URL","options":{"dependencies":{"rest_connection.enable_rest":true},"grid_columns":6},"description":"ISG REST API base URL (e.g. http://host:8000/webservices/rest). Required for TCA and AR writes.","propertyOrder":2},"rest_user":{"type":"string","title":"REST API Username","options":{"dependencies":{"rest_connection.enable_rest":true},"grid_columns":6},"description":"EBS REST API user (typically SYSADMIN)","propertyOrder":3},"enable_rest":{"type":"boolean","title":"Enable REST API","format":"checkbox","default":false,"options":{"grid_columns":12},"description":"Required only for TCA party and AR invoice writes. Interface-table writes (AP, PO, GL, INV, OM) work without it.","propertyOrder":1},"#rest_password":{"type":"string","title":"REST API Password","format":"password","options":{"dependencies":{"rest_connection.enable_rest":true},"grid_columns":6},"propertyOrder":4},"default_org_id":{"type":"integer","title":"Org ID","default":204,"options":{"dependencies":{"rest_connection.enable_rest":true},"grid_columns":6},"description":"Operating unit ID for REST API calls (e.g. 204 = Vision Operations)","propertyOrder":5},"test_rest_connection":{"type":"button","title":"Test REST Connection","format":"sync-action","options":{"async":{"label":"Test REST Connection","action":"testRestConnection"},"dependencies":{"rest_connection.enable_rest":true},"grid_columns":12},"propertyOrder":6}},"propertyOrder":2}}},"configurationRowSchema":{"type":"object","title":"Write Row","required":["destination"],"properties":{"_metadata_":{"type":"object","options":{"hidden":true},"properties":{"target_columns":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"string"}}}}}},"destination":{"type":"object","title":"Destination","format":"collapse","properties":{"entity":{"enum":[],"type":"string","title":"Target Entity (Interface Table)","format":"select","options":{"async":{"label":"Load Entities","action":"listEntities","creatable":true},"dependencies":{"destination.write_mode":"preset"}},"propertyOrder":3},"module":{"enum":["ap","ar","gl","po","inv","tca"],"type":"string","title":"EBS Module","default":"ap","options":{"enum_titles":["Accounts Payable (AP)","Accounts Receivable (AR)","General Ledger (GL)","Purchasing (PO)","Inventory (INV)","Trading Community (TCA)"],"dependencies":{"destination.write_mode":"preset"}},"propertyOrder":2},"org_id":{"enum":[],"type":"integer","title":"Operating Unit (Org ID)","format":"select","options":{"async":{"label":"Load Operating Units","action":"listOperatingUnits","creatable":true},"dependencies":{"destination.write_mode":"preset"}},"propertyOrder":4},"ledger_id":{"enum":[],"type":"string","title":"Ledger","format":"select","options":{"async":{"label":"Load Ledgers","action":"listLedgers","creatable":true},"dependencies":{"destination.module":"gl","destination.write_mode":"preset"}},"propertyOrder":5},"batch_size":{"type":"integer","title":"Batch Size","default":1000,"description":"Number of rows per INSERT/MERGE batch (default 1000).","propertyOrder":11},"write_mode":{"enum":["preset","custom"],"type":"string","title":"Write Mode","default":"preset","propertyOrder":1},"primary_key":{"type":"array","items":{"enum":[],"type":"string"},"title":"Primary Key Columns","format":"select","options":{"tags":true,"async":{"label":"Load Target Columns","action":"listTargetColumns"},"dependencies":{"destination.write_operation":"upsert"}},"description":"Required for upsert. Used to match existing rows in the target table.","uniqueItems":true,"propertyOrder":8},"poll_timeout":{"type":"integer","title":"Poll Timeout (seconds)","default":600,"options":{"dependencies":{"destination.write_mode":"preset","destination.submit_program":true}},"description":"Max seconds to wait for the concurrent program to finish before giving up.","propertyOrder":15},"target_table":{"type":"string","title":"Target Table","options":{"dependencies":{"destination.write_mode":"custom"}},"description":"Full Oracle table name (e.g. APPS.MY_CUSTOM_TABLE)","propertyOrder":6},"poll_interval":{"type":"integer","title":"Poll Interval (seconds)","default":10,"options":{"dependencies":{"destination.write_mode":"preset","destination.submit_program":true}},"description":"How often to check the concurrent program status while waiting.","propertyOrder":14},"column_mapping":{"type":"array","items":{"type":"object","required":["source","destination"],"properties":{"source":{"type":"string","title":"Source Column","options":{"readOnly":true}},"destination":{"enum":[],"type":"string","title":"Target Column","watch":{"target_columns":"_metadata_.target_columns"},"format":"select","options":{"tags":true},"enumSource":[{"title":"{{item.label}}","value":"{{item.value}}","source":"target_columns"}]}}},"title":"Column Mapping","format":"table","description":"Maps input CSV columns (left) to target Oracle EBS columns (right). Only mapped rows with a non-empty target are written; unmapped or blank-target rows are dropped. Click 'Load Mapping' above to pre-populate from the input table.","uniqueItems":true,"propertyOrder":9},"reload_columns":{"type":"button","title":"Load Mapping","format":"sync-action","options":{"async":{"label":"Load Mapping","action":"reloadColumns"}},"description":"Populate the column mapping with one row per input table column. Each row's target column is fuzzy-matched against the canonical EBS columns of the selected entity (preset) or table (custom). Existing per-source destinations are preserved.","propertyOrder":10},"submit_program":{"type":"boolean","title":"Submit Concurrent Program","format":"checkbox","default":true,"options":{"dependencies":{"destination.write_mode":"preset"}},"description":"After loading rows into the staging interface table, trigger the EBS concurrent program (e.g. Payables Open Interface Import) that imports them into the live tables. Only applies to interface-based presets.","propertyOrder":12},"write_operation":{"enum":["insert","upsert"],"type":"string","title":"Write Operation","default":"insert","description":"INSERT adds all rows. UPSERT updates existing rows by primary key and inserts new ones.","propertyOrder":7},"wait_for_completion":{"type":"boolean","title":"Wait for Completion","format":"checkbox","default":true,"options":{"dependencies":{"destination.write_mode":"preset","destination.submit_program":true}},"description":"Block until the submitted concurrent program finishes. If disabled, the component returns immediately after submission.","propertyOrder":13}},"propertyOrder":1}}},"createConfigurationRowSchema":null,"configurationDescription":"Configuration description.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["listEntities","listLedgers","listModules","listOperatingUnits","listTargetColumns","reloadColumns","testAppsConnection","testConnection","testRestConnection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":256,"uri":"docker/keboola.wr-oracle-ebs","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-oracle-ebs","name":"developer-portal-v2/keboola.wr-oracle-ebs","tag":"0.1.0","options":{},"digest":"sha256:ce9c128beb29895f65973c171da52fb2655a26473f0dde2351268b1854340889"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-oracle-ebs/32/1776953247922.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-oracle-ebs/64/1776953247922.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-oracle-ebs/128/1776953247922.png"}},{"id":"keboola.ex-oracle-hyperion","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":93,"name":"Oracle Hyperion","type":"extractor","shortDescription":"Extracts data from Oracle Hyperion EPM — Essbase 21C OLAP cubes and Hyperion Planning via REST API.","longDescription":"# Oracle Hyperion EPM Extractor\n\nExtracts data from Oracle Hyperion Enterprise Performance Management (EPM) into Keboola Storage.\n\n## Supported Modules\n\n### Essbase 21C (Primary)\n- Executes MDX queries against Essbase OLAP cubes via the Essbase 21C REST API (port 9010, Basic Auth)\n- Supports any application/database/cube combination\n- Returns flat tabular output from MDX grid results\n\n### Hyperion Planning\n- Exports data slices from Planning applications via the Planning REST API (port 9000)\n- Authenticates using CSS SSO token flow\n\n## Prerequisites\n\n- Oracle Hyperion EPM server with Essbase 21C deployed (on-premise or cloud VM)\n- Network access from Keboola to the Essbase REST API port (default 9010) and/or Planning port (9000)\n- Valid Shared Services (CSS) credentials\n\n## Configuration\n\nAuthentication is configured at the component level (shared across all rows). Each configuration row defines one extraction — module type, application, query, and output table name.","licenseUrl":"https://github.com/keboola/component-ex-oracle-hyperion/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-ex-oracle-hyperion/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-ex-oracle-hyperion/tree/main","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"medium","category":null,"categories":["ERP"],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Oracle Hyperion EPM — Connection Settings","properties":{"connection":{"type":"object","title":"Connection Settings","format":"grid-strict","required":["hyperion_url","username","#password"],"properties":{"use_ssl":{"type":"boolean","title":"Use SSL (HTTPS)","default":true,"options":{"grid_columns":6},"description":"Connect to the Essbase REST API over HTTPS. Disable for plain HTTP servers.","propertyOrder":7},"username":{"type":"string","title":"Username","options":{"grid_columns":6},"description":"Shared Services (CSS) username","propertyOrder":2},"#password":{"type":"string","title":"Password","format":"password","options":{"grid_columns":6},"propertyOrder":3},"ssl_verify":{"type":"boolean","title":"Verify SSL Certificate","default":true,"options":{"grid_columns":6},"description":"Verify the server's SSL certificate. Disable only for self-signed certificates.","propertyOrder":8},"essbase_host":{"type":"string","title":"Essbase Host","options":{"grid_columns":6},"description":"Essbase server hostname or IP. Defaults to the host from Hyperion Server URL if left empty.","propertyOrder":4},"essbase_port":{"type":"integer","title":"Essbase REST API Port","default":9010,"options":{"grid_columns":3},"description":"Port for Essbase 21C REST API (default: 9010)","propertyOrder":5},"hyperion_url":{"type":"string","title":"Hyperion Server URL","options":{"grid_columns":12},"description":"Base URL of the Hyperion EPM server including port (e.g. http://hyperiondev:9000)","propertyOrder":1},"test_connection":{"type":"button","format":"test-connection","options":{"grid_columns":3},"propertyOrder":6}},"propertyOrder":1}}},"configurationRowSchema":{"type":"object","title":"Extraction Row","required":["source","destination"],"properties":{"source":{"type":"object","title":"Source","format":"collapse","required":["module","application"],"properties":{"module":{"enum":["essbase","planning"],"type":"string","title":"Module","default":"essbase","description":"Hyperion module to extract from","propertyOrder":1},"database":{"enum":[],"type":"string","title":"Database / Cube","format":"select","options":{"tags":true,"async":{"label":"Load Databases","action":"listDatabases"},"dependencies":{"source.module":"essbase"}},"description":"Essbase database (cube) name. Required for Essbase module.","propertyOrder":3},"mdx_query":{"type":"string","title":"MDX Query","format":"textarea","options":{"dependencies":{"source.module":"essbase","source.query_mode":"custom"}},"description":"MDX SELECT statement for data extraction. Use {{since}} and {{until}} placeholders to insert the resolved start/end dates from the Incremental Loading settings below (e.g. WHERE [Time].CurrentMember IS [Time].[{{since}}]).","propertyOrder":5},"plan_type":{"type":"string","title":"Plan Type","options":{"dependencies":{"source.module":"planning"}},"description":"Plan type name for data export. Required for Planning module.","propertyOrder":6},"query_mode":{"enum":["custom","builder"],"type":"string","title":"Query Mode","default":"custom","options":{"dependencies":{"source.module":"essbase"}},"description":"Custom: write MDX manually. Builder: select dimensions and members visually — the component generates the MDX query automatically.","propertyOrder":4},"application":{"enum":[],"type":"string","title":"Application","format":"select","options":{"tags":true,"async":{"label":"Load Applications","action":"listApplications","autoload":true}},"description":"Essbase application name or Planning application name","propertyOrder":2},"column_members":{"type":"array","items":{"enum":[],"type":"string"},"title":"Column Members","format":"select","options":{"tags":true,"async":{"label":"Load Members","action":"loadFields"},"dependencies":{"source.module":"essbase","source.query_mode":"builder"}},"description":"Specific members from the Column Dimension to include on the COLUMNS axis. Leave empty to use all members (.Members).","uniqueItems":true,"propertyOrder":8},"row_dimensions":{"type":"array","items":{"enum":[],"type":"string"},"title":"Row Dimensions","format":"select","options":{"tags":true,"async":{"label":"Load Dimensions","action":"loadTables"},"dependencies":{"source.module":"essbase","source.query_mode":"builder"}},"description":"Essbase dimensions to place on the ROWS axis. Multiple selections are combined with CrossJoin. Order matters.","uniqueItems":true,"propertyOrder":9},"column_dimension":{"enum":[],"type":"string","title":"Column Dimension","format":"select","options":{"tags":true,"async":{"label":"Load Dimensions","action":"loadTables"},"dependencies":{"source.module":"essbase","source.query_mode":"builder"}},"description":"The Essbase dimension whose members will appear as columns in the generated MDX query.","propertyOrder":7}},"propertyOrder":1},"destination":{"type":"object","title":"Destination","format":"collapse","required":["output_table"],"properties":{"since":{"type":"string","title":"Since (Start Date)","options":{"dependencies":{"source.module":"essbase"}},"description":"Start of the extraction window. Accepts relative values (e.g. 'yesterday', '3 days ago', 'last month') or absolute dates (YYYY-MM-DD). Use {{since}} in your MDX query to insert this value. When Incremental Loading is enabled and this field is empty, the end date of the previous run is used automatically.","propertyOrder":3},"until":{"type":"string","title":"Until (End Date)","options":{"dependencies":{"source.module":"essbase"}},"description":"End of the extraction window. Accepts relative values (e.g. 'today', 'yesterday') or absolute dates (YYYY-MM-DD). Use {{until}} in your MDX query. Leave empty to use the current timestamp.","propertyOrder":4},"incremental":{"type":"boolean","title":"Incremental Loading","default":false,"options":{"dependencies":{"source.module":"essbase"}},"description":"When enabled, the component saves the end date of each run and uses it as the start date of the next run. Use {{since}} and {{until}} in your MDX query to inject the resolved dates.","propertyOrder":2},"output_table":{"type":"string","title":"Output Table Name","description":"Name of the output table in Keboola Storage (without .csv extension)","propertyOrder":1}},"propertyOrder":2}}},"createConfigurationRowSchema":null,"configurationDescription":"Configuration description.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["listApplications","listDatabases","loadFields","loadTables","testConnection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":93,"uri":"docker/keboola.ex-oracle-hyperion","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-oracle-hyperion","name":"developer-portal-v2/keboola.ex-oracle-hyperion","tag":"0.1.1","options":{},"digest":"sha256:a14267482a3a72f1198975f8ab5fb3474319b0385e5c72f25f8ba1c619210737"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-oracle-hyperion/32/1774280177340.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-oracle-hyperion/64/1774280177340.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-oracle-hyperion/128/1774280177340.png"}},{"id":"keboola.wr-oracle-hyperion","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":232,"name":"Oracle Hyperion","type":"writer","shortDescription":"Writes data from Keboola Storage into Oracle Hyperion EPM — Essbase 21C OLAP cubes via REST API.","longDescription":"# Oracle Hyperion EPM Writer\n\nWrites data from Keboola Storage into Oracle Hyperion Enterprise Performance Management (EPM).\n\n## Supported Modules\n\n### Essbase 21C\n- Imports CSV table data into Essbase OLAP cubes via the Essbase 21C REST API (port 9010, Basic Auth)\n- CSV column headers must match Hyperion dimension names in the cube outline\n- Supports any application/database combination\n\n### Hyperion Planning\n- Imports data into Planning applications via the Planning REST API (port 9000)\n- Authenticates using the CSS SSO token flow\n\n## Prerequisites\n\n- Oracle Hyperion EPM server with Essbase 21C deployed (on-premise or cloud VM)\n- Network access from Keboola to the Essbase REST API port (default 9010) and/or Planning port (9000)\n- Valid Shared Services (CSS) credentials\n\n## Configuration\n\nConnection settings are configured at the component level (shared across all rows). Each configuration row defines one write operation — module type, application, target cube or plan type, and the input table name from Keboola Storage.\n\n## Column Mapping\n\nCSV column headers are sent directly as Hyperion dimension names in the import payload. Ensure the column names in your input table exactly match the dimension names in the Hyperion outline.","licenseUrl":"https://github.com/keboola/component-wr-oracle-hyperion/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-wr-oracle-hyperion/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-wr-oracle-hyperion","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":true,"forwardTokenDetails":true,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-simpleTableInput","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Oracle Hyperion EPM — Connection Settings","required":["connection"],"properties":{"connection":{"type":"object","title":"Connection Settings","format":"grid-strict","required":["essbase_host","username","#password"],"properties":{"use_ssl":{"type":"boolean","title":"Use SSL (HTTPS)","default":true,"options":{"grid_columns":6},"description":"Connect to the Essbase REST API over HTTPS. Disable for plain HTTP servers.","propertyOrder":7},"username":{"type":"string","title":"Username","options":{"grid_columns":6},"description":"Shared Services (CSS) username","propertyOrder":2},"#password":{"type":"string","title":"Password","format":"password","options":{"grid_columns":6},"propertyOrder":3},"ssl_verify":{"type":"boolean","title":"Verify SSL Certificate","default":true,"options":{"dependencies":{"use_ssl":true},"grid_columns":6},"description":"Verify the server's SSL certificate. Disable only for self-signed certificates.","propertyOrder":8},"essbase_host":{"type":"string","title":"Essbase Host","options":{"grid_columns":6},"description":"Essbase server hostname or IP address.","propertyOrder":4},"essbase_port":{"type":"integer","title":"Essbase REST API Port","default":9010,"options":{"grid_columns":3},"description":"Port for Essbase 21C REST API (default: 9010)","propertyOrder":5},"test_connection":{"type":"button","title":"Test Connection","format":"test-connection","options":{"async":{"label":"Test Connection","action":"testConnection"},"grid_columns":3},"propertyOrder":6}},"propertyOrder":1}}},"configurationRowSchema":{"type":"object","title":"Write Configuration","properties":{"source":{"type":"object","title":"Source","format":"collapse","properties":{"batch_size":{"type":"integer","title":"Batch Size","default":1000,"minimum":1,"description":"Number of rows to send per API call.","propertyOrder":3},"column_mapping":{"type":"array","items":{"type":"object","title":"Column","required":["source","destination"],"properties":{"source":{"type":"string","title":"Source Column","options":{"readOnly":true},"propertyOrder":1},"destination":{"type":"string","title":"Essbase Member / Dimension Name","watch":{"members":"_metadata_.essbase_members"},"format":"select","options":{"tags":true},"enumSource":[{"title":"{{item.label}}","value":"{{item.value}}","source":"members"}],"propertyOrder":2}}},"title":"Column Mapping","format":"table","default":[],"description":"Maps input table columns to Essbase member/dimension names. Only mapped columns are written. Leave empty to pass all columns through unchanged.","propertyOrder":1},"context_members":{"type":"array","items":{"type":"object","title":"Context Member","required":["dimension","member"],"properties":{"member":{"type":"string","title":"Member Value","options":{"grid_columns":6},"propertyOrder":2},"dimension":{"type":"string","title":"Dimension","options":{"grid_columns":6},"propertyOrder":1}}},"title":"Context Members","format":"table","default":[],"description":"Essbase dimensions not covered by your input table columns. Click 'Load Dimensions' to auto-populate from the cube, then enter the fixed member value for each dimension (e.g. 'East' for Market, 'Actual' for Scenario).","propertyOrder":2}},"propertyOrder":2},"_metadata_":{"type":"object","options":{"hidden":true},"properties":{"table":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"columns":{"type":"array"},"primaryKey":{"type":"array"}}},"essbase_members":{"type":"array"}}},"destination":{"type":"object","title":"Destination","format":"collapse","properties":{"database":{"enum":[],"type":"string","title":"Database / Cube","format":"select","options":{"async":{"label":"Load Databases","action":"listDatabases"}},"required":true,"description":"Essbase database (cube) name","propertyOrder":2},"application":{"enum":[],"type":"string","title":"Application","format":"select","options":{"async":{"label":"Load Applications","action":"listApplications","autoload":true}},"description":"Essbase application name","propertyOrder":1}},"propertyOrder":1},"load_column_mapping_btn":{"type":"button","title":"Load Column Mapping","format":"sync-action","options":{"async":{"cache":false,"label":"Load Column Mapping","action":"loadColumnMapping"}},"description":"Pre-fills Column Mapping with all columns from the linked input table. Edit destinations to rename, or delete rows you don't need.","propertyOrder":3},"load_context_members_btn":{"type":"button","title":"Load Context Members","format":"sync-action","options":{"async":{"cache":false,"label":"Load Context Members","action":"loadContextMembers"}},"description":"Loads base Essbase dimensions not covered by your input table columns. Fill in a fixed member value for each.","propertyOrder":4}}},"createConfigurationRowSchema":null,"configurationDescription":"configuration description","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["listApplications","listDatabases","loadColumnMapping","loadContextMembers","testConnection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":232,"uri":"docker/keboola.wr-oracle-hyperion","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-oracle-hyperion","name":"developer-portal-v2/keboola.wr-oracle-hyperion","tag":"0.1.2","options":{},"digest":"sha256:bda5121cffe019eb41052a5f2dd1da65a36502292208b6091a95f8fbcda0dad9"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-oracle-hyperion/32/1774353943451.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-oracle-hyperion/64/1774353943451.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-oracle-hyperion/128/1774353943451.png"}},{"id":"keboola.oracle-transformation","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":30,"name":"Oracle SQL","type":"transformation","shortDescription":"Runs SQL transformation scripts against an Oracle database.","longDescription":"Application which runs KBC transformations","licenseUrl":"https://www.keboola.com/terms-and-conditions","documentationUrl":"https://help.keboola.com/transformations/oracle","sourceCodeUrl":"https://github.com/keboola/oracle-transformation","requiredMemory":null,"processTimeout":null,"features":["dev-branch-job-blocked"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":true,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput","genericDockerUI-tableOutput","genericCodeBlocksUI","genericVariablesUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":null,"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["testConnection"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"none","stagingStorageOutput":"none","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":30,"uri":"docker/keboola.oracle-transformation","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.oracle-transformation","name":"developer-portal-v2/keboola.oracle-transformation","tag":"0.3.0","options":{},"digest":"sha256:9fa90c38b7e3d7e63a63ab959694a27cc7321217407de3efc7b6e9e6902fd71b"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.oracle-transformation/32/1602492676629.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.oracle-transformation/64/1602492676629.png","128":null}},{"id":"kds-team.processor-orc2csv","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":94,"name":"ORC to CSV","type":"processor","shortDescription":"Convert ORC files to CSV files","longDescription":"Converting all ORC files to CSV files with the option to select the columns users desire to output","licenseUrl":"https://bitbucket.org/kds_consulting_team/kds-team.processor-orc2csv/src/master/LICENSE.md","documentationUrl":"https://bitbucket.org/kds_consulting_team/kds-team.processor-orc2csv/src/master/README.md","sourceCodeUrl":"https://bitbucket.org/kds_consulting_team/kds-team.processor-orc2csv/src/master/","requiredMemory":"4000m","processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":[],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"Taking all ORC files from `/data/in/files` and convert them to CSV format. All the converted CSV tables will be stored into `/data/out/files`\n\n### Optional Parameters\n1. columns\n    - `Array` JSON input\n    - allows users to have the option to select the columns they want to output\n    - all columns specified in this parameter will need to exist in the ORC file\n\n### Sample Configuration\n\nDefault Parameters\n```\n{\n    \"definition\": {\n        \"component\": \"kds-team.processor-orc2csv\"\n    }\n}\n```\n\nWith optional parameters\n```\n{\n    \"definition\": {\n        \"component\": \"kds-team.processor-orc2csv\"\n    },\n    \"parameters\": {\n        \"columns\": [\n            \"column_1\",\n            \"column_2\"\n        ]\n    }\n}\n```","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":94,"uri":"docker/kds-team.processor-orc2csv","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.processor-orc2csv","name":"developer-portal-v2/kds-team.processor-orc2csv","tag":"0.2.2","options":{},"digest":"sha256:65fe274907d51c2d4638411a9cc66675298a992b49407bd888c748d61b3589f6"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.processor-orc2csv/32/1613165782810.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.processor-orc2csv/64/1613165782810.png","128":null}},{"id":"kds-team.app-orchestration-trigger-queue-v2","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":377,"name":"Orchestration Trigger","type":"application","shortDescription":"Trigger to start a flow","longDescription":"This application allows you to run flows across different Keboola Connection projects.","licenseUrl":"https://github.com/keboola/component-orchestration-trigger-queue-v2/blob/main/LICENSE.md","documentationUrl":"https://help.keboola.com/components/applications/triggers/orchestration-trigger-queue-v2/","sourceCodeUrl":"https://github.com/keboola/component-orchestration-trigger-queue-v2","requiredMemory":null,"processTimeout":28800,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":true,"forwardTokenDetails":true,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["waitUntilFinish","#kbcToken","kbcUrl","orchestrationId"],"properties":{"kbcUrl":{"enum":["-","us-east4.gcp.","eu-central-1.","north-europe.azure.","europe-west3.gcp.","Custom Stack"],"type":"string","title":"KBC Stack","options":{"enum_titles":["US Virginia AWS - connection.keboola.com","US Virginia GCP - connection.us-east4.gcp.keboola.com","EU Frankfurt AWS - connection.eu-central-1.keboola.com","EU Ireland Azure - connection.north-europe.azure.keboola.com","EU Frankfurt GCP - connection.europe-west3.gcp.keboola.com","Custom Stack"]},"propertyOrder":20},"#kbcToken":{"type":"string","title":"KBC Storage API token","format":"password","minLength":1,"description":"<a href=\"https://help.keboola.com/management/project/tokens/\">Keboola API Token</a> with full access to all buckets and components.","propertyOrder":10},"variables":{"type":"array","items":{"type":"object","title":"Variable","properties":{"name":{"type":"string"},"value":{"type":"string"}}},"title":"Variables of the flow","format":"table","uniqueItems":true,"propertyOrder":50},"custom_stack":{"type":"string","title":"Custom Stack","options":{"dependencies":{"kbcUrl":"Custom Stack"}},"description":"The name of your stack in connection.{CUSTOM_STACK}.keboola.cloud","propertyOrder":25},"failOnWarning":{"type":"boolean","title":"Fail on Warning","format":"checkbox","default":true,"options":{"dependencies":{"waitUntilFinish":true}},"description":"When checked, the trigger job will fail when the flow ends with a warning","propertyOrder":65},"orchestrationId":{"enum":[],"type":"string","title":"Flow ID","format":"select","options":{"async":{"label":"RE-LOAD FLOWS","action":"list_orchestrations"}},"uniqueItems":true,"propertyOrder":30},"waitUntilFinish":{"type":"boolean","title":"Wait for job finish and check jobs status","format":"checkbox","default":false,"propertyOrder":60},"trigger_metadata":{"type":"object","title":"Trigger Info","format":"grid-strict","properties":{"project_id":{"type":"string","title":"Project ID","options":{"dependencies":{"store_info":true},"grid_columns":2},"propertyOrder":4},"store_info":{"type":"boolean","title":"Store Metadata in configuration","format":"checkbox","options":{"grid_break":true,"grid_columns":10},"propertyOrder":2},"project_name":{"type":"string","title":"Project Name","enabled":false,"options":{"dependencies":{"store_info":true},"grid_columns":10},"propertyOrder":3},"orchestration_link":{"type":"string","title":"Orchestration link","options":{"dependencies":{"store_info":true},"grid_columns":12},"propertyOrder":5},"sync_trigger_metadata":{"type":"button","format":"sync-action","options":{"async":{"label":"SHOW INFO","action":"sync_trigger_metadata"}}}}},"triggerActionOnFailure":{"type":"boolean","title":"Trigger flow on failure","format":"checkbox","options":{"dependencies":{"waitUntilFinish":true}},"description":"Trigger flow when the orchestration fails.","propertyOrder":70},"actionOnFailureSettings":{"type":"object","title":"Flow on failure settings","options":{"dependencies":{"triggerActionOnFailure":true}},"required":["failureConfigurationId"],"properties":{"passVariables":{"type":"boolean","title":"Pass Main Flow Variables","format":"checkbox","description":"Pass all variables from the main flow to this one. They will be processed along with the variables defined below."},"targetProject":{"enum":["current","destination"],"type":"string","title":"Flow Location","options":{"tooltip":"Current project settings triggers flow in the same project as this component. Destination project triggers flow in the project where the main flow is located.","enum_titles":["Current Project","Destination Project"]}},"failureVariables":{"type":"array","items":{"type":"object","title":"Variable","properties":{"name":{"type":"string"},"value":{"type":"string"}}},"title":"Variables of the flow on failure","format":"table","uniqueItems":true},"failureConfigurationId":{"enum":[],"type":"string","title":"Flow ID","format":"select","options":{"async":{"label":"RE-LOAD FLOWS","action":"list_failure_orchestrations"}},"description":"List of flows from selected project. Needs to refresh after changing the location settings.","uniqueItems":true}},"propertyOrder":75}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"### Note\nMake sure the orchestration you wish to run is an Orchestration V2. If the link to your of your orchestration contains **orchestrations-v2** it is V2, if it contains **orchestrations** use the the [keboola.app-orchestrator-trigger application](https://github.com/keboola/app-orchestrator-trigger)","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["list_failure_orchestrations","list_orchestrations","sync_trigger_metadata"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":377,"uri":"docker/kds-team.app-orchestration-trigger-queue-v2","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.app-orchestration-trigger-queue-v2","name":"developer-portal-v2/kds-team.app-orchestration-trigger-queue-v2","tag":"1.3.2","options":{},"digest":"sha256:64c0889e8e546fcbb5f0421e8b3b16b7057c6160fb61f04d4ee29ff3a745563d"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-orchestration-trigger-queue-v2/32/1714478497077.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-orchestration-trigger-queue-v2/64/1714478497077.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-orchestration-trigger-queue-v2/128/1714478497077.png"}},{"id":"keboola.processor-orthogonal","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":20,"name":"Orthogonalize CSV","type":"processor","shortDescription":"Make a table CSV orthogonal - each row will have the same number of columns.","longDescription":"Makes a table CSV orthogonal. Each row will be extended to the maximum number of columns found in the table, therefore each row will have the same number of columns. Newly added columns (if any) have auto-generated names.\n","licenseUrl":"https://github.com/keboola/processor-orthogonal/blob/master/LICENSE","documentationUrl":"https://github.com/keboola/processor-orthogonal/blob/master/README.md#usage","sourceCodeUrl":"https://github.com/keboola/processor-orthogonal","requiredMemory":null,"processTimeout":14400,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":[],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":null,"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.processor-orthogonal","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.processor-orthogonal","name":"developer-portal-v2/keboola.processor-orthogonal","tag":"1.0.2","options":{},"digest":"sha256:e5350f80c6b32234863420e5b16d48dedd35ec26ab10f399c653be97b426b040"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.processor-orthogonal/32/1576251969019.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.processor-orthogonal/64/1576251969019.png","128":null}},{"id":"keboola.ex-papertrail","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":34,"name":"Papertrail","type":"extractor","shortDescription":"Extracts events from Papertrail.","longDescription":"This component uses the [Papertrail Search API](https://help.papertrailapp.com/kb/how-it-works/search-api) to import events matching the specified query from [Papertrail](https://papertrailapp.com/).\n\nTo configure this extractor, you need to provide a \n- [Papertrail API token](https://help.papertrailapp.com/kb/how-it-works/http-api#authentication), and\n- [Search Query](https://help.papertrailapp.com/kb/how-it-works/search-syntax/#quick-reference).\n\nData is always imported incrementally.","licenseUrl":"https://github.com/keboola/kbc-ui-templates/blob/main/LICENSE","documentationUrl":"https://help.keboola.com/extractors/other/papertrail/","sourceCodeUrl":"https://github.com/keboola/kbc-ui-templates/tree/master/resources/keboola.ex-papertrail/templates","requiredMemory":null,"processTimeout":3600,"features":["container-root-user"],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"medium","category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericTemplatesUI"],"imageParameters":{"default_bucket":true},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["config"],"properties":{"config":{"type":"object","title":"Config","required":["query","#token","retention"],"properties":{"query":{"type":"string","links":[{"rel":"Search Reference","href":"https://help.papertrailapp.com/kb/how-it-works/search-syntax/#quick-reference"}],"title":"Search Query","propertyOrder":2},"#token":{"type":"string","links":[{"rel":"Get the token in your profile","href":"https://papertrailapp.com/account/profile"}],"title":"Papertrail API Token, it will be encrypted","format":"password","propertyOrder":1},"retention":{"enum":["1 day","3 days","1 week","2 weeks","1 month"],"type":"string","title":"Retention Period","default":"3 days","propertyOrder":3}}}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-papertrail","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/ex-generic-v2","name":"developer-portal-v2/ex-generic-v2","tag":"4.2.5","options":{"region":"us-east-1"},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-papertrail/32/17.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-papertrail/64/17.png","128":null}},{"id":"kds-team.processor-parquet2csv","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":224,"name":"Parquet","type":"processor","shortDescription":"Converts Parquet files to a single CSV.","longDescription":"# Parquet Processor\n\nParquet processor utilizes the [pyarrow](https://pypi.org/project/pyarrow/) library to process Parquet files and convert them into a single .csv file. A single configuration, in which the Parquet processor is used, should contain the files which belong to one table only and thus maintaining one configuration, one table rule.\n\nParquet processor automatically filters all files from `/data/in/files` folder, converts them to a .csv format, and outputs to `/data/out/tables` folder.\n\n## Configuration:\n\nA sample of the configuration object:\n\n```json\n{\n    \"definition\": {\n        \"component\": \"kds-team.processor-parquet2csv\"\n    },\n    \"parameters\": {\n        \"mode\": \"fast\",\n        \"table_name\": \"table.csv\",\n        \"incremental\": true,\n        \"primary_keys\": [\n            \"order_id\"\n        ],\n        \"include_filename\": false,\n        \"debug\": true,\n        \"chunk_size\": 5000,\n        \"file_mask\": \"export*.parquet\",\n        \"columns\": [\n            \"id\",\n            \"order_id\",\n            \"dwh_created\",\n            \"created_at\"\n        ]\n    }\n}\n```\n\n## Parameters\n\n- `mode` (required) - A mode, which will be utilized in running of the processor. Must be one of `fast`, `fill` or `strict`. See below for further clarification.\n- `table_name` (required) - A name of the table in storage.\n- `incremental` (optional) - A boolean value marking, whether to utilize incremental load to storage. If not specified, full load is performed.\n- `primary_keys` (optional) - An array of primary keys.\n- `include_filename` (optional) - A boolean value. If `true`, an extra column `parquet_filename` with name of data parquet origin file will be included in the output table. Default is `false`.\n- `chunk_size` (optional) - A positive integer specifying the size of a chunk, which should be processed in memory. In general, the lower the chunk size, the lower memory consumption, but slower processing and vice versa. If `chunk_size` is not specified or is a negative number the batch size defaults to 10000.\n- `columns` (optional) - An array of columns, which will be read from the Parquet file. If any of the columns specified here is not present in the Parquet file, it will be ignored. If mode is set to `strict`, this parameter is required, since it defines the schema, which should be checked.\n  - `file_mask` (optional) - A glob-like syntax defining files, which should be included. Can be used for filtering files, or extensions. When not specified, defaults to `*.parquet`, i.e. all files with `.parquet` extension are included.\n- `debug` - A boolean value. If `true`, extra logging is added. Default is `false`.\n\n### Different `mode` parameter specification\n\nSince the processor will be processing files continuously, some change in schema of Parquet files may occur with different exports (e.g. new column added or removed). The processor offers different modes to treat the issue that may arise.\n\n#### Mode `fast`\n\nThe `fast` mode tries to be as fast in processing files as possible. It determines the schema from the first Parquet file it reads and applies to schema to all remaining Parquet files which are processed, regardless of what is their actual schema. This process is fast, but may lead to some data being lost, if schema of processed files is different.\nIf parameter `columns` is specified, the processor will read only specified columns and apply them to followin files.\n\n#### Mode `fill`\n\nThe `fill` mode reads the schemas of all files in the processing queue and creates a singular schema which is applied to all files. If some columns are missing in one of the files, those will be filled with blanks.\n\n#### Mode `strict`\n\nStrict mode makes sure that all of the files adhere to the same schema, which is defined by `columns` parameters. If any of the columns defined in `columns` parameters is missing in one of the files, an error is raised and conversion to a csv is halted.\n\n## Development\n\nTo build and run a docker image, use following commands:\n\n```\ndocker-compose build dev\ndocker-compose run --rm dev\n```","licenseUrl":"https://github.com/keboola/processor-parquet2csv/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/processor-parquet2csv/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/processor-parquet2csv/","requiredMemory":"2048m","processTimeout":14400,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":[],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"Testing configuration description.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"normal","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":224,"uri":"docker/kds-team.processor-parquet2csv","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.processor-parquet2csv","name":"developer-portal-v2/kds-team.processor-parquet2csv","tag":"0.2.6","options":{},"digest":"sha256:56aa9288baabd8764b612d587e3d0d302a3a36a49c587421197b5af6d1a95533"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.processor-parquet2csv/32/1588181306478.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.processor-parquet2csv/64/1588181306478.png","128":null}},{"id":"kds-team.ex-paymo","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":18,"name":"Paymo","type":"extractor","shortDescription":"Get data about client, projects, tasks and entries from your Paymo instance.","longDescription":"[Paymo](https://www.paymoapp.com/) is a **Project Management and Time Tracking App** which helps you to track your team's work on clients' projects.\n\nThis extractor is getting data about **clients**, **projects**, **tasks**, **tasklists**, **entries** and **users** from [Paymo API](https://github.com/paymoapp/api).\nThe scope of the extractor might be extended by altering the JSON configuration and following [Generic Extractor tutorial](https://developers.keboola.com/extend/generic-extractor/tutorial/).","licenseUrl":"https://github.com/keboola/kbc-ui-templates/blob/master/resources/kds-team.ex-paymo/templates/LICENSE","documentationUrl":"https://github.com/keboola/kbc-ui-templates/blob/main/resources/kds-team.ex-paymo/templates/README.md","sourceCodeUrl":"https://github.com/keboola/generic-extractor","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Project Management"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericTemplatesUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["config"],"properties":{"config":{"type":"object","title":"Config","required":["#username","days"],"properties":{"days":{"type":"string","title":"Start day","default":"-60 days","minLength":0,"description":"Fill in from how many days ago you want to extract the data.","propertyOrder":2},"#username":{"type":"string","title":"API Token","default":"","minLength":0,"description":"Fill in your [Paymo API Token](https://github.com/paymoapp/api/blob/master/sections/authentication.md#api-keys).","propertyOrder":1}}}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"## Parameters\n* **API Token** (required): Fill in your [Paymo API Token](https://github.com/paymoapp/api/blob/master/sections/authentication.md#api-keys).\n* **Days ago** (required): How many days back will be the data extracted (doesn't work with *Full IDs* template).\n\nExtractor is storing data in KBC [incrementally](https://developers.keboola.com/extend/generic-extractor/incremental/).\n\n**Note**: As extractor is storing data incrementally and Paymo API isn't returning deleted entries, you can end up with entry records in KBC Storage which are not presented in your Paymo App any more. We suggest to set up two configurations where one will use Full IDs template, which is getting all current entries and then you're able to mark/remove deleted records in the transformation via IDs comparison.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":18,"uri":"docker/kds-team.ex-paymo","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/ex-generic-v2","name":"developer-portal-v2/ex-generic-v2","tag":"latest","options":{},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-paymo/32/1570690516388.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-paymo/64/1570690516388.png","128":null}},{"id":"keboola.wr-pgvector-embeddings","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":189,"name":"Pgvector Embeddings","type":"writer","shortDescription":"Writer for storing text embeddings in PostgreSQL databases with pgvector extension.","longDescription":"# Keboola Writer - PGVector Embeddings\n\nThis component enables efficient storage and similarity search of vector embeddings in PostgreSQL databases using the pgvector extension. It handles the integration between Keboola data sources and PostgreSQL vector databases.\n\n## Key Features\n\n- Writes embeddings directly to PostgreSQL databases with pgvector extension\n- Configurable batch operations for efficient data loading\n- Automatic table creation with customizable schema\n- Support for metadata storage alongside vector embeddings\n- Index creation and optimization (ivfflat, hnsw) for fast similarity search\n- Compatible with all embedding providers supported by the App Embeddings V2\n\nThe writer works seamlessly with the Keboola App Embeddings V2 UI component and can be used in data workflows requiring semantic search, clustering, or other vector-based operations in PostgreSQL environments.","licenseUrl":"https://github.com/keboola/component-embeddings-v2/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-embeddings-v2/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-embeddings-v2","requiredMemory":"1024m","processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"hints","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-simpleTableInput","appInfo.experimental","genericDockerUI-rows"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Embeddings Configuration","required":["embedding_settings"],"properties":{"pgvector_settings":{"type":"object","title":"PostgreSQL Settings","options":{"dependencies":{"db_type":"pgvector"}},"required":["host","port","database","username","#password"],"properties":{"host":{"type":"string","title":"Host","description":"PostgreSQL server hostname"},"port":{"type":"integer","title":"Port","default":5432},"database":{"type":"string","title":"Database","description":"Database name"},"username":{"type":"string","title":"Username"},"#password":{"type":"string","title":"Password","format":"password"}}},"embedding_settings":{"type":"object","title":"Embedding Service Settings","required":["provider_type"],"properties":{"provider_type":{"enum":["openai","azure_openai","cohere","huggingface_hub","google_vertex","bedrock"],"type":"string","title":"Embedding Provider","options":{"tooltip":"Choose the AI service that will generate embeddings"},"enumNames":["OpenAI","Azure OpenAI","Cohere","HuggingFace Hub","Google Vertex AI","AWS Bedrock"],"description":"Select the embedding service to use"},"azure_settings":{"type":"object","title":"Azure OpenAI Settings","options":{"dependencies":{"provider_type":"azure_openai"}},"required":["deployment_name","#api_key","azure_endpoint"],"properties":{"#api_key":{"type":"string","title":"API Key","format":"password"},"api_version":{"type":"string","title":"API Version","default":"2024-02-01"},"azure_endpoint":{"type":"string","title":"Azure Endpoint","options":{"inputAttributes":{"placeholder":"https://<your-endpoint>.openai.azure.com/"}},"description":"Your Azure OpenAI endpoint URL"},"deployment_name":{"type":"string","title":"Deployment Name","description":"Enter your Azure OpenAI deployment name"}}},"cohere_settings":{"type":"object","title":"Cohere Settings","options":{"dependencies":{"provider_type":"cohere"}},"required":["model","#api_key"],"properties":{"model":{"enum":["embed-english-v3.0","embed-english-light-v3.0","embed-multilingual-v3.0","embed-multilingual-light-v3.0"],"type":"string","title":"Model","default":"embed-english-v3.0","options":{"tooltip":"Light models are faster but less accurate"},"description":"Select the Cohere embedding model"},"#api_key":{"type":"string","title":"API Key","format":"password"}}},"openai_settings":{"type":"object","title":"OpenAI Settings","options":{"dependencies":{"provider_type":"openai"}},"required":["model","#api_key"],"properties":{"model":{"enum":["text-embedding-3-small","text-embedding-3-large","text-embedding-ada-002"],"type":"string","title":"Model","default":"text-embedding-3-small","options":{"tooltip":"text-embedding-3-small is recommended for most use cases"},"description":"Select the OpenAI embedding model"},"#api_key":{"type":"string","title":"API Key","format":"password"}}},"bedrock_settings":{"type":"object","title":"AWS Bedrock Settings","options":{"dependencies":{"provider_type":"bedrock"}},"required":["#aws_access_key","#aws_secret_key","region","model_id"],"properties":{"region":{"enum":["us-east-1","us-west-2","ap-southeast-1","ap-northeast-1","eu-central-1"],"type":"string","title":"AWS Region","description":"AWS region where Bedrock is available"},"model_id":{"enum":["amazon.titan-embed-text-v1","amazon.titan-embed-g1-text-02","cohere.embed-english-v3","cohere.embed-multilingual-v3"],"type":"string","title":"Model ID","default":"amazon.titan-embed-text-v1","description":"Bedrock model identifier"},"#aws_access_key":{"type":"string","title":"AWS Access Key"},"#aws_secret_key":{"type":"string","title":"AWS Secret Key","format":"password"}}},"huggingface_settings":{"type":"object","title":"HuggingFace Hub Settings","options":{"dependencies":{"provider_type":"huggingface_hub"}},"required":["model","#api_key"],"properties":{"model":{"type":"string","title":"Model Name","default":"sentence-transformers/all-mpnet-base-v2","options":{"tooltip":"Recommended models: all-mpnet-base-v2, all-MiniLM-L6-v2, bge-large-en-v1.5","inputAttributes":{"placeholder":"sentence-transformers/all-mpnet-base-v2"}},"description":"Enter the HuggingFace model name"},"#api_key":{"type":"string","title":"API Key","format":"password"},"show_progress":{"type":"boolean","title":"Show Progress","default":false,"description":"Whether to show a progress bar during embedding generation"},"normalize_embeddings":{"type":"boolean","title":"Normalize Embeddings","default":true,"description":"Whether to normalize the computed embeddings to unit length"}}},"google_vertex_settings":{"type":"object","title":"Google Vertex AI Settings","options":{"dependencies":{"provider_type":"google_vertex"}},"required":["#credentials","project"],"properties":{"project":{"type":"string","title":"Project ID","description":"Google Cloud project ID"},"location":{"type":"string","title":"Location","default":"us-central1","description":"Google Cloud region"},"model_name":{"type":"string","title":"Model Name","default":"textembedding-gecko@latest","description":"Vertex AI model name"},"#credentials":{"type":"string","title":"Service Account JSON","format":"password","description":"Google Cloud service account credentials JSON"}}}},"propertyOrder":200},"test_database_connection":{"type":"button","format":"sync-action","options":{"async":{"cache":false,"label":"Test Connection to Vector Store Database","action":"testVectorStoreConnection"},"hidden":true}},"test_embedding_service_connection":{"type":"button","format":"sync-action","options":{"async":{"cache":false,"label":"Test Connection to Embedding Service","action":"testEmbeddingServiceConnection"},"hidden":true},"propertyOrder":300}}},"configurationRowSchema":{"type":"object","title":"Vector Store Configuration","required":["text_column"],"properties":{"_metadata_":{"type":"object","options":{"hidden":true},"properties":{"table":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"columns":{"type":"array"},"primaryKey":{"type":"array"}}}}},"destination":{"type":"object","title":"Destination","options":{},"required":["collection_name"],"properties":{"load_type":{"enum":["full_load","incremental_load"],"type":"string","title":"Load Type","format":"checkbox","default":"full_load","options":{"enum_titles":["Full Load","Incremental Load"]},"description":"If Full load is used, the destination table will be overwritten every run. If incremental load is used, data will be upserted into the destination table. Tables with a primary key will have rows updated, tables without a primary key will have rows appended.","propertyOrder":30},"primary_key":{"type":"string","title":"Primary Key Column","watch":{"columns":"_metadata_.table.columns"},"options":{"dependencies":{"load_type":"incremental_load"}},"enumSource":"columns","description":"Choose a column to use as unique identifier for upserts.","propertyOrder":30},"collection_name":{"type":"string","title":"Collection Name","default":"keboola_embeddings","propertyOrder":10},"metadata_columns":{"type":"array","items":{"type":"string","title":"Column Name","watch":{"columns":"_metadata_.table.columns"},"enumSource":"columns"},"title":"Metadata Columns","format":"select","options":{"tags":true},"description":"Choose columns to save to the vector store database as metadata.","uniqueItems":true,"propertyOrder":20}},"propertyOrder":300},"text_column":{"type":"string","title":"Embed column name","watch":{"columns":"_metadata_.table.columns"},"enumSource":"columns","description":"Choose a column to embed data","propertyOrder":1},"advanced_options":{"type":"object","title":"Advanced Options","properties":{"batch_size":{"type":"integer","title":"Batch Size","default":100,"maximum":1000,"minimum":1,"description":"Number of texts to process in one batch","propertyOrder":20},"enable_chunking":{"type":"boolean","title":"Enable Text Chunking","format":"checkbox","default":false,"description":"Split long texts into smaller chunks before embedding","propertyOrder":30},"chunking_settings":{"type":"object","title":"Chunking Settings","options":{"dependencies":{"enable_chunking":true}},"properties":{"chunk_size":{"type":"integer","title":"Chunk Size","default":1000,"maximum":8000,"minimum":100,"description":"Maximum number of characters in each chunk","propertyOrder":50},"chunk_overlap":{"type":"integer","title":"Chunk Overlap","default":100,"maximum":1000,"minimum":0,"description":"Number of characters to overlap between chunks","propertyOrder":60},"chunk_strategy":{"enum":["character","sentence","word","paragraph"],"type":"string","title":"Chunking Strategy","default":"paragraph","options":{"tooltip":"Paragraph is recommended for most use cases"},"description":"How to split the text into chunks","propertyOrder":70}},"propertyOrder":40}},"propertyOrder":200}}},"createConfigurationRowSchema":null,"configurationDescription":"# Keboola PGVector Embeddings Writer\n\nThis document describes how to configure the Keboola PGVector Embeddings Writer component.\n\n## Main Configuration\n\nThe component configuration consists of two main parts:\n\n## Embedding Settings\n\n### Provider Selection\n\nChoose from the following embedding providers:\n\n- OpenAI\n- Azure OpenAI\n- Cohere\n- HuggingFace Hub\n- Google Vertex AI\n- AWS Bedrock\n\n## Row Configuration\n\n### Input Configuration\n\n- **Text Column**: Column containing text to embed\n- **Metadata Columns**: Optional columns to store as metadata\n- **Id Column**: Optional columns to store as ID - **if it set the index will be updated**\n- \n### Vector Database Configuration\n\n**PostgreSQL (pgvector)**\n\n- Host, Port, Database\n- Username, Password\n- Table Name\n\n### Advanced Options\n\n- **Batch Size**: Number of texts to process in one batch (1-1000)\n- **Enable Text Chunking**: Split long texts into smaller chunks\n    - Chunk Size: Maximum characters per chunk\n    - Chunk Overlap: Characters to overlap between chunks\n    - Chunking Strategy: character/sentence/word/paragraph","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.wr-pgvector-embeddings","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-pgvector-embeddings","name":"developer-portal-v2/keboola.wr-pgvector-embeddings","tag":"0.0.15","options":{},"digest":"sha256:e8aed6a7ecbc95a8da600aa063f448594cf6b8dcda4536489573b3301c17816f"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-pgvector-embeddings/32/1739482589093.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-pgvector-embeddings/64/1739482589093.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-pgvector-embeddings/128/1739482589093.png"}},{"id":"keboola.wr-pinecone-embeddings","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":86,"name":"Pinecone Embeddings","type":"writer","shortDescription":"Writer for storing and retrieving vector embeddings in Pinecone vector database.","longDescription":"# Keboola Writer - Pinecone Embeddings\n\nThis component enables storing and retrieving vector embeddings in Pinecone, a vector database optimized for similarity search and AI applications.\n\n## Key Features\n\n- Writes embeddings directly to Pinecone indexes with configurable settings\n- Supports namespace organization for logical grouping of vectors\n- Efficient batch operations for optimal performance\n- Multiple upsert modes (replace or update)\n- Support for metadata storage alongside vector embeddings\n- Text chunking options for processing long documents\n- Compatible with all embedding providers supported by the App Embeddings V2\n\nThe writer integrates with the Keboola App Embeddings V2 UI component and is ideal for applications requiring fast vector search capabilities, including semantic search, recommendation systems, clustering, and other AI/ML applications.","licenseUrl":"https://github.com/keboola/component-embeddings-v2/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-embeddings-v2/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-embeddings-v2","requiredMemory":"1024m","processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-simpleTableInput","appInfo.experimental"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Embeddings Configuration","required":["embedding_settings"],"properties":{"pinecone_settings":{"type":"object","title":"Pinecone Settings","required":["#api_key"],"properties":{"#api_key":{"type":"string","title":"API Key","format":"password"}}},"embedding_settings":{"type":"object","title":"Embedding Service Settings","required":["provider_type"],"properties":{"provider_type":{"enum":["openai","azure_openai","cohere","huggingface_hub","google_vertex","bedrock"],"type":"string","title":"Embedding Provider","options":{"tooltip":"Choose the AI service that will generate embeddings"},"enumNames":["OpenAI","Azure OpenAI","Cohere","HuggingFace Hub","Google Vertex AI","AWS Bedrock"],"description":"Select the embedding service to use"},"azure_settings":{"type":"object","title":"Azure OpenAI Settings","options":{"dependencies":{"provider_type":"azure_openai"}},"required":["deployment_name","#api_key","azure_endpoint"],"properties":{"#api_key":{"type":"string","title":"API Key","format":"password"},"api_version":{"type":"string","title":"API Version","default":"2024-02-01"},"azure_endpoint":{"type":"string","title":"Azure Endpoint","options":{"inputAttributes":{"placeholder":"https://<your-endpoint>.openai.azure.com/"}},"description":"Your Azure OpenAI endpoint URL"},"deployment_name":{"type":"string","title":"Deployment Name","description":"Enter your Azure OpenAI deployment name"}}},"cohere_settings":{"type":"object","title":"Cohere Settings","options":{"dependencies":{"provider_type":"cohere"}},"required":["model","#api_key"],"properties":{"model":{"enum":["embed-english-v3.0","embed-english-light-v3.0","embed-multilingual-v3.0","embed-multilingual-light-v3.0"],"type":"string","title":"Model","default":"embed-english-v3.0","options":{"tooltip":"Light models are faster but less accurate"},"description":"Select the Cohere embedding model"},"#api_key":{"type":"string","title":"API Key","format":"password"}}},"openai_settings":{"type":"object","title":"OpenAI Settings","options":{"dependencies":{"provider_type":"openai"}},"required":["model","#api_key"],"properties":{"model":{"enum":["text-embedding-3-small","text-embedding-3-large","text-embedding-ada-002"],"type":"string","title":"Model","default":"text-embedding-3-small","options":{"tooltip":"text-embedding-3-small is recommended for most use cases"},"description":"Select the OpenAI embedding model"},"#api_key":{"type":"string","title":"API Key","format":"password"}}},"bedrock_settings":{"type":"object","title":"AWS Bedrock Settings","options":{"dependencies":{"provider_type":"bedrock"}},"required":["#aws_access_key","#aws_secret_key","region","model_id"],"properties":{"region":{"enum":["us-east-1","us-west-2","ap-southeast-1","ap-northeast-1","eu-central-1"],"type":"string","title":"AWS Region","description":"AWS region where Bedrock is available"},"model_id":{"enum":["amazon.titan-embed-text-v1","amazon.titan-embed-g1-text-02","cohere.embed-english-v3","cohere.embed-multilingual-v3"],"type":"string","title":"Model ID","default":"amazon.titan-embed-text-v1","description":"Bedrock model identifier"},"#aws_access_key":{"type":"string","title":"AWS Access Key"},"#aws_secret_key":{"type":"string","title":"AWS Secret Key","format":"password"}}},"huggingface_settings":{"type":"object","title":"HuggingFace Hub Settings","options":{"dependencies":{"provider_type":"huggingface_hub"}},"required":["model","#api_key"],"properties":{"model":{"type":"string","title":"Model Name","default":"sentence-transformers/all-mpnet-base-v2","options":{"tooltip":"Recommended models: all-mpnet-base-v2, all-MiniLM-L6-v2, bge-large-en-v1.5","inputAttributes":{"placeholder":"sentence-transformers/all-mpnet-base-v2"}},"description":"Enter the HuggingFace model name"},"#api_key":{"type":"string","title":"API Key","format":"password"},"show_progress":{"type":"boolean","title":"Show Progress","default":false,"description":"Whether to show a progress bar during embedding generation"},"normalize_embeddings":{"type":"boolean","title":"Normalize Embeddings","default":true,"description":"Whether to normalize the computed embeddings to unit length"}}},"google_vertex_settings":{"type":"object","title":"Google Vertex AI Settings","options":{"dependencies":{"provider_type":"google_vertex"}},"required":["#credentials","project"],"properties":{"project":{"type":"string","title":"Project ID","description":"Google Cloud project ID"},"location":{"type":"string","title":"Location","default":"us-central1","description":"Google Cloud region"},"model_name":{"type":"string","title":"Model Name","default":"textembedding-gecko@latest","description":"Vertex AI model name"},"#credentials":{"type":"string","title":"Service Account JSON","format":"password","description":"Google Cloud service account credentials JSON"}}}},"propertyOrder":200},"test_database_connection":{"type":"button","format":"sync-action","options":{"async":{"cache":false,"label":"Test Connection to Vector Store Database","action":"testVectorStoreConnection"},"hidden":true}},"test_embedding_service_connection":{"type":"button","format":"sync-action","options":{"async":{"cache":false,"label":"Test Connection to Embedding Service","action":"testEmbeddingServiceConnection"},"hidden":true},"propertyOrder":300}}},"configurationRowSchema":{"type":"object","title":"Vector Store Configuration","required":["text_column"],"properties":{"_metadata_":{"type":"object","options":{"hidden":true},"properties":{"table":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"columns":{"type":"array"},"primaryKey":{"type":"array"}}}}},"destination":{"type":"object","title":"Destination","options":{},"required":["collection_name"],"properties":{"load_type":{"enum":["full_load","incremental_load"],"type":"string","title":"Load Type","format":"checkbox","default":"full_load","options":{"enum_titles":["Full Load","Incremental Load"]},"description":"If Full load is used, the destination table will be overwritten every run. If incremental load is used, data will be upserted into the destination table. Tables with a primary key will have rows updated, tables without a primary key will have rows appended.","propertyOrder":30},"primary_key":{"type":"string","title":"Primary Key Column","watch":{"columns":"_metadata_.table.columns"},"options":{"dependencies":{"load_type":"incremental_load"}},"enumSource":"columns","description":"Choose a column to use as unique identifier for upserts.","propertyOrder":30},"collection_name":{"type":"string","title":"Index Name","default":"","propertyOrder":10},"metadata_columns":{"type":"array","items":{"type":"string","title":"Column Name","watch":{"columns":"_metadata_.table.columns"},"enumSource":"columns"},"title":"Metadata Columns","format":"select","options":{"tags":true},"description":"Choose columns to save to the vector store database as metadata.","uniqueItems":true,"propertyOrder":20}},"propertyOrder":300},"text_column":{"type":"string","title":"Embed column name","watch":{"columns":"_metadata_.table.columns"},"enumSource":"columns","description":"Choose a column to embed data","propertyOrder":1},"advanced_options":{"type":"object","title":"Advanced Options","properties":{"batch_size":{"type":"integer","title":"Batch Size","default":100,"maximum":1000,"minimum":1,"description":"Number of texts to process in one batch","propertyOrder":20},"enable_chunking":{"type":"boolean","title":"Enable Text Chunking","format":"checkbox","default":false,"description":"Split long texts into smaller chunks before embedding","propertyOrder":30},"chunking_settings":{"type":"object","title":"Chunking Settings","options":{"dependencies":{"enable_chunking":true}},"properties":{"chunk_size":{"type":"integer","title":"Chunk Size","default":1000,"maximum":8000,"minimum":100,"description":"Maximum number of characters in each chunk","propertyOrder":50},"chunk_overlap":{"type":"integer","title":"Chunk Overlap","default":100,"maximum":1000,"minimum":0,"description":"Number of characters to overlap between chunks","propertyOrder":60},"chunk_strategy":{"enum":["character","sentence","word","paragraph"],"type":"string","title":"Chunking Strategy","default":"paragraph","options":{"tooltip":"Paragraph is recommended for most use cases"},"description":"How to split the text into chunks","propertyOrder":70}},"propertyOrder":40}},"propertyOrder":200}}},"createConfigurationRowSchema":null,"configurationDescription":"# Pinecone Embeddings Writer Configuration\n\n## Embedding Provider\nChoose the service that will generate vector embeddings from your text data. The component supports:\n- OpenAI\n- Azure OpenAI\n- Cohere\n- HuggingFace Hub\n- Google Vertex AI\n- AWS Bedrock\n\n## Vector Database Configuration\nConfigure your Pinecone connection:\n\n```json\n{\n  \"vector_db\": {\n    \"pinecone_settings\": {\n      \"#api_key\": \"your-pinecone-api-key\",\n      \"environment\": \"your-environment\",\n      \"index_name\": \"your-index-name\"\n    }\n  }\n}\n```\n\n## Input Processing\n- **Text Column**: Column containing the text to embed\n- **ID Column**: Optional column with unique identifiers\n- **Metadata Columns**: Additional columns to store as metadata in Pinecone\n\n## Advanced Options\n- **Batch Size**: Number of records to process at once\n- **Text Chunking**: Split long texts before embedding\n- **Pinecone Namespace**: Logical namespace within the index\n- **Upsert Mode**: How to handle existing records with the same ID\n\n## Output Configuration\n- **Save to Storage**: Whether to save embeddings to Keboola Storage\n- **Save to Vector Database**: Whether to save to Pinecone (default: true)","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.wr-pinecone-embeddings","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-pinecone-embeddings","name":"developer-portal-v2/keboola.wr-pinecone-embeddings","tag":"0.0.7","options":{},"digest":"sha256:0a164062f272dd195bea0741b03c8dcbd4fed97f041a56b9371845a3985c9f87"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-pinecone-embeddings/32/1744270980087.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-pinecone-embeddings/64/1744270980087.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-pinecone-embeddings/128/1744270980087.png"}},{"id":"keboola.ex-pingdom","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":15,"name":"Pingdom","type":"extractor","shortDescription":"Extracts website availability and performance data from Pingdom.","longDescription":"This component uses the [Pingdom API](https://www.pingdom.com/resources/api/2.1/) to extract data about the availability and performance of your websites and web applications, including page transactions (signup, search, cart checkout, etc.) and visitor insights.\n\nThe Pingdom API provides history only for up to 30 days.\n\nTo configure this extractor, you need to have \n\n- a working Pingdom **account**, and \n- a Pingdom **API Key**.","licenseUrl":"https://github.com/keboola/kbc-ui-templates/blob/main/LICENSE","documentationUrl":"https://help.keboola.com/extractors/other/pingdom/","sourceCodeUrl":"https://github.com/keboola/kbc-ui-templates/tree/main/resources/keboola.ex-pingdom/templates","requiredMemory":"512m","processTimeout":10800,"features":["container-root-user"],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"medium","category":null,"categories":["Monitoring"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericTemplatesUI"],"imageParameters":{"default_bucket":true},"stackParameters":{},"testConfiguration":{},"configurationSchema":{"type":"object","title":"Parameters","required":["config"],"properties":{"config":{"type":"object","title":"Config","properties":{"#appKey":{"type":"string","links":[{"rel":"Get your Pingdom Application Key","href":"https://my.pingdom.com/account/appkeys"}],"title":"App Key","format":"password","required":true,"minLength":1},"loadFrom":{"enum":["-1 day","-30 days"],"type":"string","title":"Data period","options":{"enum_titles":["Last 24 hours","Last 30 days"]},"required":true,"minLength":1},"username":{"type":"string","title":"User e-mail","format":"email","required":true,"minLength":1,"description":"Your Pingdom user e-mail"},"#password":{"type":"string","title":"Password","format":"password","required":true,"minLength":1}}}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-pingdom","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/ex-generic-v2","name":"developer-portal-v2/ex-generic-v2","tag":"2.3.2","options":{},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-pingdom/32/1.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-pingdom/64/1.png","128":null}},{"id":"kds-team.ex-pinterest","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":400,"name":"Pinterest Ads","type":"extractor","shortDescription":"Extracts Pinterest Ads analytics reports.","longDescription":"The Pinterest Ads Extractor is a powerful tool that automates the retrieval of Ad Analytics reports, allowing users to\nschedule and download predefined reports effortlessly. With the ability to fetch reports across multiple Ad Accounts\nsimultaneously, it streamlines the data collection process. Users can select the granularity and relative time period\nfor incremental data fetching. This component empowers marketers with comprehensive insights into their Pinterest ad\ncampaigns.\n\n**Features:**\n\n- Automated retrieval of Ad Analytics reports.\n- Custom report definition and retrieval.\n- Scheduled download of Custom reports predefined via Pinterest UI.\n- Efficient fetching of reports across multiple Ad Accounts.\n- Incremental data fetching based on user-defined time period and granularity.","licenseUrl":"https://github.com/keboola/component-pinterest/blob/main/LICENSE.md","documentationUrl":"https://help.keboola.com/components/extractors/marketing-sales/pinterest-ads/","sourceCodeUrl":"https://github.com/keboola/component-pinterest","requiredMemory":null,"processTimeout":14400,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"medium","category":null,"categories":["Advertisement"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-authorization","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{},"configurationRowSchema":{"type":"object","title":"Pinterest Report","required":["input_variant","time_range","destination"],"properties":{"accounts":{"type":"array","items":{"enum":[],"type":"string","title":"Accounts","minLength":1},"title":"Accounts","format":"select","options":{"async":{"label":"Load available accounts","action":"load_accounts"}},"minItems":1,"description":"Select accounts to be reported","uniqueItems":true,"propertyOrder":50},"time_range":{"type":"object","title":"Time Range","properties":{"date_to":{"type":"string","title":"Date to","default":"today","description":"End date: Either date in YYYY-MM-DD format or a relative date string i.e. 5 days ago, 1 month ago, yesterday, etc.","propertyOrder":30},"date_from":{"type":"string","title":"Date from","default":"7 days ago","description":"Start date: Either date in YYYY-MM-DD format or a relative date string i.e. 5 days ago, 1 month ago, yesterday, etc.","propertyOrder":20},"granularity":{"enum":["TOTAL","DAY","HOUR","WEEK","MONTH"],"type":"string","title":"Granularity","options":{"enum_titles":["Total","Day","Hour","Week","Month"]},"description":"Time aggregation","propertyOrder":40}},"propertyOrder":200},"destination":{"type":"object","title":"Destination","required":["table_name","incremental_loading"],"properties":{"table_name":{"type":"string","title":"Storage Table Name","minLength":1,"description":"Name of the destination table for this report. (e.g. standard_performance_data).","propertyOrder":10},"incremental_loading":{"enum":[false,true],"type":"boolean","title":"Load Type","default":true,"options":{"enum_titles":["Full Load","Incremental Load"]},"description":"If Full load is used, the destination table will be overwritten every run. If Incremental Load is used, data will be upserted into the destination table.","propertyOrder":30}},"propertyOrder":600},"input_variant":{"enum":["report_specification","existing_report_ids"],"type":"string","title":"Report Specification","default":"report_specification","options":{"enum_titles":["Custom Report","Existing report template ID(s)"]},"description":"You may choose to either define a report or to use existing report template(s)","propertyOrder":100},"existing_report_ids":{"type":"array","items":{"enum":[],"type":"string","title":"Report ID","minLength":1},"title":"Existing Custom Report Template(s)","format":"select","options":{"async":{"label":"Load available templates","action":"list_templates"},"dependencies":{"input_variant":"existing_report_ids"}},"minItems":1,"minLength":1,"description":"Select custom report template(s) created in the Pinterest Ads Web interface. Optionally, more templates may be selected in case they exist across multiple AD accounts and share the same structure.","uniqueItems":true,"propertyOrder":400},"report_specification":{"type":"object","title":"Report Details","options":{"dependencies":{"input_variant":"report_specification"}},"properties":{"level":{"enum":["ADVERTISER","ADVERTISER_TARGETING","CAMPAIGN","CAMPAIGN_TARGETING","AD_GROUP","AD_GROUP_TARGETING","PIN_PROMOTION","PIN_PROMOTION_TARGETING","KEYWORD","PRODUCT_GROUP","PRODUCT_GROUP_TARGETING","PRODUCT_ITEM"],"type":"string","title":"Level","propertyOrder":510},"columns":{"type":"array","items":{"enum":[],"type":"string","title":"Column ID","minLength":1},"title":"Columns","format":"select","options":{"async":{"label":"Load columns","action":"list_columns"}},"minItems":1,"description":"Select report columns","uniqueItems":true,"propertyOrder":500},"conversion_window":{"enum":["60/60/60","60/60/30","60/60/7","60/60/1","60/30/30","60/30/7","60/30/1","60/7/7","60/7/1","60/1/1","30/30/30","30/30/7","30/30/1","30/7/7","30/7/1","30/1/1","7/7/7","7/7/1","7/1/1","7/0/0","1/1/1","1/0/0"],"type":"string","title":"Conversion window","default":"30/30/30","description":"Identify the attribution window for conversion events (days: click/engagement/view). Note: Pinterest only accepts a fixed set of combinations for some reports (e.g. conversion reports).","propertyOrder":530},"conversion_report_time":{"enum":["TIME_OF_AD_ACTION","TIME_OF_CONVERSION"],"type":"string","title":"Conversion Report Time","default":"TIME_OF_AD_ACTION","propertyOrder":540}},"propertyOrder":300}}},"createConfigurationRowSchema":null,"configurationDescription":"Configuration description.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["load_accounts","list_templates","list_columns"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.ex-pinterest","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-pinterest","name":"developer-portal-v2/kds-team.ex-pinterest","tag":"0.0.22","options":{},"digest":"sha256:bd2534c4d5d9129284d6d6d6287beda70c324fac5e0677bdf2f5f369ea370903"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-pinterest/32/1689922328627.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-pinterest/64/1689922328627.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-pinterest/128/1689922328627.png"}},{"id":"keboola.ex-pipedrive","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":27,"name":"Pipedrive","type":"extractor","shortDescription":"Extracts organizations, persons, pipelines, activities, and stages from Pipedrive.","longDescription":"This component uses the [Pipedrive API](https://developers.pipedrive.com/docs/api/v1/) to import the following data from [Pipedrive](https://www.pipedrive.com/):\n\n- organizations \n- persons\n- users\n- pipelines\n- activities\n- stages\n- etc.\n\nTo configure this extractor, you need to have a working Pipedrive\n\n- account, and \n- [API token](https://pipedrive.readme.io/docs/how-to-find-the-api-token).\n\n\nData is always imported incrementally.","licenseUrl":"https://github.com/keboola/kbc-ui-templates/blob/main/LICENSE","documentationUrl":"https://help.keboola.com/extractors/marketing-sales/pipedrive/","sourceCodeUrl":"https://github.com/keboola/kbc-ui-templates/tree/master/resources/keboola.ex-pipedrive/templates","requiredMemory":"512m","processTimeout":21600,"features":["container-root-user"],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"medium","category":null,"categories":["CRM","ERP"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericTemplatesUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["config"],"properties":{"config":{"type":"object","title":"Configuration","properties":{"#apiToken":{"type":"string","links":[{"rel":"Get API Token","href":"https://app.pipedrive.com/settings/personal/api"}],"title":"API token","format":"password","minLength":1,"description":""},"companyDomain":{"type":"string","title":"Company Domain","minLength":1,"description":""}}}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-pipedrive","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/ex-generic-v2","name":"developer-portal-v2/ex-generic-v2","tag":"4.3.0","options":{},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-pipedrive/32/1677061549144.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-pipedrive/64/1677061549144.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-pipedrive/128/1677061549144.png"}},{"id":"kds-team.ex-pirate-weather","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":105,"name":"Pirate Weather","type":"extractor","shortDescription":"Extracts weather forecast data from the Pirate Weather API.","longDescription":"This component uses the [PirateWeather API](https://pirateweather.net/en/latest/) to extract data about the weather in all parts of the world.\n\n**NOTE** Understand that [Pirate Weather](https://pirateweather.net/en/latest/) is not a polished API yet and there is high latency and not complete data coverage. \nIt is possible that weather data for specific locations at specific times might not be available. Which is the reason this component is listed in an Experimental mode.","licenseUrl":null,"documentationUrl":"https://bitbucket.org/kds_consulting_team/kds-team.ex-pirate-weather/src/master/README.md","sourceCodeUrl":"https://bitbucket.org/kds_consulting_team/kds-team.ex-pirate-weather/src/master","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"medium","category":null,"categories":["API"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"extractor configuration","required":[],"properties":{"authentication":{"type":"object","title":"Authentication Settings","properties":{"#api_token":{"type":"string","title":"API Token","format":"password","description":"API token from you Pirate Weather account","propertyOrder":10},"test_connection":{"type":"button","format":"test-connection","propertyOrder":60}},"propertyOrder":10},"fetching_settings":{"type":"object","title":"Fetching Settings","properties":{"units":{"enum":["si","auto","ca","uk2","us"],"type":"string","title":"Units","format":"select","default":"si","options":{"enum_titles":["SI units (si)","Automatic based on location (auto)","CA (ca)","UK (uk2)","Imperial units (us)"]},"required":true,"propertyOrder":10},"language":{"enum":["ar","az","be","bg","bn","bs","ca","cs","da","de","el","en","eo","es","et","fi","fr","he","hi","hr","hu","id","is","it","ja","ka","kn","ko","kw","lv","ml","mr","nb","nl","no","pa","pl","pt","ro","ru","sk","sl","sr","sv","ta","te","tet","tr","uk","ur","x-pig-latin","zh","zh-tw"],"type":"string","title":"Language","format":"select","default":"en","options":{"enum_titles":["Arabic","Azerbaijani","Belarusian","Bulgarian","Bengali","Bosnian","Catalan","Czech","Danish","German","Greek","English","Esperanto","Spanish","Estonian","Finnish","French","Hebrew","Hindi","Croatian","Hungarian","Indonesian","Icelandic","Italian","Japanese","Georgian","Kannada","Korean","Cornish","Latvian","Malayam","Marathi","Norwegian Bokmal","Dutch","Norwegian Bokmal Nb","Punjabi","Polish","Portuguese","Romanian","Russian","Slovak","Slovenian","Serbian","Swedish","Tamil","Telugu","Tetum","Turkish","Ukrainian","Urdu","Igpay Atinlay","Simplified Chinese","Traditional Chinese"]},"required":true,"propertyOrder":20},"granularity":{"enum":["hourly","daily"],"type":"string","title":"Granularity","format":"select","default":"daily","options":{"enum_titles":["Hourly","Daily"]},"required":true,"propertyOrder":1},"continue_on_failure":{"type":"boolean","title":"Continue On Failure","format":"checkbox","default":true,"description":"If selected, if a request for a  specific loaction/time fails, the component continues to run and ends with a success. If not, the component fails","propertyOrder":40}},"propertyOrder":20},"destination_settings":{"type":"object","title":"Destination Settings","properties":{"load_type":{"enum":["full_load","incremental_load"],"type":"string","title":"Load Type","format":"checkbox","default":"incremental_load","options":{"enum_titles":["Full Load","Incremental Load"]},"description":"If Full load is used, the destination table will be overwritten every run. If incremental load is used, data will be upserted into the destination table.","propertyOrder":20},"output_structure":{"enum":["key_value","wide"],"type":"string","title":"Output Table Structure","format":"select","default":"wide","options":{"enum_titles":["Key-Value Structure","Wide Structure"]},"required":true,"description":"Specify the type of table output you wish to recieve. Key-Value Structure returns the data in a table where each datapoint name is in one column and the value of that datapoint is in a second column. Wide Structure puts each datapoint into one wide table. ","propertyOrder":10}},"propertyOrder":30}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"To utilize the Pirate Weather API you must first register and get an API token in\nthe [Pirate Weather Apiable site](https://pirate-weather.apiable.io/products/weather-data).\nYou should subscribe to the plan based on your expected consumption.\n\nTo input the locations and dates you wish to fetch from, add an input table with the following columns:\n  - latitude -  decimal degrees\n  - longitude -  decimal degrees\n  - date -  (optional) date values must have format `yyyy-mm-dd` (e.g. 2015-06-22)\n\nyou should deduplicate your data to avoid useless exhausting of your credit quota","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["testConnection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":true,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.ex-pirate-weather","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-pirate-weather","name":"developer-portal-v2/kds-team.ex-pirate-weather","tag":"0.0.6","options":{},"digest":"sha256:1c68be5a64618dc682387868f6e68877e54e0b9c04e6731d1cdfdf745f4f9972"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-pirate-weather/32/1681382881488.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-pirate-weather/64/1681382881488.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-pirate-weather/128/1681382881488.png"}},{"id":"bizztreat.ex-plantyst","vendor":{"id":"bizztreat","name":"BizzTreat s.r.o.","address":"Olšanská 2643/1A\n130 00 Praha 3","email":"support@bizztreat.com","type":"other"},"version":50,"name":"Plantyst","type":"extractor","shortDescription":"Plantyst merges technology monitoring and simple shop floor management in one tool.","longDescription":"### Available endpoints\n\n- Measurements\n- MeasurementTimeSeriesAggregationsQuery\n\n### Allowed data objects to extract\n\n- Measurements\n- Measurement Data\n- Metadocuments and Comments\n\nAll the objects are mapped to output CSV file. See schema below:\n\n#### Measurements\n\nRepresents production machines\n\n- `measurementId`: Id of the specific production machine\n- `title`: The title of the machine\n- `description`: The description of the machine\n- `quantityType`: Quantity type for machine\n- `archived`: Flag for archived machine\n- `rights`: List of assigned permissions\n- `first`: Timestamp of the first measurement\n\n#### Measurement Data\n\n- `measurementId`: Id of the specific production machine\n- `from`: Timestamp\n- `to`: Timestamp\n- `value`: Sum of measurements within the from - to range\n\n#### Metadocuments\n\n\n- `guid`: unique identifier of the metadocument\n- `type`: type of the metadocument (options: 0=undefined, 1=annotation, 2=job, 3=downtime)\n- `title`: metadocument title\n- `description`: metadocument description\n- `customId`: user-defined identifier \n- `creatorId`: user identifier of the metadocument creator \n- `measurementId`: identifier of the measurement to which the metadocument belongs\n- `from`: start date time in UTC\n- `to`: end date time in UTC\n- `color`: color in hex color code\n- `lastModified`: date time of the last modification in UTC \n- `setpoint`: setpoint for the metadocument; represents the desired value for the measured quantity\n- `operations`: operations defined as the array of string values\n- `downtimeCode`: related downtime code identifier\n\n#### Comments\n\n- `documentGuid`: Parent guid of the metadocument\n- `id`: Comment d within the metadocument\n- `text`: Content of the message\n- `modificationTime`: Timestamp\n","licenseUrl":"https://github.com/bizztreat/keboola-ex-plantyst/blob/master/LICENSE.md","documentationUrl":"https://github.com/bizztreat/keboola-ex-plantyst/blob/master/MANUAL.md","sourceCodeUrl":null,"requiredMemory":"256m","processTimeout":null,"features":["container-root-user"],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Monitoring"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["endpoint","#apiToken","granularity","changedInLast","measurementId","metadocuments"],"properties":{"endpoint":{"enum":["MeasurementTimeSeriesAggregationsQuery","Measurements"],"type":"string","title":"Endpoint","default":"","propertyOrder":1},"#apiToken":{"type":"string","title":"Api Token","format":"password","default":"","minLength":1,"description":"Ask Plantyst for your connection token.","propertyOrder":2},"granularity":{"enum":["Base.MinuteSet","Base.Hour","Base.Day","Base.Month"],"type":"string","title":"Granularity","default":"Base.MinuteSet","description":"Defines measurement step in time.","propertyOrder":4},"changedInLast":{"type":"string","title":"Changed In Last","default":"24h","description":"Accepts config in format Nu (N=Number u=Unit). E.g. (60m, 24h, 15d, ...)","propertyOrder":5},"measurementId":{"type":"string","title":"Measurement Id(s)","default":"","minLength":1,"description":"Fill with your ID(s). You can use more than one ID separated by comma. E.g. (123, 432)","propertyOrder":3},"metadocuments":{"type":"boolean","title":"Extract Metadocuments","format":"checkbox","default":true,"propertyOrder":6}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/bizztreat.ex-plantyst","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/bizztreat.ex-plantyst","name":"developer-portal-v2/bizztreat.ex-plantyst","tag":"v2.1.0","options":{"region":"us-east-1"},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/bizztreat.ex-plantyst/32/2.png","64":"https://ui.keboola-assets.com/developer-portal/icons/bizztreat.ex-plantyst/64/2.png","128":"https://ui.keboola-assets.com/developer-portal/icons/bizztreat.ex-plantyst/128/2.png"}},{"id":"keboola.ex-pohoda-mserver","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":48,"name":"POHODA mServer","type":"extractor","shortDescription":"Extracts agendas (address book, invoices, stock, and more) from STORMWARE POHODA accounting software through its mServer XML API.","longDescription":"Reads data from STORMWARE POHODA — a widely used Czech accounting system — through its mServer HTTP/XML API. Each configuration row extracts one agenda: address book, invoices, orders, offers, enquiries, stock, cost centres, contracts, activities, internal documents, cash vouchers, payment forms or bank accounts. XML records are flattened into Storage tables, with separate child tables for document line items. Incremental loads use POHODA's `lastChanges` filter so only records changed since the last run are fetched. A running POHODA mServer reachable from Keboola is required.","licenseUrl":"https://github.com/keboola/component-pohoda-mserver/blob/main/LICENSE.md","documentationUrl":"https://help.keboola.com/components/extractors/erp/pohoda-mserver/","sourceCodeUrl":"https://github.com/keboola/component-pohoda-mserver","requiredMemory":null,"processTimeout":null,"features":[],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Accounting","ERP"],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"POHODA mServer Connection","properties":{"ico":{"type":"string","title":"IČ (Company ID)","options":{"inputAttributes":{"placeholder":"12345678"}},"required":true,"description":"IČ of the POHODA accounting unit to extract. Must match the unit registered in your POHODA installation.","propertyOrder":2},"base_url":{"type":"string","title":"mServer URL","options":{"inputAttributes":{"placeholder":"http://host:444"}},"required":true,"description":"Base URL of the POHODA mServer, e.g. http://192.168.1.10:444. Plain HTTP only; POHODA mServer does not use HTTPS by default.","propertyOrder":1},"username":{"type":"string","title":"POHODA Username","required":true,"description":"POHODA user account name (not a Windows/domain account).","propertyOrder":3},"#password":{"type":"string","title":"Password","format":"password","description":"POHODA user password. Leave blank if the account has no password set.","propertyOrder":4},"test_connection":{"type":"button","format":"test-connection","options":{"async":{"label":"Test Connection","action":"testConnection"}},"propertyOrder":5}}},"configurationRowSchema":{"type":"object","title":"Agenda Extraction","properties":{"agenda":{"enum":["addressBook","centre","contract","activity","stock","invoice","order","offer","enquiry","voucher","intDoc","payment","bankAccount"],"type":"string","title":"Agenda","options":{"enum_titles":["Address book (Adresář)","Cost centres (Střediska)","Contracts (Zakázky)","Activities (Činnosti)","Stock cards (Zásoby)","Invoices (Faktury)","Orders (Objednávky)","Offers (Nabídky)","Enquiries (Poptávky)","Cash vouchers (Pokladna)","Internal documents (Interní doklady)","Payment forms (Formy úhrad)","Bank accounts (Bankovní účty)"]},"required":true,"description":"POHODA agenda (data entity) to extract.","propertyOrder":1},"load_mode":{"enum":["incremental","full"],"type":"string","title":"Load Mode","default":"incremental","options":{"enum_titles":["Incremental","Full"]},"description":"Incremental: fetches only records changed since the last run (uses POHODA lastChanges filter and upserts by primary key). Full: downloads all records and replaces the output table — the only way to reflect deleted records. Note: POHODA mServer must be running; the POHODA desktop GUI and mServer cannot open the same data file at the same time.","propertyOrder":6},"offer_type":{"enum":["issuedOffer","receivedOffer"],"type":"string","title":"Offer type","default":"issuedOffer","options":{"enum_titles":["Issued offer (Vydaná nabídka)","Received offer (Přijatá nabídka)"],"dependencies":{"agenda":["offer"]}},"description":"Document type within the Offers agenda.","propertyOrder":4},"order_type":{"enum":["issuedOrder","receivedOrder"],"type":"string","title":"Order type","default":"issuedOrder","options":{"enum_titles":["Issued order (Vydaná objednávka)","Received order (Přijatá objednávka)"],"dependencies":{"agenda":["order"]}},"description":"Document type within the Orders agenda.","propertyOrder":3},"destination":{"type":"string","title":"Output Table Name","description":"Override the output table name in Storage. Default: snake_cased agenda name, e.g. address_book or invoice_issued_invoice.","propertyOrder":10},"enquiry_type":{"enum":["issuedEnquiry","receivedEnquiry"],"type":"string","title":"Enquiry type","default":"issuedEnquiry","options":{"enum_titles":["Issued enquiry (Vydaná poptávka)","Received enquiry (Přijatá poptávka)"],"dependencies":{"agenda":["enquiry"]}},"description":"Document type within the Enquiries agenda.","propertyOrder":5},"invoice_type":{"enum":["issuedInvoice","issuedCreditNotice","issuedDebitNote","issuedAdvanceInvoice","issuedProformaInvoice","issuedCorrectiveTax","penalty","receivable","receivedInvoice","receivedCreditNotice","receivedDebitNote","receivedAdvanceInvoice","receivedProformaInvoice","receivedCorrectiveTax","commitment"],"type":"string","title":"Invoice type","default":"issuedInvoice","options":{"enum_titles":["Issued invoice (Vydaná faktura)","Issued credit note (Vydaný dobropis)","Issued debit note (Vydaný vrubopis)","Issued advance invoice (Vydaná zálohová faktura – zálohová)","Issued proforma invoice (Vydaná zálohová faktura – proforma)","Issued corrective tax document (Vydaný opravný daňový doklad)","Penalty invoice (Penalizační faktura)","Receivable (Pohledávka)","Received invoice (Přijatá faktura)","Received credit note (Přijatý dobropis)","Received debit note (Přijatý vrubopis)","Received advance invoice (Přijatá zálohová faktura – zálohová)","Received proforma invoice (Přijatá zálohová faktura – proforma)","Received corrective tax document (Přijatý opravný daňový doklad)","Commitment (Závazek)"],"dependencies":{"agenda":["invoice"]}},"description":"Document type within the Invoices agenda.","propertyOrder":2}}},"createConfigurationRowSchema":null,"configurationDescription":"# POHODA mServer Extractor — Configuration\n\n## Root configuration (shared across all rows)\n\n| Field | Required | Description |\n|-------|----------|-------------|\n| **mServer URL** | Yes | Base URL of the POHODA mServer, e.g. `http://192.168.1.10:444`. Plain HTTP; default mServer port is 444. |\n| **IČ** | Yes | IČ of the POHODA accounting unit to extract. |\n| **POHODA Username** | Yes | POHODA user account (not a Windows account). |\n| **Password** | No | Leave blank if the account has no password. Stored encrypted. |\n\nUse **Test Connection** to verify that the mServer is reachable and credentials are accepted before saving.\n\n## Row configuration (one row = one agenda)\n\n| Field | Required | Description |\n|-------|----------|-------------|\n| **Agenda** | Yes | POHODA data entity to extract (e.g. Invoices, Address book, Stock cards). |\n| **Document Type** | Conditional | Required for typed agendas: Invoices, Orders, Offers, Enquiries. Selects the document direction and sub-type (e.g. *Issued invoice*, *Received invoice*). Hidden for all other agendas. |\n| **Load Mode** | No | `Incremental` (default): fetches only records changed since the last run, upserts by primary key. `Full`: downloads all records and replaces the table — required to capture deletions. |\n| **Output Table Name** | No | Overrides the default Storage table name. Default is the snake_cased agenda, e.g. `address_book` or `invoice_issued_invoice`. |\n| **Column Overrides** | No | JSON object mapping a flattened column name to `{name, type, skip}` — rename, retype, or drop individual columns. |\n\n> **Operational note:** POHODA mServer and the POHODA desktop GUI cannot access the same company data file at the same time. Make sure mServer is running (and the GUI is closed on the server) before scheduling extractions.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["testConnection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-pohoda-mserver","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-pohoda-mserver","name":"developer-portal-v2/keboola.ex-pohoda-mserver","tag":"0.1.1","options":{},"digest":"sha256:4dbbb87ee0f435cdae5128450d1ba52471a2d1715ef2bb6e95a77bda9a1c16e1"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-pohoda-mserver/32/1781655903955.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-pohoda-mserver/64/1781655903955.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-pohoda-mserver/128/1781655903955.png"}},{"id":"keboola.wr-pohoda-mserver","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":48,"name":"POHODA mServer","type":"writer","shortDescription":"Writes records into STORMWARE POHODA accounting software through its mServer XML API.","longDescription":"Writes data into STORMWARE POHODA — a widely used Czech accounting system — through its mServer HTTP/XML API. Each configuration row imports one agenda: address book, invoices, orders, offers, enquiries, stock, cost centres, internal documents or cash vouchers. Input-table columns map to POHODA fields by name, or through an explicit column mapping; document agendas take their line items from a second input table linked by a key column. Each record's outcome — including the document number POHODA assigns — is written to a results table. A running POHODA mServer reachable from Keboola is required.","licenseUrl":"https://github.com/keboola/component-pohoda-mserver/blob/main/LICENSE.md","documentationUrl":"https://help.keboola.com/components/writers/erp/pohoda-mserver/","sourceCodeUrl":"https://github.com/keboola/component-pohoda-mserver","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":true,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Accounting","ERP"],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-tableInput","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"POHODA mServer Connection","properties":{"ico":{"type":"string","title":"IČ (Company ID)","options":{"inputAttributes":{"placeholder":"12345678"}},"required":true,"description":"IČ of the POHODA accounting unit to write to. Must match the unit registered in your POHODA installation.","propertyOrder":2},"base_url":{"type":"string","title":"mServer URL","options":{"inputAttributes":{"placeholder":"http://host:444"}},"required":true,"description":"Base URL of the POHODA mServer, e.g. http://192.168.1.10:444. Plain HTTP only; POHODA mServer does not use HTTPS by default.","propertyOrder":1},"username":{"type":"string","title":"POHODA Username","required":true,"description":"POHODA user account name (not a Windows/domain account).","propertyOrder":3},"#password":{"type":"string","title":"Password","format":"password","description":"POHODA user password. Leave blank if the account has no password set.","propertyOrder":4},"test_connection":{"type":"button","format":"test-connection","options":{"async":{"label":"Test Connection","action":"testConnection"}},"propertyOrder":5}}},"configurationRowSchema":{"type":"object","title":"Agenda Import","properties":{"agenda":{"enum":["addressBook","centre","stock","invoice","order","offer","enquiry","intDoc","voucher"],"type":"string","title":"Agenda","options":{"enum_titles":["Address book (Adresář)","Cost centres (Střediska)","Stock cards (Zásoby)","Invoices (Faktury)","Orders (Objednávky)","Offers (Nabídky)","Enquiries (Poptávky)","Internal documents (Interní doklady)","Cash vouchers (Pokladna)"]},"required":true,"description":"POHODA agenda (data entity) to write to.","propertyOrder":1},"_metadata_":{"type":"object","options":{"hidden":true},"properties":{"table":{"type":"object","properties":{"columns":{"type":"array"}}},"pohoda_fields":{"type":"array"}}},"key_column":{"type":"string","title":"Document Key Column","options":{"dependencies":{"agenda":["invoice","order","offer","enquiry","intDoc","voucher"]}},"description":"Optional override. Column present in both the header and line-items tables that links items to their document (e.g. document_id). Required when items_table is set explicitly.","propertyOrder":8},"offer_type":{"enum":["issuedOffer","receivedOffer"],"type":"string","title":"Offer type","default":"issuedOffer","options":{"enum_titles":["Issued offer (Vydaná nabídka)","Received offer (Přijatá nabídka)"],"dependencies":{"agenda":["offer"]}},"description":"Document type written into the Offers agenda.","propertyOrder":4},"order_type":{"enum":["issuedOrder","receivedOrder"],"type":"string","title":"Order type","default":"issuedOrder","options":{"enum_titles":["Issued order (Vydaná objednávka)","Received order (Přijatá objednávka)"],"dependencies":{"agenda":["order"]}},"description":"Document type written into the Orders agenda.","propertyOrder":3},"items_table":{"type":"string","title":"Line Items Table","options":{"dependencies":{"agenda":["invoice","order","offer","enquiry","intDoc","voucher"]}},"description":"Optional override. Name of the mapped input table holding line items, linked to the header table by the key column below. Auto-detected from the input mapping when not set. Document agendas only.","propertyOrder":7},"enquiry_type":{"enum":["issuedEnquiry","receivedEnquiry"],"type":"string","title":"Enquiry type","default":"issuedEnquiry","options":{"enum_titles":["Issued enquiry (Vydaná poptávka)","Received enquiry (Přijatá poptávka)"],"dependencies":{"agenda":["enquiry"]}},"description":"Document type written into the Enquiries agenda.","propertyOrder":5},"header_table":{"type":"string","title":"Header Table","description":"Optional override. Name of the mapped input table holding one row per record (document header for document agendas). Auto-detected from the input mapping when not set.","propertyOrder":6},"invoice_type":{"enum":["issuedInvoice","issuedCreditNotice","issuedDebitNote","issuedAdvanceInvoice","issuedProformaInvoice","issuedCorrectiveTax","penalty","receivable","receivedInvoice","receivedCreditNotice","receivedDebitNote","receivedAdvanceInvoice","receivedProformaInvoice","receivedCorrectiveTax","commitment"],"type":"string","title":"Invoice type","default":"issuedInvoice","options":{"enum_titles":["Issued invoice (Vydaná faktura)","Issued credit note (Vydaný dobropis)","Issued debit note (Vydaný vrubopis)","Issued advance invoice (Vydaná zálohová faktura – zálohová)","Issued proforma invoice (Vydaná zálohová faktura – proforma)","Issued corrective tax document (Vydaný opravný daňový doklad)","Penalty invoice (Penalizační faktura)","Receivable (Pohledávka)","Received invoice (Přijatá faktura)","Received credit note (Přijatý dobropis)","Received debit note (Přijatý vrubopis)","Received advance invoice (Přijatá zálohová faktura – zálohová)","Received proforma invoice (Přijatá zálohová faktura – proforma)","Received corrective tax document (Přijatý opravný daňový doklad)","Commitment (Závazek)"],"dependencies":{"agenda":["invoice"]}},"description":"Document type written into the Invoices agenda.","propertyOrder":2},"load_columns":{"type":"button","format":"sync-action","options":{"async":{"label":"Load columns","action":"loadColumns"}},"propertyOrder":10},"column_mapping":{"type":"array","items":{"type":"object","required":["source","destination"],"properties":{"source":{"type":"string","title":"Input Column","watch":{"columns":"_metadata_.table.columns"},"options":{"tags":true},"enumSource":"columns","propertyOrder":1},"destination":{"type":"string","title":"POHODA Field","watch":{"fields":"_metadata_.pohoda_fields"},"format":"select","options":{"tags":true},"enumSource":[{"title":"{{item.label}}","value":"{{item.field_name}}","source":"fields"}],"propertyOrder":2}}},"title":"Column Mapping","format":"table","description":"Optional. Map input columns to POHODA fields. Leave empty if your columns already use the POHODA field names.","propertyOrder":9}}},"createConfigurationRowSchema":null,"configurationDescription":"# POHODA mServer Writer — Configuration\n\n## Root configuration (shared across all rows)\n\n| Field | Required | Description |\n|-------|----------|-------------|\n| **mServer URL** | Yes | Base URL of the POHODA mServer, e.g. `http://192.168.1.10:444`. Plain HTTP; default mServer port is 444. |\n| **IČ** | Yes | IČ of the POHODA accounting unit to write to. |\n| **POHODA Username** | Yes | POHODA user account (not a Windows account). |\n| **Password** | No | Leave blank if the account has no password. Stored encrypted. |\n\nUse **Test Connection** to verify that the mServer is reachable and credentials are accepted before saving.\n\n## Row configuration (one row = one agenda)\n\n| Field | Required | Description |\n|-------|----------|-------------|\n| **Agenda** | Yes | POHODA data entity to write to (e.g. Invoices, Address book, Stock cards). |\n| **Document Type** | Conditional | Required for typed agendas: Invoices, Orders, Offers, Enquiries. Selects document direction and sub-type (e.g. *Issued invoice*). Hidden for other agendas. |\n| **Header Table** | No | Input table with one row per record (document header for document agendas). Leave blank when exactly one table is mapped. |\n| **Line Items Table** | Conditional | Input table of line items for document agendas, linked to the header table by the key column. |\n| **Document Key Column** | Conditional | Column present in both the header and line-items tables that groups items into one document. Required when a line-items table is set. |\n\nInput columns are matched to POHODA fields by name (per agenda); unknown columns are ignored and empty values are skipped. POHODA assigns document numbers itself; the assigned number for each record is reported in the **write_results** output table.\n\n> **Operational note:** POHODA mServer and the POHODA desktop GUI cannot access the same company data file at the same time. Make sure mServer is running (and the GUI is closed on the server) before scheduling imports.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["loadColumns","testConnection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.wr-pohoda-mserver","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-pohoda-mserver","name":"developer-portal-v2/keboola.wr-pohoda-mserver","tag":"0.1.1","options":{},"digest":"sha256:65702e1779a2bed2f0c5feb66cd19320a2b36338818824826c1603c1084d4f99"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-pohoda-mserver/32/1781655908854.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-pohoda-mserver/64/1781655908854.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-pohoda-mserver/128/1781655908854.png"}},{"id":"phalanx-ai.ex-pop3-attachment","vendor":{"id":"phalanx-ai","name":"Phalanx s.r.o.","address":"Grösslingova 61,\nBratislava,\nSlovakia","email":"marek.grac@phalanx.ai","type":"other"},"version":37,"name":"POP3 Attachment","type":"extractor","shortDescription":"Email attachments via POP3 protocol","longDescription":"## Email Attachment Extractor\n\nThe email attachment extractor allows you to download email attachments from the POP3 mailbox. There is no restriction for attachment type, so you can download also XLS files or images. \n\n## Configuration\n\nA configuration consist of mostly mandatory parameters. A sample configuration can be found in the [component's repository](https://github.com/Phalanx-Ai/ex-pop3-attachment) \n\n* POP3 server (`server`) - a name or IP address of the POP3 server\n* username (`username`) - a username used to login to POP3 server\n* password (`#password`) - a password associated with username\n* valid email address (`accept_from`) - accept only emails from a given address\n* valid filename of attachment (`accept_filename`) - accept only attachments with a given filename\n* valid RE of filename of attachement (`accept_re_filename`) - accept only attachments that matches RE\n\nOne of `accept_filename`, `accept_re_filename` is required.\n\n## Output\n\nA file with content of email attachment, the name matches the filename of the attachment. \n","licenseUrl":"https://github.com/marxsk/ex-pop3-attachment/blob/master/LICENSE","documentationUrl":"https://github.com/Phalanx-Ai/ex-pop3-attachment/blob/master/README.md","sourceCodeUrl":"https://github.com/Phalanx-Ai/ex-pop3-attachment.git","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-processors"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["username","#password","server","accept_from","accept_timedelta_hours"],"properties":{"server":{"type":"string","title":"FQDN for POP3 server","default":"","minLength":1,"propertyOrder":3},"username":{"type":"string","title":"Username","default":"","minLength":1,"propertyOrder":1},"#password":{"type":"string","title":"Password","format":"password","default":"","minLength":1,"propertyOrder":2},"accept_from":{"type":"string","title":"Email address to accept","default":"","minLength":1,"propertyOrder":4},"accept_filename":{"type":"string","title":"Filename to download","default":"","minLength":1,"propertyOrder":5},"output_filename":{"type":"string","title":"Target output filename","default":"","minLength":1,"propertyOrder":6},"accept_re_filename":{"type":"string","title":"Regex to match filename(s) to download","default":"","minLength":1,"propertyOrder":5},"accept_timedelta_hours":{"type":"integer","title":"Accept only message that are not older than X hours","default":24,"propertyOrder":7}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"### Configuration\n\nA configuration consist of two mandatory parameters.\n\n* api_token - a token used to authorize for Monitora API\n* feed_id - identification of news feed","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/phalanx-ai.ex-pop3-attachment","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/phalanx-ai.ex-pop3-attachment","name":"developer-portal-v2/phalanx-ai.ex-pop3-attachment","tag":"0.5.0","options":{},"digest":"sha256:52158d0d5a2b6193e9527674b4e3962c0ac071438bde36c4fd5928e4fc1d8df5"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/phalanx-ai.ex-pop3-attachment/32/1602488450446.png","64":"https://ui.keboola-assets.com/developer-portal/icons/phalanx-ai.ex-pop3-attachment/64/1602488450446.png","128":null}},{"id":"kds-team.app-portable","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":106,"name":"Portable.io Flow Runner","type":"application","shortDescription":"Triggers Portable.io flow runs.","longDescription":"The Portable.io Flow Runner enables the triggering of flows in Portable.io. It provides an option to wait for completion, which can be useful for further processing of the obtained data.","licenseUrl":"https://github.com/keboola/component-portable/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/component-portable/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/component-portable","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"easy","category":null,"categories":["API"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Component configuration","required":["credentials"],"properties":{"credentials":{"type":"object","title":"Authorization","required":["#api_token"],"properties":{"#api_token":{"type":"string","title":"Portable.io API token","format":"password","propertyOrder":1},"test_connection":{"type":"button","format":"test-connection","propertyOrder":2}},"propertyOrder":1}}},"configurationRowSchema":{"type":"object","title":"Configuration Parameters","required":[],"properties":{"flow_id":{"enum":[],"type":"string","title":"Portable.io Flow ID","format":"select","options":{"async":{"label":"Re-load flows","action":"list_flows","autoload":[]}},"uniqueItems":true,"propertyOrder":30},"run_parameters":{"type":"object","title":"Run parameters","properties":{"wait_until_finished":{"type":"boolean","title":"Wait for Completion","format":"checkbox","default":false,"options":{"tooltip":"If selected, the component will wait for the execution of the flow in Portable.io to complete."},"propertyOrder":40}},"description":"","propertyOrder":60}}},"createConfigurationRowSchema":null,"configurationDescription":"First, in the component configuration below, fill in the Portable.io API token.\n\nNext, insert one or more rows of configuration for each Portable flow you plan to execute. Indicate whether the Keboola job should wait until the flow run is complete and if any errors during the flow run should cause the job to fail.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["list_flows","testConnection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.app-portable","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.app-portable","name":"developer-portal-v2/kds-team.app-portable","tag":"0.0.4","options":{},"digest":"sha256:343f461c206192307fbb95954313b59eb57e63eb0cb11d5c23609fa5d07582e1"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-portable/32/1711004386555.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-portable/64/1711004386555.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-portable/128/1711004386555.png"}},{"id":"keboola.ex-db-pgsql","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":195,"name":"PostgreSQL","type":"extractor","shortDescription":"Extracts query results from a PostgreSQL database, over an optional SSH tunnel.","longDescription":"This component imports data from selected tables or results from arbitrary SQL queries from the [PostgreSQL](http://www.postgresql.org/) database. It connects to the database, executes your queries, and stores the results in Keboola Connection Storage.\n\nTo configure this extractor, you need to\n\n- provide database credentials, and \n- have a connection to the database you want to read, preferably [secure](https://help.keboola.com/extractors/database/#connecting-to-database).\n\nIncremental load is optional.","licenseUrl":"https://github.com/keboola/db-extractor-pgsql/blob/master/LICENSE","documentationUrl":"https://help.keboola.com/extractors/database/sqldb/","sourceCodeUrl":"https://github.com/keboola/db-extractor-pgsql","requiredMemory":"2048m","processTimeout":72000,"features":["container-root-user","has-sample-data","has-simplified-ui"],"encryption":true,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"easy","category":null,"categories":["Database"],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":{},"configurationSchema":{"type":"object","$defs":{"credentials":{"type":"object","required":["host","port","user","#password","database"],"properties":{"ssh":{"type":"object","properties":{"keys":{"type":"object","properties":{"public":{"type":"string"},"#private":{"type":"string"}}},"user":{"type":["string","null"]},"enabled":{"type":"boolean"},"sshHost":{"type":["string","null"]},"sshPort":{"type":["string","integer","null"],"default":22},"localPort":{"type":["string","integer"]},"remoteHost":{"type":"string"},"remotePort":{"type":["string","integer"]}}},"ssl":{"type":"object","properties":{"ca":{"type":["string","null"]},"#ca":{"type":["string","null"]},"#key":{"type":["string","null"]},"cert":{"type":["string","null"]},"#cert":{"type":["string","null"]},"cipher":{"type":"string"},"enabled":{"type":"boolean"},"verifyServerCert":{"type":"boolean"},"ignoreCertificateCn":{"type":"boolean"}}},"host":{"type":"string"},"port":{"type":["string","integer"]},"user":{"type":"string"},"database":{"type":"string"},"#password":{"type":"string"}}}},"title":"keboola.ex-db-pgsql — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","required":["db"],"properties":{"db":{"$ref":"#/$defs/credentials"}}},"configurationRowSchema":{"type":"object","title":"keboola.ex-db-pgsql — Row Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"id":{"type":["string","integer"]},"name":{"type":"string"},"query":{"type":"string"},"table":{"oneOf":[{"type":"string"},{"type":"object","properties":{"schema":{"type":"string"},"tableName":{"type":"string"}}}]},"tables":{"type":"array","options":{"async":{"label":"Re-load tables","action":"getTables"}}},"columns":{"type":"array","items":{"type":"string"}},"enabled":{"type":"boolean"},"primaryKey":{"type":"array","items":{"type":"string"}},"incremental":{"type":"boolean"},"outputTable":{"type":"string"},"advancedMode":{"type":"boolean"},"incrementalFetchingLimit":{"type":"integer"},"incrementalFetchingColumn":{"type":"string"},"useConsistentFallbackBooleanStyle":{"type":"boolean"}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":["testConnection","getTables"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-db-pgsql","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-db-pgsql","name":"developer-portal-v2/keboola.ex-db-pgsql","tag":"7.3.5","options":{},"digest":"sha256:5114fa44a2ba96adbaaf8a155f3273c2de7828740d8357389a9925f59eb8c630"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-db-pgsql/32/1677063621754.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-db-pgsql/64/1677063621754.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-db-pgsql/128/1677063621754.png"}},{"id":"keboola.wr-db-pgsql","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":95,"name":"PostgreSQL","type":"writer","shortDescription":"Writes data to a PostgreSQL database.","longDescription":"This component exports tables from Keboola Connection Storage to a [PostgreSQL](https://www.postgresql.org/) database.\n\nTo configure the writer, you need to\n\n- provide database credentials, and \n- have a connection to the database you want to write to, preferably [secure](https://help.keboola.com/extractors/database/#connecting-to-database).\n\nThe writer supports incremental writing and incremental processing.","licenseUrl":"https://github.com/keboola/db-writer-pgsql/blob/master/LICENSE.md","documentationUrl":"https://help.keboola.com/writers/database/postgresql/","sourceCodeUrl":"https://github.com/keboola/db-writer-pgsql","requiredMemory":"2g","processTimeout":43200,"features":["container-root-user","dev-branch-configuration-unsafe"],"encryption":true,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Database"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","$defs":{"credentials":{"type":"object","required":["host","port","user","#password","database","schema"],"properties":{"ssh":{"type":"object","properties":{"keys":{"type":"object","properties":{"public":{"type":"string"},"#private":{"type":"string"}}},"user":{"type":["string","null"]},"enabled":{"type":"boolean"},"sshHost":{"type":["string","null"]},"sshPort":{"type":["string","integer","null"],"default":22},"localPort":{"type":["string","integer"]},"remoteHost":{"type":"string"},"remotePort":{"type":["string","integer"]}}},"host":{"type":"string"},"port":{"type":["string","integer"],"default":5432},"user":{"type":"string"},"driver":{"type":"string"},"schema":{"type":"string"},"database":{"type":"string"},"#password":{"type":"string"}}}},"title":"keboola.wr-db-pgsql — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","required":["db"],"properties":{"db":{"$ref":"#/$defs/credentials"}}},"configurationRowSchema":{"type":"object","title":"keboola.wr-db-pgsql — Row Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"items":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"size":{"type":["string","integer","null"]},"type":{"type":"string"},"dbName":{"type":"string"},"default":{"type":["string","null"]},"nullable":{"type":"boolean"}}}},"dbName":{"type":"string"},"tables":{"type":"array","options":{"async":{"label":"Re-load tables","action":"getTables"}}},"tableId":{"type":"string"},"primaryKey":{"type":"array","items":{"type":"string"}},"incremental":{"type":"boolean"}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["testConnection"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.wr-db-pgsql","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-db-pgsql","name":"developer-portal-v2/keboola.wr-db-pgsql","tag":"2.2.0","options":{},"digest":"sha256:c699338b9759288e92e9a65b7ca9b39eba6d8623683099fafd971c329180bff3"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-db-pgsql/32/1677063641647.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-db-pgsql/64/1677063641647.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-db-pgsql/128/1677063641647.png"}},{"id":"kds-team.ex-postgres-cdc","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":775,"name":"PostgreSQL CDC","type":"extractor","shortDescription":"Captures row-level inserts, updates, and deletes from PostgreSQL (CDC).","longDescription":"The connector captures row-level changes in the schemas of a PostgreSQL database. It uses the `pgoutput`\nlogical decoding output plug-in available in PostgreSQL 10+. It is maintained by the PostgreSQL community, and\nused by PostgreSQL itself for logical replication. This plug-in is always present so no additional libraries need to be\ninstalled.\n\nThe first time it connects to a PostgreSQL server or cluster, the connector takes a consistent snapshot\nof all schemas. After that snapshot is complete, the connector continuously captures row-level changes that insert,\nupdate, and delete database content and that were committed to a PostgreSQL database.\n\n\n**Functionality** \n\n- The connector performs an initial sync of the tables.\n  - This step can be skipped or modified by custom snapshot queries for each table. \n- The connector reads the WAL log, produces change events for row-level `INSERT`, `UPDATE`, and `DELETE` operations.\n- The schema changes are handled automatically without interruption and without needing a re-sync.\n- You can choose to keep all changes in the resulting tables or deduplicate the batch result so that only the latest states of each record are reflected in the result table.\n- The connector uses micro-batches, so you can schedule them as often as needed, whether every 5 minutes or twice a day.\n  - This approach gives you more control over the resulting cost of the solution and lets you leverage the power of log-based replication even for smaller use cases if needed.\n  - If your use case requires short interval syncs, reach out to us for information about a cost-efficient CDC add-on license.","licenseUrl":null,"documentationUrl":"https://help.keboola.com/components/extractors/database/postgresql/#postgresql-log-based-cdc","sourceCodeUrl":"https://github.com/keboola/python-cdc-component/blob/main/db_components/ex_postgres_cdc/","requiredMemory":"8000m","processTimeout":86400,"features":["container-root-user"],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":true,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"medium","category":null,"categories":["Database"],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-resetState"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Authorization","required":["db_settings"],"properties":{"db_settings":{"type":"object","title":"Connection Settings","format":"grid-strict","required":["#password","host","port","user","database"],"properties":{"host":{"type":"string","title":"Hostname","options":{"grid_columns":8},"propertyOrder":1},"port":{"type":"integer","title":"Port","default":5432,"options":{"grid_columns":4},"propertyOrder":10},"user":{"type":"string","title":"User","options":{"grid_columns":12},"propertyOrder":20},"database":{"type":"string","title":"Database","options":{"grid_columns":12},"propertyOrder":50},"#password":{"type":"string","title":"Password","format":"password","options":{"grid_columns":12},"propertyOrder":40},"ssh_options":{"type":"object","format":"ssh-editor","propertyOrder":60},"test_connection":{"type":"button","format":"sync-action","options":{"async":{"label":"Validate Connection","action":"validate_connection"}},"propertyOrder":500}},"description":"The connector is based on Debezium Connector, for the Postgres setup follow the official <a href=\"https://debezium.io/documentation/reference/stable/connectors/postgresql.html#postgresql-permissions\">instructions</a>","propertyOrder":1},"destination":{"type":"object","title":"Destination","required":["load_type"],"properties":{"load_type":{"enum":["incremental_load","full_load","append_incremental","append_full"],"type":"string","title":"Load Type","default":"incremental_load","options":{"tooltip":"Append modes do not perform deduplication and do not set output table primary key. The result tables will include additional columns: `KBC__EVENT_TIMESTAMP_MS` and `KBC__BATCH_EVENT_ORDER`. \n\n **Note** that changing this parameter after the initial run **may result in errors and drop of the existing tables is recommended** prior changing this parameter.","enum_titles":["Incremental Load - Deduplicated","Full Load - Deduplicated","Incremental Load - Append","Full Load - Append"]},"description":"If Full load is used, the destination table will be overwritten every run. If Incremental Load is used, data will be upserted into the destination table based on the primary key. Append modes do not contain any primary keys and are not deduplicated.","propertyOrder":30}},"propertyOrder":600},"column_masks":{"type":"object","title":"Column Masks","properties":{"hash_masks":{"type":"array","items":{"type":"object","title":"Column","required":["algorithm","salt","columns"],"properties":{"salt":{"type":"string","title":"Salt","options":{"tooltip":"The salt that will be used to hash the string.","inputAttributes":{"placeholder":"CzQMA0cB5K"}},"propertyOrder":10},"columns":{"$ref":"#/definitions/column_list_regex","title":"Columns","options":{"tags":true,"tooltip":"(comma separated list) of fully-qualified names for columns are of the form `schemaName.tableName.columnName`.\n\nTo match the name of a column, connector applies the regular expression that you specify as an **anchored regular expression**. That is, the expression is used to match the entire name string of the column; it does not match substrings that might be present in a column name.","inputAttributes":{"placeholder":"schemaName.tableName.columnName,inventory.*.email"}},"description":"","propertyOrder":20},"algorithm":{"enum":["MD2","MD5","SHA-256","SHA-384","SHA-512"],"type":"string","title":"Algorithm","options":{"tooltip":"The algorithm that will be used to hash the string. \n\nBased on the hash function that is used, referential integrity is maintained, while column values are replaced with pseudonyms. \n\nSupported hash functions are described in the [MessageDigest section](https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#MessageDigest) of the Java Cryptography Architecture Standard Algorithm Name Documentation.\n\n**NOTE** Hashing strategy version 2 is used to ensure fidelity across job runs and configurations."},"propertyOrder":1}}},"title":"Hash Masks","format":"table","options":{"dependencies":{"enable_hash_masks":true}},"minItems":1,"propertyOrder":35},"length_masks":{"type":"array","items":{"type":"object","title":"Column","required":["length","columns"],"properties":{"length":{"type":"integer","title":"Length","options":{"tooltip":"The length of the string that will be replaced with the `*` character. If 0 is selected, the entire string is replaced with empty character."},"propertyOrder":10},"columns":{"$ref":"#/definitions/column_list_regex","title":"Columns","options":{"tags":true,"tooltip":"(comma separated list) of fully-qualified names for columns are of the form `schemaName.tableName.columnName`.\n\nTo match the name of a column, connector applies the regular expression that you specify as an **anchored regular expression**. That is, the expression is used to match the entire name string of the column; it does not match substrings that might be present in a column name.","inputAttributes":{"placeholder":"schemaName.tableName.columnName,inventory.*.email"}},"description":"","propertyOrder":20}}},"title":"Length Masks","format":"table","options":{"dependencies":{"enable_length_masks":true}},"minItems":1,"propertyOrder":20},"enable_hash_masks":{"type":"boolean","title":"Hash Mask","format":"checkbox","default":false,"description":"If enabled, the connector will hash the string columns in the output data using selected algorithm and salt.","propertyOrder":30},"enable_length_masks":{"type":"boolean","title":"Length Mask","format":"checkbox","default":false,"description":"If enabled, the connector will mask the length of the string columns in the output data. The length of the string will be replaced with the `*` character.","propertyOrder":10}},"propertyOrder":15},"sync_options":{"type":"object","title":"Sync Options","required":["source_signal_table","snapshot_mode"],"properties":{"max_wait_s":{"type":"integer","title":"Max Wait [s]","default":100,"description":"Maximum time in seconds to wait for the next CDC event before the component stops. Default is 100 seconds.","propertyOrder":80},"handle_binary":{"enum":["hex","base64","base64-url-safe"],"type":"string","title":"Binary data handler","default":"hex","options":{"tooltip":"Specifies how binary (bytea) columns should be represented in change events:\n\n- `base64` represents binary data as base64-encoded strings.\n- `base64-url-safe` represents binary data as base64-url-safe-encoded strings.\n- `hex` represents binary data as hex-encoded (base16) strings."},"description":"Marks how to handle binary data.","propertyOrder":7},"max_runtime_s":{"type":"integer","title":"Max Runtime [s]","maximum":85500,"description":"Maximum total runtime of the CDC run in seconds. If not set, the component timeout is used.","propertyOrder":90},"snapshot_mode":{"enum":["chunked_blocking","no_data"],"type":"string","title":"Replication Mode","options":{"enum_titles":["Standard","Changes only"]},"description":"Standard mode performs full sync of the tables on the first run. The Changes only mode will skip the initial full sync.","propertyOrder":5},"ro_mode_helper":{"type":"string","watch":{"val":"db_settings.ro_mode"},"options":{"hidden":true},"template":"{{val}}","description":"Helper dummy element to render source_signal_table"},"enable_heartbeat":{"type":"boolean","title":"Enable Heartbeat","format":"checkbox","default":false,"description":"Enables the heartbeat signal that is used to prevent WAL disk space overflow when tracking low transaction tables.","propertyOrder":60},"heartbeat_config":{"type":"object","title":"Heartbeat Configuration","options":{"tooltip":"This configuration avoids PostgreSQL disk space consumed by WAL files to spike or increase out of usual proportions that can happen in following scenarios:\n\n- There are many updates in a database that is being tracked but only a tiny number of updates are related to the table(s) and schema(s) for which the connector is capturing changes. This situation can be easily solved with periodic heartbeat events.\n- The PostgreSQL instance contains multiple databases and one of them is a high-traffic database. Debezium captures changes in another database that is low-traffic in comparison to the other database. Debezium then cannot confirm the LSN as replication slots work per-database and Debezium is not invoked. As WAL is shared by all databases, the amount used tends to grow until an event is emitted by the database for which Debezium is capturing changes. \n","dependencies":{"enable_heartbeat":true}},"properties":{"interval_ms":{"type":"integer","title":"Heartbeat Interval [ms]","default":3000,"description":"The interval in milliseconds at which the connector performs the heartbeat action in the source database. If you observe that the heartbeat is not emitted during connector run, you can decrease the interval.","propertyOrder":10},"action_query":{"type":"string","title":"Action Query","default":"UPDATE kbc.heartbeat SET last_heartbeat = NOW()","options":{"tooltip":"This query will be sent regularly by the connector in the specified Heartbeat interval. **Note that the table must exist** in the source database and be tracked by the connector. \n\n The recommended schema is:  \n\n ```sql\nCREATE SCHEMA IF NOT EXISTS kbc;\nCREATE TABLE kbc.heartbeat (id SERIAL PRIMARY KEY, last_heartbeat TIMESTAMP NOT NULL DEFAULT NOW());\nINSERT INTO kbc.heartbeat (last_heartbeat) VALUES (NOW());\n``` \n\n For more information please refer to the documentation."},"description":"The query that the connector uses to send heartbeat signals to the source database. The query must be a valid SQL statement that the source database can execute and the heartbeat table must be tracked in the Source settings.","propertyOrder":20}},"propertyOrder":70},"snapshot_fetch_size":{"type":"integer","title":"Snapshot Fetch Size","default":10240,"description":"During a snapshot, the connector reads table content in batches of rows. This property specifies the maximum number of rows in a batch.","propertyOrder":20},"snapshot_statements":{"type":"array","items":{"type":"object","properties":{"table":{"type":"string","title":"Table","options":{"input_width":"300px","inputAttributes":{"placeholder":"customers.orders"}},"description":"Fully qualified table name, e.g. `schemaName.tableName`.","propertyOrder":10},"statement":{"type":"string","title":"Statement","format":"sql","options":{"inputAttributes":{"placeholder":"SELECT * FROM [customers].[orders] WHERE delete_flag = 0 ORDER BY id DESC"}},"description":"The custom SQL SELECT statement that will be used to fetch the initial snapshot.","propertyOrder":20}}},"title":"Snapshot Statements","format":"table","options":{"dependencies":{"snapshot_statement_override":true}},"description":"Define a custom SQL SELECT statement that will be used to fetch the initial snapshot for specified tables. ","uniqueItems":true,"propertyOrder":50},"source_signal_table":{"enum":[],"type":"string","title":"Signalling Table","format":"select","options":{"async":{"label":"Re-load tables","action":"get_tables","autoload":["parameters.source_settings.schemas"]},"tooltip":"You need to create a signaling table by submitting a standard SQL DDL query to the source database. \n\nThe following example shows a `CREATE TABLE` command that creates a three-column `debezium_signal` table: \n\n```sql\nCREATE TABLE debezium_signal (id VARCHAR(42) PRIMARY KEY, type VARCHAR(32) NOT NULL, data VARCHAR(2048) NULL);\n``` \n\n **Note** that the connector must have write access to the signaling table.","dependencies":{"ro_mode_helper":"false"}},"description":"A system signal table that will be used by to connector to store various signal events and incremental snapshot watermarks.","propertyOrder":1},"snapshot_statement_override":{"type":"boolean","title":"Snapshot Statement Override","format":"checkbox","description":"Define a custom SQL SELECT statement that will be used to fetch the initial snapshot. ","propertyOrder":40}},"propertyOrder":15},"source_settings":{"type":"object","title":"Data Source","properties":{"tables":{"type":"array","items":{"enum":[],"type":"string"},"title":"Tables to sync","format":"select","options":{"async":{"label":"Re-load tables","action":"get_tables","autoload":["parameters.source_settings.schemas"]}},"description":"If left empty all tables are synced.","uniqueItems":true,"propertyOrder":102},"schemas":{"type":"array","items":{"enum":[],"type":"string"},"title":"Schemas","format":"select","options":{"async":{"label":"Re-load schemas","action":"get_schemas","autoload":["parameters.db_settings.user","parameters.db_settings.#password","parameters.db_settings.database"]}},"uniqueItems":true,"propertyOrder":100},"column_filter":{"$ref":"#/definitions/column_list_regex","title":"Column List","options":{"tags":true,"tooltip":"(comma separated list) of fully-qualified names for columns are of the form `schemaName.tableName.columnName`.\n\nTo match the name of a column, connector applies the regular expression that you specify as an **anchored regular expression**. That is, the expression is used to match the entire name string of the column; it does not match substrings that might be present in a column name.","dependencies":{"column_filter_type":["exclude","include"]},"inputAttributes":{"placeholder":"schemaName.tableName.columnName,\\w+\\.\\w+\\.email"}},"propertyOrder":120},"column_filter_type":{"enum":["none","exclude","include"],"type":"string","title":"Column Filter Type","default":"none","description":"If not specified all columns are synced. Define filters as list of regular expressions that match the fully-qualified names of columns that should be included or excluded from change event record values.","propertyOrder":103}},"propertyOrder":10},"advanced_parameters":{"type":"object","title":"Advanced parameters","format":"editor","options":{"dependencies":{"use_advanced_parameters":true}},"description":"Advanced parameters to be passed to Debezium. Use a JSON object format to pass parameters as key/value pairs. Example: `{\"key\":\"value\"}`","propertyOrder":810},"use_advanced_parameters":{"type":"boolean","title":"Pass advanced parameters to Debezium","format":"checkbox","description":"If checked, users can specify advanced parameters to be passed to Debezium. Use at your own risk!","propertyOrder":800},"replication_plugin_options":{"type":"object","title":"Replication Plugin Advanced Options","properties":{"publication_name":{"type":"string","title":"Publication Name","options":{"dependencies":{"publication_auto_create_mode":"disabled"}},"description":"The name of the publication that the connector should use to replicate the changes.","propertyOrder":20},"publication_auto_create_mode":{"enum":["disabled","all_tables","filtered"],"type":"string","title":"Publication Auto Create Mode","default":"filtered","options":{"tooltip":"- **all_tables**\n  - If a publication exists, the connector uses it. \n  - If a publication does not exist, the connector creates a publication for all tables: `CREATE PUBLICATION <publication_name> FOR ALL TABLES;`\n- **disabled**\n  - The connector does not attempt to create a publication. A database administrator or the user configured to perform replications must have created the publication before running the connector. \n  - If the connector cannot find the publication, the connector throws an exception and stops.\n- **filtered**\n  - If a publication does not exist, the connector creates one for specific tables.\n  - If the publication exists, the connector updates the publication for currently selected tables.\n\n"},"description":"The mode that defines how the connector should handle the publication creation.","propertyOrder":10},"replica_identity_autoset_values":{"type":"array","items":{"enum":[],"type":"string"},"title":"Replica Identity override values","format":"select","options":{"tags":true,"tooltip":"This option will overwrite the existing value in database. List of regular expressions that match fully-qualified tables and replica identity value to be used in the table.\n\nIf you wish to **keep previous values on DELETED records**, the replica identity must be set to `FULL`, otherwise all values except primary key will be empty on deleted records.\n\nLeave empty to keep the database default.","inputAttributes":{"placeholder":["schema1.*:FULL, schema2.table2:NOTHING, schema2.table3:INDEX idx_name"]}},"description":"The allows override of value for <a href='https://www.postgresql.org/docs/current/sql-altertable.html#SQL-ALTERTABLE-REPLICA-IDENTITY'>replica identity</a> at table level.","uniqueItems":true,"propertyOrder":60}},"propertyOrder":20}},"definitions":{"column_list_regex":{"type":"array","items":{"type":"string"},"title":"Column List","format":"select","options":{"tags":true,"tooltip":"(comma separated list) of fully-qualified names for columns are of the form `schemaName.tableName.columnName`.\n\nTo match the name of a column, connector applies the regular expression that you specify as an **anchored regular expression**. That is, the expression is used to match the entire name string of the column; it does not match substrings that might be present in a column name.","inputAttributes":{"placeholder":"schemaName.tableName.columnName,\\w+\\.\\w+\\.email"}},"description":"Define filters as list of regular expressions that match the fully-qualified names of columns that should be filtered in change event record values.","uniqueItems":true}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"The connector is based on Debezium Connector, for the Postgres permissions setup follow the\nofficial [instructions](https://debezium.io/documentation/reference/stable/connectors/postgresql.html#postgresql-permissions)","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["testConnection","get_tables","get_schemas","generate_ssh_key","validate_connection","show_snapshot_stats"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"verbose","200":"verbose","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.ex-postgres-cdc","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-postgres-cdc","name":"developer-portal-v2/kds-team.ex-postgres-cdc","tag":"0.17.6","options":{},"digest":"sha256:f4f365bca895f839882f93046a0d2da332f6200f277705dabbd641e9e7a84730"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-postgres-cdc/32/1689686158524.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-postgres-cdc/64/1689686158524.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-postgres-cdc/128/1689686158524.png"}},{"id":"kds-team.wr-powerbi","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":216,"name":"PowerBI","type":"writer","shortDescription":"Writes tables to Power BI as push datasets.","longDescription":"PowerBI is a business analytics solution that aims to provide interactive visualization and share insights across your organization.\nPowerBI writer's purpose is strive to aid users defining destinated table relationships and exporting structured and enriched tables into PowerBI business analytics platform.","licenseUrl":"https://github.com/keboola/component-powerbi/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-powerbi/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-powerbi","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Data Visualization"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput","genericDockerUI-authorization"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"PowerBI Configuration","required":["dataset","workspace","table_relationship","incremental_load"],"properties":{"dataset":{"type":"array","items":{"properties":{"dataset_type":{"enum":["Name","ID"],"type":"string","title":"Type"},"dataset_input":{"type":"string","title":"Value"}}},"title":"Dataset","format":"table","maxItems":1,"propertyOrder":300},"workspace":{"type":"string","title":"Workspace ID","description":"Please leave this blank if user is trying to export into the signed-in account's workspace","propertyOrder":200},"incremental_load":{"type":"boolean","title":"Incremental Load","default":false,"description":"AWARE! This does not mean that the table will load into the PowerBI incrementally even with the established table relationship. With increment load enabled, it will simply not drop the tables in the relative destination and append what is configured from Keboola to PowerBI.","PropertyOrder":350},"table_relationship":{"type":"array","items":{"type":"object","title":"Relationship","properties":{"foreign_key_table":{"type":"string","title":"Foreign Key Table","propertyOrder":300},"primary_key_table":{"type":"string","title":"Primary Key Table","propertyOrder":100},"foreign_key_column_name":{"type":"string","title":"Foreign Key Column Name","propertyOrder":400},"primary_key_column_name":{"type":"string","title":"Primary Key Column Name","propertyOrder":200}}},"title":"Table Relationships","format":"table","description":"Setting up table's relationships","propertyOrder":450}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"Each extractor configuration can only exported `one` dataset to PowerBI. Writer will be using the data_type defined in metadata in Keboola Storage. If data_type is not configured for the input table, writer will automatically assign that column as `string`.\n\n## PowerBI API Limitations\n\nDatasets created via PowerBI Desktop `CANNOT` be used as a push dataset in PowerBI REST API (this component). To be able to update/add rows into the dataset, the dataset has to be created via PowerBI REST API (or via this component).\n\nTo POST Rows\n\n1. 75 max columns\n2. 75 max tables\n3. 10,000 max rows per single POST rows request\n4. 1,000,000 rows added per hour per dataset\n5. 120 POST rows requests per minute per dataset\n6. If table has 250,000 or more rows, 120 POST rows requests per hour per dataset\n7. 200,000 max rows stored per table in FIFO dataset\n8. 5,000,000 max rows stored per table in 'none retention policy' dataset\n9. 4,000 characters per value for string column in POST rows operation\n\n## Parameters\n\n1. Workspace\n    - The workspace where the user wants to output their dataset.\n    - Please leave this blank if the user is exporting the dataset into the signed in account's \"My Workspace\"\n\n2. Dataset - Required\n    - Name or ID of the dataset the user wish to name this configuration\n    ## WARNING\n        1. If the same dataset name exists in the same Workspace with a different schema, writer will drop the existing dataset in the Workspace and re-create a new one with the input dataset name\n        2. If the ID of the dataset is specified, users are required to ensure the input schema matches with the destinated table's schema in PowerBI\n        3. If input dataset name is found multiple times in the same Workspace, writer will ask users to specify the dataset ID instead and terminate the current run\n        4. If specified dataset ID is not found, the writer will fail with an error message\n\n3. Incremental load\n    - AWARE! This does not mean that the table will load into the PowerBI incrementally even with the established table relationship. With increment load enabled, it will simply not drop the tables in the relative destination and append what is configured from Keboola to PowerBI.\n\n4. Table Relationships\n    - User are required to configure this Relationship table if user is hoping to link tables via primary keys and foreign keys. Writer will fail if relationship is not configured properly.\n    - Required Parameters:\n        1. Primary Key Table\n            - The name of the source table\n        2. Primary Key Column Name\n            - Primary key of the source table\n            - Input format: ```string```\n        3. Foreign Key Table\n            - The name of the target table\n        4. Foreign Key Column Name\n            - Primary key of the target table\n            - Input format: ```string```\n\n        ### Example\n\n        Tables|Primary Key\n        -|-\n        `Order`|order_id\n        `Order-Item`|order_item_id\n\n        `Order` table contains a list of invoices; `Order-Item` contains the items that are purchased. Every `Order-Item` should have an `Order`'s order_id attached to it.\n\n        ### Relationship\n\n        `Order`|-|`Order-Item`\n        -|-|-\n        One|to|Many\n\n        ### Sample Relationship Configuration\n\n        Primary Key Table|Primary Key Column Name|Foreign Key Table|Foreign Key Column Name\n        -|-|-|-\n        `Order`|order_id|`Order-Item`|order_id","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":216,"uri":"docker/kds-team.wr-powerbi","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.wr-powerbi","name":"developer-portal-v2/kds-team.wr-powerbi","tag":"0.0.8","options":{},"digest":"sha256:f3237f0ba39625010faf828230be66c69e6e77c7b19a7dd01bcb661e1332a0d3"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.wr-powerbi/32/1623157230129.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.wr-powerbi/64/1623157230129.png","128":null}},{"id":"kds-team.app-powerbi-refresh","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":406,"name":"PowerBI Refresh","type":"application","shortDescription":"Refreshing PowerBI's datasets","longDescription":"The primary purpose of the Power BI Refresh application is to refresh the configured datasets within a Power BI workspace.\n\n**Important:** Each Power BI Refresh configuration can only work with a single Power BI workspace. If you need to refresh datasets in multiple Power BI workspaces, you must create a separate configuration for each workspace.","licenseUrl":"https://github.com/keboola/component-powerbi-refresh/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-powerbi-refresh/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-powerbi-refresh","requiredMemory":"512m","processTimeout":7200,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-authorization"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"PowerBI Refresh Configuration","required":[],"properties":{"wait":{"enum":["Yes","No"],"type":"string","title":"Wait for refresh jobs to finish","default":"No","required":true,"description":"Poll the dataset refresh status and wait until it is finished. If set to No, the component execution ends as soon as the refresh jobs are triggered.","propertyOrder":400},"timeout":{"type":"integer","title":"Refresh job status polling timeout","default":3600,"options":{"dependencies":{"wait":"Yes"}},"description":"Poll the statuses of triggered jobs for the specified number of seconds. The component stops after reaching the timeout value. The maximum timeout is also defined in the settings in the top-right menu.","propertyOrder":550},"interval":{"type":"integer","title":"Refresh job status polling interval(s)","default":30,"options":{"dependencies":{"wait":"Yes"}},"description":"Check the refresh status at the specified interval (in seconds).","propertyOrder":500},"tenant_id":{"type":"string","title":"Tenant ID (optional, external/B2B guest accounts only)","default":"","description":"Leave blank unless you authorized with an external (B2B guest) account. In that case enter the Microsoft Entra tenant ID (GUID) or domain name of the tenant hosting the workspace - the default authority resolves to the guest's own home tenant, so workspaces and datasets of the hosting tenant would not be found. Set this before loading the workspace and dataset lists below, as those list whichever tenant this field points at.","propertyOrder":150},"workspace":{"enum":[],"type":"string","items":{"enum":[],"type":"string"},"title":"PowerBI workspace","format":"select","default":"","options":{"async":{"label":"Load workspaces","action":"selectWorkspace"}},"description":"Leave this blank or set it to Default Workspace if you want to refresh a dataset that is not assigned to a workspace.","propertyOrder":200},"alldatasets":{"enum":["Yes","No"],"type":"string","title":"Wait for all datasets to finish","default":"No","options":{"dependencies":{"wait":"Yes"}},"required":true,"description":"End job with an error if any dataset finishes with a failed status.","propertyOrder":450},"dataset_list":{"type":"array","items":{"enum":[],"type":"string"},"title":"PowerBI datasets","format":"select","options":{"async":{"label":"Reload dataset names","action":"selectDataset"}},"description":"Use this field to fetch available datasets accessible with your credentials.","uniqueItems":true,"propertyOrder":300}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"The primary purpose of the Power BI Refresh application is to refresh the configured datasets within a Power BI workspace.\n\n**Important:** Each Power BI Refresh configuration can only work with a single Power BI workspace. If you need to refresh datasets in multiple Power BI workspaces, you must create a separate configuration for each workspace.\n\n## Parameters\n\n1. **PowerBI workspace**\n    - The PowerBI workspace where the user wants to refresh their dataset.\n    - Leave this blank if exporting the dataset to the signed-in account's **\"My Workspace\"**.\n\n2. **PowerBI datasets**\n    - The IDs of the PowerBI datasets within the configured workspace that the user wants to refresh.\n\t\n3. **Wait for end**\n\t- Check the dataset refresh status after sending the refresh request.\n\t\n4. **Wait for all datasets**\n\t- End the job with an error if any dataset finishes with a failed status (only works when \"Wait for end\" is set to `Yes`).\n\t\n5. **Interval**\n\t- The interval (in seconds) for checking refresh statuses (only works when \"Wait for end\" is set to `Yes`).\n\t\n6. **Timeout**\n\t- The timeout duration (in seconds) for checking refresh statuses. Maximum allowed timeout: 2 hours.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["selectDataset","selectWorkspace"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":406,"uri":"docker/kds-team.app-powerbi-refresh","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.app-powerbi-refresh","name":"developer-portal-v2/kds-team.app-powerbi-refresh","tag":"0.1.27","options":{},"digest":"sha256:80d63ef71279c0d073aefd923714bf8d47bdc0d2d637a541455c5f4bea921f55"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-powerbi-refresh/32/1623157234220.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-powerbi-refresh/64/1623157234220.png","128":null}},{"id":"datamind.app-rfm-model-test","vendor":{"id":"datamind","name":"Data Mind s.r.o.","address":"Pobřežní 18/16\n180 00 Praha\nCZ","email":"keboola@datamind.cz","type":"other"},"version":112,"name":"Predictive RFM Segmentation","type":"application","shortDescription":"Provides you with your customers's future purchase probability  and their future monetary value.","longDescription":"## Predictive RFM Segmentation\nProvides you with your customers's **future purchase probability**  and their **future monetary value**.\n\n**Detailed instructions on use in Component's [documentation](https://github.com/DataMindCzPrivate/Component_documentation).**\n\nComponent output is csv file with:\n- customers scored for purchase probability in next 3 months\n- customers's monetary value in next 3 months\n\nYou will need *at least 17 months of transactions history* .\n\n\n","licenseUrl":"https://github.com/DataMindCzPrivate/license_agreement.git","documentationUrl":"https://github.com/DataMindCzPrivate/Component_documentation.git","sourceCodeUrl":null,"requiredMemory":"1g","processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["#key_password"],"properties":{"#key_password":{"type":"string","title":"DataMind API Key","default":"","minLength":1,"propertyOrder":1}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":true,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/datamind.app-rfm-model-test","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/datamind.app-rfm-model-test","name":"developer-portal-v2/datamind.app-rfm-model-test","tag":"1.0.6","options":{"region":""},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/datamind.app-rfm-model-test/32/74.png","64":"https://ui.keboola-assets.com/developer-portal/icons/datamind.app-rfm-model-test/64/74.png","128":null}},{"id":"keboola.ex-premier","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":27,"name":"PREMIER System","type":"extractor","shortDescription":"Extracts customers, suppliers, issued and received invoices, and stock items from the PREMIER System ERP/accounting API.","longDescription":"The PREMIER System extractor pulls data from the [PREMIER System](https://www.premier.cz/) ERP and accounting platform through its web API.\n\nIt is a row-based extractor — each configuration row extracts one business object into its own table:\n\n- **Customers** and **Suppliers** (the partner register)\n- **Issued invoices** and **Received invoices**\n- **Products / stock items** (per warehouse)\n\nAuthentication uses an HTTP Basic login together with an accounting-unit identifier (ID-UJ) issued by your PREMIER API service administrator. Loads can be incremental — only records changed since the previous run are fetched, using the API's change timestamp persisted in the component state — or a full reload on every run.","licenseUrl":"https://github.com/keboola/component-ex-premier/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-ex-premier/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-ex-premier","requiredMemory":null,"processTimeout":null,"features":[],"encryption":true,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"easy","category":null,"categories":["Accounting","ERP"],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","appInfo.experimental"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"PREMIER System Extractor","properties":{"debug":{"type":"boolean","title":"Debug mode","default":false,"description":"Enable verbose logging","propertyOrder":99},"connection":{"type":"object","title":"Connection","required":true,"properties":{"id_uj":{"type":"string","title":"Accounting unit ID (ID-UJ)","required":true,"description":"GUID sent as the ID-UJ header to select the accounting unit, issued by the customer's API service admin","propertyOrder":4},"base_url":{"type":"string","title":"API base URL","format":"uri","required":true,"description":"Full URL including scheme and port of the customer's PREMIER API service, e.g. https://dev.premier.cz:12375","propertyOrder":1},"username":{"type":"string","title":"Username","required":true,"description":"PREMIER user login","propertyOrder":2},"#password":{"type":"string","title":"Password","format":"password","required":true,"description":"Password for the PREMIER user account.","propertyOrder":3},"test_connection":{"type":"button","format":"test-connection","options":{"async":{"label":"Test Connection","action":"testConnection"}},"propertyOrder":5}},"propertyOrder":1}}},"configurationRowSchema":{"type":"object","title":"Row configuration","properties":{"source":{"type":"object","title":"Source","required":true,"properties":{"object":{"enum":["customers","suppliers","invoices_issued","invoices_received","advance_invoices_issued","advance_invoices_received","orders_received","orders_issued","products","stock_receipts","stock_issues","stock_levels","warehouses","vat_rates","cost_centers","jobs","document_series"],"type":"string","title":"Object to extract","required":true,"enum_titles":["Customers","Suppliers","Issued Invoices","Received Invoices","Issued Advance Invoices","Received Advance Invoices","Received Orders","Issued Orders","Products","Stock Receipts","Stock Issues","Stock Levels","Warehouses","VAT Rates","Cost Centers","Jobs","Document Series"],"propertyOrder":1},"date_to":{"type":"string","title":"Date to","format":"date","options":{"dependencies":{"object":["invoices_issued","invoices_received","advance_invoices_issued","advance_invoices_received","orders_received","orders_issued"]}},"description":"Optional upper bound for a backfill (yyyy-MM-dd). Maps to PREMIER dat_do parameter.","propertyOrder":3},"date_from":{"type":"string","title":"Date from","format":"date","options":{"dependencies":{"object":["invoices_issued","invoices_received","advance_invoices_issued","advance_invoices_received","orders_received","orders_issued"]}},"description":"Optional lower bound for a backfill (yyyy-MM-dd). Maps to PREMIER dat_od parameter.","propertyOrder":2},"warehouse":{"type":"integer","title":"Warehouse number","minimum":1,"options":{"dependencies":{"object":["products","stock_receipts","stock_issues","stock_levels"]}},"description":"REQUIRED when Object to extract is Products. Warehouse number to read stock cards from; leave blank for other objects.","propertyOrder":4}},"propertyOrder":1},"destination":{"type":"object","title":"Destination","properties":{"load_type":{"enum":["incremental_load","full_load"],"type":"string","title":"Load type","default":"incremental_load","description":"Incremental load uses the API change timestamp stored in component state to fetch only new or modified records. Full load replaces the output table on every run.","enum_titles":["Incremental Load","Full Load"],"propertyOrder":1}},"propertyOrder":2}}},"createConfigurationRowSchema":null,"configurationDescription":"### Connection\n\nProvide the API base URL (including scheme and port, e.g. `https://your-premier-host:12375`), your PREMIER username and password, and the accounting unit ID (ID-UJ) issued by your PREMIER API service administrator. Use **Test Connection** to verify the credentials before saving.\n\n### Rows\n\nAdd one row per object you want to extract and pick the **Object to extract**:\n\n- For **Products** also provide the **Warehouse number** (the PREMIER `sklad` number).\n- For **Issued / Received invoices** you can optionally limit the run to a **date range**.\n\nChoose **Incremental load** to fetch only records changed since the last run (recommended) or **Full load** to replace the output table on every run.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["testConnection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-premier","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-premier","name":"developer-portal-v2/keboola.ex-premier","tag":"0.1.0","options":{},"digest":"sha256:892742f9651855c13fa18f62f165f7048314360b7f6e320ffe768d5149f0a35c"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-premier/32/1780344448928.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-premier/64/1780344448928.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-premier/128/1780344448928.png"}},{"id":"keboola.wr-premier","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":49,"name":"PREMIER system","type":"writer","shortDescription":"Writes Keboola Storage tables into the PREMIER system (Czech ERP) via its API.","longDescription":"# PREMIER Writer\n\nLoads Keboola Storage tables into the **PREMIER system** (Czech ERP, [premier.cz](https://www.premier.cz)) via its ApiComPrem API. One config row = one input table → one PREMIER write command (e.g. `FA_OUT_ADD`, `PARTNERI_ADD`).\n\n- Per-row column → PREMIER parameter mapping.\n- Optional dedup key skips already-written rows on re-runs.\n- Results table with per-row `OK` / `ERR` / `SKIPPED`.\n\n**Requires** PREMIER ENTERPRISE (SQL) with the API module, reachable from Keboola.","licenseUrl":"https://github.com/keboola/component-wr-premier/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-wr-premier/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-wr-premier","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","appInfo.experimental"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"PREMIER Writer – Connection & Authentication","required":["host","port","username","#password","id_uj"],"properties":{"host":{"type":"string","title":"PREMIER Host","description":"PREMIER server host or IP (e.g. dev.premier.cz).","propertyOrder":1},"port":{"type":"integer","title":"Port","default":443,"description":"API port (the public sandbox uses 12375).","propertyOrder":2},"id_uj":{"type":"string","title":"Accounting Unit (ID-UJ)","description":"Accounting-unit GUID sent as the ID-UJ header.","propertyOrder":6},"username":{"type":"string","title":"Username","description":"PREMIER user.","propertyOrder":4},"#password":{"type":"string","title":"Password","format":"password","description":"PREMIER user password.","propertyOrder":5},"use_https":{"type":"boolean","title":"Use HTTPS","default":true,"description":"Connect over HTTPS. Disable only for a plain-HTTP PREMIER endpoint.","propertyOrder":3},"max_retries":{"type":"integer","title":"Max Retries","default":5,"description":"Number of API retries on transient errors.","propertyOrder":8},"test_connection":{"type":"button","format":"test-connection","options":{"async":{"label":"Test Connection","action":"testConnection"}},"propertyOrder":7}}},"configurationRowSchema":{"type":"object","title":"PREMIER Writer – Write Target","required":["command","column_mapping"],"properties":{"command":{"enum":[],"type":"string","title":"PREMIER Command","format":"select","options":{"async":{"label":"Load Commands","action":"listCommands","autoload":[]}},"description":"The write command to execute (e.g. FA_OUT_ADD).","propertyOrder":1},"column_mapping":{"type":"array","items":{"type":"object","required":["source","target"],"properties":{"source":{"type":"string","title":"Input Column","propertyOrder":1},"target":{"type":"string","title":"PREMIER Parameter","propertyOrder":2}}},"title":"Column Mapping","format":"table","description":"Map input table columns to PREMIER parameter names.","propertyOrder":2},"dedup_key_column":{"type":"string","title":"Deduplication Key Column","description":"Optional input column used as a natural key so re-runs skip already-written rows. Leave empty to re-send every row (may create duplicates).","propertyOrder":3},"continue_on_error":{"type":"boolean","title":"Continue On Error","default":true,"description":"If enabled, failed rows are recorded and the job continues; otherwise it aborts on the first failure.","propertyOrder":4}}},"createConfigurationRowSchema":null,"configurationDescription":"Enter the connection and click **Test Connection**. Then add one row per input table, pick the PREMIER command, and map your columns.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["listCommands","testConnection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.wr-premier","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-premier","name":"developer-portal-v2/keboola.wr-premier","tag":"0.1.2","options":{},"digest":"sha256:47339d17b2573b281b7e094e65f4e8fdd4e830b65bbcd373dc7224676791065b"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-premier/32/1784213595161.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-premier/64/1784213595161.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-premier/128/1784213595161.png"}},{"id":"keboola.python-transformation-v2","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":92,"name":"Python","type":"transformation","shortDescription":"Runs user-defined Python transformation scripts inside Keboola.","longDescription":"Application which runs KBC transformations written in Python.","licenseUrl":"https://www.keboola.com/terms-and-conditions","documentationUrl":"https://help.keboola.com/transformations/python-plain/","sourceCodeUrl":"https://github.com/keboola/python-transformation-v2","requiredMemory":"16000m","processTimeout":72000,"features":["allow-tag-override"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput","genericDockerUI-fileInput","genericDockerUI-tableOutput","genericDockerUI-fileOutput","genericCodeBlocksUI","genericVariablesUI","genericPackagesUI"],"imageParameters":{},"stackParameters":{"connection.slsp.keboola.cloud":{"trusted_host":"https://on-prem.slsp.keboola.cloud","artifactory_url":"https://on-prem.slsp.keboola.cloud:10008/repository/public-slsp-pypi-group/simple","pip_repositories":[{"url":"https://on-prem.slsp.keboola.cloud:10008/repository/public-slsp-pypi-group/simple","add_trusted_host":true}]}},"testConfiguration":null,"configurationSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["blocks","packages"],"properties":{"blocks":{"type":"array","items":{"type":"object","required":["name","codes"],"properties":{"name":{"type":"string","minLength":1},"codes":{"type":"array","items":{"type":"object","required":["name","script"],"properties":{"name":{"type":"string","minLength":1},"script":{"type":"array","items":{"type":"string"},"maxItems":1,"minItems":0}}},"minItems":1}}},"minItems":1},"packages":{"type":"array","items":{"type":"string","minLength":1},"minItems":0,"uniqueItems":true}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{"parameters":{"blocks":[{"name":"Block 1","codes":[{"name":"Code","script":[]}]}]}},"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":92,"uri":"docker/keboola.python-transformation-v2","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.python-transformation-v2","name":"developer-portal-v2/keboola.python-transformation-v2","tag":"1.6.1","options":{},"digest":"sha256:93e6895f8a937df10470fdbe894bc323f80c972783d9869809e9ffe60faea7e6"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.python-transformation-v2/32/1666646281880.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.python-transformation-v2/64/1666646281880.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.python-transformation-v2/128/1666646281880.png"}},{"id":"keboola.wr-qdrant-embeddings","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":162,"name":"Qdrant Embeddings","type":"writer","shortDescription":"Writer for storing text embeddings in Qdrant vector database.","longDescription":"# Keboola Writer - Qdrant Embeddings\n\nThis component enables storage and retrieval of vector embeddings in Qdrant vector database. Qdrant is optimized for high-performance vector similarity search and filtering.\n\n## Key Features\n\n- Writes embeddings to Qdrant collections with configurable settings\n- Supports both cloud-hosted and self-hosted Qdrant instances\n- Configurable batch operations for efficient data loading\n- Automatic collection creation with customizable schema\n- Support for metadata storage alongside vector embeddings\n- Document upsert capabilities when ID column is provided\n- Compatible with all embedding providers supported by the App Embeddings V2\n\nThe writer integrates with the Keboola App Embeddings V2 UI component and is ideal for applications requiring fast vector search with filtering, including recommendation systems, semantic search, and clustering operations.","licenseUrl":"https://github.com/keboola/component-embeddings-v2/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-embeddings-v2/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-embeddings-v2","requiredMemory":"1024m","processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"hints","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-simpleTableInput","appInfo.experimental","genericDockerUI-rows"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Embeddings Configuration","required":["embedding_settings"],"properties":{"qdrant_settings":{"type":"object","title":"Qdrant Settings","options":{"dependencies":{"db_type":"qdrant"}},"required":["url","#api_key"],"properties":{"url":{"type":"string","title":"URL","description":"Qdrant instance URL"},"#api_key":{"type":"string","title":"API Key","format":"password"}}},"embedding_settings":{"type":"object","title":"Embedding Service Settings","required":["provider_type"],"properties":{"provider_type":{"enum":["openai","azure_openai","cohere","huggingface_hub","google_vertex","bedrock"],"type":"string","title":"Embedding Provider","options":{"tooltip":"Choose the AI service that will generate embeddings"},"enumNames":["OpenAI","Azure OpenAI","Cohere","HuggingFace Hub","Google Vertex AI","AWS Bedrock"],"description":"Select the embedding service to use"},"azure_settings":{"type":"object","title":"Azure OpenAI Settings","options":{"dependencies":{"provider_type":"azure_openai"}},"required":["deployment_name","#api_key","azure_endpoint"],"properties":{"#api_key":{"type":"string","title":"API Key","format":"password"},"api_version":{"type":"string","title":"API Version","default":"2024-02-01"},"azure_endpoint":{"type":"string","title":"Azure Endpoint","options":{"inputAttributes":{"placeholder":"https://<your-endpoint>.openai.azure.com/"}},"description":"Your Azure OpenAI endpoint URL"},"deployment_name":{"type":"string","title":"Deployment Name","description":"Enter your Azure OpenAI deployment name"}}},"cohere_settings":{"type":"object","title":"Cohere Settings","options":{"dependencies":{"provider_type":"cohere"}},"required":["model","#api_key"],"properties":{"model":{"enum":["embed-english-v3.0","embed-english-light-v3.0","embed-multilingual-v3.0","embed-multilingual-light-v3.0"],"type":"string","title":"Model","default":"embed-english-v3.0","options":{"tooltip":"Light models are faster but less accurate"},"description":"Select the Cohere embedding model"},"#api_key":{"type":"string","title":"API Key","format":"password"}}},"openai_settings":{"type":"object","title":"OpenAI Settings","options":{"dependencies":{"provider_type":"openai"}},"required":["model","#api_key"],"properties":{"model":{"enum":["text-embedding-3-small","text-embedding-3-large","text-embedding-ada-002"],"type":"string","title":"Model","default":"text-embedding-3-small","options":{"tooltip":"text-embedding-3-small is recommended for most use cases"},"description":"Select the OpenAI embedding model"},"#api_key":{"type":"string","title":"API Key","format":"password"}}},"bedrock_settings":{"type":"object","title":"AWS Bedrock Settings","options":{"dependencies":{"provider_type":"bedrock"}},"required":["#aws_access_key","#aws_secret_key","region","model_id"],"properties":{"region":{"enum":["us-east-1","us-west-2","ap-southeast-1","ap-northeast-1","eu-central-1"],"type":"string","title":"AWS Region","description":"AWS region where Bedrock is available"},"model_id":{"enum":["amazon.titan-embed-text-v1","amazon.titan-embed-g1-text-02","cohere.embed-english-v3","cohere.embed-multilingual-v3"],"type":"string","title":"Model ID","default":"amazon.titan-embed-text-v1","description":"Bedrock model identifier"},"#aws_access_key":{"type":"string","title":"AWS Access Key","format":"password"},"#aws_secret_key":{"type":"string","title":"AWS Secret Key","format":"password"}}},"huggingface_settings":{"type":"object","title":"HuggingFace Hub Settings","options":{"dependencies":{"provider_type":"huggingface_hub"}},"required":["model","#api_key"],"properties":{"model":{"type":"string","title":"Model Name","default":"sentence-transformers/all-mpnet-base-v2","options":{"tooltip":"Recommended models: all-mpnet-base-v2, all-MiniLM-L6-v2, bge-large-en-v1.5","inputAttributes":{"placeholder":"sentence-transformers/all-mpnet-base-v2"}},"description":"Enter the HuggingFace model name"},"#api_key":{"type":"string","title":"API Key","format":"password"},"show_progress":{"type":"boolean","title":"Show Progress","default":false,"description":"Whether to show a progress bar during embedding generation"},"normalize_embeddings":{"type":"boolean","title":"Normalize Embeddings","default":true,"description":"Whether to normalize the computed embeddings to unit length"}}},"google_vertex_settings":{"type":"object","title":"Google Vertex AI Settings","options":{"dependencies":{"provider_type":"google_vertex"}},"required":["#credentials","project"],"properties":{"project":{"type":"string","title":"Project ID","description":"Google Cloud project ID"},"location":{"type":"string","title":"Location","default":"us-central1","description":"Google Cloud region"},"model_name":{"type":"string","title":"Model Name","default":"textembedding-gecko@latest","description":"Vertex AI model name"},"#credentials":{"type":"string","title":"Service Account JSON","format":"password","description":"Google Cloud service account credentials JSON"}}}},"propertyOrder":200},"test_database_connection":{"type":"button","format":"sync-action","options":{"async":{"cache":false,"label":"Test Connection to Vector Store Database","action":"testVectorStoreConnection"},"hidden":true}},"test_embedding_service_connection":{"type":"button","format":"sync-action","options":{"async":{"cache":false,"label":"Test Connection to Embedding Service","action":"testEmbeddingServiceConnection"},"hidden":true},"propertyOrder":300}}},"configurationRowSchema":{"type":"object","title":"Vector Store Configuration","required":["text_column"],"properties":{"_metadata_":{"type":"object","options":{"hidden":true},"properties":{"table":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"columns":{"type":"array"},"primaryKey":{"type":"array"}}}}},"destination":{"type":"object","title":"Destination","options":{},"required":["collection_name"],"properties":{"load_type":{"enum":["full_load","incremental_load"],"type":"string","title":"Load Type","format":"checkbox","default":"full_load","options":{"enum_titles":["Full Load","Incremental Load"]},"description":"If Full load is used, the destination table will be overwritten every run. If incremental load is used, data will be upserted into the destination table. Tables with a primary key will have rows updated, tables without a primary key will have rows appended.","propertyOrder":30},"primary_key":{"type":"string","title":"Primary Key Column","watch":{"columns":"_metadata_.table.columns"},"options":{"dependencies":{"load_type":"incremental_load"}},"enumSource":"columns","description":"Choose a column to use as unique identifier for upserts.","propertyOrder":30},"collection_name":{"type":"string","title":"Collection Name","default":"keboola_embeddings","propertyOrder":10},"metadata_columns":{"type":"array","items":{"type":"string","title":"Column Name","watch":{"columns":"_metadata_.table.columns"},"enumSource":"columns"},"title":"Metadata Columns","format":"select","options":{"tags":true},"description":"Choose columns to save to the vector store database as metadata.","uniqueItems":true,"propertyOrder":20}},"propertyOrder":300},"text_column":{"type":"string","title":"Embed column name","watch":{"columns":"_metadata_.table.columns"},"enumSource":"columns","description":"Choose a column to embed data","propertyOrder":1},"advanced_options":{"type":"object","title":"Advanced Options","properties":{"batch_size":{"type":"integer","title":"Batch Size","default":100,"maximum":1000,"minimum":1,"description":"Number of texts to process in one batch","propertyOrder":20},"enable_chunking":{"type":"boolean","title":"Enable Text Chunking","format":"checkbox","default":false,"description":"Split long texts into smaller chunks before embedding","propertyOrder":30},"chunking_settings":{"type":"object","title":"Chunking Settings","options":{"dependencies":{"enable_chunking":true}},"properties":{"chunk_size":{"type":"integer","title":"Chunk Size","default":1000,"maximum":8000,"minimum":100,"description":"Maximum number of characters in each chunk","propertyOrder":50},"chunk_overlap":{"type":"integer","title":"Chunk Overlap","default":100,"maximum":1000,"minimum":0,"description":"Number of characters to overlap between chunks","propertyOrder":60},"chunk_strategy":{"enum":["character","sentence","word","paragraph"],"type":"string","title":"Chunking Strategy","default":"paragraph","options":{"tooltip":"Paragraph is recommended for most use cases"},"description":"How to split the text into chunks","propertyOrder":70}},"propertyOrder":40}},"propertyOrder":200}}},"createConfigurationRowSchema":null,"configurationDescription":"# Keboola QDrant Embeddings Writer\n\nThis document describes how to configure the Keboola QDrant Embeddings Writer component.\n\n## Main Configuration\n\nThe component configuration consists of two main parts:\n\n\n## Embedding Settings\n\n### Provider Selection\n\nChoose from the following embedding providers:\n\n- OpenAI\n- Azure OpenAI\n- Cohere\n- HuggingFace Hub\n- Google Vertex AI\n- AWS Bedrock\n\n## Row Configuration\n\n### Input Configuration\n\n- **Text Column**: Column containing text to embed\n- **Metadata Columns**: Optional columns to store as metadata\n- **Id Column**: Optional columns to store as ID - **if it set the index will be updated**\n\n\n### Vector Database Configuration\n\n**QDrant**\n\n- Url\n- API Key\n\n\n### Advanced Options\n\n- **Batch Size**: Number of texts to process in one batch (1-1000)\n- **Enable Text Chunking**: Split long texts into smaller chunks\n    - Chunk Size: Maximum characters per chunk\n    - Chunk Overlap: Characters to overlap between chunks\n    - Chunking Strategy: character/sentence/word/paragraph","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.wr-qdrant-embeddings","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-qdrant-embeddings","name":"developer-portal-v2/keboola.wr-qdrant-embeddings","tag":"0.0.13","options":{},"digest":"sha256:7986e8c360b3f91c567e7a0f110211796583900567732777278c713b9558f845"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-qdrant-embeddings/32/1739482816620.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-qdrant-embeddings/64/1739482816620.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-qdrant-embeddings/128/1739482816620.png"}},{"id":"kds-team.wr-quickbooks-online","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":336,"name":"Quickbooks Online","type":"writer","shortDescription":"Writes journal entries to QuickBooks Online.","longDescription":"Quickbooks Online Writer","licenseUrl":"https://github.com/keboola/component-quickbooks-online-wr/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-quickbooks-online-wr/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-quickbooks-online-wr","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"out","forwardToken":true,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput","genericDockerUI-authorization","appInfo.experimental"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"QuickBooks","required":[],"properties":{"action":{"enum":["create"],"type":"string","title":"Action","description":"Select which action you want to perform.","uniqueItems":true,"propertyOrder":3},"endpoints":{"type":"array","items":{"enum":["journalentry"],"type":"string"},"title":"Endpoints","format":"select","description":"Select which endpoints you want to process.","uniqueItems":true,"propertyOrder":2},"company_id":{"type":"string","title":"Company ID","default":"","minLength":1,"description":"Can be found under QuickBooks account's \"Account and Setting\". Does not contain any spaces.","propertyOrder":1},"fail_on_error":{"type":"boolean","title":"Fail on error","format":"checkbox","default":false,"description":"When set to true, the component will halt the run upon encountering the first error. Alternatively, if set to false, the component will persist in processing all entries, storing any failed requests in the results table.","propertyOrder":4}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"Configuration description.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.wr-quickbooks-online","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.wr-quickbooks-online","name":"developer-portal-v2/kds-team.wr-quickbooks-online","tag":"0.2.5","options":{},"digest":"sha256:0578a876b3a12c7b2480e095cf0a4a32cb1a5d58a7af738db11bedabd8ea69f7"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.wr-quickbooks-online/32/1701777998991.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.wr-quickbooks-online/64/1701777998991.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.wr-quickbooks-online/128/1701777998991.png"}},{"id":"leochan.ex-quickbooks","vendor":{"id":"leochan","name":"Leo Chan","address":"Richmond, BC","email":"cleojanten@hotmail.com","type":"other"},"version":121,"name":"QuickBooks Online","type":"extractor","shortDescription":"Cloud Accounting to run your business online","longDescription":"The QuickBooks Extractor for KBC is build in purpose of processing API calls to obtain one company's account information.","licenseUrl":"https://bitbucket.org/chanleoc/kbc_quickbooks/src/master/component_registration/Licence.md","documentationUrl":"https://bitbucket.org/chanleoc/kbc_quickbooks/src/master/","sourceCodeUrl":null,"requiredMemory":"1024m","processTimeout":null,"features":["container-root-user"],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["ERP","Accounting"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI-authorization","genericDockerUI","appInfo.dataIn"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["config"],"properties":{"config":{"type":"object","title":"QuickBooks","required":["companyid","endpoints"],"properties":{"companyid":{"type":"string","title":"Company ID","default":"","minLength":1,"description":"Can be found under QuickBooks account's \"Account and Setting\".","propertyOrder":1},"endpoints":{"type":"array","items":{"type":"object","title":"Endpoint","properties":{"end_date":{"type":"string","default":"","propertyOrder":3},"endpoint":{"enum":["Account","BalanceSheet**","Bill","BillPayment","Budget","CashFlow**","Class","Customer","CreditMemo","Deposit","GeneralLedger**","Invoice","Item","JournalEntry","Payment","ProfitAndLoss**","ProfitAndLossDetail**","Purchase","PurchaseOrder","TaxCode","TaxRate","Term","TransactionList**","Transfer","TrialBalance**","Vendor"],"type":"string","default":"Invoice","propertyOrder":1},"start_date":{"type":"string","default":"","propertyOrder":2}}},"title":"Endpoint","format":"table","maxItems":15,"description":"For endpoints ending with '**', please enter valid date format in YYYY-MM-DD. Else, component will request report with its default parameter, Fiscal Year to Date. Reports result for CashFlow, GeneralLedger,ProfileAndLossDetail, TransactionList, and TrialBalance will be output in ONE cell. ","uniqueItems":true,"propertyOrder":2}}}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"1. Application Authorization   \n        - By authorizing the application, KBC will safely communicate with QuickBooks API to handle the final authorization for API requests.  \n           \n2. Company ID   \n        - To obtain Company ID:  \n            QuickBooks Login -> Settings(Top right corner) -> \"Account and Setting\" -> \"Billing & Subscription\"  \n    **Note: Please do not input and skip the spaces in between the Company ID**   \n\n3. Data Request   \n    - User has to specify the application's endpoint\n    - **Note: Please ensure signed-in user has the required privileges to access the endpoints**\n\n    #### Constraints\n    - Quickbooks Extractor is unable to parse the listed reports below generically. The JSON returns of the requested reports will be output as *ONE* cell. The priamry key for these tables are start_date and end_date which enable users to run the component incrementally.\n    - Records cannot parse\n        1. CashFlow\n        2. GeneralLedger\n        3. ProfitAndLossDetail\n        4. TransactionList\n        5. TrialBalance\n    \n4. Date Parameters\n    - If start_date and end_date are not specified, component will request the API with the endpoint's default parameter, Fiscal Year to Date\n    - Required format: YYYY-MM-DD\n\n### Docker Version: 0.2.0 ###\n","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/leochan.ex-quickbooks","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/leochan.ex-quickbooks","name":"developer-portal-v2/leochan.ex-quickbooks","tag":"0.3.4","options":{},"digest":"sha256:4b8212822350214b061879c84b3d8880d438eb59afcdae046ebab7a4a4319371"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/leochan.ex-quickbooks/32/7.png","64":"https://ui.keboola-assets.com/developer-portal/icons/leochan.ex-quickbooks/64/7.png","128":null}},{"id":"keboola.ex-quickbooks-online","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":62,"name":"Quickbooks Online V2","type":"extractor","shortDescription":"Extracts accounting and report data from QuickBooks Online.","longDescription":"This extractor enables you to extract accounting data and financial reports from your QuickBooks Online account. It supports a comprehensive set of accounting endpoints (accounts, bills, invoices, payments, vendors, customers, etc.) and financial reports (balance sheet, profit and loss, cash flow, general ledger, trial balance, etc.). OAuth 2.0 authentication ensures secure access to your QuickBooks data, and you can specify date ranges for incremental data extraction. The component supports both cash and accrual accounting types for relevant reports.","licenseUrl":"https://github.com/keboola/component-quickbooks-online/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/component-quickbooks-online/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/component-quickbooks-online/tree/master","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":true,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-authorization","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"QuickBooks","required":["companyid","endpoints"],"properties":{"reports":{"type":"array","items":{"enum":["BalanceSheet**","CashFlow**","GeneralLedger**","ProfitAndLossDetail**","ProfitAndLoss**","TransactionList**","TrialBalance**"],"type":"string"},"title":"Reports","format":"select","options":{"tags":true},"description":"Select which reports you want to process.","uniqueItems":true,"propertyOrder":3},"companyid":{"type":"string","title":"Company ID","default":"","minLength":1,"description":"Can be found under QuickBooks account's \"Account and Setting\".","propertyOrder":1},"endpoints":{"type":"array","items":{"enum":["Account","Bill","BillPayment","Budget","Class","Customer","Department","Deposit","Invoice","Item","JournalEntry","Payment","Preferences","Purchase","PurchaseOrder","TaxCode","TaxRate","Term","Transfer","Vendor"],"type":"string"},"title":"Endpoints","format":"select","options":{"tags":true},"description":"Select which endpoints you want to process.","uniqueItems":true,"propertyOrder":2},"destination":{"type":"object","title":"Destination","required":["load_type"],"properties":{"load_type":{"enum":["full_load","incremental_load"],"type":"string","title":"Load Type","format":"checkbox","default":"full_load","options":{"enum_titles":["Full Load","Incremental Load"]},"description":"If Full load is used, the destination table will be overwritten every run. If incremental load is used, data will be upserted into the destination table. Tables with a primary key will have rows updated, tables without a primary key will have rows appended.","propertyOrder":4}},"propertyOrder":6},"date_settings":{"type":"object","title":"Date Settings","options":{"dependencies":{"reports":true}},"properties":{"end_date":{"type":"string","title":"End date","default":"","description":"Valid types are: PrevMonthStart, PrevMonthEnd or a date in YYYY-MM-DD format. Only affects reports.","propertyOrder":3},"start_date":{"type":"string","title":"Start Date","default":"","description":"Valid types are: PrevMonthStart, PrevMonthEnd or a date in YYYY-MM-DD format. Only affects reports.","propertyOrder":1}},"propertyOrder":5},"summarize_column_by":{"type":"string","title":"Summarize Column By (optional)","description":"Enables Grouping for ProfitAndLossQuery** endpoint. Does not affect other reports.","propertyOrder":4}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"1. Application Authorization   \n        - By authorizing the application, KBC will safely communicate with QuickBooks API to handle the final authorization for API requests.  \n           \n2. Company ID   \n        - To obtain Company ID:  \n            QuickBooks Login -> Settings(Top right corner) -> \"Account and Setting\" -> \"Billing & Subscription\"  \n    **Note: Please do not input and skip the spaces in between the Company ID**   \n\n3. Data Request   \n    - User has to specify the application's endpoint\n    - **Note: Please ensure signed-in user has the required privileges to access the endpoints**\n\n    #### Constraints\n    - Quickbooks Extractor is unable to parse the listed reports below generically. The JSON returns of the requested reports will be output as *ONE* cell. The priamry key for these tables are start_date and end_date which enable users to run the component incrementally.\n    - Records cannot parse\n        1. CashFlow\n        2. GeneralLedger\n        3. ProfitAndLossDetail\n        4. TransactionList\n        5. TrialBalance\n    \n4. Date Parameters\n    - If start_date and end_date are not specified, component will request the API with the endpoint's default parameter, Fiscal Year to Date\n    - Required format: YYYY-MM-DD\n\n### Docker Version: 0.2.0 ###","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-quickbooks-online","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-quickbooks-online","name":"developer-portal-v2/keboola.ex-quickbooks-online","tag":"0.0.6","options":{},"digest":"sha256:23a5a1ee8392e45c4385a52c9a8064b82b26a0bb5b34657c1ad7819b7b8913d2"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-quickbooks-online/32/1713799156751.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-quickbooks-online/64/1713799156751.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-quickbooks-online/128/1713799156751.png"}},{"id":"quintly.ex-quintly","vendor":{"id":"quintly","name":"Quintly","address":"Cologne, Germany","email":"support@quintly.com","type":"other"},"version":25,"name":"Quintly","type":"extractor","shortDescription":"Social media analytics platform","longDescription":"Quintly extractor based on Generic Extractor.","licenseUrl":"https://www.quintly.com/terms/","documentationUrl":"https://raw.githubusercontent.com/quintly/quintly-keboola/master/documentation.md","sourceCodeUrl":null,"requiredMemory":null,"processTimeout":3600,"features":["container-root-user"],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Social"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericTemplatesUI"],"imageParameters":{"default_bucket":true},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["config"],"properties":{"config":{"type":"object","title":"Config","properties":{"range":{"type":"object","title":"Date range","required":true,"properties":{"unit":{"enum":["day","week","month"],"type":"string","title":"Range unit","default":"week","required":true},"number":{"type":"integer","title":"Range value","default":1,"required":true},"interval":{"enum":["daily","weekly","monthly"],"type":"string","title":"interval unit","default":"daily","required":true}}},"qqlQuery":{"type":"string","title":"QQL query","default":"SELECT profileId AS profile, date(time) AS date, fans FROM facebook","required":true,"minLength":1},"userData":{"type":"object","default":{"extracted":{"args":["Y-m-d H:i:s",{"args":["now"],"function":"strtotime"}],"function":"date"}},"options":{"hidden":true},"required":true,"properties":{}},"username":{"type":"string","title":"Client Id","default":"your_client_id","required":true,"minLength":1},"#password":{"type":"string","title":"API Secret","format":"password","default":"your_api_token","required":true,"minLength":1},"profileids":{"type":"string","title":"Profile Ids","default":"00000","required":true,"minLength":1},"incrementalOutput":{"enum":[true,false],"type":"boolean","title":"Incremental Output","default":true,"required":true}}}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"### Prerequisites\nTo get started with this integration you need have a quintly subscription and access to your API credentials (client id and secret). For more details about the quintly packages see https://www.quintly.com and for requesting API access please reach out to support@quintly.com\n\n### Notes\n* To select the right profiles for your request please enter the quintly profile ids into the \"Profile Ids\" field. If you want to specify multiple profiles at once, just enter them comma-separated without any spaces.\n* After you have run your first job, we recommend to set the primary keys on the resulting tables. This will make sure that the data is updated correctly in the future in case you use \"incremental updates\".","configurationFormat":"yaml","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/quintly.ex-quintly","repository":{"type":"dockerhub","uri":"keboola/docker-generic-extractor","name":null,"tag":"latest","options":{},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/quintly.ex-quintly/32/2.png","64":"https://ui.keboola-assets.com/developer-portal/icons/quintly.ex-quintly/64/2.png","128":null}},{"id":"keboola.r-transformation-v2","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":33,"name":"R","type":"transformation","shortDescription":"Runs user-defined R transformation scripts.","longDescription":"Application which runs keboola transformations written in R.","licenseUrl":"https://github.com/keboola/r-transformation-v2/blob/main/LICENSE","documentationUrl":"https://help.keboola.com/transformations/r-plain/","sourceCodeUrl":"https://github.com/keboola/r-transformation-v2","requiredMemory":"16000m","processTimeout":64800,"features":["allow-tag-override","mlflow-artifacts-access"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput","genericDockerUI-fileInput","genericDockerUI-tableOutput","genericDockerUI-fileOutput","genericCodeBlocksUI","genericPackagesUI","genericVariablesUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":null,"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":33,"uri":"docker/keboola.r-transformation-v2","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.r-transformation-v2","name":"developer-portal-v2/keboola.r-transformation-v2","tag":"2.2.0","options":{},"digest":"sha256:bb51027e6f340c1fb7eacd1bac7b8a7b635c2b27db0e7b7717d025c505b2097e"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.r-transformation-v2/32/1666643881132.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.r-transformation-v2/64/1666643881132.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.r-transformation-v2/128/1666643881132.png"}},{"id":"recombee.ex-recombee","vendor":{"id":"recombee","name":"Recombee, s.r.o.","address":"Rybná 716/24\nPraha\nCZ","email":"keboola@recombee.com","type":"other"},"version":50,"name":"Recombee","type":"extractor","shortDescription":"Recombee provides a recommendation engine that delivers personalized content and product suggestions based on user behavior and catalog data.","longDescription":"# Recombee Data Source\n\nThe Recombee Data Source fetches recommendations from [Recombee](https://www.recombee.com/) using a selected recommendation endpoint and exports the results as a structured CSV table.\n\n---\n\n## Supported Recommendation Endpoints\n\n* [`Recommend Items to User`](https://docs.recombee.com/api.html#recommend-items-to-user)\n* [`Recommend Items to Item`](https://docs.recombee.com/api.html#recommend-items-to-item)\n* [`Recommend Item Segments to User`](https://docs.recombee.com/api.html#recommend-item-segments-to-user)\n\n---\n\n## Input Structure\n\nPlace one CSV file into `in/tables/`, depending on the selected recommendation endpoint.\n\n| Filename     | Used For Endpoint(s)                                                                                                                                                                |\n| ------------ |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `users.csv`  | [Recommend Items to User](https://docs.recombee.com/api#recommend-items-to-user) / [Recommend Item Segments to User](https://docs.recombee.com/api#recommend-item-segments-to-user) |\n| `items.csv`  | [Recommend Items to Item](https://docs.recombee.com/api#recommend-items-to-item)                                                                                                    |\n\nThe CSV file must contain a single column with IDs of users / items for which recommendations should be generated.\n\n### Example Input\n\n```\nuser_id\nuser_3fa8c1\nuser_4b92d8\nuser_7c13f0\nuser_1d8a9e\n```\n\n---\n\n## Output Structure\n\nThe recommendations are exported to:\n`out/tables/recomms.csv`\n\n| Column                                            | Description                                                                |\n| ------------------------------------------------- |----------------------------------------------------------------------------|\n| `user_id` / `item_id`                             | The ID the recommendation was generated for                                |\n| `recomm_id`                                       | Recombee [recommId](https://docs.recombee.com/getting_started#reporting-successful-recommendations) used for tracking                                    |\n| `recommended_items` / `recommended_item_segments` | List of recommended item or segment IDs                                    |\n| `api_response`                                    | Full JSON response from Recombee (including e.g., the returned properties) |\n\n\n---\n\n### Example Output: `recomms.csv`\n\n```csv\nuser_id,recomm_id,recommended_items,api_response\nuser_3fa8c1,cc08bcf0-9d8e-4726-8b21-e47f770316e1,\"[\"\"item-165\"\", \"\"item-69\"\", \"\"item-857\"\"]\",\"{\"\"recommId\"\": \"\"cc08bcf0-9d8e-4726-8b21-e47f770316e1\"\", \"\"recomms\"\": [{\"\"id\"\": \"\"item-165\"\"}, {\"\"id\"\": \"\"item-69\"\"}, {\"\"id\"\": \"\"item-857\"\"}], \"\"numberNextRecommsCalls\"\": 0}\"\nuser_4b92d8,9c291302-abcd-4ab4-b926-aceac05ad15a,\"[\"\"item-165\"\", \"\"item-69\"\", \"\"item-857\"\"]\",\"{\"\"recommId\"\": \"\"9c291302-abcd-4ab4-b926-aceac05ad15a\"\", \"\"recomms\"\": [{\"\"id\"\": \"\"item-165\"\"}, {\"\"id\"\": \"\"item-69\"\"}, {\"\"id\"\": \"\"item-857\"\"}], \"\"numberNextRecommsCalls\"\": 0}\"\n```\n\n---\n\n### Notes\n\n* Use the `Included Properties` configuration parameter to include item metadata such as `title`, `url`, `category`, or `price` in the `api_response` column.\n* All values in `recommended_items` or `recommended_item_segments` are exported as JSON arrays.","licenseUrl":"https://github.com/recombee/keboola-extractor/blob/main/LICENSE.txt","documentationUrl":"https://docs.recombee.com/keboola","sourceCodeUrl":"https://github.com/recombee/keboola-extractor","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput","appInfo.dataIn"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["database_id","#private_token","scenario","endpoint","count"],"properties":{"count":{"type":"integer","title":"Number of Recommendations","default":5,"maximum":30,"minimum":1,"description":"How many recommended items to fetch per user or item.","propertyOrder":6},"region":{"enum":["ap-se","ca-east","eu-west","us-west"],"type":"string","title":"Region","default":"eu-west","description":"Region where your Recombee database is hosted.","propertyOrder":3},"endpoint":{"enum":["Recommend Items to User","Recommend Item Segments to User","Recommend Items to Item"],"type":"string","title":"Recommendation Endpoint","description":"Which Recombee endpoint to use when fetching recommendations. Needs to correspond to the used scenario.","propertyOrder":5},"scenario":{"type":"string","title":"Scenario","description":"The recommendation scenario to be used (e.g., 'emailing', 'related-items'). Shall be set up in the Recombee Admin UI.","propertyOrder":4},"batch_size":{"type":"integer","title":"Batch Size","default":100,"maximum":10000,"minimum":10,"description":"Number of users or items to fetch recommendations for in a single batch.","propertyOrder":8},"database_id":{"type":"string","title":"Recombee Database ID","description":"The ID of your Recombee database (e.g., 'your-database-id').","propertyOrder":1},"#private_token":{"type":"string","title":"Recombee Private Token","description":"The private token used to authenticate requests to Recombee.","propertyOrder":2},"included_properties":{"type":"array","items":{"type":"string"},"title":"Included Properties","description":"Optional. List of item properties to be included in the API response for each recommended item.","propertyOrder":7}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":50,"uri":"docker/recombee.ex-recombee","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/recombee.ex-recombee","name":"developer-portal-v2/recombee.ex-recombee","tag":"v1.0.1","options":{},"digest":"sha256:df76b2b31c1330f7a93da53b3078329bde3bc66e357b40f772add2cbbfebc2a6"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/recombee.ex-recombee/32/1752515537008.png","64":"https://ui.keboola-assets.com/developer-portal/icons/recombee.ex-recombee/64/1752515537008.png","128":"https://ui.keboola-assets.com/developer-portal/icons/recombee.ex-recombee/128/1752515537008.png"}},{"id":"recombee.wr-recombee","vendor":{"id":"recombee","name":"Recombee, s.r.o.","address":"Rybná 716/24\nPraha\nCZ","email":"keboola@recombee.com","type":"other"},"version":37,"name":"Recombee","type":"writer","shortDescription":"Recombee provides a recommendation engine that delivers personalized content and product suggestions based on user behavior and catalog data.","longDescription":"The Recombee Writer uploads items, users, and interactions from CSV tables into [Recombee](https://www.recombee.com/) to power personalized recommendations and search. It supports all major Recombee APIs for catalog and behavior data ingestion.\n\n---\n## Input Structure\n\nPlace CSV files in `in/tables/`.\n\n\n### Catalog\n| Filename             | Recombee API                                                            | Required Columns                | Optional Columns                                                                   |\n| -------------------- | ----------------------------------------------------------------------- | ------------------------------- | ---------------------------------------------------------------------------------- |\n| `items.csv`          | [SetItemValues](https://docs.recombee.com/api.html#set-item-values)     | `item_id`                       | All others based on your Recombee item properties (e.g. `title`, `price`, `tags`)  |\n| `users.csv`          | [SetUserValues](https://docs.recombee.com/api.html#set-user-values)     | `user_id`                       | All others based on your Recombee user properties (e.g. `subscribed_topics`, `age`, `country`) |\n\n### Interactions\n| Filename             | Recombee API                                                            | Required Columns                | Optional Columns                                                                   |\n| -------------------- | ----------------------------------------------------------------------- | ------------------------------- | ---------------------------------------------------------------------------------- |\n| `bookmarks.csv`      | [AddBookmark](https://docs.recombee.com/api.html#add-bookmark)          | `user_id`, `item_id`            | `timestamp`, `recomm_id`, `additional_data`                                        |\n| `cart_additions.csv` | [AddCartAddition](https://docs.recombee.com/api.html#add-cart-addition) | `user_id`, `item_id`            | `timestamp`, `recomm_id`, `amount`, `additional_data`                              |\n| `detail_views.csv`   | [AddDetailView](https://docs.recombee.com/api.html#add-detail-view)     | `user_id`, `item_id`            | `timestamp`, `recomm_id`, `duration`, `additional_data`                            |\n| `purchases.csv`      | [AddPurchase](https://docs.recombee.com/api.html#add-purchase)          | `user_id`, `item_id`            | `timestamp`, `recomm_id`, `amount`, `price`, `profit`, `additional_data`           |\n| `ratings.csv`        | [AddRating](https://docs.recombee.com/api.html#add-rating)              | `user_id`, `item_id`, `rating`  | `timestamp`, `recomm_id`, `additional_data`                                        |\n| `view_portions.csv`  | [SetViewPortion](https://docs.recombee.com/api.html#set-view-portion)   | `user_id`, `item_id`, `portion` | `timestamp`, `recomm_id`, `additional_data`                                        |\n\n---\n\n### Notes:\n\n* `item_id` / `user_id` must always be in the **first column** for catalog files.\n* Columns such as `tags`, `additional_data`, `imageList` should be passed as valid JSON strings.\n---\n\n## Example Input: `detail_views.csv`\n\n```csv\nuser_id,item_id,timestamp,recomm_id,additional_data\nuser-1,item-10,2025-07-06T21:12:43Z,644c005f-aa99-4bce-aa55-a0c610e80df0,\"{\"\"source\"\": \"\"newsletter\"\"}\"\nuser-2,item-09,2025-07-06T21:09:13Z,,\"{\"\"source\"\": \"\"newsletter\"\"}\"\nuser-3,item-05,2025-07-06T21:14:45Z,2d2eb48f-cd65-421a-943b-0e015055fd8e,\"{\"\"source\"\": \"\"homepage\"\"}\"\n```\n\n---\n\n## Example Input: `items.csv`\n\nItem properties must be created in the [Recombee Admin UI](https://admin.recombee.com/):\n\n```csv\nitem_id,title,price,available,date_added,tags\nitem-01,Wireless Mouse,25.99,true,2025-07-20T10:11:49.039302,\"[\"\"electronics\"\", \"\"accessory\"\", \"\"mouse\"\"]\"\nitem-42,Mechanical Keyboard,75.49,false,2025-08-04T10:11:49.039318,\"[\"\"electronics\"\", \"\"keyboard\"\"]\"\nitem-77,USB-C Hub,34.9,true,2025-08-19T10:11:49.039321,\"[\"\"electronics\"\", \"\"usb\"\", \"\"hub\"\"]\"\n```","licenseUrl":"https://github.com/recombee/keboola-writer/blob/main/LICENSE.txt","documentationUrl":"https://docs.recombee.com/keboola","sourceCodeUrl":"https://github.com/recombee/keboola-writer","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput","appInfo.dataOut","appInfo.experimental"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["database_id","#private_token"],"properties":{"region":{"enum":["ap-se","ca-east","eu-west","us-west"],"type":"string","title":"Region","default":"eu-west","description":"Region where your Recombee database is hosted.","propertyOrder":3},"batch_size":{"type":"integer","title":"Batch Size","default":1000,"maximum":10000,"minimum":100,"description":"Number of requests to send in one batch to Recombee.","propertyOrder":4},"database_id":{"type":"string","title":"Recombee Database ID","description":"The ID of your Recombee database (e.g., 'your-database-id').","propertyOrder":1},"#private_token":{"type":"string","title":"Recombee Private Token","description":"The private token used to authenticate requests to Recombee.","propertyOrder":2}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/recombee.wr-recombee","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/recombee.wr-recombee","name":"developer-portal-v2/recombee.wr-recombee","tag":"v1.0.2","options":{},"digest":"sha256:bad1a52fb267448afc083040c515bc702672c54d058ac1478583531e39eac9c7"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/recombee.wr-recombee/32/1751882990002.png","64":"https://ui.keboola-assets.com/developer-portal/icons/recombee.wr-recombee/64/1751882990002.png","128":"https://ui.keboola-assets.com/developer-portal/icons/recombee.wr-recombee/128/1751882990002.png"}},{"id":"keboola.ex-db-redshift","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":83,"name":"Redshift","type":"extractor","shortDescription":"Extracts query results from an Amazon Redshift database, over an optional SSH tunnel.","longDescription":"This component loads data from an external database – Amazon [Redshift](https://aws.amazon.com/redshift/)\ndatabase. It connects to the database, executes your queries, and stores the results in Keboola Connection Storage.\n\nTo configure the extractor, you need to \n\n- provide database credentials, and \n- have a connection to the database you want to read, preferably [secure](https://help.keboola.com/extractors/database/#connecting-to-database).","licenseUrl":"https://github.com/keboola/db-extractor-redshift/blob/master/LICENSE","documentationUrl":"https://github.com/keboola/db-extractor-redshift/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/db-extractor-redshift","requiredMemory":"8000m","processTimeout":14400,"features":["container-root-user","has-simplified-ui"],"encryption":true,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"easy","category":null,"categories":["Database"],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":{},"configurationSchema":{"type":"object","$defs":{"credentials":{"type":"object","required":["host","port","user","#password","database"],"properties":{"ssh":{"type":"object","properties":{"keys":{"type":"object","properties":{"public":{"type":"string"},"#private":{"type":"string"}}},"user":{"type":["string","null"]},"enabled":{"type":"boolean"},"sshHost":{"type":["string","null"]},"sshPort":{"type":["string","integer","null"],"default":22},"localPort":{"type":["string","integer"]},"remoteHost":{"type":"string"},"remotePort":{"type":["string","integer"]}}},"ssl":{"type":"object","properties":{"ca":{"type":["string","null"]},"#ca":{"type":["string","null"]},"#key":{"type":["string","null"]},"cert":{"type":["string","null"]},"#cert":{"type":["string","null"]},"cipher":{"type":"string"},"enabled":{"type":"boolean"},"verifyServerCert":{"type":"boolean"},"ignoreCertificateCn":{"type":"boolean"}}},"host":{"type":"string"},"port":{"type":["string","integer"],"default":5439},"user":{"type":"string"},"database":{"type":"string"},"#password":{"type":"string"}}}},"title":"keboola.ex-db-redshift — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","required":["db"],"properties":{"db":{"$ref":"#/$defs/credentials"}}},"configurationRowSchema":{"type":"object","title":"keboola.ex-db-redshift — Row Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"id":{"type":["string","integer"]},"name":{"type":"string"},"query":{"type":"string"},"table":{"oneOf":[{"type":"string"},{"type":"object","properties":{"schema":{"type":"string"},"tableName":{"type":"string"}}}]},"tables":{"type":"array","options":{"async":{"label":"Re-load tables","action":"getTables"}}},"columns":{"type":"array","items":{"type":"string"}},"enabled":{"type":"boolean"},"primaryKey":{"type":"array","items":{"type":"string"}},"incremental":{"type":"boolean"},"outputTable":{"type":"string"},"advancedMode":{"type":"boolean"},"incrementalFetchingLimit":{"type":"integer"},"incrementalFetchingColumn":{"type":"string"}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":["testConnection","getTables"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-db-redshift","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-db-redshift","name":"developer-portal-v2/keboola.ex-db-redshift","tag":"9.0.5","options":{},"digest":"sha256:a81e7b7db49f7af56863233354f4183e2212f950f5a8362986b35678dc5fe93f"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-db-redshift/32/1576252341013.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-db-redshift/64/1576252341013.png","128":null}},{"id":"keboola.wr-redshift-v2","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":43,"name":"Redshift","type":"writer","shortDescription":"Writes data to an Amazon Redshift database.","longDescription":"This component exports tables from Keboola Connection Storage into a [Redshift cluster](https://docs.aws.amazon.com/redshift/latest/mgmt/welcome.html). Apart from using your own database as a destination, the writer can also provision a new database and send the data there. This can be used for sending your data to Tableau, PowerBI, and other services.\n\nThe writer supports incremental writing and incremental processing.\n","licenseUrl":"https://github.com/keboola/db-writer-redshift/blob/master/LICENSE","documentationUrl":"https://help.keboola.com/writers/database/redshift/","sourceCodeUrl":"https://github.com/keboola/db-writer-redshift","requiredMemory":"256m","processTimeout":43200,"features":["container-root-user","dev-branch-configuration-unsafe"],"encryption":true,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Database"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows"],"imageParameters":{},"stackParameters":{},"testConfiguration":{},"configurationSchema":{"type":"object","$defs":{"credentials":{"type":"object","required":["host","port","user","#password","database","schema"],"properties":{"ssh":{"type":"object","properties":{"keys":{"type":"object","properties":{"public":{"type":"string"},"#private":{"type":"string"}}},"user":{"type":["string","null"]},"enabled":{"type":"boolean"},"sshHost":{"type":["string","null"]},"sshPort":{"type":["string","integer","null"],"default":22},"localPort":{"type":["string","integer"]},"remoteHost":{"type":"string"},"remotePort":{"type":["string","integer"]}}},"host":{"type":"string"},"port":{"type":["string","integer"],"default":5439},"user":{"type":"string"},"driver":{"type":"string"},"schema":{"type":"string"},"database":{"type":"string"},"#password":{"type":"string"}}}},"title":"keboola.wr-redshift-v2 — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","required":["db"],"properties":{"db":{"$ref":"#/$defs/credentials"}}},"configurationRowSchema":{"type":"object","title":"keboola.wr-redshift-v2 — Row Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"items":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"size":{"type":["string","integer","null"]},"type":{"type":"string"},"dbName":{"type":"string"},"default":{"type":["string","null"]},"nullable":{"type":"boolean"}}}},"dbName":{"type":"string"},"tables":{"type":"array","options":{"async":{"label":"Re-load tables","action":"getTables"}}},"tableId":{"type":"string"},"primaryKey":{"type":"array","items":{"type":"string"}},"incremental":{"type":"boolean"}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":["testConnection"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"s3","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.wr-redshift-v2","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-redshift-v2","name":"developer-portal-v2/keboola.wr-redshift-v2","tag":"1.4.0","options":{},"digest":"sha256:c178cf0748c5d41adf1f7b7565792451ad7d975a938337ab380cc09a22e73583"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-redshift-v2/32/1666647240905.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-redshift-v2/64/1666647240905.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-redshift-v2/128/1666647240905.png"}},{"id":"keboola.processor-remove-empty-files-and-folders","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":15,"name":"Remove Empty Files and Folders","type":"processor","shortDescription":"Removes all empty files and folders.","longDescription":null,"licenseUrl":null,"documentationUrl":"https://github.com/keboola/processor-remove-empty-files-and-folders#sample-configurations","sourceCodeUrl":"https://github.com/keboola/processor-remove-empty-files-and-folders","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":[],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":null,"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.processor-remove-empty-files-and-folders","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.processor-remove-empty-files-and-folders","name":"developer-portal-v2/keboola.processor-remove-empty-files-and-folders","tag":"2.1.0","options":{},"digest":"sha256:875a7cdbc7015e569e7c7fae656a92e855f5a4bd0c965c009b686c868e3896f1"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.processor-remove-empty-files-and-folders/32/1576251973213.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.processor-remove-empty-files-and-folders/64/1576251973213.png","128":null}},{"id":"kds-team.processor-rename-headers","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":89,"name":"Rename Columns","type":"processor","shortDescription":"Rename columns in specified tables.","longDescription":"\nTakes all tables in `in/tables/` and renames specified columns in specified tables. Result is moved to `out/tables/` All\nother tables that are not specified or columns that are not specified are moved unchanged.\n\nFiles present in folder `in/files` are moved unchanged.\n\nManifest files are respected and transferred / modified as well.\n\n\n## Configuration\n\n### Sample configuration\n\n```json\n{\n  \"definition\": {\n    \"component\": \"kds-team.processor-rename-headers\"\n  },\n  \"parameters\": {\n    \"test.csv\": {\n      \"column_mapping\": {\n        \"Column_1\": \"New_name_col_1\"\n      }\n    }\n  }\n}\n```\n\nList table names in parameters and list columns to rename, all others are kept\n\n```\n\"test.csv\": {\n          \"column_mapping\": {\n            \"Column_1\": \"New_name_col_1\"\n          }\n```\n\n**NOTE**: Simple `*` wildcard is supported at the end of table name, e.g.:\n\n```\n\"te*\": {\n          \"column_mapping\": {\n            \"Column_1\": \"New_name_col_1\"\n          }\n```\n\nThe above will rename columns in table `test.csv`.","licenseUrl":"https://github.com/keboola/processor-rename-headers/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/processor-rename-headers/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/processor-rename-headers","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":[],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":89,"uri":"docker/kds-team.processor-rename-headers","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.processor-rename-headers","name":"developer-portal-v2/kds-team.processor-rename-headers","tag":"1.1.2","options":{},"digest":"sha256:f4a60e45abf65b1138b926927c1f6e78a4f540a5016b37bda7a07ba54cbb7115"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.processor-rename-headers/32/1671517327672.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.processor-rename-headers/64/1671517327672.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.processor-rename-headers/128/1671517327672.png"}},{"id":"kds-team.processor-rename-files","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":160,"name":"Rename Files","type":"processor","shortDescription":"Rename files based on regex pattern. Rename all matches or individual capture groups.","longDescription":"Takes all files in `/data/in/files` and renames the files matching the regex pattern and moves the result to `/data/out/files`. \n\n- All files that does not contain any match with the pattern's regular expression are left with actual name. \n- The manifest files are respected and updated accordingly.\n- The pattern is applied to the filename itself, e.g. file\n`/data/in/files/report.csv` is renamed from `report.csv`.\n- If the replacement leads to duplicate file names, they will be overwritten.","licenseUrl":"https://github.com/keboola/kds-team.processor-rename-files/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/kds-team.processor-rename-files/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/kds-team.processor-rename-files","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":[],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":160,"uri":"docker/kds-team.processor-rename-files","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.processor-rename-files","name":"developer-portal-v2/kds-team.processor-rename-files","tag":"0.2.10","options":{},"digest":"sha256:adb18d7700ac646dc5b67b45c530717702b112d2c822756be80a3e875d071a4b"},"publishingStatus":"public","icon":{"32":null,"64":null,"128":null}},{"id":"keboola.ex-retain-cloud","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":70,"name":"Retain Cloud","type":"extractor","shortDescription":"Extracts tables from Retain Cloud via its DataAccessAPI.","longDescription":"Retain Cloud (retaininternational.com) is a resource-planning SaaS platform used to manage\nstaffing, scheduling, and utilization data. This component connects to Retain Cloud's generic\nDataAccessAPI — a table-access REST API — to extract tables and load them into Keboola Storage\nfor reporting and downstream analytics.","licenseUrl":"https://github.com/keboola/component-ex-retain-cloud/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-ex-retain-cloud/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-ex-retain-cloud","requiredMemory":null,"processTimeout":null,"features":[],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Retain Cloud Connection","required":["environment","tenant","username","#password"],"properties":{"tenant":{"type":"string","title":"Tenant","options":{"tooltip":"Case-sensitive — enter it exactly as given by your Retain Cloud administrator."},"description":"Your Retain Cloud tenant identifier","propertyOrder":20},"username":{"type":"string","title":"Username","description":"The email or account name used to sign in to Retain Cloud","propertyOrder":30},"#password":{"type":"string","title":"Password","format":"password","description":"The password for the account above","propertyOrder":40},"environment":{"enum":["us","eu","uk","aus"],"type":"string","title":"Environment","options":{"tooltip":"Selects the regional API host for your tenant. Ask your Retain Cloud administrator if you're not sure which environment your tenant runs on.","enum_titles":["US","EU","UK","Australia"]},"description":"The Retain Cloud environment hosting your tenant","propertyOrder":10},"test_connection":{"type":"button","format":"test-connection","propertyOrder":50}}},"configurationRowSchema":{"type":"object","title":"Table Extraction","required":["table"],"properties":{"table":{"enum":[],"type":"string","title":"Table","format":"select","options":{"async":{"label":"Load Tables","action":"list_tables"},"tooltip":"Click \"Load Tables\" to fetch the list of tables from your tenant. Requires the connection fields (environment, tenant, username, password) in the parent configuration to be filled in first."},"description":"The source table to extract into this row's output table","propertyOrder":10},"load_type":{"enum":["full_load","incremental_load"],"type":"string","title":"Load Type","default":"full_load","options":{"tooltip":"**Full Load** (default) overwrites the output table every run. **Incremental Load** upserts by primary key instead, but it never removes rows that were deleted upstream — this source keeps no change history to detect deletions from. If this run's primary-key uniqueness check fails for this table, the run automatically falls back to Full Load for that run only and logs a warning; it does not fail the job.","enum_titles":["Full Load","Incremental Load"]},"description":"How this row's table is written to Storage","propertyOrder":20}}},"createConfigurationRowSchema":null,"configurationDescription":"### Connection\n\nEvery configuration shares one connection, set on the configuration root:\n\n- **Environment** — the Retain Cloud environment hosting your tenant (US, EU, UK, or Australia).\n  Selects the correct regional API host.\n- **Tenant** — your Retain Cloud tenant identifier (case-sensitive).\n- **Username** — the email or account name used to sign in to Retain Cloud.\n- **Password** — the password for the account above. Encrypted at rest, never logged.\n\n### Table selection\n\nEach configuration row extracts exactly one table. Add one row per table you want in Keboola\nStorage; each row runs and can be re-run independently.\n\n- **Table** — picked from a dropdown populated from your tenant's live table list once the\n  connection fields above are filled in.\n- **Load Type** — **Full Load** (default) overwrites the row's output table every run; recommended,\n  since Retain Cloud keeps no change history and a full load is the only way upstream deletes are\n  reflected in Storage. **Incremental Load** upserts by primary key instead — it never removes rows\n  deleted upstream, and automatically falls back to a full load for a given run if that run's\n  primary-key uniqueness check fails.\n\n### Output\n\nEach row produces one Keboola Storage table, named after the source table, with a native-typed\nmanifest. A primary key is set only when the table has a `<table>_guid` column and this run's\nfetched rows confirm it is unique.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["list_tables","testConnection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-retain-cloud","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-retain-cloud","name":"developer-portal-v2/keboola.ex-retain-cloud","tag":"0.1.3","options":{},"digest":"sha256:daaded7942a6f3669f3a1ab436b8d2293fce50149fa57be34c0d3a658841684b"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-retain-cloud/32/1790077009613.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-retain-cloud/64/1790077009613.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-retain-cloud/128/1790077009613.png"}},{"id":"kds-team.ex-reviewtrackers","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":180,"name":"ReviewTrackers","type":"extractor","shortDescription":"Extracts reviews, locations, and responses from a ReviewTrackers account.","longDescription":"ReviewTracker is your go-to solution for streamlined online reputation management. Track and manage reviews across platforms, analyze sentiment, benchmark against competitors, and gain actionable insights. It's the one-stop tool for businesses to maintain a positive online presence and build customer trust.","licenseUrl":"https://github.com/keboola/component-reviewtrackers/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-reviewtrackers/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-reviewtrackers","requiredMemory":null,"processTimeout":10800,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","appInfo.dataIn"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["username","#password","clear_state"],"properties":{"username":{"type":"string","title":"username","minLength":4,"propertyOrder":100},"#password":{"type":"string","title":"password","format":"password","minLength":1,"propertyOrder":200},"clear_state":{"enum":["true","false"],"type":"string","title":"Clear State","default":"false","description":"Enabling 'Clear State' will wipe out the current extractor state. Every endpoint will be starting from 1st page.","propertyOrder":400}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"The extractor will create three tables in the destination bucket:\n\n    1. Locations\n    2. Reviews\n    3. Responses\n\nIt will bring all the reviews accessible by the user whose credentials are used in the configuration. \n\nEvery extraction run will produce a state file which contains the metadata of the last run. Due to the nature of the large data set, extractor will be running at a limited parameter and it will continue on where it left on from the last run with the parameters stored in the state file. With the option of `Clear State` enabled, the user will be able to reset the state file and start the extraction from scratch in cases of backfilling. Otherwise, please have this configuration as \"false\".","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":180,"uri":"docker/kds-team.ex-reviewtrackers","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-reviewtrackers","name":"developer-portal-v2/kds-team.ex-reviewtrackers","tag":"1.0.10","options":{},"digest":"sha256:545da514123f3ae274d3f4baf9206da59e281d2f105c8b9f079eab1e3b11cc95"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-reviewtrackers/32/109.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-reviewtrackers/64/109.png","128":null}},{"id":"bizztreat.app-rfm-segmentation","vendor":{"id":"bizztreat","name":"BizzTreat s.r.o.","address":"Olšanská 2643/1A\n130 00 Praha 3","email":"support@bizztreat.com","type":"other"},"version":50,"name":"RFM Segmentation","type":"application","shortDescription":"Application that provides RFM Segmentation of input data.","longDescription":"# RFM Segmentation Application\n\n## What It Does\nThis app compute the RFM segmentation of provided transactional data\n\n## Configuration\nInput: Application expect exactly one input CSV file with transactions data\n\nOutput: Application use defaults buckets and therefore the results will be stored in file results.csv and when the option of computing business potential is selected also in bussiness_potential.csv\n\n### Parameters\n\n<pre>\n{\n  \"method\": One of these [\"quantil\", \"gradualQuantil\", \"custom\"]  \n  \"dateFormat\": Format of datetime which will be used\n  \"recencySegmentsCount\": The recency segments count       \n  \"frequencySegmentsCount\": The frequency segments count\n  \"monetarySegmentsCount\": The monetary segments count\n  \"columns\": { \n     \"date\": Name of date column in input file\n     \"price\": Name of price column in input file\n     \"entity\": Name of entity column in input file\n     \"cluster\": Name of cluster column in input file   \n  }\n  \"potential\": One of these [\"Yes\", \"No\"]\n  \"thresholds\": {\n    \"recency\": Array of recency thresholds\n    \"frequency\": Array of frequency thresholds\n    \"monetary\": Array of monetary thresholds\n  }\n}\n</pre>\n\n- `method` Define the method used for segmentation\n- `dateFormat` Define the format of datetime of input and also the output \n- `recencySegmentsCount` Define the recency segments count when quantil or gradualQuantil method of segmentation is used\n- `frequencySegmentsCount` Define the frequency segments count when quantil or gradualQuantil method of segmentation is used\n- `monetarySegmentsCount` Define the monetary segments count when quantil or gradualQuantil method of segmentation is used\n- `columns` Define the name of columns in input file\n  - `date` Define the name of date column in input file\n  - `price` Define the name of price column in input file\n  - `entity` Define the name of entity column in input file (typicaly the userdId)\n  - `cluster` Define the name of cluster column in input file, when the data are not clustered leaved it empty\n- `potential` Define whether the business potentila should be computed\n- `thresholds` Define the thresholds for segments when custom method is used\n\nMethod specification:\n  - `Custom` User will define the segments thresholds himself\n  - `Quantil` User will define the number of segments. Entitis's values at the thresholds of quantils will be used as thresholds for segments\n  - `GradualQuantil` Same as Quantil but thresholds for segments are computed gradually to avoid the situation where there are the big group that is spread over multiple segments which will cause to these segments to be empty.\n  \n## Contact\n\nBizzTreat, s.r.o\nŘehořova 968/42\nPrague\n\nIf you have any question contact support@bizztreat.com\n\nCheers!\n","licenseUrl":"https://github.com/bizztreat/keboola-app-rfm-segmentation/blob/master/LICENSE.md","documentationUrl":"https://github.com/bizztreat/keboola-app-rfm-segmentation/blob/master/MANUAL.md","sourceCodeUrl":null,"requiredMemory":null,"processTimeout":null,"features":["container-root-user","dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"out","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["method","dateFormat","columns","potential","recencySegmentsCount","frequencySegmentsCount","monetarySegmentsCount","thresholds","monetaryMethod"],"properties":{"method":{"enum":["quantil","gradualQuantil","custom"],"type":"string","title":"Method","default":"quantil","propertyOrder":1},"columns":{"type":"object","title":"Columns","required":["entity","price","date","cluster"],"properties":{"date":{"type":"string","title":"Date","default":"date","minLength":1},"price":{"type":"string","title":"Price","default":"price","minLength":1},"entity":{"type":"string","title":"Entity","default":"user_id","minLength":1},"cluster":{"type":"string","title":"Cluster","default":"","minLength":1}},"propertyOrder":6},"potential":{"enum":["Yes","No"],"type":"string","title":"Calculate Bussiness Potential","default":"No","propertyOrder":7},"dateFormat":{"type":"string","title":"Date Format","default":"yyyy-MM-dd","minLength":1,"propertyOrder":2},"thresholds":{"type":"object","title":"Thresholds","required":["recency","frequency","monetary"],"properties":{"recency":{"type":"array","items":{"type":"string"},"title":"Recency"},"monetary":{"type":"array","items":{"type":"number"},"title":"Monetary"},"frequency":{"type":"array","items":{"type":"integer"},"title":"Frequency"}},"propertyOrder":9},"monetaryMethod":{"enum":["Avg"],"type":"string","title":"Count Monetary as","default":"Avg","propertyOrder":8},"recencySegmentsCount":{"type":"integer","title":"Recency Segments Count","default":3,"propertyOrder":3},"monetarySegmentsCount":{"type":"integer","title":"Monetary Segments Count","default":3,"propertyOrder":5},"frequencySegmentsCount":{"type":"integer","title":"Frequency Segments Count","default":3,"minLength":1,"propertyOrder":4}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/bizztreat.app-rfm-segmentation","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/bizztreat.app-rfm-segmentation","name":"developer-portal-v2/bizztreat.app-rfm-segmentation","tag":"0.1.3","options":{},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/bizztreat.app-rfm-segmentation/32/33.png","64":"https://ui.keboola-assets.com/developer-portal/icons/bizztreat.app-rfm-segmentation/64/33.png","128":"https://ui.keboola-assets.com/developer-portal/icons/bizztreat.app-rfm-segmentation/128/33.png"}},{"id":"roe-ai.ex-roeai","vendor":{"id":"roe-ai","name":"Roe AI","address":"2261 Market Street STE 5680, San Francisco, CA 94114","email":"jason@roe-ai.com","type":"other"},"version":45,"name":"Roe AI","type":"extractor","shortDescription":"Roe AI helps you to manage, process and query unstructured data.","longDescription":"Retrieve data from Roe AI database tables. You can use either a table name or a SQL query to have the full flexibility.\n\n## Authentication\n\nYou need to create an account on Roe AI before you start. You can find your API\nkey in https://app.roe-ai.com/settings","licenseUrl":"https://www.getroe.ai/terms-of-use","documentationUrl":"https://docs.roe-ai.com/introduction","sourceCodeUrl":"https://github.com/roe-ai/keboola-extractor","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","appInfo.experimental"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Authentication configuration","required":["#api_token"],"properties":{"#api_token":{"type":"string","title":"API Token","format":"password","description":"API token to access the API which you can find at <a href=\"https://app.roe-ai.com/settings\">Roe AI Settings</a>","propertyOrder":1}}},"configurationRowSchema":{"type":"object","title":"Configuration parameters","required":["table_name"],"properties":{"query":{"type":"string","title":"SQL Query","format":"editor","options":{"editor":{"mode":"text/x-sql","theme":"monokai"}},"description":"Optional Roe AI VolansDB query to load more specific data","propertyOrder":2},"table_name":{"type":"string","title":"Table Name","description":"Name of the table to read data from","propertyOrder":1},"storage_table_name":{"type":"string","title":"Storage Table Name","description":"Name of the destination table. Source table name will be used if not specified.","propertyOrder":3}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/roe-ai.ex-roeai","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/roe-ai.ex-roeai","name":"developer-portal-v2/roe-ai.ex-roeai","tag":"0.1.5","options":{},"digest":"sha256:5295c984af0a7273a590d399d89975e9904a0208109641d5790975c353f7186f"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/roe-ai.ex-roeai/32/1725653460314.png","64":"https://ui.keboola-assets.com/developer-portal/icons/roe-ai.ex-roeai/64/1725653460314.png","128":"https://ui.keboola-assets.com/developer-portal/icons/roe-ai.ex-roeai/128/1725653460314.png"}},{"id":"roe-ai.wr-roeai","vendor":{"id":"roe-ai","name":"Roe AI","address":"2261 Market Street STE 5680, San Francisco, CA 94114","email":"jason@roe-ai.com","type":"other"},"version":15,"name":"Roe AI","type":"writer","shortDescription":"Roe AI helps you to manage, process and query unstructured data.","longDescription":"Load data into Roe AI database tables.\n\n## Authentication\n\nYou need to create an account on Roe AI before you start. You can find your API\nkey in <https://app.roe-ai.com/settings>","licenseUrl":"https://www.getroe.ai/terms-of-use","documentationUrl":"https://docs.roe-ai.com/introduction","sourceCodeUrl":"https://github.com/roe-ai/keboola-writer","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-tableInput","appInfo.experimental"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Authentication configuration","required":["#api_token"],"properties":{"#api_token":{"type":"string","title":"API Token","format":"password","propertyOrder":1}}},"configurationRowSchema":{"type":"object","title":"Configuration parameters","required":["table_name"],"properties":{"table_name":{"type":"string","title":"Table Name","propertyOrder":1}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/roe-ai.wr-roeai","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/roe-ai.wr-roeai","name":"developer-portal-v2/roe-ai.wr-roeai","tag":"0.1.4","options":{},"digest":"sha256:69c56e530c3b1a8fd0668f1d125558d60c35692e7cb1bd10b16fd5bf4c201862"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/roe-ai.wr-roeai/32/1725653470313.png","64":"https://ui.keboola-assets.com/developer-portal/icons/roe-ai.wr-roeai/64/1725653470313.png","128":"https://ui.keboola-assets.com/developer-portal/icons/roe-ai.wr-roeai/128/1725653470313.png"}},{"id":"revolt-bi.ex-rtb-house-v5","vendor":{"id":"revolt-bi","name":"Revolt BI","address":"Pobřežní 249/46,\nPraha 8-Karlín,\n186 00","email":"support@revolt.bi","type":"other"},"version":36,"name":"RTB House (API v5)","type":"extractor","shortDescription":"State-of-the-art retargeting, powered by deep learning, made to achieve your digital campaign goals","longDescription":"# ex-rtb-house-v5\nRTB House extractor for Keboola Connection.\n\n## Description\nThe extractor was created using [RTB House SDK.](https://github.com/rtbhouse-apps/rtbhouse-python-sdk) The extractor supports RTB House **API\nversion 5**.\n## Configuration\n* **Start Date, End Date:** Fixed dates in the format `YYYY-MM-DD`, dynamic number of days in the format `-N` where N is a non-negative integer, or the word `today`. For example, a configuration with `\"Start date\": -7` and `\"End date\": today` will extract data one week to the past.\n* **Username, Password:** Login credentials to RTB House web client.\n## Table Configurations\n* **Name:** Name of the table, without `.CSV` suffix. This will be the name of the table in Keboola Storage.\n* **Type:** Should be one of the following: `rtb_stats, dpa_campaign_stats, billing`.\n* **Dimensions:** Name of dimensions separated by a comma. These columns, along with `advertiserHash`, will be set as primary key in Keboola. Available dimensions are the following: `day, month, year, advertiser, subcampaign, userSegment, deviceType, creative, category, country`.\n* **Metrics:** Name of Metrics separated by a comma. Available metrics are the following: `campaignCost, impsCount, ecpm, clicksCount, ecpc, ctr, conversionsCount, ecpa, cr, conversionsValue, roas, ecps, videoCompleteViews, ecpv, vcr, viewability, userFrequency, userReach`.\n* **Count Convention:** Should be one of the following: `ATTRIBUTED, ALL_POST_CLICK, POST_VIEW`. Count convention is completely irrelevant for billing table type.\n* **Incremental:** Set as 'True' if the data should be loaded to Keboola Storage incrementally.\n\nPlease note that **not all combinations of metrics / dimensions / count conventions are possible**. If the combination is not possible, the extractor fails with an error. The information about conflicts between specific columns is, regrettably, not available and needs to be discovered by trial-and-error or deeper understanding of the data.\n\nSee also: [RTB House API documentation](https://panel.rtbhouse.com/api/docs)\n\nPrepared by \n\n![alt text](https://www.revolt.bi/wp-content/uploads/2018/08/mail-logo-zluta.png \"revolt.bi\")","licenseUrl":"https://github.com/RevoltBI/Licences/blob/master/README.md","documentationUrl":"https://revoltbi.github.io/ex-rtb-house-v5/","sourceCodeUrl":null,"requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["username","#password","from","to"],"properties":{"to":{"type":"string","title":"End Date","default":"","description":"End date of extraction. Standard fixed format, e.g. '2000-12-31', or 'today'.","propertyOrder":4},"from":{"type":"string","title":"Start Date","default":"","description":"Start date of extraction. Standard fixed format, e.g. '2000-01-13', or a number like '-7'.","propertyOrder":3},"username":{"type":"string","title":"Username","default":"","minLength":1,"propertyOrder":1},"#password":{"type":"string","title":"Password","format":"password","default":"","minLength":1,"propertyOrder":2}}},"configurationRowSchema":{"type":"object","title":"Table","required":["name","count_convention","type","metrics","dimensions","incremental"],"properties":{"name":{"type":"string","title":"Name","description":"Name of the table in KBC.","propertyOrder":1},"type":{"enum":["rtb_stats","dpa_campaign_stats","billing"],"type":"string","title":"Report Type","default":"rtb_stats","options":{"enum_titles":["RTB Statistics","DPA Statistics","Billing"]},"description":"Type of report to extract.","propertyOrder":2},"metrics":{"type":"string","title":"Metrics","default":"impsCount, clicksCount, campaignCost, conversionsCount, conversionsValue, ctr","description":"Names of metrics, separated by a comma.","propertyOrder":4},"dimensions":{"type":"string","title":"Dimensions","default":"day","description":"Names of dimensions, separated by a comma.","propertyOrder":3},"incremental":{"enum":[true,false],"type":"boolean","title":"Incremental","default":false,"options":{"enum_titles":["True","False"]},"propertyOrder":7},"count_convention":{"enum":["---","ATTRIBUTED","ALL_POST_CLICK","POST_VIEW"],"type":"string","title":"Count Convention","default":"ATTRIBUTED","options":{"enum_titles":["---","Attributed Post Click","All Post Click","Post View"]},"description":"Definition of conversions, if applicable.","propertyOrder":6}}},"createConfigurationRowSchema":null,"configurationDescription":"### Main Configuration\n* **Start Date, End Date:** Fixed dates in the format `YYYY-MM-DD`, dynamic number of days in the format `-N` where N is a non-negative integer, or the word `today`. For example, a configuration with `\"Start date\": -7` and `\"End date\": today` will extract data one week to the past.\n* **Username, Password:** Login credentials to RTB House web client.\n### Table Configurations\n* **Name:** Name of the table, without `.CSV` suffix. This will be the name of the table in Keboola Storage.\n* **Type:** Should be one of the following: `rtb_stats, dpa_campaign_stats, billing`.\n* **Dimensions:** Name of dimensions separated by a comma. These columns, along with `advertiserHash`, will be set as primary key in Keboola. Available dimensions are the following: `day, month, year, advertiser, subcampaign, userSegment, deviceType, creative, category, country`.\n* **Metrics:** Name of Metrics separated by a comma. Available metrics are the following: `campaignCost, impsCount, ecpm, clicksCount, ecpc, ctr, conversionsCount, ecpa, cr, conversionsValue, roas, ecps, videoCompleteViews, ecpv, vcr, viewability, userFrequency, userReach`.\n* **Count Convention:** Should be one of the following: `ATTRIBUTED, ALL_POST_CLICK, POST_VIEW`. Count convention is completely irrelevant for billing table type.\n* **Incremental:** Set as 'True' if the data should be loaded to Keboola Storage incrementally.\n","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":36,"uri":"docker/revolt-bi.ex-rtb-house-v5","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/revolt-bi.ex-rtb-house-v5","name":"developer-portal-v2/revolt-bi.ex-rtb-house-v5","tag":"1.0.0","options":{},"digest":"sha256:4d3bdd4f0438cbfbf1fab7b30d10bce56fb235e6f6e66913da55e6bd67c1e649"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/revolt-bi.ex-rtb-house-v5/32/1606900517386.png","64":"https://ui.keboola-assets.com/developer-portal/icons/revolt-bi.ex-rtb-house-v5/64/1606900517386.png","128":null}},{"id":"keboola.ex-sage-intacct","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":83,"name":"Sage Intacct","type":"extractor","shortDescription":"Extracts data from Sage Intacct objects.","longDescription":"The Sage Intacct Extractor enables you to extract data from your Sage Intacct cloud financial management system directly into Keboola Storage.\n\n**Key Features:**\n- **OAuth 2.0 Authentication**: Secure authentication with automatic refresh token rotation\n- **Multiple Endpoints**: Configure multiple Sage Intacct objects (customers, invoices, vendors, accounts, etc.) in a single extraction\n- **Incremental Loading**: Extract only new or modified records to optimize API usage and reduce processing time\n- **Dynamic Schema Discovery**: Automatically discover available objects and fields from your Sage Intacct instance\n- **Flexible Configuration**: Choose specific fields to extract or get all available data\n- **Efficient Pagination**: Handle large datasets with cursor-based pagination\n\nPerfect for building financial reporting dashboards, consolidating multi-entity data, or integrating Sage Intacct with other business systems.","licenseUrl":"https://github.com/keboola/component-sage-intacct-extractor/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/component-sage-intacct-extractor/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/component-sage-intacct-extractor","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":true,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","appInfo.beta","genericDockerUI-rows"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Sage Intacct Extractor Configuration","required":["authorization"],"properties":{"authorization":{"type":"object","title":"Authorization","required":["#client_id","#client_secret","username"],"properties":{"entity":{"enum":[],"type":"string","title":"Entity","format":"select","options":{"async":{"label":"Load entities","action":"list_entities"}},"description":"Specifies the entity for the request. If not provided, the default entity for the access token is used.","propertyOrder":4},"username":{"type":"string","title":"Username","minLength":1,"description":"User to log in as, in format userId@companyId","propertyOrder":3},"#client_id":{"type":"string","title":"Client ID","format":"password","minLength":1,"description":"Your Sage Intacct application Client ID","propertyOrder":1},"#client_secret":{"type":"string","title":"Client Secret","format":"password","minLength":1,"description":"Your Sage Intacct application Client Secret","propertyOrder":2}},"propertyOrder":1}}},"configurationRowSchema":{"type":"object","title":"Sage Intacct Extractor Configuration","required":["source"],"properties":{"debug":{"type":"boolean","title":"Debug Mode","format":"checkbox","default":false,"description":"Enable debug logging for troubleshooting","propertyOrder":4},"source":{"type":"object","title":"Source","format":"grid-strict","required":["endpoint"],"properties":{"columns":{"type":"array","items":{"enum":[],"type":"string"},"title":"Fields","format":"select","default":[],"options":{"async":{"label":"Re-load columns","action":"list_columns","watchFor":["source.endpoint"]},"grid_columns":12,"inputAttributes":{"placeholder":"Download all columns"}},"description":"Specific fields to extract. Leave empty to extract all fields.","uniqueItems":true,"propertyOrder":4},"endpoint":{"enum":[],"type":"string","title":"Object/Endpoint","format":"select","options":{"async":{"label":"Re-load endpoints","action":"list_endpoints"},"grid_columns":6},"description":"Sage Intacct object path to extract (e.g., accounts-receivable/customer, general-ledger/account)","propertyOrder":1},"locations":{"type":"array","items":{"enum":[],"type":"string"},"title":"Locations","format":"select","default":[],"options":{"async":{"label":"Re-load locations","action":"list_locations"},"grid_columns":6,"inputAttributes":{"placeholder":"All locations"}},"description":"Filter data by location. Leave empty to extract all locations.","uniqueItems":true,"propertyOrder":0},"initial_since":{"type":"string","title":"Initial Incremental Value","format":"date-time","options":{"dependencies":{"helper_load_type":"incremental_load"},"grid_columns":6},"description":"Only used on first run when no state exists.","propertyOrder":3},"helper_load_type":{"type":"string","watch":{"val":"destination.load_type"},"options":{"hidden":true},"template":"{{val}}","description":"Helper element to watch destination.load_type for incremental field dependencies"},"incremental_field":{"enum":[],"type":"string","title":"Incremental Field","format":"select","default":"id","options":{"async":{"label":"Re-load columns","action":"list_columns","watchFor":["source.endpoint"]},"dependencies":{"helper_load_type":"incremental_load"},"grid_columns":6},"description":"Field for incremental filtering.","propertyOrder":2}},"propertyOrder":0},"batch_size":{"type":"integer","title":"Batch Size","default":1000,"maximum":4000,"minimum":100,"description":"Number of records to fetch per API request (100-4000)","propertyOrder":3},"destination":{"type":"object","title":"Destination","required":["load_type"],"properties":{"load_type":{"enum":["full_load","incremental_load"],"type":"string","title":"Load Type","format":"select","default":"incremental_load","options":{"enum_titles":["Full Load","Incremental Load"]},"description":"If Full load is used, the destination tables will be overwritten every run. If incremental load is used, data will be upserted into the destination tables.","propertyOrder":1},"table_name":{"type":"string","title":"Table Name","description":"Output table name (defaults to endpoint name if not specified)","propertyOrder":2},"primary_key":{"type":"array","items":{"enum":[],"type":"string"},"title":"Primary Key","format":"select","default":["id"],"options":{"async":{"label":"Re-load columns","action":"list_columns","watchFor":["source.endpoint"]},"inputAttributes":{"placeholder":"Select primary key fields"}},"description":"Primary key columns for the output table. Specify the field names that uniquely identify each record.","uniqueItems":true,"propertyOrder":3}},"propertyOrder":2}}},"createConfigurationRowSchema":null,"configurationDescription":"## Authorization\n\nEnter your Sage Intacct OAuth 2.0 credentials. These are shared across all configuration rows.\n\n- **Client ID / Client Secret** — from your Sage Intacct developer application\n- **Username** — in the format `userId@companyId`\n- **Entity** (optional) — scope requests to a specific entity; use *Load entities* to browse available options\n\n## Source (per row)\n\n- **Locations** (optional) — filter by location; leave empty to extract all\n- **Endpoint** — Sage Intacct object to extract (e.g. `accounts-receivable/customer`); use *Load endpoints* to browse\n- **Fields** (optional) — columns to extract; leave empty for all fields\n- **Incremental Field** — field used to filter new/updated records (default: `id`); only applies to incremental load\n- **Initial Incremental Value** (optional) — ISO datetime used on the first run when no state exists (e.g. `2024-01-01T00:00:00Z`)\n\n## Destination (per row)\n\n- **Load Type** — `incremental_load` upserts new/updated records; `full_load` overwrites the table on every run\n- **Table Name** (optional) — output table name; defaults to the endpoint name\n- **Primary Key** — columns that uniquely identify each record (default: `id`)\n\n## Additional Settings\n\n- **Batch Size** — records per API request (default: 1000, range: 100–4000)\n- **Debug Mode** — enables verbose logging for troubleshooting","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["list_columns","list_endpoints","list_entities","list_locations"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-sage-intacct","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-sage-intacct","name":"developer-portal-v2/keboola.ex-sage-intacct","tag":"0.1.0","options":{},"digest":"sha256:ac5d3f1b91cd83c13b7c31bd1f4de8e7c0f510971a36b4a632b92ad223d4eb4e"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-sage-intacct/32/1773829279257.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-sage-intacct/64/1773829279257.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-sage-intacct/128/1773829279257.png"}},{"id":"keboola.wr-sage-intacct","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":62,"name":"Sage Intacct","type":"writer","shortDescription":"Writes records to Sage Intacct objects.","longDescription":"The Sage Intacct Writer enables you to write data from Keboola Storage to your Sage Intacct cloud financial management system.\n\n**Key Features:**\n- **OAuth 2.0 Authentication**: Secure client-credentials authentication with automatic access-token renewal\n- **Create & Update Modes**: Insert new records or update existing ones by key field\n- **Dynamic Schema Discovery**: Automatically discover available objects and fields from your Sage Intacct instance\n- **Flexible Field Mapping**: Map input table columns to Sage Intacct object fields, including nested fields via dot notation\n- **Batch Processing**: Efficient batch creation with per-record error reporting\n- **Error Handling**: Detailed error reporting per record with partial success support\n\nPerfect for syncing customer data, updating financial records, or pushing processed data back into Sage Intacct from your Keboola pipelines.","licenseUrl":"https://github.com/keboola/component-sage-intacct-writer/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/component-sage-intacct-writer/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/component-sage-intacct-writer","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"out","forwardToken":true,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-simpleTableInput","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Sage Intacct Writer Configuration","required":["authorization"],"properties":{"authorization":{"type":"object","title":"Authorization","required":["#client_id","#client_secret","username"],"properties":{"entity":{"enum":[],"type":"string","title":"Entity","format":"select","options":{"async":{"label":"Load entities","action":"list_entities"}},"description":"Specifies the entity for the request. If not provided, the default entity for the access token is used.","propertyOrder":4},"username":{"type":"string","title":"Username","minLength":1,"description":"User to log in as, in format userId@companyId","propertyOrder":3},"#client_id":{"type":"string","title":"Client ID","format":"password","minLength":1,"description":"Your Sage Intacct application Client ID","propertyOrder":1},"#client_secret":{"type":"string","title":"Client Secret","format":"password","minLength":1,"description":"Your Sage Intacct application Client Secret","propertyOrder":2}},"propertyOrder":1}}},"configurationRowSchema":{"type":"object","title":"Sage Intacct Writer Configuration","required":[],"properties":{"debug":{"type":"boolean","title":"Debug Mode","format":"checkbox","default":false,"description":"Enable debug logging for troubleshooting","propertyOrder":14},"endpoint":{"enum":[],"type":"string","title":"Object/Endpoint","format":"select","options":{"async":{"label":"Re-load endpoints","action":"list_endpoints"}},"description":"Sage Intacct object to write to (e.g., accounts-receivable/customer)","propertyOrder":4},"key_field":{"type":"string","title":"Key Field","options":{"dependencies":{"write_mode":"update"}},"description":"Sage Intacct field used as record identifier for updates (e.g., key, id)","propertyOrder":8},"_metadata_":{"type":"object","options":{"hidden":true},"properties":{"api_fields":{"type":"array"}}},"batch_size":{"type":"integer","title":"Batch Size","default":100,"maximum":500,"minimum":1,"description":"Number of records to send per API request (1-500)","propertyOrder":12},"write_mode":{"enum":["create","update"],"type":"string","title":"Write Mode","format":"select","default":"create","options":{"enum_titles":["Create","Update"]},"description":"Create: insert new records. Update: modify existing records by key.","propertyOrder":7},"load_mapping":{"type":"button","title":"Re-load Mapping","format":"sync-action","options":{"async":{"cache":false,"label":"Re-load mapping","action":"load_field_mapping","autoload":["endpoint"]}},"propertyOrder":10},"field_mapping":{"type":"array","items":{"type":"object","required":["source_column","destination_field"],"properties":{"source_column":{"type":"string","title":"Source Column","options":{"readOnly":true}},"destination_field":{"type":"string","title":"Destination Field","watch":{"api_fields":"_metadata_.api_fields"},"format":"select","options":{"tags":true},"enumSource":[{"title":"{{item.label}}","value":"{{item.field_name}}","source":"api_fields"}]}}},"title":"Field Mapping","format":"table","description":"Map input table columns to Sage Intacct fields. Use 'Re-load mapping' to add missing columns - existing rows are preserved.","propertyOrder":9},"continue_on_error":{"type":"boolean","title":"Continue on Error","format":"checkbox","default":false,"description":"When checked, failed records are written to an output table instead of failing the job. When unchecked, any failed record will cause the job to fail.","propertyOrder":13}}},"createConfigurationRowSchema":null,"configurationDescription":"Configure your Sage Intacct credentials, select the target object, and map your input table columns to the corresponding Sage Intacct fields. Each configuration row represents one write operation to one object.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["list_endpoints","list_entities","load_entity_fields","load_field_mapping"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.wr-sage-intacct","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-sage-intacct","name":"developer-portal-v2/keboola.wr-sage-intacct","tag":"0.1.1","options":{},"digest":"sha256:7ba23194442dd105b7722fd9f8b5b574d56d36c3e46a91b71199679d96ba7fcc"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-sage-intacct/32/1773829284896.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-sage-intacct/64/1773829284896.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-sage-intacct/128/1773829284896.png"}},{"id":"pond5.ex-sailthru","vendor":{"id":"pond5","name":"Pond5, Inc.","address":"251 Park Ave S, 7th Floor, New York, NY 10010","email":"petr@pond5.com","type":"other"},"version":9,"name":"Sailthru","type":"extractor","shortDescription":"Retrieve aggregated information from all campaigns over a specified date range.","longDescription":"# Sailthru Campaign Extractor\n\nA Sailthru Extractor for Keboola Connection is a component that extracts data from Sailthru Reporting API and downloads aggregated campaigns. Written in Node.js with utilization of Babel/ES6/ES7 functionality.\n\n## General overview\n\nThe main purpose of this extractor is to download data from [Sailthru Reporting API - blasts](https://getstarted.sailthru.com/new-for-developers-overview/reporting/stats/). You can specify the date range which produce results for the metrics that are available in the Sailthru Reporting API for blasts datasets.\n\n## Datasets\n\nThere are 11 datasets which are downloaded from the blasts endpoint and parsed. Each dataset is stored in separated file and created as new object in Keboola Storage. In a nutshell, there are following (11) objects available:  \n\n* overall_summary - this is basically file which contains top aggregated results.\n* beacon_times - aggregated file which pulling information about when a particular blast was opened.\n* click_times - aggregated file which pulling information about when links were clicked.\n* click_maps - aggregated file which pulling click maps information.\n* devices - aggregated file which pulling information based on the number of clicks by device.\n* domains - aggregated file which pulling information based on recipients’ email domains.\n* engagement - aggregated file which pulling information based on levels of engagement.\n* signups - aggregated file which pulling information based on signup dates.\n* subjects - aggregated file which pulling information based on subject lines.\n* topusers - aggregated file which pulling information based on the top users based on clicks, opens and purchases.\n* urls - aggregated file which pulling information based on the urls.\n\nFor more information, please check out the [official documentation](https://getstarted.sailthru.com/new-for-developers-overview/reporting/stats/).","licenseUrl":"https://github.com/radektomasek/keboola-ex-sailthru/blob/master/LICENCE.md","documentationUrl":null,"sourceCodeUrl":null,"requiredMemory":"512m","processTimeout":3600,"features":["container-root-user"],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":{},"configurationSchema":{"type":"object","title":"Parameters","required":["#apiKey","#apiSecret","startDate","endDate","convertTimestampToDate"],"properties":{"#apiKey":{"type":"string","title":"Sailthru API Key","format":"password","default":"","minLength":1},"endDate":{"type":"string","title":"End Date (YYYY-MM-DD), leave empty for keeping default: today() - 1","default":"","minLength":1},"startDate":{"type":"string","title":"Start Date (YYYY-MM-DD)","default":"2016-01-01","minLength":1},"#apiSecret":{"type":"string","title":"Sailthru API Secret","format":"password","default":"","minLength":1},"convertTimestampToDate":{"enum":[false,true],"type":"boolean","title":"Convert timestamps to dates","default":true}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"## Configuration\n\nIt's very straightforward to configure this extractor. There are only few simple parameters.\n\n    {\n      \"#apiKey\": \"Sailthru api key\",\n      \"#apiSecret\": \"Sailthru api secret\",\n      \"startDate\": \"campaign start date (YYYY-MM-DD)\",\n      \"endDate\": \"campaign end date (YYYY-MM-DD)\",\n      \"convertTimestampToDate\": true|false\n    }\n\n### Api keys (#apiKey + #apiSecret)\n\nCheck out your Sailthru account and get these parameters from your user profile.\n\n### Dates\n\nThere are two date parameters, **startDate** and **endDate**. They help you to download aggregated data within specified date range. Keep in mind, that the date mask **YYYY-MM-DD** must be specified, otherwise the extractor won't recognize the input date and fail. The extractor always download full extract based on these two parameters. There are optionals and if you don't specify them, some default values will be used. For the **startDate** the value is going to be set to **2016-01-01** and for **endDate** the default settings is **today() - 1**.\n\n### Bucket name and table name\n\nFor your convenience there is no need to specify bucketName + fileNames in the input configuration. All of it is handled automatically based on the configuration and downloaded files.\n\n### Converting timestamps to dates\n\nDatasets **beacon_times** and **click_times** are downloaded with timestamps in epoch form (unix timestamp) - number of seconds since 1970-01-01. You can keep these values by setting the parameter **convertTimestampToDate** to **false**, or you can set explicit to **true**, which converts these epochs into a human-readable time with format YYYY-MM-DD HH:mm:dd (UTC). If you don't specify this parameter, a default value true is applied and these dates are going to be converted into a human-readable form by default.  \n\n### Sample configuration\n\nA possible configuration in Keboola Connection might look like following:\n\n    {\n      \"#apiKey\": \"abcd\",\n      \"#apiSecret\": \"efgh\",\n      \"startDate\": \"2016-01-01\",\n      \"endDate\": \"2016-09-24\",\n      \"convertTimestampToDate\": true\n    }","configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/pond5.ex-sailthru","repository":{"type":"dockerhub","uri":"radektomasek/keboola-ex-sailthru","name":null,"tag":"latest","options":{},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/pond5.ex-sailthru/32/1.png","64":"https://ui.keboola-assets.com/developer-portal/icons/pond5.ex-sailthru/64/1.png","128":null}},{"id":"htns.wr-salesforce","vendor":{"id":"htns","name":"HTNS","address":"CZ","email":"kbc@htns.cz","type":"other"},"version":44,"name":"Salesforce","type":"writer","shortDescription":"Update data in Salesforce","longDescription":"This component takes input tables and updates/creates appropriate records in Salesforce. Name of Salesforce object is taken from the table file name (e.g. account.csv will update object Account).","licenseUrl":"https://bitbucket.org/mhumpolec/keboola/src/master/LICENSE.md?at=master&fileviewer=file-view-default","documentationUrl":null,"sourceCodeUrl":null,"requiredMemory":"4g","processTimeout":18000,"features":["container-root-user","dev-branch-configuration-unsafe"],"encryption":true,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["CRM","ERP","Marketing"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":1024,"uiOptions":["genericDockerUI","genericDockerUI-tableInput","tableInput"],"imageParameters":{},"stackParameters":{},"testConfiguration":{},"configurationSchema":{"type":"object","title":"Salesforce writer KBC configuration","$schema":"http://json-schema.org/draft-04/schema#","required":["loginname","#password","#securitytoken","sandbox","operation","upsertField","serialMode","replaceString","assignmentId"],"properties":{"sandbox":{"type":"boolean","title":"Sandbox","description":"True if you wish to update records in sandbox"},"#password":{"type":"string","title":"Password","format":"password","default":"","minLength":1,"description":"Salesforce password"},"loginname":{"type":"string","title":"Login Name","default":"","minLength":1,"description":"Login name for Salesforce"},"operation":{"enum":["update","insert","upsert","delete"],"type":"string","title":"Operation","default":"update","description":"Which operation you want to do"},"serialMode":{"type":"boolean","title":"Serial Mode","default":"false","description":"True if you wish to run the operation in serial mode"},"upsertField":{"type":"string","title":"Upsert Field Name","default":" ","minLength":0,"description":"Name of the file where external IDs are stored for upsert operation"},"assignmentId":{"type":"string","title":"Assignment ID","default":" ","description":"ID of Lead Assignment rule you want to run after import"},"replaceString":{"type":"string","title":"String to be replaced for dot in column name","default":"~","description":"The Object.field__c notation might be used to upsert records referencing others by external id. Specify the string in column name you wish to replace for dot"},"#securitytoken":{"type":"string","title":"Security token","default":"","minLength":1,"description":"Salesforce security token"}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"# Salesforce Writer #\n\nSalesforce Writer component for Keboola Connection.\n\n### Functionality ###\n\nThe component takes files from in/tables directory and insert/upsert/update/delete appropriate records. Name of object, which will be updated, is taken from the file name (e.g. account.csv will update object Account). CSV file has to have a header with field names, which have to exists in Salesforce. ID column is used to identify record which will be updated. When inserting records all required fields has to be filled in. \n\nThe files must be in UTF-8 format.\n\nWould you need to empty values in a field, use #N/A as text value of appropriate records.\n\nThe process *can fail on any records (due to missing required field or too large string) and this specific record will not be inserted/update*. Everything else will finish with success. There is no way how to rollback this transaction, so you *have to carefully check the log each time*. It is also great idea to include a column with external IDs and based on them do upsert later. External IDs will also save you from duplicated records when running insert several times. \n\n### Configuration ###\n#### Parameters ####\n\n* Loginname - (REQ) your user name, when updating data in sandbox don't forget to add .sandboxname at the end\n* Password - (REQ) your password\n* Security Token - (REQ) your security token, don't forget it is different for sandbox\n* sandbox - (REQ) true when you want to update data in sandbox\n* upsertField - required when the operation is upsert\n* operation - (REQ) specify the operation you wish to do. Insert/Upsert/Update/Delete are supported. \n* serialMode - true if you wish to run the import in serial mode. \n* replaceString - string to be replaced in column name for dot, so you can use that column as reference to other record via external id\n\n- when inserting you cannot specify ID field\n- when upserting the upsertField parameter is required\n- when updating the ID field in CSV file is required\n- when deleting, keep in mind that Salesforce's recycle bin can take less records than you are trying to delete, so they will be hard deleted. Also the CSV file must contain only ID field\n\n### Updates ###\n2019-03-07 Added the possibility to replace string in column name for dot, so you can use such column as reference to other object via external id\n2019-02-22 Serial Mode added\n2019-02-20 Updated to API 43","configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/htns.wr-salesforce","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/htns.wr-salesforce","name":"developer-portal-v2/htns.wr-salesforce","tag":"1.0.26","options":{},"digest":"sha256:2032785ab79177ef3f265958f9e45dee1ea6d8b18bedc077663bae8ec8af72d3"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/htns.wr-salesforce/32/1591275401891.png","64":"https://ui.keboola-assets.com/developer-portal/icons/htns.wr-salesforce/64/1591275401891.png","128":null}},{"id":"kds-team.ex-salesforce-v2","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":1134,"name":"Salesforce","type":"extractor","shortDescription":"Extracts Salesforce objects or SOQL query results.","longDescription":"This component allows you to download data with a SOQL query or directly download a whole object.","licenseUrl":"https://github.com/keboola/component-salesforce-v2/blob/main/LICENSE.md","documentationUrl":"https://help.keboola.com/components/extractors/marketing-sales/salesforce/","sourceCodeUrl":"https://github.com/keboola/component-salesforce-v2","requiredMemory":"4096m","processTimeout":21600,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["CRM","ERP","Marketing"],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Salesforce Credentials","format":"table","$schema":"http://json-schema.org/draft-04/schema#","required":["username","#password","api_version"],"properties":{"proxy":{"type":"object","title":"Proxy Settings","format":"grid-strict","properties":{"username":{"type":"string","title":"HTTPS Proxy Server Username","options":{"dependencies":{"use_proxy":true,"basic_auth":true}},"propertyOrder":10},"#password":{"type":"string","title":"HTTPS Proxy Server Password","format":"password","options":{"dependencies":{"use_proxy":true,"basic_auth":true}},"propertyOrder":15},"use_proxy":{"type":"boolean","title":"Use Proxy","format":"checkbox","default":false,"options":{"grid_break":true,"grid_columns":6},"propertyOrder":1},"basic_auth":{"type":"boolean","title":"Basic Authentication","format":"checkbox","default":false,"options":{"grid_break":true,"dependencies":{"use_proxy":true},"grid_columns":6},"propertyOrder":6},"proxy_port":{"type":"string","title":"HTTPS Proxy Server Port","options":{"dependencies":{"use_proxy":true},"grid_columns":4},"propertyOrder":3},"proxy_server":{"type":"string","title":"HTTPS Proxy Server Address","options":{"dependencies":{"use_proxy":true},"grid_columns":8},"propertyOrder":2}},"description":"Proxy address will be constructed in (username:password@)your.proxy.server.com(:port) format.","propertyOrder":60},"domain":{"type":"string","title":"Domain","default":"","options":{"dependencies":{"login_method":"connected_app_oauth_cc"}},"description":"Your Salesforce Domain. For example: https://keboola-dev-ed.my.salesforce.com","propertyOrder":30},"sandbox":{"type":"boolean","title":"Sandbox","format":"checkbox","options":{"dependencies":{"login_method":["security_token","connected_app"]}},"description":"Download records from sandbox instead of the production environment.","propertyOrder":40},"username":{"type":"string","title":"Login Name","default":"","options":{"dependencies":{"login_method":["security_token","connected_app"]}},"minLength":1,"description":"Login name for Salesforce","propertyOrder":10},"#password":{"type":"string","title":"Password","format":"password","default":"","options":{"dependencies":{"login_method":["security_token","connected_app"]}},"minLength":1,"description":"Salesforce password","propertyOrder":20},"api_version":{"enum":["52.0","53.0","54.0","55.0","56.0","57.0","58.0","59.0","60.0","61.0","62.0"],"type":"string","title":"API version","default":"62.0","description":"Specify the version of API you want to extract data from","propertyOrder":50},"login_method":{"enum":["security_token","connected_app","connected_app_oauth_cc"],"type":"string","title":"Login Method","default":"security_token","options":{"enum_titles":["Security Token with Username and Password (DEPRECATED - retired by Salesforce in Summer '27)","Connected App with Username and Password (DEPRECATED - retired by Salesforce on 2027-02-20)","Connected App OAuth 2.0 Client Credentials (recommended)"]},"description":"Salesforce is retiring both username and password login methods. Change this to Connected App OAuth 2.0 Client Credentials. Connected App with Username and Password stops working on 2027-02-20, Security Token with Username and Password in the Summer '27 release (about May 2027); both are already unavailable in new Salesforce orgs.","propertyOrder":1},"#consumer_key":{"type":"string","title":"Consumer Key","format":"password","options":{"dependencies":{"login_method":["connected_app","connected_app_oauth_cc"]}},"description":"Salesforce Connected App Consumer Key","propertyOrder":33},"#security_token":{"type":"string","title":"Security token","format":"password","default":"","options":{"dependencies":{"login_method":"security_token"}},"description":"Salesforce security token","propertyOrder":30},"test_connection":{"type":"button","format":"test-connection","propertyOrder":70},"#consumer_secret":{"type":"string","title":"Consumer Secret","format":"password","options":{"dependencies":{"login_method":["connected_app","connected_app_oauth_cc"]}},"description":"Salesforce Connected App Consumer Secret","propertyOrder":36}}},"configurationRowSchema":{"type":"object","title":"Query Configuration","required":["query_type_selector"],"properties":{"fields":{"enum":[],"type":"array","items":{"enum":[],"type":"string"},"title":"Fields (optional)","format":"select","options":{"async":{"label":"Load Fields","action":"loadFields"},"dependencies":{"query_type_selector":"Object"}},"description":"Salesforce fields to fetch. If left empty, all fields will be downloaded.","uniqueItems":true,"propertyOrder":3},"object":{"enum":[],"type":"string","items":{"enum":[],"type":"string"},"title":"Object Name","format":"select","options":{"async":{"label":"Re-load Objects","action":"loadObjects"},"dependencies":{"query_type_selector":"Object"}},"description":"Salesforce object identifier, eg. Contact","propertyOrder":2},"is_deleted":{"type":"boolean","title":"Get deleted records","format":"checkbox","default":false,"description":"Fetch records that have been deleted","propertyOrder":6},"soql_query":{"type":"string","title":"SOQL Query","format":"textarea","options":{"dependencies":{"query_type_selector":"Custom SOQL"}},"description":"Specify the SOQL query, eg. SELECT Id, FirstName, LastName FROM Contact. You can easily develop your SOQL code in the <a href='https://workbench.developerforce.com/login.php?startUrl=%2Fquery.php'>Developer Workbench</a>","propertyOrder":4},"loading_options":{"type":"object","title":"Loading Options","required":["incremental"],"properties":{"pkey":{"type":"array","items":{"enum":[],"type":"string"},"title":"Primary key","format":"select","default":["Id"],"options":{"async":{"label":"Re-load Fields","action":"loadPossiblePrimaryKeys"}},"uniqueItems":true,"propertyOrder":5000},"incremental":{"enum":[0,1],"type":"integer","title":"Load type","default":0,"options":{"enum_titles":["Full Load","Incremental Update"]},"description":"If set to Incremental update, the result tables will be updated based on primary key and new records will be fetched. Full load overwrites the destination table each time.","propertyOrder":200},"incremental_fetch":{"type":"boolean","title":"Incremental fetch","format":"checkbox","default":false,"options":{"dependencies":{"incremental":1}},"description":"Fetch records that have been updated since the last run of the component with a specified field","propertyOrder":250},"incremental_field":{"enum":[],"type":"string","title":"Incremental Field","format":"select","options":{"async":{"label":"Re-load Fields","action":"loadPossibleIncrementalField"},"dependencies":{"incremental":1,"incremental_fetch":true}},"description":"Salesforce object field to use for incremental fetching, eg. LastModifiedDate for most Salesforce objects or CreatedDate for Salesforce History objects","propertyOrder":300},"output_table_name":{"type":"string","title":"Storage Table Name","description":"Override the default name of the table in Storage","propertyOrder":20},"incremental_overlap_seconds":{"type":"integer","title":"Incremental Overlap (seconds)","default":0,"minimum":0,"options":{"dependencies":{"incremental":1,"incremental_fetch":true}},"description":"Number of seconds to subtract from the last watermark to prevent missing records due to clock skew or delayed commits. Default is 0 (no overlap).","propertyOrder":350}},"propertyOrder":100},"validation_button":{"type":"button","format":"sync-action","options":{"async":{"label":"Test Query","action":"testQuery"},"dependencies":{"query_type_selector":"Custom SOQL"}},"propertyOrder":5},"query_type_selector":{"enum":["Object","Custom SOQL"],"type":"string","title":"Query type","default":"Object","propertyOrder":1}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["loadFields","loadObjects","loadPossibleIncrementalField","loadPossiblePrimaryKeys","testConnection","testQuery"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":1134,"uri":"docker/kds-team.ex-salesforce-v2","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-salesforce-v2","name":"developer-portal-v2/kds-team.ex-salesforce-v2","tag":"1.4.11","options":{},"digest":"sha256:ad71298ca9f92f610e4499c43b604d27ec4c5f24f60b463af184c6d809bf7db5"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-salesforce-v2/32/1677064699064.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-salesforce-v2/64/1677064699064.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-salesforce-v2/128/1677064699064.png"}},{"id":"kds-team.wr-salesforce","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":650,"name":"Salesforce","type":"writer","shortDescription":"Writes records to Salesforce objects.","longDescription":"Upload data to Salesforce using Bulk API 2.0. This component supports the following operations: INSERT, UPDATE, UPSERT, and DELETE.","licenseUrl":"https://github.com/keboola/component-salesforce/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-salesforce/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-salesforce","requiredMemory":"6400m","processTimeout":57600,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-tableInput","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Salesforce Credentials","format":"table","$schema":"http://json-schema.org/draft-04/schema#","required":["username","#password","#security_token"],"properties":{"proxy":{"type":"object","title":"Proxy Settings","format":"grid-strict","properties":{"username":{"type":"string","title":"HTTPS proxy server username","options":{"dependencies":{"use_proxy":true,"basic_auth":true}},"propertyOrder":10},"#password":{"type":"string","title":"HTTPS proxy server password","format":"password","options":{"dependencies":{"use_proxy":true,"basic_auth":true}},"propertyOrder":15},"use_proxy":{"type":"boolean","title":"Use proxy","format":"checkbox","default":false,"options":{"grid_break":true,"grid_columns":6},"propertyOrder":1},"basic_auth":{"type":"boolean","title":"Basic authentication","format":"checkbox","default":false,"options":{"grid_break":true,"dependencies":{"use_proxy":true},"grid_columns":6},"propertyOrder":6},"proxy_port":{"type":"string","title":"HTTPS proxy server port","options":{"dependencies":{"use_proxy":true},"grid_columns":4},"propertyOrder":3},"proxy_server":{"type":"string","title":"HTTPS proxy server address","options":{"dependencies":{"use_proxy":true},"grid_columns":8},"propertyOrder":2}},"description":"The proxy address will be constructed in the format: (username:password@)your.proxy.server.com(:port).","propertyOrder":60},"domain":{"type":"string","title":"My Domain URL","options":{"dependencies":{"login_method":"connected_app_oauth_cc"},"inputAttributes":{"placeholder":"my-domain.sandbox.my.salesforce.com"}},"description":"To find your My Domain URL, log in to Salesforce. From Setup, enter My Domain in the Quick Find box, then select My Domain.","propertyOrder":33},"sandbox":{"type":"boolean","title":"Sandbox","format":"checkbox","options":{"dependencies":{"login_method":"security_token"}},"description":"Downloads records from the sandbox rather than the production environment.","propertyOrder":40},"username":{"type":"string","title":"Login name","default":"","options":{"dependencies":{"login_method":"security_token"}},"minLength":1,"description":"Salesforce login name.","propertyOrder":10},"#password":{"type":"string","title":"Password","format":"password","default":"","options":{"dependencies":{"login_method":"security_token"}},"minLength":1,"description":"Salesforce password.","propertyOrder":20},"api_version":{"enum":["31.0","32.0","34.0","35.0","36.0","37.0","38.0","39.0","40.0","41.0","42.0","43.0","44.0","45.0","46.0","47.0","48.0","49.0","50.0","51.0","52.0","53.0","54.0","55.0","56.0","57.0","58.0","59.0","60.0","61.0","62.0","63.0","64.0"],"type":"string","title":"API version","default":"64.0","description":"Specify the Salesforce API version to use. Salesforce retires old versions: 21.0 to 30.0 are already retired, and 31.0 to 40.0 become unsupported in the Summer '27 release. Versions 31.0 to 40.0 work only for rows that have Serial mode switched on; any other row runs on the current default instead. Keep this value at a recent version.","propertyOrder":50},"consumer_key":{"type":"string","title":"Consumer key","options":{"dependencies":{"login_method":"connected_app_oauth_cc"}},"description":"Salesforce connected app consumer key.","propertyOrder":33},"login_method":{"enum":["security_token","connected_app_oauth_cc"],"type":"string","title":"Login method","default":"security_token","options":{"enum_titles":["Security token with username and password (deprecated)","Connected app OAuth 2.0 client credentials (recommended)"]},"description":"Specify the login method to be used. The \"Security token\" method uses the Salesforce SOAP API login() call. Salesforce retires login() in the Summer '27 release, and it is switched off by default in orgs created in Winter '26 or later. Use \"Connected app OAuth 2.0 client credentials\" for new configurations, and migrate existing ones.","propertyOrder":1},"#security_token":{"type":"string","title":"Security token","format":"password","default":"","options":{"dependencies":{"login_method":"security_token"}},"description":"Salesforce security token.","propertyOrder":30},"test_connection":{"type":"button","format":"test-connection","propertyOrder":70},"#consumer_secret":{"type":"string","title":"Consumer secret","format":"password","options":{"dependencies":{"login_method":"connected_app_oauth_cc"}},"description":"Salesforce connected app consumer secret.","propertyOrder":36}}},"configurationRowSchema":{"type":"object","title":"Operation Configuration","required":["operation","sf_object"],"properties":{"operation":{"enum":["Insert","Update","Upsert","Delete"],"type":"string","title":"Operation","default":"Insert","propertyOrder":20},"sf_object":{"enum":[],"type":"string","title":"Object","format":"select","options":{"async":{"label":"Reload objects","action":"loadObjects"}},"description":"Salesforce object, e.g., Contact.","propertyOrder":10},"assignment_id":{"type":"string","title":"Assignment ID","description":"The ID of the Lead <a href =\"https://help.salesforce.com/s/articleView?id=sf.customize_leadrules.htm&language=en_US&type=5\">Assignment Rule</a> you want to apply after import. <a href=\"https://help.salesforce.com/s/articleView?id=000381858&type=1\">See how to find it</a>.","propertyOrder":60},"replace_string":{"type":"string","title":"Replace string","description":"Set the string that should replace a dot (\".\") in all column names that contain the replacement string. For example, with the replace string set to __, the column contact__address will be sent to Salesforce as contact.address.","propertyOrder":40},"advanced_options":{"if":{"properties":{"serial_mode":{"const":true}}},"else":{"properties":{"batch_size":{"maximum":1000000000,"options":{"dependencies":{"override_batch_size":true}}}}},"then":{"properties":{"batch_size":{"maximum":10000,"options":{"dependencies":{"serial_mode":true}}}}},"type":"object","title":"Additional options","properties":{"batch_size":{"type":"integer","title":"Batch size","default":2500,"minimum":1,"description":"Defines the batch size. The maximum is 10,000 in serial mode, while in standard mode, the limit is 100MB. Reduce this value if you experience connection errors. Manual adjustment is not recommended.","propertyOrder":15},"serial_mode":{"type":"boolean","title":"Serial mode","default":false,"required":true,"description":"Run batches in serial mode. This helps prevent locks on objects but significantly increases run time.","propertyOrder":1},"override_batch_size":{"type":"boolean","title":"Batch size override","format":"checkbox","default":false,"options":{"dependencies":{"serial_mode":false}},"required":true,"description":"Enable this option to override the batch size. If disabled, the batch size is estimated based on data size. Manual batch size adjustment is not recommended.","propertyOrder":3}},"propertyOrder":65},"upsert_field_name":{"type":"string","title":"External ID","options":{"dependencies":{"operation":"Upsert"}},"description":"Specify which column in the input table is used as an External ID for the upsert operation. Values in the External ID column must be unique. More information on importing with External IDs can be found in the <a href='https://help.salesforce.com/s/articleView?id=sf.faq_import_general_what_is_an_external.htm&type=5'>Salesforce documentation</a>.","propertyOrder":50}}},"createConfigurationRowSchema":null,"configurationDescription":"Testing configuration description.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["loadObjects","testConnection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.wr-salesforce","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.wr-salesforce","name":"developer-portal-v2/kds-team.wr-salesforce","tag":"1.0.5","options":{},"digest":"sha256:2b5d326e09904206df0724376ffbe9bcef23091580e164cae1c486ee91e84894"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.wr-salesforce/32/1677064713933.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.wr-salesforce/64/1677064713933.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.wr-salesforce/128/1677064713933.png"}},{"id":"htns.wr-salesforce-analytics-cloud","vendor":{"id":"htns","name":"HTNS","address":"CZ","email":"kbc@htns.cz","type":"other"},"version":24,"name":"Salesforce Analytics Cloud","type":"writer","shortDescription":"Overwrite data in Salesforce Analytics Cloud","longDescription":"### Functionality\n\nThe component takes files from in/tables directory and overwrites data in your Analytics Cloud. Name of object, which will be updated, is taken from the file name (e.g. account.csv will update object Account). CSV file has to have a header with field names, which have to exists in Salesforce. ID column is used to identify record which will be updated. When inserting records all required fields has to be filled in. \n\nThe files must be in UTF-8 format.\n\n### Configuration ###\n#### Parameters ####\n\n* Loginname - (REQ) your user name, when updating data in sandbox don't forget to add .sandboxname at the end\n* Password - (REQ) your password\n* Security Token - (REQ) your security token, don't forget it is different for sandbox\n* Dataset - (REQ) data set name in Analytics Cloud\n* Sandbox - (REQ) true when you want to update data in sandbox","licenseUrl":"https://bitbucket.org/mhumpolec/kbc-wave-writer/src/master/LICENSE.md?at=master&fileviewer=file-view-default","documentationUrl":null,"sourceCodeUrl":null,"requiredMemory":"1g","processTimeout":3600,"features":["container-root-user","dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["CRM","ERP","Marketing"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Salesforce Analytics Cloud Writer KBC configuration","$schema":"http://json-schema.org/draft-04/schema#","required":["loginname","#password","#securitytoken","dataset","sandbox"],"properties":{"dataset":{"type":"string","title":"Dataset name","default":"KBC","minLength":1,"description":"Enter the name of your dataset in Analytics Cloud"},"sandbox":{"type":"boolean","title":"Sandbox","description":"True if you wish to update records in sandbox"},"#password":{"type":"string","title":"Password","format":"password","default":"","minLength":1,"description":"Salesforce password"},"loginname":{"type":"string","title":"Login Name","default":"","minLength":1,"description":"Login name for Salesforce"},"#securitytoken":{"type":"string","title":"Security token","default":"","minLength":1,"description":"Salesforce security token"}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/htns.wr-salesforce-analytics-cloud","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/htns.wr-salesforce-analytics-cloud","name":"developer-portal-v2/htns.wr-salesforce-analytics-cloud","tag":"1.0.5","options":{},"digest":"sha256:92d615c522034f65472dadb953ea8fc185ff597cea462b38dadeaf0805f51d92"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/htns.wr-salesforce-analytics-cloud/32/1591275391506.png","64":"https://ui.keboola-assets.com/developer-portal/icons/htns.wr-salesforce-analytics-cloud/64/1591275391506.png","128":null}},{"id":"kds-team.ex-salesforce-commerce-cloud","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":128,"name":"Salesforce Commerce Cloud","type":"extractor","shortDescription":"Extracts objects from Salesforce Commerce Cloud.","longDescription":"This component enables you to extract objects from Salesforce Commerce Cloud.\n\nThe following endpoints are currently supported:\n* [Orders](https://developer.salesforce.com/docs/commerce/commerce-api/references/orders?meta=getOrders)\n* [Promotions](https://developer.salesforce.com/docs/commerce/commerce-api/references/promotions?meta=getPromotion)\n* [Catalogs](https://developer.salesforce.com/docs/commerce/commerce-api/references/catalogs?meta=getCatalogs)\n* [Source Code Groups](https://developer.salesforce.com/docs/commerce/commerce-api/references/source-code-groups?meta=getSourceCodeGroup)","licenseUrl":"https://bitbucket.org/kds_consulting_team/kds-team.ex-salesforce-commerce-cloud/src/master/LICENSE.md","documentationUrl":"https://bitbucket.org/kds_consulting_team/kds-team.ex-salesforce-commerce-cloud/src/master/README.md","sourceCodeUrl":"https://bitbucket.org/kds_consulting_team/kds-team.ex-salesforce-commerce-cloud/src/master/src/","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"easy","category":null,"categories":["E-commerce"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-resetState","appInfo.experimental"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Salesforce Commerce Cloud Authentication","required":["client_id","#client_secret","tenant_id","organization_id","short_code"],"properties":{"client_id":{"type":"string","title":"Client ID","description":"Client ID granted by the Salesforce Commerce Cloud Account Manager","propertyOrder":10},"short_code":{"type":"string","title":"Short code","description":"Get Short code from SFCC Business Manager by going to Administration > Site Development > Salesforce Commerce API Settings","propertyOrder":50},"#client_secret":{"type":"string","title":"Client Secret","format":"password","description":"Client Secret granted by the Salesforce Commerce Cloud Account Manager","propertyOrder":20},"organization_id":{"type":"string","title":"Organization Id","description":"Get Organization Id from SFCC Business Manager by going to Administration > Site Development > Salesforce Commerce API Settings","propertyOrder":30}}},"configurationRowSchema":{"type":"object","title":"Salesforce Commerce Cloud Authentication","required":["endpoint"],"properties":{"date_to":{"type":"string","title":"Last modified date to","options":{"dependencies":{"endpoint":["orders"]}},"description":"Data that has been modified until this date will be fetched. Either a relative date can be set eg. 'now', or an exact date eg. 2022-01-01","propertyOrder":40},"site_id":{"type":"string","title":"Site ID","options":{"dependencies":{"endpoint":["orders","promotions","source_code_groups"]}},"description":"Site ID is the name of the site for which you want to access data, for example RefArch or SiteGenesis. To see a list of sites in Business Manager, go to Administration > Sites > Manage Sites","propertyOrder":20},"endpoint":{"enum":["promotions","orders","source_code_groups","catalogs"],"type":"string","title":"Endpoint","default":"Search analytics","options":{"enum_titles":["Promotions","Orders","Source Code Groups","Catalogs"]},"propertyOrder":10},"date_from":{"type":"string","title":"Last modified date from","options":{"dependencies":{"endpoint":["orders"]}},"description":"Data that has been modified since this date will be fetched. Either a relative date can be set eg. 3 days ago, or an exact date eg. 2022-01-01","propertyOrder":30},"use_created_date":{"type":"boolean","title":"Filter orders by created date instead of last modified date","format":"checkbox","default":false,"options":{"dependencies":{"endpoint":["orders"]}},"propertyOrder":50}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.ex-salesforce-commerce-cloud","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-salesforce-commerce-cloud","name":"developer-portal-v2/kds-team.ex-salesforce-commerce-cloud","tag":"0.0.10","options":{},"digest":"sha256:f97d081905e45311c8cb2b819cf9272b206b96b8d34a9fafed91d520b0a46414"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-salesforce-commerce-cloud/32/1701163489136.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-salesforce-commerce-cloud/64/1701163489136.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-salesforce-commerce-cloud/128/1701163489136.png"}},{"id":"keboola.ex-sap-odata","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":406,"name":"SAP-Odata","type":"extractor","shortDescription":"Extract data from SAP OData services (V2 and V4)","longDescription":"Generic extractor for SAP OData services supporting both OData V2 and V4 protocols.\n\n## Features\n\n- **Universal SAP OData connector** - supports any SAP OData service (S/4HANA, BW, CRM, SuccessFactors, etc.)\n- **OData V2 and V4 support** - automatic version detection with smart SAP metadata parsing\n- **Multiple authentication methods** - Basic authentication, OAuth 2.0, and API Key\n- **Full data extraction** - filtering, column selection, navigation property expansion\n- **Incremental sync** - delta synchronization using state file\n- **Dynamic UI** - entity sets and fields loaded from $metadata\n- **SAP-optimized** - handles SAP's mixed V2/V4 metadata correctly\n\n## Configuration\n\n### Authentication\n\nThe extractor supports three authentication methods:\n\n1. **Basic Authentication** - Username and password\n2. **OAuth 2.0** - Via Keboola OAuth Broker\n3. **API Key** - For SAP API Business Hub and similar services\n\n### Entity Configuration\n\nFor each entity you want to extract, configure:\n\n- **Entity Set** - Select from available entity sets\n- **Select Fields** - Choose specific fields to extract\n- **Filter Expression** - OData $filter syntax\n- **Expand Properties** - Include related entities\n- **Sync Type** - Full or incremental sync\n- **Primary Key** - Fields for deduplication\n\n## Supported OData Operations\n\n- `$select` - Column selection\n- `$filter` - Data filtering\n- `$expand` - Navigation property expansion\n- `$orderby` - Sorting\n- `$top/$skip` - Pagination\n- `$count` - Record counting","licenseUrl":"https://github.com/keboola/component-ex-sap-odata/blob/main/LICENSE","documentationUrl":"https://github.com/keboola/component-ex-sap-odata/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-ex-sap-odata","requiredMemory":"512m","processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"SAP OData Connection","required":[],"properties":{"connection":{"type":"object","title":"Connection","required":["base_url"],"properties":{"base_url":{"type":"string","title":"Base URL","format":"url","options":{"tooltip":"**Base URL** of your SAP system, **without** the service path.\n\n**Examples:**\n- `https://my-sap-server.com`\n- `https://sandbox.api.sap.com/s4hanacloud`\n\nYou can find available services at the [SAP API Hub](https://api.sap.com/)."},"description":"Base URL of your SAP system without the service path.","propertyOrder":1},"catalog_path":{"type":"string","title":"Catalog Path (Optional)","options":{"tooltip":"Path to the **SAP Service Catalog** for browsing available OData services.\n\n**Example:** `http/keboola/catalog`\n\nLeave empty if you don't use a service catalog."},"description":"Path to SAP Service Catalog for browsing services.","propertyOrder":2}},"propertyOrder":1},"authentication":{"type":"object","title":"Authentication","required":["auth_type"],"properties":{"#api_key":{"type":"string","title":"API Key","format":"password","options":{"tooltip":"**API key** for authentication.\n\nThe value is **encrypted** and stored securely.\n\nGet your key at [api.sap.com](https://api.sap.com/).","dependencies":{"auth_type":"apiKey"}},"description":"API key for authentication (stored securely).","propertyOrder":4},"username":{"type":"string","title":"Username","options":{"tooltip":"Your **SAP system username** for basic authentication.","dependencies":{"auth_type":"basic"}},"description":"Your SAP system username.","propertyOrder":2},"#password":{"type":"string","title":"Password","format":"password","options":{"tooltip":"Your **SAP system password**.\n\nThe value is **encrypted** and stored securely — it will never be displayed in plain text.","dependencies":{"auth_type":"basic"}},"description":"Your SAP system password (stored securely).","propertyOrder":3},"auth_type":{"enum":["basic","oauth","apiKey"],"type":"string","title":"Authentication Type","default":"basic","options":{"tooltip":"**Authentication method** for connecting to your SAP system.\n\n| Method | Use case |\n|---|---|\n| **Basic** | Username & password — most common |\n| **OAuth 2.0** | Client credentials flow |\n| **API Key** | SAP API Hub or custom gateways |\n\n[SAP authentication docs](https://help.sap.com/docs/SAP_NETWEAVER_AS_ABAP_FOR_SOH_740/68bf513362174d54b58cddec28794093/e6f7c2fad4bd453eb5ee75b5d2685885.html)"},"description":"Select the authentication method for your SAP system.","enum_titles":["Username & Password","OAuth 2.0","API Key"],"propertyOrder":1},"client_id":{"type":"string","title":"Client ID","options":{"tooltip":"Your **OAuth 2.0 Client ID** for the client credentials grant.","dependencies":{"auth_type":"oauth"}},"description":"OAuth 2.0 client ID.","propertyOrder":7},"token_url":{"type":"string","title":"Token URL","format":"url","options":{"tooltip":"**OAuth 2.0 token endpoint** URL for client credentials flow.\n\nThis is the URL where the component requests an access token using your Client ID and Client Secret.","dependencies":{"auth_type":"oauth"}},"description":"OAuth 2.0 token endpoint URL.","propertyOrder":6},"#client_secret":{"type":"string","title":"Client Secret","format":"password","options":{"tooltip":"Your **OAuth 2.0 Client Secret**.\n\nThe value is **encrypted** and stored securely.","dependencies":{"auth_type":"oauth"}},"description":"OAuth 2.0 client secret (stored securely).","propertyOrder":8},"test_connection":{"type":"button","format":"test-connection","options":{"async":{"label":"Test Connection","action":"testConnection"}},"propertyOrder":9},"api_key_header_name":{"type":"string","title":"API Key Header Name","default":"APIKey","options":{"tooltip":"**HTTP header name** used to send the API key.\n\n**Common values:**\n- `APIKey` — SAP API Hub (default)\n- `X-API-Key` — custom gateways","dependencies":{"auth_type":"apiKey"}},"description":"HTTP header name for the API key.","propertyOrder":5}},"propertyOrder":2},"advanced_options":{"type":"object","title":"Advanced Options","properties":{"connection_options":{"type":"array","items":{"type":"object","title":"Connection Settings","properties":{"timeout":{"type":"integer","title":"Request Timeout (seconds)","default":60,"options":{"tooltip":"**Maximum wait time** for a SAP server response in seconds.\n\n**Recommended values:**\n- `60` — standard extractions (default)\n- `120`+ — large or complex extractions"},"description":"Maximum wait time for a server response.","propertyOrder":1},"verify_ssl":{"type":"boolean","title":"Verify SSL Certificates","default":true,"options":{"tooltip":"Verify **SSL/TLS certificates** for HTTPS connections.\n\n**Disable only** for development environments with self-signed certificates."},"description":"Verify SSL/TLS certificates for HTTPS connections.","propertyOrder":3},"max_retries":{"type":"integer","title":"Max Retries","default":3,"options":{"tooltip":"Number of **automatic retry attempts** on transient failures (network issues, timeouts).\n\n**Recommended:** `3` (default)"},"description":"Number of retry attempts on transient failures.","propertyOrder":2}}},"title":"Connection Options","options":{"tooltip":"Override **timeout**, **retries**, and **SSL settings**.\n\nLeave empty to use defaults."},"maxItems":1,"description":"Override default connection settings.","propertyOrder":1},"pagination_defaults":{"type":"array","items":{"type":"object","title":"Pagination Settings","properties":{"page_size":{"type":"integer","title":"Default Page Size","default":1000,"options":{"tooltip":"**Records per page** for all entities. Can be overridden per entity in row config.\n\n**Recommended:** `1000` (default). Larger pages mean fewer requests but **more memory per request** (one page is held in memory while it is parsed), especially for wide entities — raise it gradually if you hit memory limits.\n\n[OData query docs](https://www.odata.org/getting-started/basic-tutorial/#queryData)"},"description":"Records per page for all entities.","propertyOrder":1},"max_records":{"type":"integer","title":"Default Max Records","default":0,"options":{"tooltip":"**Maximum records** to fetch per entity.\n\n- `0` = **unlimited** (default)\n- Set a limit for testing or cost control"},"description":"Maximum records to fetch per entity (0 = unlimited).","propertyOrder":2}}},"title":"Default Pagination Settings","options":{"tooltip":"Override the **default page size** and **record limit** for all entities.\n\nLeave empty to use defaults:\n- Page size: `1000`\n- Max records: unlimited"},"maxItems":1,"description":"Override default pagination for all entities.","propertyOrder":2}},"propertyOrder":3}}},"configurationRowSchema":{"type":"object","title":"Entity Extraction","required":["entity_set"],"properties":{"entity_set":{"enum":[],"type":"string","title":"Entity Set","format":"select","options":{"async":{"cache":true,"label":"Load Entity Sets","action":"loadEntities","autoload":true},"tooltip":"**OData entity set** to extract data from (similar to a database table).\n\nSelect from the list or type manually.\n\n**Examples:** `A_BusinessPartner`, `SalesOrderSet`, `ProductSet`","creatable":true},"description":"OData entity set to extract (like a database table).","propertyOrder":3},"destination":{"type":"object","title":"Destination","options":{"tooltip":"Configure the **output table** name and how data is loaded into Keboola Storage."},"properties":{"load_type":{"enum":["full","incremental"],"type":"string","title":"Load Type","default":"full","options":{"tooltip":"**Loading strategy** for data in Keboola Storage.\n\n| Type | Description |\n|---|---|\n| **Full Load** | **Replace** the entire table on each run |\n| **Incremental Load** | **Append/upsert** new data using the primary key |\n\nIncremental load requires a **primary key** for deduplication.\n\n[Keboola incremental loading docs](https://help.keboola.com/storage/tables/#incremental-loading)"},"description":"Full load (replace) or incremental load (append/upsert).","enum_titles":["Full Load (Replace)","Incremental Load (Append)"],"propertyOrder":2},"primary_key":{"type":"array","items":{"type":"string"},"title":"Primary Key","format":"select","options":{"tags":true,"async":{"label":"Load Primary Keys","action":"loadPossiblePrimaryKeys"},"tooltip":"Field(s) that **uniquely identify** each record — required for Incremental Load (used for upsert/deduplication).\n\n**Common SAP keys:**\n- `BusinessPartnerID`\n- `SalesOrderID`\n- `ProductID`\n\n[Keboola primary keys docs](https://help.keboola.com/storage/tables/#primary-keys)","dependencies":{"load_type":"incremental"}},"description":"Fields that uniquely identify each record.","uniqueItems":true,"propertyOrder":3},"output_table_name":{"type":"string","title":"Output Table Name","options":{"tooltip":"Custom name for the **output table** in Keboola Storage.\n\nDefaults to the entity set name if left empty.\n\n**Examples:** `business_partners`, `sales_orders`"},"description":"Custom name for the output table (defaults to entity set name).","propertyOrder":1}},"description":"Configure output table and loading strategy.","propertyOrder":20},"preview_data":{"type":"button","title":"Preview Data","format":"sync-action","options":{"async":{"label":"Preview Data (10 records)","action":"previewData"}},"propertyOrder":100},"service_path":{"enum":[],"type":"string","title":"Service Path","format":"select","options":{"async":{"label":"Load Available Services","action":"loadServices"},"tooltip":"**Path to the OData service**, appended to the Base URL. Select from catalog or type manually.\n\n**Examples:**\n- V2: `sap/opu/odata/sap/API_BUSINESS_PARTNER`\n- V4: `sap/opu/odata4/sap/api_fixedassetacquisition/srvd_a2x/sap/fixedassetacquisition/0001`","creatable":true},"description":"Path to the OData service, appended to Base URL.","propertyOrder":2},"odata_version":{"enum":["auto","v2","v4"],"type":"string","title":"OData Version","default":"auto","options":{"tooltip":"**OData protocol version** for this service.\n\n| Value | Description |\n|---|---|\n| `auto` | Detects from `$metadata` **(recommended)** |\n| `v2` | Legacy SAP services |\n| `v4` | Modern SAP services |"},"description":"OData protocol version to use.","propertyOrder":1},"query_options":{"type":"object","title":"Query Options (Optional)","options":{"tooltip":"Optional **query parameters** to filter, select, and expand the data.\n\nLeave empty to extract all fields and records."},"properties":{"select_fields":{"type":"array","items":{"type":"string"},"title":"Select Fields","format":"select","options":{"tags":true,"async":{"label":"Load Fields","action":"loadFields"},"tooltip":"Specific fields to extract using OData `$select`.\n\n- **Leave empty** to extract all fields\n- Selecting specific fields **reduces data transfer** and API costs\n\n[OData $select docs](https://www.odata.org/getting-started/basic-tutorial/#select)"},"description":"Specific fields to extract (leave empty for all).","uniqueItems":true,"propertyOrder":1},"validate_filter":{"type":"button","title":"Validate Filter","format":"sync-action","options":{"async":{"label":"Validate Filter","action":"validateFilter"}},"propertyOrder":3},"expand_max_depth":{"type":"integer","title":"Expand Max Depth","default":5,"maximum":20,"minimum":1,"options":{"tooltip":"Maximum depth for **recursive navigation property discovery**.\n\nControls how many levels deep the \"Load Navigation Properties\" button will traverse.\n\n- Default: **5**\n- Increase if your entity model has deeply nested relationships\n- Decrease to limit the number of discovered properties\n\nCycle detection prevents infinite loops regardless of this setting."},"description":"Maximum depth for navigation property discovery (default 5).","propertyOrder":5},"expand_properties":{"type":"array","items":{"type":"string"},"title":"Expand Navigation Properties","format":"select","options":{"tags":true,"async":{"label":"Load Navigation Properties","action":"loadNavigationProperties"},"tooltip":"Related entities to include using OData `$expand`. Expanded data is **flattened into columns**.\n\nSupports **multi-level expansion** — select nested navigation properties to expand related entities multiple levels deep.\n\n**Examples:**\n- `Addresses` — direct navigation property\n- `Items/Partner` — 2 levels deep\n- `Items/Partner/Address` — 3 levels deep\n\nThe \"Load\" button discovers navigation properties **recursively** (up to the configured depth limit).\n\n[OData $expand docs](https://www.odata.org/getting-started/basic-tutorial/#expand)"},"description":"Related entities to include in the response.","uniqueItems":true,"propertyOrder":4},"filter_expression":{"type":"string","title":"Filter Expression","format":"textarea","options":{"tooltip":"Filter records using OData `$filter` syntax.\n\n**Examples:**\n- `Status eq 'Active'`\n- `CreatedAt gt 2024-01-01T00:00:00Z`\n- `Price le 100 and Category eq 'Electronics'`\n\n[OData $filter docs](https://www.odata.org/getting-started/basic-tutorial/#filter)"},"description":"Filter records using OData $filter syntax.","propertyOrder":2}},"description":"Configure field selection, filters, and expansion.","propertyOrder":10},"advanced_options":{"type":"array","items":{"type":"object","title":"Entity-Specific Settings","properties":{"page_size":{"type":"integer","title":"Page Size","options":{"tooltip":"Override the **global default page size** for this entity.\n\nLeave empty to use the global default."},"description":"Override global page size for this entity.","propertyOrder":1},"max_records":{"type":"integer","title":"Max Records","options":{"tooltip":"Override the **global max records** limit for this entity.\n\n- `0` = **unlimited** (default)\n- Leave empty to use the global default"},"description":"Override global max records for this entity (0 = unlimited).","propertyOrder":2},"parallel_pages":{"type":"integer","title":"Parallel Pages","default":1,"maximum":10,"minimum":1,"options":{"tooltip":"How many pages to fetch **at once**.\n\n- `1` (default) = sequential, one page at a time — lowest, most predictable memory.\n- Higher = more throughput on sources that handle concurrent requests, but **peak memory ≈ Page Size × Parallel Pages × row width**.\n\nTry increasing it for faster loads; lower it (or the page size) if a wide entity runs out of memory."},"description":"Number of pages to fetch concurrently (1 = sequential).","propertyOrder":3}}},"title":"Advanced Entity Options (Optional)","options":{"tooltip":"Override **pagination and parallel-fetching** settings for this specific entity.\n\nLeave empty to use the global defaults from the main configuration."},"maxItems":1,"description":"Override pagination and parallel-fetching settings for this entity.","propertyOrder":30},"fetching_options":{"type":"object","title":"Fetching Options","options":{"tooltip":"Configure **how data is fetched** from the SAP OData API — full or incremental."},"properties":{"fetch_type":{"enum":["full","incremental"],"type":"string","title":"Fetch Type","default":"full","options":{"tooltip":"**Fetch strategy** for extracting data.\n\n| Type | Description |\n|---|---|\n| **Full** | Extract **all records** on every run |\n| **Incremental** | Extract only **new/changed** records since the last run |\n\nIncremental fetch uses a timestamp field as a filter.\n\n[OData filter docs](https://www.odata.org/getting-started/basic-tutorial/#filter)"},"description":"Full fetch or incremental (changes only).","enum_titles":["Full Fetch (All Records)","Incremental Fetch (Changes Only)"],"propertyOrder":1},"incremental_field":{"enum":[],"type":"string","title":"Incremental Field","format":"select","options":{"async":{"label":"Load Incremental Fields","action":"loadIncrementalFields"},"tooltip":"**Timestamp field** used to filter new/changed records.\n\nThe filter applied: `$filter={field} gt {last_run_timestamp}`\n\n**Common SAP fields:**\n- `LastChangedAt`\n- `ModifiedOn`\n- `CreatedAt`\n- `SystemModstamp`","creatable":true,"dependencies":{"fetch_type":"incremental"}},"description":"Timestamp field for filtering new/changed records.","propertyOrder":2}},"description":"Configure how data is fetched from the API.","propertyOrder":15}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["loadEntities","loadFields","loadIncrementalFields","loadMetadataSummary","loadNavigationProperties","loadPossiblePrimaryKeys","loadServices","previewData","testConnection","validateFilter"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-sap-odata","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-sap-odata","name":"developer-portal-v2/keboola.ex-sap-odata","tag":"0.0.9","options":{},"digest":"sha256:2e4a0163913bbeb3261f26db9e69ccd7f1cc7ccf3a48f2dfee7fe6179b75e04a"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-sap-odata/32/1767891235545.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-sap-odata/64/1767891235545.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-sap-odata/128/1767891235545.png"}},{"id":"keboola.ex-sas","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":45,"name":"SAS","type":"extractor","shortDescription":"Extract SAS (.sas7bdat) tables from an SFTP server into Keboola Storage. Row-based, with optional data-level incremental loading and configurable SAS file encoding.","longDescription":"# SAS File Extractor\n\nLoads SAS (`.sas7bdat`) tables from an SFTP server into Keboola Storage.\n\n## Key features\n\n- **Row-based**: one config row per SAS table. Use the **Re-load tables** action to populate the picker from the SFTP folder.\n- **Chunked streaming**: SAS files are read with pyreadstat in configurable batches and written to CSV by Polars — memory usage stays bounded for very large tables.\n- **Data-level incremental load**: pick a column (int, float, date, datetime, or string) and only rows whose value is greater than the last seen value will be loaded. The maximum is persisted in the row state file.\n- **Encoding control**: choose the iconv-compatible encoding (`CP1250`, `CP1252`, `UTF-8`, `LATIN1`, `LATIN2`) that matches the SAS export.\n- **NULL handling**: map arbitrary string literals (`\"NA\"`, `\".\"`, …) to NULL in string columns.\n- **SAS date / datetime support**: format hints from the SAS file are honored even when pyreadstat returns the column as numeric.\n- **Sync actions**: `testConnection`, `list_sas_tables`, and `prepareRows` (bulk row generation).\n\n## How it works\n\nFor each configuration row, the component:\n\n1. Connects to the SFTP server with paramiko.\n2. Downloads `<table>.sas7bdat` to a temporary local file.\n3. Detects the schema (1000-row pyreadstat sample by default, or SAS metadata only).\n4. Streams the file in chunks via pyreadstat → Polars → CSV.\n5. Applies the optional incremental filter, tracks the column max, and writes the new state.\n6. Writes the manifest with the detected schema, primary key, and load type.\n\n## Use cases\n\n- Pulling periodic SAS exports into Keboola for analytics or warehousing.\n- Migrating SAS-based pipelines onto Keboola.\n- Incremental ingestion from SAS tables that grow over time.\n\n## Requirements\n\n- SFTP access with username + password authentication.\n- Absolute path to a folder containing `.sas7bdat` files.","licenseUrl":"https://github.com/keboola/component-ex-sas/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/component-ex-sas/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/component-ex-sas","requiredMemory":"1024m","processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Authentication","required":["sftp"],"properties":{"sftp":{"type":"object","title":"Authentication","required":["host","username","#password","folder_path"],"properties":{"host":{"type":"string","title":"SFTP Host","minLength":1,"description":"SFTP server hostname or IP address","propertyOrder":1},"port":{"type":"integer","title":"SFTP Port","default":22,"maximum":65535,"minimum":1,"description":"SFTP server port (default: 22)","propertyOrder":2},"username":{"type":"string","title":"Username","minLength":1,"description":"SFTP username","propertyOrder":3},"#password":{"type":"string","title":"Password","format":"password","minLength":1,"description":"SFTP password (encrypted)","propertyOrder":4},"folder_path":{"type":"string","title":"Folder Path","minLength":1,"description":"Path to folder containing SAS files on SFTP server (e.g., /folder/subfolder)","propertyOrder":5}},"propertyOrder":1},"encoding":{"enum":["CP1250","CP1252","UTF-8","LATIN1","LATIN2"],"type":"string","title":"SAS File Encoding","default":"CP1250","description":"Encoding of SAS files (iconv-compatible name). WLATIN2 = CP1250, WLATIN1 = CP1252, UTF-8 = UTF-8","propertyOrder":2},"null_values":{"type":"array","items":{"type":"string"},"title":"Null Values","default":[],"options":{"tags":true},"description":"List of strings to treat as NULL values (e.g., 'NA', 'N/A', '.')","propertyOrder":3},"test_connection":{"type":"button","format":"test-connection","propertyOrder":4}}},"configurationRowSchema":{"type":"object","title":"Configuration","required":[],"properties":{"debug":{"type":"boolean","title":"Debug Mode","default":false,"description":"Enable detailed debug logging","propertyOrder":8},"table":{"enum":[],"type":"string","title":"Table to extract","options":{"tags":true,"async":{"label":"Re-load tables","action":"list_sas_tables"},"creatable":true},"description":"Select a SAS table to extract","propertyOrder":1},"batch_size":{"type":"integer","title":"Batch Size","default":10000,"description":"Number of rows to process at once (lower = less memory, slower)","propertyOrder":5},"destination":{"type":"object","title":"Destination","properties":{"load_type":{"enum":["full_load","incremental_load"],"type":"string","title":"Load Type","default":"full_load","description":"Type of load: full load or incremental load","propertyOrder":1},"primary_key":{"type":"array","items":{"type":"string"},"title":"Primary Key","format":"select","options":{"tags":true},"description":"Column(s) to use as primary key in Keboola Storage","uniqueItems":true,"propertyOrder":2}},"description":"Configure output table destination settings","propertyOrder":2},"infer_dtypes":{"type":"boolean","title":"Infer Data Types","default":true,"description":"Infer column data types from data sample. If false, use SAS metadata types.","propertyOrder":6},"datetime_as_date":{"type":"boolean","title":"Output datetimes as dates","default":false,"description":"If enabled, datetime columns are written as YYYY-MM-DD (time component dropped). Disabled by default - full timestamp is preserved.","propertyOrder":7},"incremental_column":{"type":"string","title":"Incremental Column","description":"Column name for incremental extraction (timestamp or numeric). Only extracts rows greater than last run value.","propertyOrder":3}}},"createConfigurationRowSchema":{"type":"object","title":"Create rows","required":["init_tables"],"properties":{"init_tables":{"type":"array","items":{"enum":[],"type":"string"},"title":"Table to extract","format":"select","options":{"tags":true,"async":{"label":"Re-load tables","action":"list_sas_tables","autoload":[]}},"description":"Select a SAS table to extract","uniqueItems":true,"propertyOrder":1}}},"configurationDescription":"# Configuration Guide\n\nThe component is row-based. SFTP credentials and a couple of file-level options sit on the **root** configuration; each **row** describes one SAS table to extract.\n\n## 1. Root configuration\n\n### SFTP connection\n\n- **Host** — SFTP hostname or IP.\n- **Port** — defaults to 22.\n- **Username** / **Password** — SFTP credentials (the password is stored encrypted).\n- **Folder Path** — absolute path on the server that contains the `.sas7bdat` files. The literal root path `/` is preserved; trailing slashes are stripped.\n- **Test Connection** button — runs the `testConnection` sync action against the supplied credentials.\n\n### File handling\n\n- **SAS File Encoding** — iconv-compatible encoding of the SAS file (`CP1250`, `CP1252`, `UTF-8`, `LATIN1`, `LATIN2`). Default `CP1250` matches WLATIN2 SAS exports common in CEE locales. Pick `UTF-8` for modern SAS files.\n- **Null Values** — list of string literals that should be mapped to NULL in string columns (e.g. `\"NA\"`, `\"N/A\"`, `\".\"`).\n\n## 2. Row configuration\n\n### Table\n\n- **Table to extract** — filename of the SAS table (e.g. `customers.sas7bdat`). Use **Re-load tables** to populate the dropdown from the SFTP folder, or type a filename manually if the file isn't listed yet.\n\n### Destination\n\n- **Load Type** — `full_load` overwrites the Storage table; `incremental_load` appends/upserts.\n- **Primary Key** — columns marked as the table's primary key in the manifest.\n\n### Incremental column (data-level)\n\nSet **Incremental Column** to a column in the SAS file (timestamp, date, or numeric). On each run, only rows whose value is strictly greater than the previously stored value are loaded, and the new maximum is written back to state.\n\n- Works on int, float, decimal, date, datetime, and string columns.\n- Also supports SAS-epoch numeric date/datetime columns (the state value is stored as an ISO date string and translated back to SAS-epoch numbers during filtering).\n- For an upsert pattern, combine with `Load Type = incremental_load` and a Primary Key.\n\n### Conversion settings\n\n- **Batch Size** — pyreadstat chunk size (default 10000). Lower values reduce memory usage at the cost of throughput.\n- **Infer Data Types** — when enabled (default), the component samples the first 1000 rows with pyreadstat to detect Polars dtypes, then applies SAS format hints to fix date/timestamp columns the sample didn't auto-convert. When disabled, the component relies entirely on SAS metadata and format hints.\n- **Output datetimes as dates** — when enabled, datetime columns are written as `YYYY-MM-DD` (time component dropped). Off by default, so full `YYYY-MM-DD HH:MM:SS` timestamps are preserved.\n- **Debug Mode** — reserved for future use.\n\n## Type mapping\n\nThe detected type string is mapped to a Keboola type by substring matching:\n\n- `int` → `INTEGER`\n- `decimal`, `numeric` → `NUMERIC`\n- `float`, `double`, `real` → `FLOAT`\n- `bool` → `BOOLEAN`\n- `datetime`, `timestamp` → `TIMESTAMP`\n- `date` → `DATE`\n- anything else → `STRING`\n\nRecognized SAS date formats (DATE, DDMMYY, MMDDYY, YYMMDD, JULIAN, MONYY, WEEKDATE, …) are forced to `DATE`; recognized datetime formats (DATETIME, DATEAMPM, DTDATE, …) are forced to `TIMESTAMP`. This keeps the manifest in sync with the values actually written to the CSV.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["list_sas_tables","prepareRows","testConnection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-sas","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-sas","name":"developer-portal-v2/keboola.ex-sas","tag":"0.0.2","options":{},"digest":"sha256:283387b791b73e65fb02ea43c2128a387ca29a8d3b899d0e89fb79e8b81ca8fc"},"publishingStatus":"public","icon":{"32":null,"64":null,"128":null}},{"id":"kds.ex-satismeter","vendor":{"id":"kds","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":24,"name":"SatisMeter","type":"extractor","shortDescription":"Get data about customers' responses from SatisMeter.","longDescription":"[SatisMeter](https://www.satismeter.com/) extractor is getting data from the [API for exporting responses](https://help.satismeter.com/api-and-developer-support/api-for-exporting-responses).\n\nData about **users** and **responses** are incrementally loaded to Storage. Extractor is always getting data for the *n* last days or since the specific *date* (based on your configuration).","licenseUrl":"https://github.com/keboola/kbc-ui-templates/blob/master/resources/kds.ex-satismeter/templates/LICENSE","documentationUrl":null,"sourceCodeUrl":null,"requiredMemory":"1024m","processTimeout":null,"features":["container-root-user"],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericTemplatesUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["config"],"properties":{"config":{"type":"object","title":"Config","required":["#username","project","startDate","endDate"],"properties":{"endDate":{"type":"string","title":"End Date","default":"-1 day","minLength":1,"description":"Any date accepted by strtotime (http://php.net/manual/en/function.strtotime.php) function (Example: -1 days, 2018-03-27)","propertyOrder":4},"project":{"type":"string","title":"Project ID","default":"","minLength":1,"description":"Fill in SatisMeter Project ID","propertyOrder":2},"#username":{"type":"string","title":"Read Key","default":"","minLength":1,"description":"Fill in SatisMeter Read API Key","propertyOrder":1},"startDate":{"type":"string","title":"Start Date","default":"-10 days","minLength":1,"description":"Any date accepted by strtotime (http://php.net/manual/en/function.strtotime.php) function (Example: -10 days, 2018-03-18)","propertyOrder":3}}}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"## Parameters\n* **Read Key** (required): Fill in your SatisMeter Read API Key. It will be automatically ciphered.\n* **Project ID** (required): Fill in ID of your SatisMeter project.\n* **Start Date** (required): Set fixed (*YYYY-MM-DD*) or rolling (*-X days*) start date to define how old responses should be extracted (default *-10 days*).\n* **End Date** (required): Set fixed (*YYYY-MM-DD*) or rolling (*-X days*) start date to define how old responses should be extracted (default *-1 day*).\n\nExtractor is storing data in KBC [incrementally](https://developers.keboola.com/extend/generic-extractor/incremental/).","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":24,"uri":"docker/kds.ex-satismeter","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/ex-generic-v2","name":"developer-portal-v2/ex-generic-v2","tag":"3.4.2","options":{},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds.ex-satismeter/32/4.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds.ex-satismeter/64/4.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds.ex-satismeter/128/4.png"}},{"id":"bizztreat.ex-segment","vendor":{"id":"bizztreat","name":"BizzTreat s.r.o.","address":"Olšanská 2643/1A\n130 00 Praha 3","email":"support@bizztreat.com","type":"other"},"version":13,"name":"Segment S3","type":"extractor","shortDescription":"Get your Segment.io events stored in the S3 into the KBC automatically.","longDescription":"App extract events stored from Segment in S3 using Keboola Connection.","licenseUrl":"https://github.com/bizztreat/keboola-ex-segment/blob/master/LICENSE.md","documentationUrl":"https://github.com/bizztreat/keboola-ex-segment/blob/master/MANUAL.md","sourceCodeUrl":null,"requiredMemory":"1024m","processTimeout":7200,"features":["container-root-user","dev-branch-job-blocked"],"encryption":true,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":true,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["File Storage"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":1024,"uiOptions":["genericDockerUI","genericDockerUI-tableOutput"],"imageParameters":{},"stackParameters":{},"testConfiguration":{},"configurationSchema":{},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/bizztreat.ex-segment","repository":{"type":"dockerhub","uri":"bizztreat/docker-keboola-ex-segment","name":null,"tag":"latest","options":{},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/bizztreat.ex-segment/32/1576492511552.png","64":"https://ui.keboola-assets.com/developer-portal/icons/bizztreat.ex-segment/64/1576492511552.png","128":"https://ui.keboola-assets.com/developer-portal/icons/bizztreat.ex-segment/128/4.png"}},{"id":"keboola.processor-select-columns","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":18,"name":"Select Columns","type":"processor","shortDescription":"Filter columns","longDescription":"Filter columns.","licenseUrl":"https://github.com/keboola/processor-select-columns/blob/master/LICENSE","documentationUrl":"https://github.com/keboola/processor-select-columns/blob/master/README.md#usage","sourceCodeUrl":"https://github.com/keboola/processor-select-columns","requiredMemory":"1g","processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":[],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":null,"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.processor-select-columns","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.processor-select-columns","name":"developer-portal-v2/keboola.processor-select-columns","tag":"1.1.0","options":{},"digest":"sha256:3e164a582432cc8f3cc2ac3c17beaaf7bedffe822ceccc4714dbd96567550f7a"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.processor-select-columns/32/1576251977978.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.processor-select-columns/64/1576251977978.png","128":null}},{"id":"kds-team.app-sendinblue","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":156,"name":"Sendinblue","type":"application","shortDescription":"Sends transactional emails to recipient lists via Sendinblue.","longDescription":"# Sendinblue\n\nSendinblue is a SaaS solution for relationship marketing. The service allows you to define & send campaigns or send transactional templates.\n\n## Overview\n\nThe component supports sending transactional emails from predefined templates to a list of email addresses. It's also possible to define template parameters to customize templates for recipients.\n\nIn order to be able to send transactional emails, the following is required:\n- a Sendinblue account,\n- activated transactional email service,\n- defined email templates.\n\nThe component uses [send a transaction email](https://developers.sendinblue.com/reference#sendtransacemail) endpoint. For correct specification of all objects, follow the documentation.\n\n## Configuration\n\nThe sample of the configuration, including input and output tables, can be found in [component's repository](https://bitbucket.org/kds_consulting_team/kds-team.app-sendinblue/src/master/component_config/sample-config/). In general, an API token and at least one input table is needed to successfully run the component.\n\n### API Key (`#apiKey`)\n\nThe API key for the Sendinblue service needs to be obtained from Sendinblue account settings. More information can be found in [the article](https://help.sendinblue.com/hc/en-us/articles/209467485-What-s-an-API-key-and-how-can-I-get-mine-).\n\n\n### Input table\n\nMultiple input tables can be specified on input. The input table must have 2 mandatory columns, otherwise the execution will fail. The list of allowed columns is following:\n\n- `emailObject` - an array of objects of recipients,\n- `templateId` - an id of a template, which will be sent to the recipient,\n- `params` - an object of parameters to be appended to the template,\n- `ccObject` - an array of objects of recipients to be included in copy,\n- `bccObject` - an array of objects of recipients to be included in blind copy.\n\nAll of the columns are described in more detailed below.\n\n#### Columns `emailObject`, `ccObject`, `bccObject`\n\nAn `emailObject` is a mandatory column, while both `ccObject` and `bccObject` are optional columns and may be left blank or not included at all. All three objects share the same configuration.\n\nAll recipients included within a single array will be included in a single email. Each object within the array must consists of mandatory field `email` and optional field `name`. If the mandatory field `email` is missing, the error from Sendinblue API is returned and recorded in the `errors` table. A sample of such object, might look like this:\n\n```\n[\n    {\n        \"email\": \"john@doe.com\"\n    },\n    {\n        \"email\": \"testy@mctestface.com\",\n        \"name\": \"Testy McTestFace\"\n    }\n]\n```\n\nwhich would result in the email being sent to two recipients, whereas the below specification would send email to a single recipient:\n\n```\n[\n    {\n        \"email\": \"john@doe.com\"\n    }\n]\n```\n\n#### Column `templateId`\n\nAn identification number of the template, which will be sent to specified recipients. If template is not found or active, the error is recorded in `errors` table. The column is mandatory.\n\n#### Column `params`\n\nAn optional column to personalize each template. For correct specification of parameters in the template, [follow the official parameters guide](https://help.sendinblue.com/hc/en-us/articles/360000946299-Create-customize-transactional-email-templates). An example of `params` object:\n\n```\n{\n    \"product\": \"protein\",\n    \"value\": \"20.00\"\n}\n```\n\n### Output table\n\nAs an output, 2 tables are returned:\n\n- `messages` - contains information about message ID and recipients, loaded incrementally,\n- `errors` - contains information about errors.\n\n## Development\n\nFor development purposes use:\n```\ndocker-compose build dev\ndocker-compose run --rm dev\n```","licenseUrl":"https://github.com/keboola/component-sendinblue/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-sendinblue/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-sendinblue","requiredMemory":null,"processTimeout":14400,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"out","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["#apiKey"],"properties":{"#apiKey":{"type":"string","title":"API Key","format":"password","minLength":1,"description":"API key to Sendinblue service.</br>Follow the <a href='https://help.sendinblue.com/hc/en-us/articles/209467485-What-s-an-API-key-and-how-can-I-get-mine-'>article</a> to obtain one.","propertyOrder":100}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"### API Key (`#apiKey`)\n\nThe API key for the Sendinblue service needs to be obtained from Sendinblue account settings. More information can be found in [the article](https://help.sendinblue.com/hc/en-us/articles/209467485-What-s-an-API-key-and-how-can-I-get-mine-).\n\n\n### Input table\n\nMultiple input tables can be specified on input. The input table must have 2 mandatory columns, otherwise the execution will fail. The list of allowed columns is following:\n\n- `emailObject` - an array of objects of recipients,\n- `templateId` - an id of a template, which will be sent to the recipient,\n- `params` - an object of parameters to be appended to the template,\n- `ccObject` - an array of objects of recipients to be included in copy,\n- `bccObject` - an array of objects of recipients to be included in blind copy.\n\nAll of the columns are described in more detailed below.\n\n#### Columns `emailObject`, `ccObject`, `bccObject`\n\nAn `emailObject` is a mandatory column, while both `ccObject` and `bccObject` are optional columns and may be left blank or not included at all. All three objects share the same configuration.\n\nAll recipients included within a single array will be included in a single email. Each object within the array must consists of mandatory field `email` and optional field `name`. If the mandatory field `email` is missing, the error from Sendinblue API is returned and recorded in the `errors` table. A sample of such object, might look like this:\n\n```\n[\n    {\n        \"email\": \"john@doe.com\"\n    },\n    {\n        \"email\": \"testy@mctestface.com\",\n        \"name\": \"Testy McTestFace\"\n    }\n]\n```\n\nwhich would result in the email being sent to two recipients, whereas the below specification would send email to a single recipient:\n\n```\n[\n    {\n        \"email\": \"john@doe.com\"\n    }\n]\n```\n\n#### Column `templateId`\n\nAn identification number of the template, which will be sent to specified recipients. If template is not found or active, the error is recorded in `errors` table. The column is mandatory.\n\n#### Column `params`\n\nAn optional column to personalize each template. For correct specification of parameters in the template, [follow the official parameters guide](https://help.sendinblue.com/hc/en-us/articles/360000946299-Create-customize-transactional-email-templates). An example of `params` object:\n\n```\n{\n    \"product\": \"protein\",\n    \"value\": \"20.00\"\n}\n```","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":156,"uri":"docker/kds-team.app-sendinblue","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.app-sendinblue","name":"developer-portal-v2/kds-team.app-sendinblue","tag":"0.2.9","options":{},"digest":"sha256:6b854bacaa1a44f2d45de0be43974d52ae5e9d04290c38c2766e596b22628474"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-sendinblue/32/34.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-sendinblue/64/34.png","128":null}},{"id":"kds-team.ex-servicenow-tables","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":373,"name":"servicenow-tables","type":"extractor","shortDescription":"Extracts ServiceNow tables.","longDescription":"This component allows you to extract data from ServiceNow using [Table API endpoint](https://developer.servicenow.com/dev.do#!/reference/api/tokyo/rest/c_TableAPI#table-GET). ","licenseUrl":"https://github.com/keboola/component-servicenow-tables/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-servicenow-tables/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-servicenow-tables","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"ServiceNow table extractor configuration","required":["user","#password"],"properties":{"user":{"type":"string","title":"Username","propertyOrder":1},"server":{"type":"string","title":"Server","description":"server url","propertyOrder":3},"threads":{"type":"integer","title":"Threads","default":8,"description":"optional - number of threads to use to fetch data","propertyOrder":4},"#password":{"type":"string","title":"Password","format":"password","propertyOrder":2},"output_bucket":{"type":"string","title":"Output bucket","default":"ex-servicenow-tables","description":"optional - Name of the bucket that results will be stored to. In case you leave this field empty, the component will use ex-servicenow-tables as an output bucket.","propertyOrder":5}}},"configurationRowSchema":{"type":"object","title":"ServiceNow table extractor configuration","required":["table"],"properties":{"table":{"type":"string","title":"Table","description":"Name of the table to be extracted","propertyOrder":1},"increment":{"type":"boolean","title":"Increment","default":false,"description":"Use this parameter to define if you want to do an incremental load.","propertyOrder":5},"primary_keys":{"type":"array","items":{"type":"string"},"title":"Primary Keys [Optional]","format":"select","options":{"tags":true},"description":"Specify primary keys for the storage table.","uniqueItems":true,"propertyOrder":6},"sysparm_query":{"type":"string","title":"SysParm Query","description":"Query which will be sent along with the get table request. You can use <a href='https://docs.servicenow.com/bundle/tokyo-application-development/page/integrate/inbound-rest/task/t_GetStartedAccessExplorer.html'>REST API Explorer</a> to try out API calls before setting up this component.","propertyOrder":2},"sysparm_fields":{"type":"string","title":"SysParm Fields [Optional]","description":"Using this parameter, you can limit fetched fields. Please use comma separation.","propertyOrder":3},"sysparm_display_value":{"enum":["false","true","all"],"type":"string","title":"SysParm Display Value [Optional]","options":{"enum_titles":["false: Returns the actual values from the database.","true: Returns the display values for all fields.","all: Returns both actual and display values."]},"description":"Determines the type of data returned, either the actual values from the database or the display values of the fields. Refer to <a href='https://docs.servicenow.com/bundle/vancouver-api-reference/page/integrate/inbound-rest/concept/c_TableAPI.html'>Table API documentation</a> for more information.","propertyOrder":4}}},"createConfigurationRowSchema":null,"configurationDescription":"#### Input\n\n##### Config Description\n\nA Configuration of 3 mandatory parameters is required for base configuration. A sample configuration of the component can be found in [component's repository](https://bitbucket.org/kds_consulting_team/kds-team.ex-servicenow-tables/src/master/component_config/sample-config/config.json).\n\n- Username (`user`) - a username used to log in to ServiceNow;\n- Password (`#password`) - a password associated with username;\n- Server (`server`) - server url that should look like \"https://kebooladev.service-now.com\";\n\nOptional parameters:\n\n- threads (`server`) - integer that specifies number of threads used to call ServiceNow API for a single row.\nKeep in mind that setting this to a high number and combining with parallel row execution can lead to overload of the source system.\nThis can further lead to API returning 5** status codes that will force the extractor to use backoff strategy leading to increased \ncomponent run times. Default number of threads is 8;\n- Output bucket (`output_bucket`) - Name of the output bucket. If the bucket with specified name does not exit, it will be created automatically.\n\n##### Row Configuration Description\n\nAdditionally, 1 mandatory parameter is required for row configuration.\n\n- Table (`table`) - Name of the table in ServiceNow database;\n\nOptional parameters:\n\n- SysParm Query (`sysparm_query`) - Use this parameter to limit the number of results;\n- SysParm Fields (`sysparm_fields`) - Use this parameter to limit the number of columns.\nYou must use a comma separated list of values;\n- Increment (`increment`) - This parameter specifies whether to store data to Keboola storage Incrementally\nor whether to use full load (Table will be truncated first before importing new data). Default is false (Full load).\nFalse is also used if this parameter is not specified at all.;\n\n#### Output\n\nTables with columns specified in `sysparm_fields` and rows filtered by `sysparm_query`.\nTables are loaded with column `sys_id` used as primary key.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":373,"uri":"docker/kds-team.ex-servicenow-tables","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-servicenow-tables","name":"developer-portal-v2/kds-team.ex-servicenow-tables","tag":"0.1.1","options":{},"digest":"sha256:42fe5570bb8d4958ba85355004441623cd6b41f4aceb517017ed16fcd8286561"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-servicenow-tables/32/1676470611873.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-servicenow-tables/64/1676470611873.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-servicenow-tables/128/1676470611873.png"}},{"id":"kds-team.wr-sftp","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":323,"name":"SFTP","type":"writer","shortDescription":"Transfer tables and files to any SFTP repository.","longDescription":"This component allows you to write tables and files from storage to any SFTP repository. \nTo connect you need credentials to log in to the SFTP server.","licenseUrl":"https://github.com/keboola/component-sftp/blob/main/LICENSE.md","documentationUrl":"https://help.keboola.com/components/writers/storage/sftp/","sourceCodeUrl":"https://github.com/keboola/component-sftp","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["File Storage"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-tableInput","genericDockerUI-fileInput","genericDockerUI-processors","appInfo.dataOut","genericVariablesUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"SFTP writer","required":["hostname","port","user","#pass"],"properties":{"ssh":{"type":"object","format":"ssh-editor","options":{"only_keys":true}},"port":{"type":"integer","title":"SFTP host port","default":22,"propertyOrder":20},"user":{"type":"string","title":"SFTP user name","propertyOrder":30},"#pass":{"type":"string","title":"SFTP password","format":"password","propertyOrder":40},"hostname":{"type":"string","title":"SFTP host URL","propertyOrder":10},"banner_timeout":{"type":"integer","title":"Banner timeout (Optional)","default":15,"description":"Timeout in seconds to wait for SSH banner, default value is 15. This parameter can solve issues related to establishing a connection, caused, for example, by server overload or high network latency.","propertyOrder":70},"test_connection":{"type":"button","format":"test-connection","propertyOrder":500},"disabled_algorithms":{"type":"string","title":"Algorithms to disable (Optional)","description":"The disabled_algorithms for example: \"{'pubkeys': ['rsa-sha2-256', 'rsa-sha2-512']}\" Find additional details at <a href='https://docs.paramiko.org/en/latest/api/transport.html?highlight=disabled_algorithms'>Paramiko documentation</a>.","propertyOrder":60}}},"configurationRowSchema":{"type":"object","title":"SFTP writer","required":["path","append_date","append_date_format"],"properties":{"path":{"type":"string","title":"Remote destination path","description":"e.g. /home/user/sftp/","propertyOrder":60},"append_date":{"enum":[0,1],"type":"number","title":"Append timestamp","default":0,"options":{"enum_titles":["No","Yes"]},"description":"Appends timestamp to result file name","propertyOrder":5200},"append_date_format":{"type":"string","title":"Date format of appended timestamp","default":"%Y%m%d%H%M%S","options":{"dependencies":{"append_date":1}},"description":"Date format as used in strftime() function","propertyOrder":5300}}},"createConfigurationRowSchema":null,"configurationDescription":"**NOTE** that when using file input mapping, only the latest files matching the specified tag will be uploaded.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["testConnection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":323,"uri":"docker/kds-team.wr-sftp","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.wr-sftp","name":"developer-portal-v2/kds-team.wr-sftp","tag":"1.3.10","options":{},"digest":"sha256:c5506c729f029b66facfe4a8b858a1ceaf8f0ab4350cf432ca47387d474ef442"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.wr-sftp/32/1616150835381.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.wr-sftp/64/1616150835381.png","128":null}},{"id":"blueskydigital.wr-sftp-webdav","vendor":{"id":"radektomasek","name":"Radek Tomášek","address":"CZ","email":"radek.tomasek@gmail.com","type":"other"},"version":26,"name":"SFTP/WebDAV","type":"writer","shortDescription":"A SFTP/WebDAV writer for KBC Storage objects","longDescription":null,"licenseUrl":"https://github.com/radektomasek/keboola-wr-sftp-webdav/blob/master/LICENCE.md","documentationUrl":"https://github.com/radektomasek/keboola-wr-sftp-webdav/blob/master/README.md","sourceCodeUrl":null,"requiredMemory":"2g","processTimeout":36000,"features":["container-root-user","dev-branch-configuration-unsafe"],"encryption":true,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["File Storage"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput","genericDockerUI-fileInput"],"imageParameters":{},"stackParameters":{},"testConfiguration":{},"configurationSchema":{"type":"object","title":"Parameters","required":["gzip","hostname","username","#password","protocol","remote_path","append_datetime","datetime_format","trust_unsecure_certificate"],"properties":{"gzip":{"enum":[false,true],"type":"boolean","title":"Gzip Compression (sftp only)","default":false},"hostname":{"type":"string","title":"Hostname","default":"","minLength":1},"protocol":{"enum":["sftp","webdav"],"type":"string","title":"Protocol","default":"sftp"},"username":{"type":"string","title":"Username","default":"","minLength":1},"#password":{"type":"string","title":"Password","format":"password","default":"","minLength":1},"remote_path":{"type":"string","title":"Remote path","default":"/","minLength":1},"append_datetime":{"enum":[false,true],"type":"boolean","title":"Append datetime","default":false},"datetime_format":{"type":"string","title":"Datetime format","default":"YYYY-MM-DD_HH:mm:ss","minLength":1},"trust_unsecure_certificate":{"enum":[false,true],"type":"boolean","title":"Trust unsecured certificate","default":true}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/blueskydigital.wr-sftp-webdav","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/blueskydigital.wr-sftp-webdav","name":"developer-portal-v2/blueskydigital.wr-sftp-webdav","tag":"latest","options":{},"digest":"sha256:d41838af51bab2a4b9e1c1de415a9897b4d66c8fdefb8c02074a8087663ba084"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/blueskydigital.wr-sftp-webdav/32/1618384909922.png","64":"https://ui.keboola-assets.com/developer-portal/icons/blueskydigital.wr-sftp-webdav/64/1618384909922.png","128":null}},{"id":"kds-team.ex-share-a-sale","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":216,"name":"Share A Sale","type":"extractor","shortDescription":"Extracts affiliate and merchant activity, traffic, and product reports from the ShareASale API.","longDescription":"ShareASale is an affiliate marketing network that services customer sets in affiliate marketing. It aids affiliates to find products to promote and earn commission for referrals on those products, while it aids merchants to implement, track and manage their affiliate program. \nThe purpose of this extractor is to extractor all the related affiliates/merchants activity details and summary and their related products.","licenseUrl":"https://github.com/keboola/component-share-a-sale/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-share-a-sale/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-share-a-sale","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Configuration","default":{"backfill_mode":"#/definitions/disable"},"required":["affiliate_id","#token","#secret_key","endpoint","keyword","incremental_period","backfill_mode"],"properties":{"#token":{"type":"string","title":"Token","minLenght":1,"propertyOrder":200},"keyword":{"type":"string","title":"Keyword","default":"","description":"This is needed for [Get Products] endpoint only. One extractor configuration will only accept one keyword. Input can either be a word or a phrase.","propertyOrder":500},"endpoint":{"type":"array","items":{"type":"object","title":"Endpoint","properties":{"endpoint":{"enum":["activity","activitySummary","merchantTimespan","traffic","traffic_by_afftrack","getProducts"],"type":"string","options":{"enum_titles":["Activity Details","Activity Summary","Merchant Timespan Report","Traffic","Traffic - Merchant grouped by Afftrack","Get Products"]}}}},"title":"Endpoint","format":"table","minItems":1,"uniqueItems":true,"propertyOrder":400},"#secret_key":{"type":"string","title":"API Secret","minLength":1,"propertyOrder":300},"affiliate_id":{"type":"string","title":"Affiliate ID","minLength":1,"propertyOrder":100},"backfill_mode":{"type":"object","oneOf":[{"$ref":"#/definitions/disable"},{"$ref":"#/definitions/enable"}],"title":"Backfill","description":"Please enter Start and End date if Backfill mode is enabled. If not, extractor will automatically define date range to last 1 day. On the other hand, please avoid running backfill on multiple endpoints as there will be a possibility that it will flood the component's memory capacity. Please run 1 or 2 endpoint only when backfill mode is enabled.","propertyOrder":700,"additionalProperties":false},"incremental_period":{"type":"string","title":"Incremental Period","default":"1 days ago","description":"Default: 1 day ago; Users are allowed to define the incremental period they want the extractor to fetch. Please leave this at default settings if adjustments are not necessary.","propertyOrder":600}},"definitions":{"enable":{"type":"object","title":"Enable","required":["backfill","start_date","end_date"],"properties":{"backfill":{"enum":["enable"],"type":"string","title":"Backfill Mode","default":"enable","options":{"enum_titles":["Enable"]},"readOnly":true,"propertyOrder":100},"end_date":{"type":"string","title":"End Date","default":"2019-01-01","minLength":1,"description":"Input Format: YYYY-MM-DD","propertyOrder":300},"start_date":{"type":"string","title":"Start Date","default":"2019-01-01","minLength":1,"description":"Input Format: YYYY-MM-DD","propertyOrder":200}}},"disable":{"type":"object","title":"Disable","required":["backfill"],"properties":{"backfill":{"enum":["disable"],"type":"string","title":"Backfill Mode","default":"disable","options":{"enum_titles":["Disable"]},"readOnly":true}}}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"# API limitations\nRequests are limited to 600 per month. Available request credits will reset each month. ShareASale state that they cannot acommodate requests for additioanl credits.\n\nUsers are required to gauage their own API usage. It is also mandatory for users to set their IP Restriction of the account to \"Require IP address match only for version 1.3 and lower\".\n\n\n# Parameters\n1. Affiliate ID\n    - Please acquire this from  ShareASale console\n\n        REPORTS > API REPORTING\n2. Token\n    - Please acquire this from  ShareASale console\n    \n        REPORTS > API REPORTING\n3. Secret Key\n    - Please acquire this from  ShareASale console\n    \n        REPORTS > API REPORTING\n4. Endpoint\n\n    1. Activity Details\n        - Detailed merchant activities\n    2. Activity Summary\n        - Activity summary to date\n    3. Merchant Timespan Report\n        - Extractor will break the requested date range into daily interval\n        - Example\n\n            - If requested date range is from 2019-01-01 to 2019-01-31, extractor will then request the endpoint with the days available within that range, meaning that there will be 31 requests just from this backfill request.\n    4. Traffic\n        - Web traffic report\n    5. Get Products\n        - A keyword or phrase is required to be entered in the configuration field below\n    6. Traffic - Merchant grouped by Afftrack\n        - Web traffic report group by afftrack for the list of merchants user input\n        - **Note: At least one input table is required. The table needs to contain a column name , 'merchantID'. The extractor will use the values from this column to loop through all the merchants.\n5. Keyword\n    - This is only needed when [Get Product] is selected as one of the endpoints.\n    - Extractor can only accept one keyword per extractor configuration.\n    - Input can either entered as a word or a phrase\n6. Incremental Period\n    - Default: 1 day ago\n    - Users are allowed to define their own incremental period they want; However, please leave this at default settings if adjustments are not necessary\n    - Accepted parameters: # days ago, # months ago, # years ago\n7. Backfill Mode\n    - Start date and end date parameter is needed when backfill mode is enabled\n    - In normal extraction, extractor will automatically define request date range to yesterday\n    - Endpoints affected by Backfill Mode:\n\n        1. Activity Details\n        2. Merhant Timespan Report\n        3. Traffic\n        4. Traffic - Merchant grouped by Afftrack\n    - Endpoints not affected by backfill mode means that the API returns from these endpoints are not bounded by date range. The API is either outputting the summary of the related matter or the current value/description of the subject.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":216,"uri":"docker/kds-team.ex-share-a-sale","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-share-a-sale","name":"developer-portal-v2/kds-team.ex-share-a-sale","tag":"0.0.7","options":{},"digest":"sha256:842fbf4337b5554e1c650a4779a040fab97570377ddab64d49d11baa07c992a9"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-share-a-sale/32/1572473278338.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-share-a-sale/64/1572473278338.png","128":null}},{"id":"kds-team.ex-shopify","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":331,"name":"Shopify","type":"extractor","shortDescription":"Extracts orders, products, inventory, customers, and events from the Shopify REST Admin API.","longDescription":"Download all objects under [Orders](https://shopify.dev/docs/admin-api/rest/reference/orders/order#index-2020-10),\n[Products](https://shopify.dev/docs/admin-api/rest/reference/products/product),\n[inventory items](https://shopify.dev/api/admin-rest/2021-10/resources/inventoryitem#resource_object),\n[levels](https://shopify.dev/api/admin-rest/2021-10/resources/inventorylevel#top),\n[locations](https://shopify.dev/api/admin-rest/2021-10/resources/location#top)[Event](https://shopify.dev/docs/admin-api/rest/reference/events/event) and\n[Customer](https://shopify.dev/docs/admin-api/rest/reference/customers) hierarchies.\n\nTo enable this application you need to:\n\n- [enable private app development](https://help.shopify.com/en/manual/apps/private-apps#enable-private-app-development-from-the-shopify-admin) for your store.\n- Create a private application\n- Enable `Read access` ADMIN API PERMISSIONS for following following objects:\n    - `Orders`\n    - `Products`\n    - `Inventory`\n    - `Customers`\n\n## Column Name Shortening\n\nThe extractor automatically shortens column names that are longer than 64 characters to prevent storage limitations. The shortening process uses a two-step approach:\n\n1. **Vowel Removal**: First, all vowels (a, e, i, o, u, y) are removed from the column name while preserving readability\n2. **Hash-based Truncation**: If the column name is still longer than 64 characters after removing vowels, it preserves the first 10 and last 10 characters, replacing the middle with a unique hash\n\nThis ensures unique, readable column names while staying within storage constraints. If some column names would be shortened by Hash-based truncation, the component automatically generates a `shortened_columns_mapping` table that contains the mapping between original and shortened column names for all tables. This table includes:\n- `table_name`: The name of the table\n- `original_column_name`: The original column name\n- `shortened_column_name`: The shortened version used in the output table\n\nThis mapping helps you understand which columns were shortened and how to interpret the data in your destination storage.\n\nAdditional documentation is available [here](https://github.com/keboola/component-shopify/blob/main/README.md)","licenseUrl":"https://github.com/keboola/component-shopify/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-shopify/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-shopify","requiredMemory":"8g","processTimeout":14400,"features":["has-sample-data"],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["E-commerce"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"extractor configuration","required":["shop","#api_token","loading_options","endpoints"],"properties":{"shop":{"type":"string","title":"Shop name","description":"Your shop id found in url, e.g. [shop_id].myshopify.com","propertyOrder":250},"endpoints":{"type":"object","title":"Endpoints","properties":{"events":{"type":"array","items":{"type":"object","title":"Setup","required":["filters","types"],"properties":{"types":{"type":"string","title":"Event Types","format":"textarea","options":{"input_height":"100px"},"description":"Comma separated list of required event types. e.g. 'confirmed', 'create', 'destroy'. If omitted all possible types are downloaded.  Different resources generate different types of event. See the docs for a list of possible verbs.","uniqueItems":true,"propertyOrder":700},"filters":{"type":"array","items":{"enum":["Article","Blog","Collection","Comment","Order","Page","PriceRule","Product","ApiPermission"],"type":"string"},"title":"Types","format":"select","description":"Resource Types","uniqueItems":true,"propertyOrder":360}}},"title":"Events","maxItems":1,"description":"Download Events","propertyOrder":4000},"orders":{"type":"boolean","title":"Orders","format":"checkbox","default":true,"description":"Get Orders data","propertyOrder":40},"products":{"type":"boolean","title":"Products","format":"checkbox","default":true,"description":"Get Products data","propertyOrder":30},"customers":{"type":"boolean","title":"Customers","format":"checkbox","default":true,"description":"Get Customers data","propertyOrder":50},"inventory":{"type":"boolean","title":"Product - Inventory","format":"checkbox","default":true,"options":{"dependencies":{"products":true}},"description":"Get inventory levels and locations related to products","propertyOrder":34},"transactions":{"type":"boolean","title":"Order - Transactions","format":"checkbox","default":false,"options":{"dependencies":{"orders":true}},"description":"Get orders transaction","propertyOrder":41},"products_drafts":{"type":"boolean","title":"Product - Drafts","format":"checkbox","default":false,"options":{"dependencies":{"products":true}},"description":"Get drafts of products","propertyOrder":31},"products_archived":{"type":"boolean","title":"Product - Archived","format":"checkbox","default":false,"options":{"dependencies":{"products":true}},"description":"Get archived products","propertyOrder":35},"product_metafields":{"type":"boolean","title":"Product - Metafields","format":"checkbox","default":false,"options":{"dependencies":{"products":true}},"description":"Get metafields related to products","propertyOrder":32},"variant_metafields":{"type":"boolean","title":"Product - Variant Metafields","format":"checkbox","default":false,"options":{"dependencies":{"products":true}},"description":"Get metafields related to product variants","propertyOrder":33},"payments_transactions":{"type":"boolean","title":"Payments - transactions","format":"checkbox","default":true,"description":"Get balance transactions - needs activated Shopify payments","propertyOrder":60}},"propertyOrder":500},"#api_token":{"type":"string","title":"Admin API access token","format":"password","description":"Admin API access token of your Shopify custom app.","propertyOrder":200},"api_version":{"type":"string","title":"API version","default":"2025-04","readOnly":true,"description":"The API version, gets updated regularly based on the <a href=\"https://shopify.dev/api/usage/versioning#release-schedule\">Shopify release cycle</a>","propertyOrder":251},"loading_options":{"type":"object","title":"Loading Options","format":"grid","required":["incremental_output","date_since","date_to"],"properties":{"date_to":{"type":"string","title":"Period to date [excluding].","default":"now","description":" Date in YYYY-MM-DD format or dateparser string i.e. 5 days ago, 1 month ago, yesterday, etc. If left empty, it is set to the current datetime.","propertyOrder":450},"date_since":{"type":"string","title":"Period from date [including].","default":"1 week ago","description":" Date in YYYY-MM-DD format or dateparser string i.e. 5 days ago, 1 month ago, yesterday, etc. If left empty, all records are downloaded.","propertyOrder":400},"fetch_parameter":{"enum":["updated_at","created_at"],"type":"string","title":"Fetch parameter","default":"updated_at","description":"Field/parameter to be used for filtering data from API.","propertyOrder":300},"incremental_output":{"enum":[0,1],"type":"number","title":"Load type","default":1,"options":{"enum_titles":["Full Load","Incremental Update"]},"description":"If set to Incremental update, the result tables will be updated based on primary key. Full load overwrites the destination table each time. NOTE: If you wish to remove deleted records, this needs to be set to Full load and the Period from attribute empty.","propertyOrder":450}},"description":"Data is fetched incrementally based on the last updated datetime. NOTE: Column names longer than 64 characters will be automatically shortened, more in <a href=\"https://github.com/keboola/component-shopify/blob/main/README.md\">documenation.</a>","propertyOrder":400}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"To enable this application you need to create a\ncustom [application](https://help.shopify.com/en/manual/apps/custom-apps) :\n\n- In the left panel in Shopify select \"Apps\"\n- Click \"Develop apps\" on the top of the webpage (it is next to the green \"Customize your store\" button)\n- Click \"Create an App\"\n- Name the app, ex. \"Keboola Extractor app\"\n- Click \"Configure Admin API Scopes\"\n- Enable `Read access` for following objects:\n    - `Orders` : \"read_orders\"\n    - `Products` : \"read_products\"\n    - `Inventory` : \"read_inventory\"\n    - `Customers` : \"read_customers\"\n    - `Events` : \"read_marketing_events\"\n    - `Locations` : \"read_locations\"\n  \n- Save the scopes\n- Click \"Install app\"\n- Copy the Admin API access token, store it somewhere safe\n\n- use this Admin API access token to authorize the app in the \"Admin API access token\" field\n\nAdditional documentation\nis [available here](https://bitbucket.org/kds_consulting_team/kds-team.ex-shopify/src/master/README.md).","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":331,"uri":"docker/kds-team.ex-shopify","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-shopify","name":"developer-portal-v2/kds-team.ex-shopify","tag":"1.5.12","options":{},"digest":"sha256:6780e31ca84151c16adb8c0b31c21724b77251ee5939d0a2f8570057fd3a299a"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-shopify/32/1674038449219.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-shopify/64/1674038449219.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-shopify/128/1674038449219.png"}},{"id":"kds-team.wr-shopify","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":177,"name":"Shopify","type":"writer","shortDescription":"Creates or updates objects such as orders and products in a Shopify store via the Admin API.","longDescription":"Create or update the following objects in your Shopify store: [Order](https://shopify.dev/docs/api/admin-rest/2024-01/resources/order), \n[Product](https://shopify.dev/docs/api/admin-rest/2024-01/resources/product),\n[Product image](https://shopify.dev/docs/api/admin-rest/2024-01/resources/product-image),\n[Product variant](https://shopify.dev/docs/api/admin-rest/2024-01/resources/product-variant),\n[Inventory level](https://shopify.dev/docs/api/admin-rest/2024-01/resources/inventorylevel),\n[Order](https://shopify.dev/docs/api/admin-rest/2024-01/resources/order),\n[Customer](https://shopify.dev/docs/api/admin-rest/2024-01/resources/customer),\n[Customer address](https://shopify.dev/docs/api/admin-rest/2024-01/resources/customer-address).\n\n\n\nTo enable this application, you need to:\n \n- [enable custom app development](https://help.shopify.com/en/manual/apps/app-types/custom-apps) for your store. \n- Create a custom app and install it in your store.\n- Enable `Write access` Admin API access scope for the following objects:\n    - `Orders`\n    - `Products`\n    - `Inventory`\n    - `Customers`\n- Obtain the API access token under the API credentials tab of your app.\n    \n    \n\nAdditional documentation is available [here](https://bitbucket.org/kds_consulting_team/kds-team.wr-shopify/src/master/README.md)","licenseUrl":"https://bitbucket.org/kds_consulting_team/kds-team.wr-shopify/src/master/LICENSE.md","documentationUrl":"https://bitbucket.org/kds_consulting_team/kds-team.wr-shopify/src/master/README.md","sourceCodeUrl":"https://bitbucket.org/kds_consulting_team/kds-team.wr-shopify/src/master","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"out","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"medium","category":null,"categories":["E-commerce"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-tableInput","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Authentication","required":["shop","#api_token"],"properties":{"shop":{"type":"string","title":"Shop name","description":"Your shop ID found in the URL, e.g., [shop_id].myshopify.com","propertyOrder":250},"#api_token":{"type":"string","title":"Admin password","format":"password","description":"Admin password of your Shopify private app.","propertyOrder":200},"api_version":{"enum":["2024-04","2024-01","2023-10","2023-07"],"type":"string","title":"API version","default":"2024-04","description":"Shopify API version","propertyOrder":250}}},"configurationRowSchema":{"type":"object","title":"Configuration","required":["endpoint","mode"],"properties":{"mode":{"enum":["create","update"],"type":"string","title":"Load mode","format":"select","options":{"enum_titles":["Create","Update"],"dependencies":{"endpoint":["product","product_image","product_variant","order","customer"]}},"description":"Choose if the object should be created or updated. Updates will require existing IDs on the input.","propertyOrder":10},"endpoint":{"enum":["product","product_image","product_variant","inventory_level","order","customer","customer_address"],"type":"string","title":"Shopify Object","format":"select","options":{"enum_titles":["Product","Product Image","Product Variant","Inventory Level","Order","Customer","Customer Address"]},"description":"Shopify object to update","propertyOrder":1},"source_id_reference":{"type":"object","title":"Source ID reference","format":"grid","required":["source_id_col","remove_from_data"],"properties":{"source_id_col":{"type":"string","title":"Column Name","default":"id","propertyOrder":1},"remove_from_data":{"type":"boolean","title":"Remove from data","format":"chekbox","default":false,"propertyOrder":10}}}}},"createConfigurationRowSchema":null,"configurationDescription":"# Prerequisites\n\nTo enable this application, you need to:\n \n- [enable custom app development](https://help.shopify.com/en/manual/apps/app-types/custom-apps) for your store. \n- Create a custom app and install it in your store.\n- Enable `Write access` Admin API access scope for the following objects:\n    - `Orders`\n    - `Products`\n    - `Inventory`\n    - `Customers`\n- Obtain the API access token under the API credentials tab of your app.\n    \n    \n \n# Configuration\n\n## Authentication \n\nMake sure you have created a custom application with appropriate permissions.\n\n### Admin API access token\n\nAdmin API access token of your private app.\n\n### Shop name\n\nYour shop ID found in the URL, e.g., `[shop_id]`.myshopify.com\n\n\n## Setup\n\n- Each configuration row accepts a single table on the input. It will be then converted into a JSON model that is required by \nthe specified endpoint.\n- Each column in the table translates to a JSON property. In some cases, you may include a full JSON string as the column value. \n- Objects may be flattened into columns using the `__` separator. E.g., `customer__id` leads to `{\"customer\":{\"id\":\"VAL\"}}`\n\n\n**NOTE:** It is possible to include one extra column that serves as a reference to your source data row and is then excluded from the payload.  \nYou can set this column by setting the `source_id` parameter.\n\nAdditional documentation is available [here](https://bitbucket.org/kds_consulting_team/kds-team.wr-shopify/src/master/README.md).","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.wr-shopify","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.wr-shopify","name":"developer-portal-v2/kds-team.wr-shopify","tag":"0.2.3","options":{},"digest":"sha256:5e0201e2d0d0e2e9a0016685bde45689b0d1195c3b4dd711f61a980cdccb096a"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.wr-shopify/32/1674038478676.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.wr-shopify/64/1674038478676.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.wr-shopify/128/1674038478676.png"}},{"id":"keboola.ex-shopify-v2","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":672,"name":"Shopify V2","type":"extractor","shortDescription":"Extracts Shopify store data via the GraphQL Admin API.","longDescription":"A Keboola component for extracting data from Shopify using GraphQL API. This is the second version of the Shopify extractor, built specifically to use GraphQL instead of the deprecated REST API.","licenseUrl":"https://github.com/keboola/component-shopify-v2/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/component-shopify-v2/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/component-shopify-v2","requiredMemory":"512m","processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"extractor configuration","required":["store_name","loading_options","endpoints"],"properties":{"events":{"type":"array","items":{"type":"object","title":"Setup","required":["filters","types"],"properties":{"types":{"type":"string","title":"Event Types","format":"textarea","options":{"input_height":"100px"},"description":"Comma separated list of required event types. e.g. 'confirmed', 'create', 'destroy'. If omitted all possible types are downloaded.  Different resources generate different types of event. See the docs for a list of possible verbs.","uniqueItems":true,"propertyOrder":150},"filters":{"type":"array","items":{"enum":["Article","Blog","Collection","Comment","Order","Page","PriceRule","Product","ApiPermission"],"type":"string"},"title":"Types","format":"select","description":"Resource Types","uniqueItems":true,"propertyOrder":160}}},"title":"Events","maxItems":1,"description":"Download Events","propertyOrder":140},"endpoints":{"type":"object","title":"Endpoints","properties":{"orders":{"type":"boolean","title":"Orders","format":"checkbox","default":false,"options":{"tooltip":"See [the GraphQL query](https://github.com/keboola/component-shopify-v2/blob/main/src/shopify_cli/queries/BulkOrders.graphql)"},"description":"Get Orders data using bulk operations","propertyOrder":100},"products":{"type":"boolean","title":"Products","format":"checkbox","default":false,"options":{"tooltip":"See [the GraphQL query](https://github.com/keboola/component-shopify-v2/blob/main/src/shopify_cli/queries/BulkProducts.graphql)"},"description":"Get Products data using bulk operations","propertyOrder":40},"customers":{"type":"boolean","title":"Customers","format":"checkbox","default":false,"options":{"tooltip":"See [the GraphQL query](https://github.com/keboola/component-shopify-v2/blob/main/src/shopify_cli/queries/BulkCustomers.graphql)"},"description":"Get Customers data using bulk operations","propertyOrder":90},"inventory":{"type":"boolean","title":"Inventory","format":"checkbox","default":false,"options":{"tooltip":"See [the GraphQL query](https://github.com/keboola/component-shopify-v2/blob/main/src/shopify_cli/queries/BulkInventory.graphql)"},"description":"Get inventory levels","propertyOrder":120},"locations":{"type":"boolean","title":"Locations","format":"checkbox","default":false,"options":{"tooltip":"See [the GraphQL query](https://github.com/keboola/component-shopify-v2/blob/main/src/shopify_cli/queries/BulkLocations.graphql)"},"description":"Get store locations","propertyOrder":130},"collections":{"type":"boolean","title":"Collections","format":"checkbox","default":false,"options":{"tooltip":"See [the GraphQL query](https://github.com/keboola/component-shopify-v2/blob/main/src/shopify_cli/queries/BulkCollections.graphql)"},"description":"Get product collections (both custom and smart collections)","propertyOrder":125},"order_refunds":{"type":"boolean","title":"Orders – Refunds","format":"checkbox","default":false,"options":{"tooltip":"See [the GraphQL query](https://github.com/keboola/component-shopify-v2/blob/main/src/shopify_cli/queries/GetOrderRefunds.graphql)"},"description":"Include order refunds (refund line items, order adjustments, shipping refunds). Standalone endpoint — does not require the Orders endpoint.","propertyOrder":115},"products_drafts":{"type":"boolean","title":"Products – Drafts","format":"checkbox","default":false,"options":{"dependencies":{"products":true}},"description":"Include draft products","propertyOrder":50},"products_archived":{"type":"boolean","title":"Products – Archived","format":"checkbox","default":false,"options":{"dependencies":{"products":true}},"description":"Include archived products","propertyOrder":60},"products_unlisted":{"type":"boolean","title":"Products – Unlisted","format":"checkbox","default":false,"options":{"dependencies":{"products":true}},"description":"Include unlisted products","propertyOrder":65},"order_transactions":{"type":"boolean","title":"Orders – Transactions","format":"checkbox","default":false,"options":{"tooltip":"See [the GraphQL query](https://github.com/keboola/component-shopify-v2/blob/main/src/shopify_cli/queries/BulkOrders.graphql) and [the replacement fragment](https://github.com/keboola/component-shopify-v2/blob/main/src/shopify_cli/queries/fragments/OrderTransactions.graphql)","dependencies":{"orders":true}},"description":"Include order transactions","propertyOrder":110},"product_metafields":{"type":"boolean","title":"Products – Metafields","format":"checkbox","default":false,"options":{"tooltip":"See [the GraphQL query](https://github.com/keboola/component-shopify-v2/blob/main/src/shopify_cli/queries/BulkProducts.graphql) and [the replacement fragment](https://github.com/keboola/component-shopify-v2/blob/main/src/shopify_cli/queries/fragments/ProductMetafields.graphql)","dependencies":{"products":true}},"description":"Include product metafields","propertyOrder":70},"variant_metafields":{"type":"boolean","title":"Products – Variant Metafields","format":"checkbox","default":false,"options":{"tooltip":"See [the GraphQL query](https://github.com/keboola/component-shopify-v2/blob/main/src/shopify_cli/queries/BulkProducts.graphql) and [the replacement fragment](https://github.com/keboola/component-shopify-v2/blob/main/src/shopify_cli/queries/fragments/VariantMetafields.graphql)","dependencies":{"products":true}},"description":"Include variant metafields","propertyOrder":80},"collection_metafields":{"type":"boolean","title":"Collections – Metafields","format":"checkbox","default":false,"options":{"tooltip":"See [the GraphQL query](https://github.com/keboola/component-shopify-v2/blob/main/src/shopify_cli/queries/BulkCollections.graphql) and [the replacement fragment](https://github.com/keboola/component-shopify-v2/blob/main/src/shopify_cli/queries/fragments/CollectionMetafields.graphql)","dependencies":{"collections":true}},"description":"Include collection metafields","propertyOrder":127},"order_shipping_discounts":{"type":"boolean","title":"Orders – Shipping Lines & Discount Codes","format":"checkbox","default":false,"options":{"tooltip":"Paginated GraphQL pass producing the `order_shipping_lines` and `order_discount_codes` tables. These come from `Order.shippingLines` and `Order.discountApplications`, which cannot be fetched via bulk operations. See [the GraphQL query](https://github.com/keboola/component-shopify-v2/blob/main/src/shopify_cli/queries/GetOrderShippingDiscounts.graphql).","dependencies":{"orders":true}},"description":"Include order shipping lines and discount codes (order_shipping_lines and order_discount_codes tables)","propertyOrder":116}},"propertyOrder":30},"#api_token":{"type":"string","title":"Admin API access token","format":"password","description":"Admin API access token of your Shopify legacy custom app. Required if Client ID and Client Secret are not provided.","propertyOrder":0},"#client_id":{"type":"string","title":"Client ID (Dev Dashboard App)","format":"password","description":"Client ID from your Shopify Dev Dashboard app.","propertyOrder":1},"store_name":{"type":"string","title":"Store name","description":"Shopify store name found in URL, e.g. [store_name].myshopify.com","propertyOrder":10},"api_version":{"type":"string","title":"API version","default":"2026-10","readOnly":true,"description":"The API version, gets updated regularly based on the <a href=\"https://shopify.dev/api/usage/versioning#release-schedule\">Shopify release cycle</a>","propertyOrder":20},"#client_secret":{"type":"string","title":"Client Secret (Dev Dashboard App)","format":"password","description":"Client Secret from your Shopify Dev Dashboard app.","propertyOrder":2},"custom_queries":{"type":"array","items":{"type":"object","title":"Bulk Query Setup","required":["name","query"],"properties":{"name":{"type":"string","title":"Query Name","description":"Name of the custom query. Used for naming the output table (e.g., 'my_products' creates 'my_products.csv').","propertyOrder":180},"query":{"type":"string","title":"GraphQL Bulk Operation Mutation","format":"textarea","options":{"input_height":"300px"},"description":"The GraphQL bulk operation mutation. Must be in format: mutation { bulkOperationRunQuery(query: \"\"\"...\"\"\") { bulkOperation { id status } userErrors { field message } } }.\nYou can use these placeholders to inject values from <b>Loading Options</b>:\n<ul>\n  <li><code>{{ period_start_date }}</code> — Period start date, a full ISO-8601 UTC timestamp (from <em>Period start date</em> field, e.g. <code>2026-03-19T01:56:13Z</code>). Quote the placeholder — the value contains colons, which Shopify search uses as its field separator.</li>\n  <li><code>{{ period_end_date }}</code> — Period end date, a full ISO-8601 UTC timestamp (from <em>Period end date</em> field, e.g. <code>2026-03-19T13:56:13Z</code>). Quote the placeholder — the value contains colons, which Shopify search uses as its field separator.</li>\n  <li><code>{{ fetch_parameter }}</code> — Fetch parameter field (e.g. <code>created_at</code> or <code>updated_at</code>)</li>\n</ul>\nExample filter: <code>orders(query: \"{{ fetch_parameter }}:&gt;='{{ period_start_date }}' AND {{ fetch_parameter }}:&lt;'{{ period_end_date }}'\")</code>","propertyOrder":190}}},"title":"Custom Bulk Queries","description":"Execute custom GraphQL bulk operations to download data. Note: Only bulk operation mutations are supported, not regular queries.","propertyOrder":170},"loading_options":{"type":"object","title":"Loading Options","format":"grid","required":["incremental_output","date_since","date_to"],"properties":{"date_to":{"type":"string","title":"Period end date [excluding]","default":"now","description":"Date in YYYY-MM-DD format or <a href='https://dateparser.readthedocs.io/' target='_new'>dateparser</a> string i.e. 5 days ago, 1 month ago, yesterday, etc. Resolved to a full ISO-8601 UTC timestamp of the run moment, so <code>now</code> includes records updated earlier the same day. If left empty, no upper bound is applied (all records up to the run are downloaded).","propertyOrder":220},"date_since":{"type":"string","title":"Period start date [including]","default":"1 week ago","description":"Date in YYYY-MM-DD format or <a href='https://dateparser.readthedocs.io/' target='_new'>dateparser</a> string i.e. 5 days ago, 12 hours ago, yesterday, etc. Resolved to a full ISO-8601 UTC timestamp, so relative values like <code>12 hours ago</code> mean exactly that (no rounding to midnight); bare dates anchor to UTC midnight. For incremental loads keep the window length above your run cadence (recommended: window &ge; cadence + 1h) to avoid gaps. If left empty, all records are downloaded.","propertyOrder":210},"chunk_size_days":{"type":"integer","title":"Split period into chunks (days)","default":0,"maximum":3650,"minimum":0,"description":"0 = disabled (default). When set, the period is fetched in consecutive windows of this many days, one bulk operation per window, so the memory needed to load the data depends on the chunk size instead of the whole period. Use this if a long period fails with an out-of-memory error; 30 is a good starting point. Requires a Period start date. A chunked run is slower, because it makes one bulk operation per chunk and Shopify runs one at a time per shop, and it writes no output until every chunk has finished. A record updated while the extraction is running can match two windows; only its newest copy is kept. Has no effect on Inventory and Locations, which always extract the full current snapshot, or on custom queries.","propertyOrder":250},"fetch_parameter":{"enum":["updated_at","created_at"],"type":"string","title":"Fetch parameter","default":"updated_at","description":"Field/parameter to be used for filtering data from API.","propertyOrder":230},"incremental_output":{"enum":[0,1],"type":"number","title":"Load type","default":1,"options":{"enum_titles":["Full Load","Incremental Update"]},"description":"If set to Incremental update, the result tables will be updated based on primary key. Full load overwrites the destination table each time. NOTE: If you wish to remove deleted records, this needs to be set to Full load and the Period from attribute empty.","propertyOrder":240}},"description":"Data is fetched incrementally based on the last updated datetime. NOTE: Column names longer than 64 characters will be automatically shortened, more in <a href=\"https://github.com/keboola/component-shopify/blob/main/README.md\">documenation.</a>","propertyOrder":200}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"Configuration description.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-shopify-v2","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-shopify-v2","name":"developer-portal-v2/keboola.ex-shopify-v2","tag":"0.3.6","options":{},"digest":"sha256:02e2f48986a42d7b694cfc2ebee6b6e0cfc34c6d0ccafbf737111c7ead35ebfd"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-shopify-v2/32/1758804822925.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-shopify-v2/64/1758804822925.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-shopify-v2/128/1758804822925.png"}},{"id":"kds-team.ex-shoptet-permalink","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":360,"name":"Shoptet Permalink","type":"extractor","shortDescription":"Extracts Shoptet e-shop data from permalink URLs.","longDescription":"This component enables you to download data from Shoptet permalinks.","licenseUrl":"https://github.com/keboola/component-shoptet-permalink/blob/main/LICENSE.md","documentationUrl":"https://help.keboola.com/components/extractors/marketing-sales/shoptet/","sourceCodeUrl":"https://github.com/keboola/component-shoptet-permalink","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["E-commerce"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"extractor configuration","required":["src_charset","delimiter","shop_name","base_url"],"properties":{"base_url":{"type":"string","title":"Base URL","options":{"inputAttributes":{"placeholder":"https://www.myshop.cz"}},"description":"Your shop url. e.g. https://www.myshop.cz","propertyOrder":2},"delimiter":{"type":"string","title":"Source file delimiter","default":";","propertyOrder":70},"shop_name":{"type":"string","title":"Shop Name","propertyOrder":1},"stock_url":{"type":"string","title":"Stock URL","options":{"inputAttributes":{"placeholder":"https://www.myshop.cz/export/stockStatistics.csv?hash=XXXXX"}},"description":"e.g. https://www.myshop.cz/export/stockStatistics.csv?hash=XXXXX","propertyOrder":40},"orders_url":{"type":"string","title":"Orders URL","options":{"inputAttributes":{"placeholder":"https://www.myshop.cz/export/orders.csv?hash=XXXXX"}},"description":"e.g. https://www.myshop.cz/export/orders.csv?hash=XXXXX","propertyOrder":10},"src_charset":{"enum":["IBM00858","IBM437","IBM775","IBM850","IBM852","IBM855","IBM857","IBM862","IBM866","ISO-8859-1","ISO-8859-2","ISO-8859-4","ISO-8859-5","ISO-8859-7","ISO-8859-9","ISO-8859-13","ISO-8859-15","KOI8-R","KOI8-U","US-ASCII","UTF-8","UTF-16","UTF-16BE","UTF-16LE","UTF-32","UTF-32BE","UTF-32LE","x-UTF-32BE-BOM","x-UTF-32LE-BOM","windows-1250","windows-1251","windows-1252","windows-1253","windows-1254","windows-1257","Not available","x-IBM737","x-IBM874","x-UTF-16LE-BOM"],"type":"string","title":"File charset.","default":"windows-1250","description":"Determines the source file charset. All files will be converted to UTF-8.","propertyOrder":60},"products_url":{"type":"string","title":"Products URL","options":{"inputAttributes":{"placeholder":"https://www.myshop.cz/export/products.csv?hash=XXXXX"}},"description":"e.g. https://www.myshop.cz/export/products.csv?hash=XXXXX","propertyOrder":20},"customers_url":{"type":"string","title":"Customers URL","options":{"inputAttributes":{"placeholder":"https://www.myshop.cz/export/customers.csv?hash=XXXXX"}},"description":"e.g. https://www.myshop.cz/export/customers.csv?hash=XXXXX","propertyOrder":30},"additional_data":{"type":"array","items":{"type":"object","title":"Additional data","required":["name","url","primary_key"],"properties":{"url":{"type":"string","title":"URL","minLength":1,"description":"Shoptet url to download data eg . https://www.example.com/export/store_visitors.csv?hash=hash","propertyOrder":42},"name":{"type":"string","title":"Name","minLength":1,"description":"Name of output table eg. store_visitors","propertyOrder":41},"primary_key":{"type":"array","items":{"type":"string","title":"Column name"},"title":"Primary key","propertyOrder":5000}}},"title":"Additional data","default":[],"propertyOrder":50},"loading_options":{"type":"object","title":"Loading Options","format":"grid","required":["incremental_output","date_since","date_to","backfill_mode"],"properties":{"date_to":{"type":"string","title":"Period to date [excluding].","default":"now","description":" Date in YYYY-MM-DD format or dateparser string i.e. 5 days ago, 1 month ago, yesterday, etc. If left empty, all records are downloaded.","propertyOrder":400},"date_since":{"type":"string","title":"Period from date [including].","default":"1 week ago","description":" Date in YYYY-MM-DD format or dateparser string i.e. 5 days ago, 1 month ago, yesterday, etc. If left empty, all records are downloaded.","propertyOrder":300},"backfill_mode":{"enum":[0,1],"type":"number","title":"Download in chunks","default":0,"options":{"enum_titles":["No","Yes"]},"propertyOrder":500},"chunk_size_days":{"type":"number","title":"Chunk size in days","default":360,"propertyOrder":550},"incremental_output":{"enum":[0,1],"type":"number","title":"Load type","default":1,"options":{"enum_titles":["Full Load","Incremental Update"]},"description":"If set to Incremental update, the result tables will be updated based on primary key. Full load overwrites the destination table each time. NOTE: If you wish to remove deleted records, this needs to be set to Full load and the Period from attribute empty.","propertyOrder":450}},"propertyOrder":400}}},"configurationRowSchema":{"type":"object","title":"extractor configuration","required":["src_charset","delimiter","shop_name","base_url"],"properties":{"base_url":{"type":"string","title":"Base URL","propertyOrder":2},"delimiter":{"type":"string","title":"Source file delimiter","default":";","propertyOrder":70},"shop_name":{"type":"string","title":"Shop Name","propertyOrder":1},"stock_url":{"type":"string","title":"Stock URL","propertyOrder":40},"orders_url":{"type":"string","title":"Orders URL","propertyOrder":10},"src_charset":{"enum":["IBM00858","IBM437","IBM775","IBM850","IBM852","IBM855","IBM857","IBM862","IBM866","ISO-8859-1","ISO-8859-2","ISO-8859-4","ISO-8859-5","ISO-8859-7","ISO-8859-9","ISO-8859-13","ISO-8859-15","KOI8-R","KOI8-U","US-ASCII","UTF-8","UTF-16","UTF-16BE","UTF-16LE","UTF-32","UTF-32BE","UTF-32LE","x-UTF-32BE-BOM","x-UTF-32LE-BOM","windows-1250","windows-1251","windows-1252","windows-1253","windows-1254","windows-1257","Not available","x-IBM737","x-IBM874","x-UTF-16LE-BOM"],"type":"string","title":"File charset.","default":"UTF-8","description":"Determines the source file charset. All files will be converted to UTF-8.","propertyOrder":60},"products_url":{"type":"string","title":"Products URL","propertyOrder":20},"customers_url":{"type":"string","title":"Customers URL","propertyOrder":30},"additional_data":{"type":"array","items":{"type":"object","title":"Additional data","required":["name","url","primary_key"],"properties":{"url":{"type":"string","title":"URL","minLength":1,"description":"Shoptet url to download data eg . https://www.example.com/export/store_visitors.csv?hash=hash","propertyOrder":42},"name":{"type":"string","title":"Name","minLength":1,"description":"Name of output table eg. store_visitors","propertyOrder":41},"primary_key":{"type":"array","items":{"type":"string","title":"Column name"},"title":"Primary key","propertyOrder":5000}}},"title":"Additional data","default":[],"propertyOrder":50},"loading_options":{"type":"object","title":"Loading Options","format":"grid","required":["incremental_output","date_since","date_to","backfill_mode"],"properties":{"date_to":{"type":"string","title":"Period to date [excluding].","default":"now","description":" Date in YYYY-MM-DD format or dateparser string i.e. 5 days ago, 1 month ago, yesterday, etc. If left empty, all records are downloaded.","propertyOrder":400},"date_since":{"type":"string","title":"Period from date [including].","default":"1 week ago","description":" Date in YYYY-MM-DD format or dateparser string i.e. 5 days ago, 1 month ago, yesterday, etc. If left empty, all records are downloaded.","propertyOrder":300},"backfill_mode":{"type":"boolean","title":"Download in chunks","format":"checkbox","propertyOrder":500},"chunk_size_days":{"type":"number","title":"Chunk size in days","default":360,"options":{"dependencies":{"backfill_mode":true}},"propertyOrder":550},"incremental_output":{"enum":[0,1],"type":"number","title":"Load type","default":1,"options":{"enum_titles":["Full Load","Incremental Update"]},"description":"If set to Incremental update, the result tables will be updated based on primary key. Full load overwrites the destination table each time. NOTE: If you wish to remove deleted records, this needs to be set to Full load and the Period from attribute empty.","propertyOrder":450}},"propertyOrder":400}}},"createConfigurationRowSchema":null,"configurationDescription":"Collects data from four URLs in your Shoptet. This configuration is just a convenient way to download four files from your\nshop automatically.\n\nThose permalinks can be created/found in your Shoptet admin pages. (Replace `https://www.yourshop.cz/` with your Shop URL\nto open the admin configuration):\n\n- orders - `https://www.yourshop.cz/admin/objednavky-export/`\n- products - `https://www.yourshop.cz/admin/export-produktu/`\n- customers - `https://www.yourshop.cz/admin/export-zakazniku/`\n- stock - `https://www.yourshop.cz/admin/export-stavu-skladu/`\n\nAdditional documentation [available](https://help.keboola.com/components/extractors/marketing-sales/shoptet/).","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":360,"uri":"docker/kds-team.ex-shoptet-permalink","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-shoptet-permalink","name":"developer-portal-v2/kds-team.ex-shoptet-permalink","tag":"1.0.16","options":{},"digest":"sha256:6a4404dfb2d049e41990afd90cac7dc1b72ef120abb8e9db54ec4f766d663d61"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-shoptet-permalink/32/1674039644243.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-shoptet-permalink/64/1674039644243.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-shoptet-permalink/128/1674039644243.png"}},{"id":"ex-silverpop","vendor":{"id":"vokurka","name":"Vojtěch Kurka","address":"Bali DataSurfHouse","email":"kurka.vojtech@gmail.com","type":"other"},"version":10,"name":"Silverpop","type":"extractor","shortDescription":"The IBM Marketing Cloud built on Silverpop Engage","longDescription":null,"licenseUrl":"https://github.com/vokurka/keboola-silverpop-ex/blob/master/LICENSE.md","documentationUrl":"https://github.com/vokurka/keboola-silverpop-ex/blob/master/README.md#documentation","sourceCodeUrl":null,"requiredMemory":"1024m","processTimeout":7200,"features":["container-root-user"],"encryption":true,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Marketing"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":1024,"uiOptions":["genericDockerUI","legacyHasRun"],"imageParameters":{},"stackParameters":{},"testConfiguration":{},"configurationSchema":{},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"yaml","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/ex-silverpop","repository":{"type":"quay","uri":"vokurka/keboola-silverpop-ex","name":null,"tag":null,"options":{},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/ex-silverpop/32/1.png","64":"https://ui.keboola-assets.com/developer-portal/icons/ex-silverpop/64/1.png","128":null}},{"id":"keboola.wr-sisense","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":33,"name":"Sisense","type":"writer","shortDescription":"Writes tables into a Sisense datamodel.","longDescription":"This component sends tables from Keboola Connection Storage to [sisense](https://www.sisense.com/) database platform.\n\nThe writer supports create:\n- datamodel\n- tables\n- relationships between tables\n","licenseUrl":"https://www.keboola.com/terms-and-conditions","documentationUrl":"https://github.com/keboola/sisense-writer/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/sisense-writer","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Analytics","Data Visualization"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput","appInfo.beta","genericDockerUI-rows"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","$defs":{"credentials":{"type":"object","required":["host","port","username","#password","database"],"properties":{"host":{"type":"string"},"port":{"type":"string","default":"30845"},"driver":{"type":"string"},"database":{"type":"string"},"username":{"type":"string"},"#password":{"type":"string"}}}},"title":"keboola.wr-sisense — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","required":["db"],"properties":{"db":{"$ref":"#/$defs/credentials"}}},"configurationRowSchema":{"type":"object","title":"keboola.wr-sisense — Row Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"items":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"size":{"type":["string","integer","null"]},"type":{"type":"string"},"dbName":{"type":"string"},"default":{"type":["string","null"]},"nullable":{"type":"boolean"}}}},"dbName":{"type":"string"},"tables":{"type":"array","options":{"async":{"label":"Re-load tables","action":"getTables"}}},"tableId":{"type":"string"},"primaryKey":{"type":"array","items":{"type":"string"}},"incremental":{"type":"boolean"}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["testConnection"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":33,"uri":"docker/keboola.wr-sisense","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-sisense","name":"developer-portal-v2/keboola.wr-sisense","tag":"1.3.3","options":{},"digest":"sha256:1b18636bbdb31dc4822af0cffef9010c786a1719555728638c644404beb84951"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-sisense/32/1591292252443.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-sisense/64/1591292252443.png","128":null}},{"id":"keboola.processor-skip-lines","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":37,"name":"Skip Lines","type":"processor","shortDescription":"Remove lines from top or bottom of the file","longDescription":"Remove lines from top or bottom of the file.","licenseUrl":"https://github.com/keboola/processor-skip-lines/blob/master/LICENSE","documentationUrl":"https://github.com/keboola/processor-skip-lines/blob/master/README.md#usage","sourceCodeUrl":"https://github.com/keboola/processor-skip-lines","requiredMemory":"6g","processTimeout":21600,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":[],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":null,"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.processor-skip-lines","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.processor-skip-lines","name":"developer-portal-v2/keboola.processor-skip-lines","tag":"2.2.0","options":{},"digest":"sha256:b30d0291a5d098a3bc86cfe1094c9f580566c97f184979620141f01532c1d21e"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.processor-skip-lines/32/1674040301323.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.processor-skip-lines/64/1674040301323.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.processor-skip-lines/128/1674040301323.png"}},{"id":"keboola.ex-sklik","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":101,"name":"Sklik","type":"extractor","shortDescription":"Extracts campaign reports and account data from the Sklik advertising API.","longDescription":"The component uses the [Sklik API](https://api.sklik.cz/drak/) to import data from [Sklik](https://www.sklik.cz/). It downloads configured reports for all specified accounts.\n\nTo configure this extractor, you need to have a working\n\n- [Sklik](https://www.sklik.cz/) account, and an\n- Sklik API [token](https://www.sklik.cz/generateToken).\n\n\nThe current listing limit supported by the Sklik API is 100. \n\nThe prices are in halers and must be divided by 100 to get CZK. ","licenseUrl":"https://github.com/keboola/sklik-extractor/blob/master/LICENSE","documentationUrl":"https://help.keboola.com/extractors/marketing-sales/sklik/","sourceCodeUrl":"https://github.com/keboola/sklik-extractor","requiredMemory":null,"processTimeout":86400,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"medium","category":null,"categories":["Advertisement"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Sklik Extractor Configuration","required":["#token","accounts","reports"],"properties":{"#token":{"type":"string","title":"Sklik API token. You will find it under the Account settings in Sklik.","default":"","propertyOrder":1},"reports":{"type":"array","items":{"type":"object","title":"Sklik Report","properties":{"name":{"type":"string","title":"Report name","default":"","description":"Data will be saved to this table in the output bucket (accounts is a reserved name and cannot be used)."},"resource":{"type":"string","title":"Resource name","default":"","description":"Name of the resource on which you want the report to be created. Supported resources are all from https://api.sklik.cz/drak/ which support `createReport` and `readReport` methods."},"displayColumns":{"type":"string","title":"Display columns","default":"","description":"Comma separated list of columns to get for `readReport` API call. Column `id` as identifier of the resource is downloaded every time."},"displayOptions":{"type":"string","title":"Display options","default":"","description":"Json object of the display options configuration for `createReport` API call."},"restrictionFilter":{"type":"string","title":"Restriction filter","default":"","description":"Json object of the restriction filter configuration for `createReport` API call. `dateFrom` and `dateTo` are required values. If omitted, yesterday's and today's dates will be used."}}},"title":"Reports","propertyOrder":5},"accounts":{"type":"string","title":"Comma separated list of accounts ids to download. You will get all accounts if empty.","default":"","propertyOrder":4}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"You can authorize using API token (you will find it under the Account settings in Sklik). If none of the listed account ids are found or are invalid, the component won't produce any results.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-sklik","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-sklik","name":"developer-portal-v2/keboola.ex-sklik","tag":"3.14.2","options":{},"digest":"sha256:a451a1eac48a47449ec621a55778029bda54dd804b8d979982b132812b950486"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-sklik/32/1674040281153.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-sklik/64/1674040281153.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-sklik/128/1674040281153.png"}},{"id":"keboola.ex-slack","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":24,"name":"Slack","type":"extractor","shortDescription":"Imports users, channels, and messages from Slack via the Slack API.","longDescription":"This component uses the [Slack API](https://api.slack.com/) to import data from [Slack](https://www.slack.com/).\n\nImported data:\n\n- Users\n- Channels\n- Messages\n\nTo configure this extractor, you need to have \n\n- access to a Slack account, and \n- the Slack [API documentation](https://api.slack.com/methods) at hand.\n\nIn Smart Mode, the data is imported incrementally.","licenseUrl":"https://github.com/keboola/kbc-ui-templates/blob/main/LICENSE","documentationUrl":"https://help.keboola.com/extractors/communication/slack/","sourceCodeUrl":"https://github.com/keboola/kbc-ui-templates/tree/master/resources/keboola.ex-slack/templates","requiredMemory":"512m","processTimeout":10800,"features":[],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"easy","category":null,"categories":["CRM"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericTemplatesUI","genericDockerUI-authorization"],"imageParameters":{"default_bucket":true},"stackParameters":{},"testConfiguration":{},"configurationSchema":{},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-slack","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/ex-generic-v2","name":"developer-portal-v2/ex-generic-v2","tag":"4.2.11","options":{},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-slack/32/1677848790862.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-slack/64/1677848790862.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-slack/128/1677848790862.png"}},{"id":"revolt-bi.ex-smartsupp","vendor":{"id":"revolt-bi","name":"Revolt BI","address":"Pobřežní 249/46,\nPraha 8-Karlín,\n186 00","email":"support@revolt.bi","type":"other"},"version":34,"name":"Smartsupp","type":"extractor","shortDescription":"Live Chat Platform scraper / REST API extractor.","longDescription":"Keboola Connection Extractor for [Smartsupp](https://www.smartsupp.com/).\n\n## Description\nThis is the documentation for a Keboola Connection extractor for Smartsupp Live Chat Platform.\n\nThe extractor was created by using the [Smartsupp API](https://doc.smartsupp.com/) and also by scraping the Smartsupp web page directly for conversations, what the API does not seem to support.\n\n\n## Available Tables:\n* **accounts**\n* **conversations_search** - does not contain whole conversations, but is faster to extract\n* **conversations**\n* **conversations_stats** - statistics for each day\n* **agents_stats** - statistics for each day\n\n## Configuration\n* **Login, Password:** Credentials to Smartsupp Web UI.\n* **Api Key:** Credentials for Smartsupp API.\n* **Start Date, End Date:** Fixed dates in the format `YYYY-MM-DD`, dynamic number of days in the format `-N` where N is a non-negative integer, or the word `today`. For example, a configuration with `\"Start date\": -7` and `\"End date\": today` will extract data one week to the past.\n* **Incremental:** Check the box if *all* the data should be loaded to Keboola Storage incrementally.\n* **Maximum Conversations:** Maximal number of conversations to be extracted per account.\n* **Tables:** Tables to be extracted; *accounts* table is needed for all other tables, *conversations_search* table is needed for *conversations* table.\n\nNeed help?\n\nIf you have any questions, feel free to contact us at support@revolt.bi, check our other solutions at [our website](https://www.revolt.bi) or find other components at https://components.keboola.com/components\n\nPrepared by \n\n![alt text](https://www.revolt.bi/wp-content/uploads/2018/08/mail-logo-zluta.png \"revolt.bi\")","licenseUrl":"https://github.com/RevoltBI/Licences/blob/master/README.md","documentationUrl":"https://revoltbi.github.io/ex-smartsupp/","sourceCodeUrl":null,"requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["CRM"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{"compauth_url":"https://authorization.revolt.bi","compauth_user_token":"99sG5vMeRR9ZYPwcNMYB0KbVlrcTPd8f9MAT-mjFjQZ5jNepPmM78K8bxeufGp-F","compauth_license_token":"E8i0CM_HJfyAoAZ6C3A-5WL2KauuL1tOqyjINwQf2MKUUiEUW4I8BUhiP8Q_dYE9","compauth_tokens_in_image":true},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Configuration","required":["login","#password","#api_key","conversation_max","from","to","incremental","tables"],"properties":{"to":{"type":"string","title":"End Date","default":"today","description":"End date of extraction. Standard fixed format, e.g. '2000-12-31', or 'today'.","propertyOrder":5},"from":{"type":"string","title":"Start Date","default":"-7","description":"Start date of extraction. Standard fixed format, e.g. '2000-01-13', or a number like '-7'.","propertyOrder":4},"login":{"type":"string","title":"Username","description":"Username for https://www.smartsupp.com/app/sign/in, required only for 'conversations' table.","propertyOrder":1},"tables":{"type":"array","items":{"enum":["accounts","conversations_search","conversations","agents_stats","conversations_stats"],"type":"string","title":"Table"},"title":"List of Tables","format":"table","description":"Tables to be extracted; pick multiple tables using Ctrl button.","uniqueItems":true,"propertyOrder":7},"#api_key":{"type":"string","title":"API Key","format":"password","minLength":1,"description":"API Key, required for all tables.","propertyOrder":3},"#password":{"type":"string","title":"Password","format":"password","description":"Password for https://www.smartsupp.com/app/sign/in, required only for 'conversations' table.","propertyOrder":2},"incremental":{"type":"boolean","title":"Incremental","format":"checkbox","default":false,"propertyOrder":6},"conversation_max":{"type":"integer","title":"Conversations Maximum","default":-1,"minLength":1,"description":"Maximum of conversations per account; set to -1 for no maximum.","propertyOrder":8}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":34,"uri":"docker/revolt-bi.ex-smartsupp","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/revolt-bi.ex-smartsupp","name":"developer-portal-v2/revolt-bi.ex-smartsupp","tag":"1.0.0","options":{},"digest":"sha256:6f265f649a7716b6ff3f7bed393ae9d94c0f3fe4e751651bb15ea6f2580fb9db"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/revolt-bi.ex-smartsupp/32/1.png","64":"https://ui.keboola-assets.com/developer-portal/icons/revolt-bi.ex-smartsupp/64/1.png","128":null}},{"id":"kds-team.ex-snapchat-marketing","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":112,"name":"Snapchat Marketing","type":"extractor","shortDescription":"Extracts campaign, ad squad, and ad statistics from the Snapchat Marketing API.","longDescription":"# Snapchat Marketing Extractor\n\nA Snapchat marketing extractor allows users to download data about marketing campaigns and statistics via Snapchat Marketing API. To successfully download data, following prerequisities are required to be met:\n\n- Snapchat account (create one at https://ads.snapchat.com/)\n- access to Snapchat Matketing API (apply at https://developers.snapchat.com/apply/)\n\nThe extractor allows to download statistics for campaigns, adsquads and ads with all supported metrics from Snapchat with either hourly or daily granularity.\n\n## Configuration\n\nThe full configuration of the Snapchat extractor can be found in the [component's repository](https://bitbucket.org/kds_consulting_team/kds-team.ex-snapchat-marketing/src/master/component_config/sample-config/).\n\nThe component needs to be authorized with valid Snapchat Marketing account via OAuth. Configuration parameters will be discussed in upcoming sections.\n\n### Objects to download (`statisticsObjects`)\n\nAn array of objects, for which the statistics should be downloaded. One or multiple objects can be specified.\nAllowed values are:\n\n- campaigns,\n- adsquads,\n- ads.\n\nBased on amount of data available for each endpoint, it might take a while to download all of the data. It is therefore recommended to only download data in the lowest accuracy needed. If nothing's specified, no statistics are downloaded and only campaigns, ad squads and ads are returned - without statistics.\n\n### Start date and end date (`dateSettings.startDate` and `dateSettings.endDate`)\n\nA date range, which defines the upper and lower boundary of downloaded statistics. Any supported format by [`dateparser` library](https://pypi.org/project/dateparser/) can be used, but it's recommended to stick by `YYYY-MM-DD` or `YYYY-MM-DD HH:MI:SS` format; or in case of relative date specification, use one of the following options: `2 months ago`, `10 days ago`, `2 hours ago`, `today`, `in 3 days`.\n\n### Granularity (`attributionSettings.granularity`)\n\nDefines a granularity by which the data should be download. Either `HOUR` - hourly data, or `DAY` - daily data is supported. `HOUR` granularity supports much smaller date window and will therefore require more calls to retrieve the data, consequently taking longer time to finish.\n\n### Swipe-up and View attribution windows (`attributionSettings.windowSwipe` and `attributionSettings.windowView`)\n\nAttributes of Snapchat Marketing API which define which attribution window to use for metric values returned. Useful if [variants of metrics](https://developers.snapchat.com/api/docs/#attribution-windows) are to be used.\n\n### Metrics (`query`)\n\nA comma-separated or new-line separated list of metrics, which will be downloaded for each object. For full list of metrics and their variations, please visit [Snapchat documentation](https://developers.snapchat.com/api/docs/#core-metrics).","licenseUrl":"https://github.com/keboola/component-snapchat-marketing/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-snapchat-marketing/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-snapchat-marketing","requiredMemory":null,"processTimeout":14400,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Social","Advertisement"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-authorization"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["statisticsObjects","dateSettings","attributionSettings","query"],"properties":{"query":{"type":"string","title":"Metrics","format":"textarea","default":"impressions, spend","options":{"input_height":"100px"},"description":"A comma separated list of metrics to be downloaded. See <a href='https://developers.snapchat.com/api/docs/#measurement' target='_blank'>documentation</a> for a complete list of available metrics.","uniqueItems":true,"propertyOrder":150},"dateSettings":{"type":"object","title":"Date settings","format":"grid","required":["startDate","endDate"],"properties":{"endDate":{"type":"string","title":"End Date","default":"today","description":"End date, to which the extractor will download data. Can be specified absolutely in format YYYY-MM-DD or relatively like 4 hours ago, 10 days ago, 3 months ago, etc.","propertyOrder":200},"startDate":{"type":"string","title":"Start Date","default":"30 days ago","description":"Start date, from which the extractor will download data. Can be specified absolutely in format YYYY-MM-DD or relatively like 4 hours ago, 10 days ago, 3 months ago, etc.","propertyOrder":100}},"description":"Setting date range for which the statistics will be downloaded.","propertyOrder":200},"statisticsObjects":{"type":"array","items":{"enum":["campaigns","adsquads","ads"],"type":"string"},"title":"Objects to download","format":"select","default":["campaigns","adsquads","ads"],"description":"A list of objects for which statistics will be downloaded. One or multiple objects can be specified.","uniqueItems":true,"propertyOrder":100},"attributionSettings":{"type":"object","title":"Result settings","format":"grid","required":["windowSwipe","windowView","granularity"],"properties":{"windowView":{"enum":["1_HOUR","3_HOUR","6_HOUR","1_DAY","7_DAY","28_DAY"],"type":"string","title":"View Window","default":"1_DAY","description":"A post-view attribution window within which conversions will be attributed to responsible ad.","propertyOrder":100},"granularity":{"enum":["HOUR","DAY"],"type":"string","title":"Granularity","default":"DAY","description":"Select if the statistics should be downloaded on daily or hourly basis.","uniqueItems":true,"propertyOrder":300},"windowSwipe":{"enum":["1_DAY","7_DAY","28_DAY"],"type":"string","title":"Swipe Up Window","default":"28_DAY","description":"A post-swipe-up attribution window within which conversions will be attributed to responsible ad.","propertyOrder":200}},"description":"Snapchat API result settings.","propertyOrder":300},"selectedOrganizations":{"type":"array","items":{"enum":[],"type":"string"},"title":"Organization IDs","format":"select","options":{"async":{"label":"Load organizations","action":"list_organizations"}},"description":"Organisations to include in export; if empty, all are downloaded.","uniqueItems":true,"propertyOrder":10}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"### Objects to download (`statisticsObjects`)\n\nAn array of objects, for which the statistics should be downloaded. One or multiple objects can be specified.\nAllowed values are:\n\n- campaigns,\n- adsquads,\n- ads.\n\nBased on amount of data available for each endpoint, it might take a while to download all of the data. It is therefore recommended to only download data in the lowest accuracy needed. If nothing's specified, no statistics are downloaded and only campaigns, ad squads and ads are returned - without statistics.\n\n### Start date and end date (`dateSettings.startDate` and `dateSettings.endDate`)\n\nA date range, which defines the upper and lower boundary of downloaded statistics. Any supported format by [`dateparser` library](https://pypi.org/project/dateparser/) can be used, but it's recommended to stick by `YYYY-MM-DD` or `YYYY-MM-DD HH:MI:SS` format; or in case of relative date specification, use one of the following options: `2 months ago`, `10 days ago`, `2 hours ago`, `today`, `in 3 days`.\n\n### Granularity (`attributionSettings.granularity`)\n\nDefines a granularity by which the data should be download. Either `HOUR` - hourly data, or `DAY` - daily data is supported. `HOUR` granularity supports much smaller date window and will therefore require more calls to retrieve the data, consequently taking longer time to finish.\n\n### Swipe-up and View attribution windows (`attributionSettings.windowSwipe` and `attributionSettings.windowView`)\n\nAttributes of Snapchat Marketing API which define which attribution window to use for metric values returned. Useful if [variants of metrics](https://developers.snapchat.com/api/docs/#attribution-windows) are to be used.\n\n### Metrics (`query`)\n\nA comma-separated or new-line separated list of metrics, which will be downloaded for each object. For full list of metrics and their variations, please visit [Snapchat documentation](https://developers.snapchat.com/api/docs/#core-metrics).","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["list_organizations"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":112,"uri":"docker/kds-team.ex-snapchat-marketing","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-snapchat-marketing","name":"developer-portal-v2/kds-team.ex-snapchat-marketing","tag":"1.0.3","options":{},"digest":"sha256:d590f12e1bf450370b8f9e2d50faf0fb2e2e8f96c43485d8ca6b4873ca4fc67a"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-snapchat-marketing/32/1572724312326.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-snapchat-marketing/64/1572724312326.png","128":null}},{"id":"keboola.app-transformation-pattern-scd","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":100,"name":"Snapshot - SCD","type":"code-pattern","shortDescription":"Generate SCD type 2 or type 4 SQL code for Snowflake and Synapse transformations. It is used to store the history of data in the separated snapshot table.","longDescription":"**Generate SCD [type 2](https://en.wikipedia.org/wiki/Slowly_changing_dimension#Type_2:_add_new_row) or [type 4](https://en.wikipedia.org/wiki/Slowly_changing_dimension#Type_4:_add_history_table) SQL code.**\n\n### How to set up\n- First, set up the **Table Input Mapping**.\n- Click to **New Input Table** button to add one input table to the input mapping.\n- Do not add anything more to the Input and Output mapping, it will be completed automatically together with the generated code.\n- Fill in the **parameters**.\n- Click on the **Generate Code** button.\n- Click to **Run component** to run generated transformation code.","licenseUrl":"https://github.com/keboola/app-transformation-pattern-scd/blob/master/LICENSE","documentationUrl":"https://github.com/keboola/app-transformation-pattern-scd/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/app-transformation-pattern-scd/","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe","dev-branch-job-blocked"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":true,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI-tableInput","genericDockerUI-tableOutput"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","required":["scd_type","primary_key","monitored_parameters","timezone","use_datetime","keep_del_active","deleted_flag"],"properties":{"scd_type":{"enum":["scd2","scd4"],"type":"string","title":"SCD Type","default":"SCD Type 2","options":{"enum_titles":["SCD Type 2","SCD Type 4"],"grid_columns":2},"propertyOrder":1},"timezone":{"type":"string","title":"Timezone","default":"UTC","description":"For Snowflake transformation use format \"Europe/Prague\", for Synapse trasformation use format \"Central European Standard Time\".","propertyOrder":4},"actual_name":{"type":"string","title":"Actual column name","default":"actual","description":"Column name used to indicate if the record is actual.","propertyOrder":14},"primary_key":{"type":"string","title":"Primary key","description":"Comma separated list of columns that form a unique key of the source table.","propertyOrder":2},"deleted_flag":{"type":"boolean","title":"Add \"is_deleted\" column to the snapshot table.","format":"checkbox","default":true,"propertyOrder":5},"use_datetime":{"type":"boolean","title":"Include time in the date columns","format":"checkbox","default":true,"description":"If checked, date format is \"YYYY-MM-DD HH:Mi:SS\", otherwise \"YYYY-MM-DD\".","propertyOrder":6},"end_date_name":{"type":"string","title":"End date column name","default":"end_date","description":"Column name used for the end date of records.","propertyOrder":17},"end_date_value":{"type":"string","title":"End date value","default":"2099-12-31","description":"The date value used in end_date column to indicate currently active records in the snapshot table.","propertyOrder":13},"is_deleted_name":{"type":"string","title":"Deleted column name","default":"is_deleted","description":"Column name used to indicate if the record is deleted.","propertyOrder":15},"keep_del_active":{"type":"boolean","title":"Keep deleted active","format":"checkbox","description":"Set \"actual\" column to value \"1\" for deleted records in the snapshot table.","propertyOrder":7},"start_date_name":{"type":"string","title":"Start date column name","default":"start_date","description":"Column name used for the start date of records.","propertyOrder":16},"uppercase_columns":{"type":"boolean","title":"Uppercase column names","format":"checkbox","default":false,"description":"When enabled, converts all column names in the snapshot table to uppercase.","propertyOrder":10},"deleted_flag_value":{"type":"string","title":"Status indicator values for false/true","default":"0/1","description":"Specifies the values used for indicating record status in columns - false (0) or true (1). String values enclose to single quotes, for example: 'no'/'yes'.","propertyOrder":12},"snapshot_table_name":{"type":"string","title":"Snapshot table name","description":"Suffix to add to base table name. If empty, a unique ID followed by \"_snapshot\" will be generated.","propertyOrder":9},"monitored_parameters":{"type":"string","title":"Monitored parameters","description":"Comma separated list of columns that will be monitored. Changes in these columns will be considered for snapshotting.","propertyOrder":3},"effective_date_adjustment":{"type":"integer","title":"Effective Date Adjustment","default":0,"description":"Adjustment value (in days) applied to the effective date of records. For example to -1 if the effective date is the previous day.","propertyOrder":18},"current_timestamp_minus_one":{"type":"boolean","title":"Current timestamp minus one","format":"checkbox","default":false,"description":"When enabled, the valid_to column will be set 1 unit (day or second) smaller than the current time used in valid_from.","propertyOrder":11}},"supported_components":["keboola.snowflake-transformation","keboola.synapse-transformation"]},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["generate"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.app-transformation-pattern-scd","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.app-transformation-pattern-scd","name":"developer-portal-v2/keboola.app-transformation-pattern-scd","tag":"v1.11.0","options":{},"digest":"sha256:1aaf7ee089528a46dcefc298c15999a91ecec41373e172f0453192246ccad001"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.app-transformation-pattern-scd/32/1674039570052.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.app-transformation-pattern-scd/64/1674039570052.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.app-transformation-pattern-scd/128/1674039570052.png"}},{"id":"keboola.ex-db-snowflake","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":153,"name":"Snowflake","type":"extractor","shortDescription":"Extracts tables or query results from a Snowflake database.","longDescription":"This component loads data from an external database – [Snowflake data warehouse](https://www.snowflake.com/). It connects to the database, executes your queries, and stores the results in Keboola Connection Storage.\n\nTo configure this extractor, you need to have credentials for the Snowflake database you want to read.\n\nIncremental load is optional.\n","licenseUrl":"https://github.com/keboola/db-extractor-snowflake/blob/master/LICENSE","documentationUrl":"https://help.keboola.com/extractors/database/sqldb/","sourceCodeUrl":"https://github.com/keboola/db-extractor-snowflake","requiredMemory":"4g","processTimeout":43200,"features":["container-root-user","has-sample-data","has-simplified-ui"],"encryption":true,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"easy","category":null,"categories":["Database"],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","$defs":{"credentials":{"type":"object","required":["host","port","user","database"],"properties":{"ssh":{"type":"object","properties":{"keys":{"type":"object","properties":{"public":{"type":"string"},"#private":{"type":"string"}}},"user":{"type":["string","null"]},"enabled":{"type":"boolean"},"sshHost":{"type":["string","null"]},"sshPort":{"type":["string","integer","null"],"default":22},"localPort":{"type":["string","integer"]},"remoteHost":{"type":"string"},"remotePort":{"type":["string","integer"]}}},"host":{"type":"string"},"port":{"type":["string","integer"],"default":443},"user":{"type":"string"},"schema":{"type":"string"},"database":{"type":"string"},"#password":{"type":"string"},"warehouse":{"type":"string"},"#privateKey":{"type":"string"}}}},"title":"keboola.ex-db-snowflake — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","required":["db"],"properties":{"db":{"$ref":"#/$defs/credentials"}}},"configurationRowSchema":{"type":"object","title":"keboola.ex-db-snowflake — Row Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"id":{"type":["string","integer"]},"name":{"type":"string"},"query":{"type":"string"},"table":{"oneOf":[{"type":"string"},{"type":"object","properties":{"schema":{"type":"string"},"tableName":{"type":"string"}}}]},"tables":{"type":"array","options":{"async":{"label":"Re-load tables","action":"getTables"}}},"columns":{"type":"array","items":{"type":"string"}},"enabled":{"type":"boolean"},"primaryKey":{"type":"array","items":{"type":"string"}},"incremental":{"type":"boolean"},"outputTable":{"type":"string"},"advancedMode":{"type":"boolean"},"incrementalFetchingLimit":{"type":"integer"},"incrementalFetchingColumn":{"type":"string"}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["testConnection","getTables"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-db-snowflake","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-db-snowflake","name":"developer-portal-v2/keboola.ex-db-snowflake","tag":"6.17.1","options":{},"digest":"sha256:f033c8d2585f6c0fe5ed87f4c53b7a02c7d9095965b01be369e3174596f63a45"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-db-snowflake/32/1674037460774.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-db-snowflake/64/1674037460774.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-db-snowflake/128/1674037460774.png"}},{"id":"keboola.wr-db-snowflake","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":96,"name":"Snowflake","type":"writer","shortDescription":"Writes data to a Snowflake database.","longDescription":"This component exports tables from Keboola Connection Storage into a [Snowflake](https://www.snowflake.com) data warehouse. Apart from using your own database as a destination, the writer can also provision a new database and send the data there. This can be used for sending your data to [Tableau](https://www.tableau.com/), [PowerBI](https://powerbi.microsoft.com/en-us/), and other services.\n\nThe writer supports incremental writing and incremental processing.\n\n","licenseUrl":"https://github.com/keboola/db-writer-snowflake/blob/master/LICENSE","documentationUrl":"https://help.keboola.com/writers/database/snowflake/","sourceCodeUrl":"https://github.com/keboola/db-writer-snowflake","requiredMemory":"256m","processTimeout":86400,"features":["dev-branch-configuration-unsafe"],"encryption":true,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Database"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows"],"imageParameters":{},"stackParameters":{},"testConfiguration":{},"configurationSchema":{"type":"object","$defs":{"credentials":{"type":"object","required":["host","user","database","schema"],"properties":{"host":{"type":"string"},"port":{"type":["string","integer"],"default":443},"role":{"type":"string"},"user":{"type":"string"},"driver":{"type":"string"},"region":{"type":"string"},"schema":{"type":"string"},"account":{"type":"string"},"database":{"type":"string"},"loginType":{"type":"string"},"warehouse":{"type":"string"},"#privateKey":{"type":"string"},"ssoLoginAvailable":{"type":"boolean"}}}},"title":"keboola.wr-db-snowflake — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","required":["db"],"properties":{"db":{"$ref":"#/$defs/credentials"}}},"configurationRowSchema":{"type":"object","title":"keboola.wr-db-snowflake — Row Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"items":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"size":{"type":["string","integer","null"]},"type":{"type":"string"},"dbName":{"type":"string"},"default":{"type":["string","null"]},"nullable":{"type":"boolean"}}}},"dbName":{"type":"string"},"tables":{"type":"array","options":{"async":{"label":"Re-load tables","action":"getTables"}}},"tableId":{"type":"string"},"primaryKey":{"type":"array","items":{"type":"string"}},"incremental":{"type":"boolean"}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":["testConnection"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"s3","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.wr-db-snowflake","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-db-snowflake","name":"developer-portal-v2/keboola.wr-db-snowflake","tag":"4.5.5","options":{},"digest":"sha256:06091973d05de0679de285bd712c2a9dc77ab9bced8eed4a17b6ef848a49762e"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-db-snowflake/32/1666647435037.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-db-snowflake/64/1666647435037.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-db-snowflake/128/1666647435037.png"}},{"id":"keboola.wr-db-snowflake-gcs","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":28,"name":"Snowflake","type":"writer","shortDescription":"Writes data to a Snowflake database.","longDescription":"This component exports tables from Keboola Connection Storage into a [Snowflake](https://www.snowflake.com) data warehouse. Apart from using your own database as a destination, the writer can also provision a new database and send the data there. This can be used for sending your data to [Tableau](https://www.tableau.com/), [PowerBI](https://powerbi.microsoft.com/en-us/), and other services.\n\nThe writer supports incremental writing and incremental processing.","licenseUrl":null,"documentationUrl":"https://help.keboola.com/writers/database/snowflake/","sourceCodeUrl":"https://github.com/keboola/db-writer-snowflake-gcs","requiredMemory":"4g","processTimeout":43200,"features":["dev-branch-configuration-unsafe","container-root-user"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Database"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","$defs":{"credentials":{"type":"object","required":["host","user","database","schema"],"properties":{"host":{"type":"string"},"port":{"type":["string","integer"],"default":443},"role":{"type":"string"},"user":{"type":"string"},"driver":{"type":"string"},"region":{"type":"string"},"schema":{"type":"string"},"account":{"type":"string"},"database":{"type":"string"},"loginType":{"type":"string"},"warehouse":{"type":"string"},"#privateKey":{"type":"string"},"ssoLoginAvailable":{"type":"boolean"}}}},"title":"keboola.wr-db-snowflake-gcs — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","required":["db"],"properties":{"db":{"$ref":"#/$defs/credentials"}}},"configurationRowSchema":{"type":"object","title":"keboola.wr-db-snowflake-gcs — Row Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"items":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"size":{"type":["string","integer","null"]},"type":{"type":"string"},"dbName":{"type":"string"},"default":{"type":["string","null"]},"nullable":{"type":"boolean"}}}},"dbName":{"type":"string"},"tables":{"type":"array","options":{"async":{"label":"Re-load tables","action":"getTables"}}},"tableId":{"type":"string"},"primaryKey":{"type":"array","items":{"type":"string"}},"incremental":{"type":"boolean"}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["testConnection"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.wr-db-snowflake-gcs","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-db-snowflake-gcs","name":"developer-portal-v2/keboola.wr-db-snowflake-gcs","tag":"1.5.2","options":{},"digest":"sha256:ac9a3fdb9f1acfbbd344a6e0547f64517f275eb42b49e57c19cb62573792162f"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-db-snowflake-gcs/32/1708079725219.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-db-snowflake-gcs/64/1708079725219.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-db-snowflake-gcs/128/1708079725219.png"}},{"id":"keboola.wr-db-snowflake-gcs-s3","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":42,"name":"Snowflake","type":"writer","shortDescription":"Writes data to a Snowflake database.","longDescription":"This component exports tables from Keboola Connection Storage into a [Snowflake](https://www.snowflake.com) data warehouse. Apart from using your own database as a destination, the writer can also provision a new database and send the data there. This can be used for sending your data to [Tableau](https://www.tableau.com/), [PowerBI](https://powerbi.microsoft.com/en-us/), and other services.\n\nThe writer supports incremental writing and incremental processing.\n","licenseUrl":"https://github.com/keboola/db-writer-snowflake-gcs-s3/blob/main/LICENSE","documentationUrl":"https://help.keboola.com/writers/database/snowflake/","sourceCodeUrl":"https://github.com/keboola/db-writer-snowflake-gcs-s3/","requiredMemory":"256m","processTimeout":86400,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Database"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{"connection.us-east4.gcp.keboola.com":{"aws_region":"us-east-1","aws_access_key_id":"AKIA2UC26XPXVRNAZWGJ","aws_staging_s3_bucket":"com-keboola-gcp-us-east4-snowflake-wr20241127134021494400000002","#aws_secret_access_key":"KBC::ComponentSecureGKMS::eJwBdwGI/mE6Mjp7aToxO3M6MTI0OiLe9QIAavugATB4m8wThDZVvix3770kNXcCgMT641heoDQj87Ar9bsOWXdm7//fNt7M4wMHIObgYxF+1NGRXzZ/vmgU3hkxbfodcYbYWafB94vHYw1JIsAGAjhDaOOi2y1oQqRgrYj85NmaI+Z7Q+hGWkigzYt3QarRBMVsIjtpOjA7czoyMTk6IgokAGqzy+DAJFJwnuwDS9KyVsMAlPOMScO6Niel0txwfFiDn/qGErIBAP5P1iKY+A0TYLI77X1CZ6AWNKnjlq/MnlhfHczRrfHTnL/81RV6sBWXiQM0Ywb26Wis+lfgqa6q9PEsSnLg3y+yM2EZkuEfSTYvgBoz4/kKujaWqjiotTDIoOPLNZ20loRgFiHDx0XwE3JsMUoy9iOBaOveN/k3q7UwSojfP9XYtr600Zwm3FqThvnEJES1npwMfOIFEXWUu0fiaeGo7vUZ9aR174HSCHF1HWseEu2btCI7fXAuuA4=","aws_staging_s3_role_arn":"arn:aws:iam::730335198191:role/com-keboola-gcp-us-east4-snowflake-writer-gcs-s3-bHwFL"},"connection.us-central1.gcp.keboola.dev":{"aws_region":"us-east-1","aws_access_key_id":"AKIAWBFLDCKVBLUDUAL7","aws_staging_s3_bucket":"dev-keboola-gcp-us-central1-snowflake20241127133735139000000001","#aws_secret_access_key":"KBC::ComponentSecureGKMS::eJwBdwGI/mE6Mjp7aToxO3M6MTI0OiLe9QIAgI2PKQIAHhLfv8Hnz0aVne2rT2znd+ZoCgPTNCIS9CM0WDcU+i2/UpegYslSQ8xKdlsBsSBtEB6dlGI1w0e+wd4cVGUxiVd0Jg54mtnMbl6tn1tbwLYQaoCtucw9juB8jxam9M5vuqdObhUhK7dzqNu8H1OQSkEIIjtpOjA7czoyMTk6IgokAHK1VZYn3LvapY8UIFZ4o4WStJrsKL42kJW3P9QBkyZoESKVErIBABOKFCm+UATgXuzZSfFMTWiv/enWS6jwaYFuAyOXRKFiF8GQm8HpaGP/tZgmP3gcqqGKCN9NcKbZ1/B+KpfunpFXVT+KJ+5sCCjXSvwR/8r6lVKKnXePpYeQJvneU+TkNOjC5YO1sFTcWhZyUQb/YH3EQVLNVUwDzxHUW+aFe6Zyn7rkLsVqEUDuq+kfSHlxOjg8QK4d4qeGlsV/fCYx0Ax3OhLd5Ix/yfMnqLAJoj/eviI7fSqIrrs=","aws_staging_s3_role_arn":"arn:aws:iam::414823158442:role/dev-keboola-gcp-us-central1-snowflake-writer-gcs-s3-FfIS8"},"connection.europe-west3.gcp.keboola.com":{"aws_region":"eu-central-1","aws_access_key_id":"AKIA5ZBD5VRP6UD6XIO3","aws_staging_s3_bucket":"com-keboola-gcp-europe-west3-snowflak20241127134038504200000001","#aws_secret_access_key":"KBC::ComponentSecureGKMS::eJwBdwGI/mE6Mjp7aToxO3M6MTI0OiLe9QIAyet1q8BZYlpIocoSLhfd6coBbvJoe2xO7jNJ1DTY5Fh0csAT61hTdUHn7NAjj4DPELblWeEyEgnfIuO92j6LmlsHG0Iri5OhYvHzJJ8wX5WTjRn6PbkSsTw8ahVLlwdSQbOb7UmBeEE1JwejMAIc/MhNd1DczCXsIjtpOjA7czoyMTk6IgokAC4ydSeWAUew0KG6hHQOOjQWHemFA/cJayCpl9eSyq4l6TnDErIBAAAbifzgd/MrxXhqYzdCfoeUN3WsjGs/Ht1TYqDH0++kkA2AS1GefWiZLc5Q2feBahsgXPl3yFaJ6hEuUfjxLQcpNYu3RTrAle4Zpb0HUimXVIEefCRf7dtnVM6nsYo7YEkRXb1uEUtPCe28mayHsBozT+I9Ld1LNnYNt91RzjXM9JtOir69rH8WXuyAh3HR1NWqCCr266UEjP2s+AdSsWYE8Fw26fYIabQMcu0+bCTAEyI7fbIiqgE=","aws_staging_s3_role_arn":"arn:aws:iam::947115633759:role/com-keboola-gcp-europe-west3-snowflake-writer-gcs-s3-WMUdq"}},"testConfiguration":null,"configurationSchema":{"type":"object","$defs":{"credentials":{"type":"object","required":["host","user","database","schema"],"properties":{"host":{"type":"string"},"port":{"type":["string","integer"],"default":443},"role":{"type":"string"},"user":{"type":"string"},"driver":{"type":"string"},"region":{"type":"string"},"schema":{"type":"string"},"account":{"type":"string"},"database":{"type":"string"},"loginType":{"type":"string"},"warehouse":{"type":"string"},"#privateKey":{"type":"string"},"ssoLoginAvailable":{"type":"boolean"}}}},"title":"keboola.wr-db-snowflake-gcs-s3 — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","required":["db"],"properties":{"db":{"$ref":"#/$defs/credentials"}}},"configurationRowSchema":{"type":"object","title":"keboola.wr-db-snowflake-gcs-s3 — Row Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"items":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"size":{"type":["string","integer","null"]},"type":{"type":"string"},"dbName":{"type":"string"},"default":{"type":["string","null"]},"nullable":{"type":"boolean"}}}},"dbName":{"type":"string"},"tables":{"type":"array","options":{"async":{"label":"Re-load tables","action":"getTables"}}},"tableId":{"type":"string"},"primaryKey":{"type":"array","items":{"type":"string"}},"incremental":{"type":"boolean"}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["testConnection"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"workspace-snowflake","stagingStorageOutput":"workspace-snowflake","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":42,"uri":"docker/keboola.wr-db-snowflake-gcs-s3","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-db-snowflake-gcs-s3","name":"developer-portal-v2/keboola.wr-db-snowflake-gcs-s3","tag":"0.6.2","options":{},"digest":"sha256:8557768327bd3b49febe940831e104d66fbebda5876b73377077c5f46e8ab854"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-db-snowflake-gcs-s3/32/1723805648916.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-db-snowflake-gcs-s3/64/1723805648916.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-db-snowflake-gcs-s3/128/1723805648916.png"}},{"id":"keboola.wr-snowflake-blob-storage","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":49,"name":"Snowflake","type":"writer","shortDescription":"Writes data to a Snowflake database.","longDescription":"This component exports tables from Keboola Connection Storage into a [Snowflake](https://www.snowflake.com) data warehouse over Azure Blob Storage stage. Apart from using your own database as a destination, the writer can also provision a new database and send the data there. This can be used for sending your data to [Tableau](https://www.tableau.com/), [PowerBI](https://powerbi.microsoft.com/en-us/), and other services.\n\nThe writer supports incremental writing and incremental processing.\n\n","licenseUrl":"https://github.com/keboola/db-writer-snowflake/blob/master/LICENSE","documentationUrl":"https://help.keboola.com/writers/database/snowflake/","sourceCodeUrl":"https://github.com/keboola/db-writer-snowflake","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Database"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","$defs":{"credentials":{"type":"object","required":["host","user","database","schema"],"properties":{"host":{"type":"string"},"port":{"type":["string","integer"],"default":443},"role":{"type":"string"},"user":{"type":"string"},"driver":{"type":"string"},"region":{"type":"string"},"schema":{"type":"string"},"account":{"type":"string"},"database":{"type":"string"},"loginType":{"type":"string"},"warehouse":{"type":"string"},"#privateKey":{"type":"string"},"ssoLoginAvailable":{"type":"boolean"}}}},"title":"keboola.wr-snowflake-blob-storage — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","required":["db"],"properties":{"db":{"$ref":"#/$defs/credentials"}}},"configurationRowSchema":{"type":"object","title":"keboola.wr-snowflake-blob-storage — Row Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"items":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"size":{"type":["string","integer","null"]},"type":{"type":"string"},"dbName":{"type":"string"},"default":{"type":["string","null"]},"nullable":{"type":"boolean"}}}},"dbName":{"type":"string"},"tables":{"type":"array","options":{"async":{"label":"Re-load tables","action":"getTables"}}},"tableId":{"type":"string"},"primaryKey":{"type":"array","items":{"type":"string"}},"incremental":{"type":"boolean"}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["testConnection"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"abs","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":49,"uri":"docker/keboola.wr-snowflake-blob-storage","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-snowflake-blob-storage","name":"developer-portal-v2/keboola.wr-snowflake-blob-storage","tag":"4.5.5","options":{},"digest":"sha256:06091973d05de0679de285bd712c2a9dc77ab9bced8eed4a17b6ef848a49762e"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-snowflake-blob-storage/32/1674037482850.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-snowflake-blob-storage/64/1674037482850.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-snowflake-blob-storage/128/1674037482850.png"}},{"id":"kds-team.app-snowflake-byodb-view-writer","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":453,"name":"Snowflake BYODB View Writer","type":"application","shortDescription":"Replicates Storage tables as Views in a selected destination Snowflake database, maintaining original data types and supporting flexible schema mapping and naming conventions.","longDescription":"Replicates Storage tables as Views in a selected destination Snowflake database. Creates views that maintain the original data types from the source tables, allowing data access across databases within the same Snowflake account.\n\nKey features:\n- Supports both password and key pair authentication\n- Flexible schema mapping options\n- Customizable naming conventions for columns, views, and schemas\n- Option to use bucket aliases and table user-defined names\n- Handles shared tables with proper role configuration\n- Supports multiple storage buckets in a single configuration\n\nThe component requires proper role setup in Snowflake, including read access to the KBC project database and view creation privileges in the destination database. It's recommended to enable the RO role for the project to ensure proper access control.","licenseUrl":"https://github.com/keboola/component-snowflake-byodb-view-writer/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-snowflake-byodb-view-writer/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-snowflake-byodb-view-writer","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":true,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Snowflake Credentials","required":["username","#password","account","warehouse","role"],"properties":{"role":{"type":"string","title":"Role","description":"Snowflake role name. If emtpy, default role will be used.","propertyOrder":190},"account":{"type":"string","title":"Account","description":"Snowflake account, e.g. cID.eu-central-1","propertyOrder":120},"username":{"type":"string","title":"User Name","propertyOrder":130},"#password":{"type":"string","title":"Password","format":"password","options":{"dependencies":{"auth_type":"password"}},"propertyOrder":140},"auth_type":{"enum":["password","key_pair"],"type":"string","title":"Authentication Type","default":"key_pair","options":{"enum_titles":["Password","Key Pair"]},"propertyOrder":110},"warehouse":{"type":"string","title":"Warehouse","description":"Snowflake Warehouse name","propertyOrder":180},"#private_key":{"type":"string","title":"Private Key","format":"textarea","options":{"dependencies":{"auth_type":"key_pair"}},"description":"Private key used for authentication","propertyOrder":150},"#storage_token":{"type":"string","title":"Storage Token","format":"password","propertyOrder":100},"db_name_prefix":{"type":"string","title":"DB Name Prefix","default":"KEBOOLA_","description":"Keboola generated DB names are formed as {PREFIX}{PROJECT_ID}. The prefixes can differ based on BYODB deployment setup. Typically KEBOOLA_ or SAPI_","propertyOrder":200},"test_connection":{"type":"button","format":"sync-action","options":{"async":{"label":"TEST CONNECTION","action":"testConnection"}},"propertyOrder":210},"#private_key_pass":{"type":"string","title":"Private Key Passphrase","format":"password","options":{"dependencies":{"auth_type":"key_pair"}},"description":"Passphrase for the private key","propertyOrder":160}}},"configurationRowSchema":{"type":"object","title":"extractor configuration","required":["destination_db","bucket_ids"],"properties":{"table_ids":{"type":"array","items":{"enum":[],"type":"string","title":"Table ID","minLength":5},"title":"Storage Tables","format":"select","options":{"async":{"label":"Re-load tables","action":"get_tables"}},"description":"Storage Tables. If left empty, all tables in the selected buckets will be used. If no buckets are selected, all tables in all buckets will be used.","uniqueItems":true,"propertyOrder":162},"bucket_ids":{"type":"array","items":{"enum":[],"type":"string","title":"Bucket ID","minLength":5},"title":"Storage Buckets","format":"select","options":{"async":{"label":"Re-load buckets","action":"get_buckets"}},"description":"Storage Buckets. If left empty, all buckets in the project will be used.","uniqueItems":true,"propertyOrder":161},"destination_db":{"type":"string","title":"Destination DB name","description":"Name of the destination database in Snowflake","propertyOrder":160},"schema_mapping":{"type":"array","items":{"type":"object","title":"Mapping","required":["bucket_id","destination_schema"],"properties":{"bucket_id":{"type":"string","title":"Storage Bucket","watch":{"bid":"bucket_ids"},"enumSource":"bid","propertyOrder":1},"destination_schema":{"type":"string","title":"Destination Schema","propertyOrder":100}}},"title":"Schema Mapping","format":"table","options":{"dependencies":{"custom_schema_mapping":true}},"uniqueItems":true,"propertyOrder":164},"additional_options":{"type":"object","title":"Additional Options","format":"grid-strict","required":["column_case","view_case"],"properties":{"view_case":{"enum":["original","upper","lower"],"type":"string","title":"View Case","default":"original","options":{"grid_columns":4},"propertyOrder":20},"column_case":{"enum":["original","upper","lower"],"type":"string","title":"Column case","default":"original","options":{"grid_columns":4},"propertyOrder":25},"schema_case":{"enum":["original","upper","lower"],"type":"string","title":"Schema Case","default":"original","options":{"dependencies":{"schema_display_helper":"false"},"grid_columns":4},"required":true,"propertyOrder":10},"use_table_alias":{"type":"boolean","title":"Use table use defined name","format":"checkbox","default":false,"options":{"grid_columns":4},"description":"Use table user defined name in the VIEW name instead of the default name (ID)","propertyOrder":35},"use_bucket_alias":{"type":"boolean","title":"Use bucket alias","format":"checkbox","default":true,"options":{"dependencies":{"schema_display_helper":"false"},"grid_columns":4},"description":"Use bucket alias (user defined name) in the VIEW name instead of the Bucket ID","propertyOrder":30},"drop_stage_prefix":{"type":"boolean","title":"Drop in/out prefix","format":"checkbox","default":false,"options":{"dependencies":{"schema_display_helper":"false"},"grid_columns":4},"description":"Drop in/out prefix from resulting schema name","propertyOrder":32},"ignore_shared_tables":{"type":"boolean","title":"Ignore shared tables","format":"checkbox","default":true,"options":{"grid_columns":4},"description":"Skip shared tables. Enable only if RO role is used and enabled in all projects","propertyOrder":40},"schema_display_helper":{"type":"string","watch":{"val":"custom_schema_mapping"},"options":{"hidden":true},"template":"{{val}}","description":"Helper dummy element to render schema related options"}},"propertyOrder":180},"custom_schema_mapping":{"type":"boolean","title":"Custom schema mapping","format":"checkbox","default":false,"required":true,"description":"Map buckets to custom schemas","propertyOrder":163}}},"createConfigurationRowSchema":null,"configurationDescription":"Configuration description.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["get_buckets","get_tables","testConnection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"verbose","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.app-snowflake-byodb-view-writer","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.app-snowflake-byodb-view-writer","name":"developer-portal-v2/kds-team.app-snowflake-byodb-view-writer","tag":"0.11.0","options":{},"digest":"sha256:aeb2c50d8ba3e32f1433c8784bb0a4f62ce791a289daf2f034fdc1a0f3b0cd22"},"publishingStatus":"public","icon":{"32":null,"64":null,"128":null}},{"id":"kds-team.app-snowflake-query-runner","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":134,"name":"Snowflake Query Runner","type":"application","shortDescription":"Runs arbitrary SQL queries against a Snowflake warehouse.","longDescription":"# Snowflake Query Runner\n\nThis application enables users to run any query against their Snowflake warehouse straight from Keboola.\n\nIt is row-based, meaning it accepts configuration-specific parameters used by each row run: account, username, #password, and warehouse. Each row allows you to specify a query to be run, as well as a database and schema to be used.","licenseUrl":"https://github.com/keboola/component-snowflake-query-runner/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-snowflake-query-runner/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-snowflake-query-runner","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Snowflake Connection","required":["account","username","warehouse"],"properties":{"account":{"type":"string","title":"Account Identifier","description":"Account identifier of the Snowflake instance. This is a prefix of your Snowflake instance URL, e.g., <strong>keboola.eu-central-1</strong>.</br>See <a href='https://docs.snowflake.com/en/user-guide/connecting.html#your-snowflake-account-name'>the documentation for more information</a>.","propertyOrder":100},"username":{"type":"string","title":"Username","description":"Snowflake user that will be used to run queries","propertyOrder":200},"#password":{"type":"string","title":"Password","format":"password","options":{"dependencies":{"auth_type":"password"}},"description":"Password authenticating the Snowflake user","propertyOrder":300},"auth_type":{"enum":["password","key_pair"],"type":"string","title":"Authentication Type","default":"key_pair","options":{"enum_titles":["Password","Key Pair"]},"propertyOrder":0},"warehouse":{"type":"string","title":"Warehouse","description":"Name of the Snowflake warehouse to be used","propertyOrder":600},"#private_key":{"type":"string","title":"Private Key","format":"textarea","options":{"dependencies":{"auth_type":"key_pair"}},"description":"Private key used for authentication","propertyOrder":400},"test_connection":{"type":"button","format":"sync-action","options":{"async":{"label":"TEST CONNECTION","action":"testConnection"}},"propertyOrder":700},"#private_key_passphrase":{"type":"string","title":"Private Key Passphrase","format":"password","options":{"dependencies":{"auth_type":"key_pair"}},"description":"Passphrase for the private key","propertyOrder":500}}},"configurationRowSchema":{"type":"object","title":"Parameters","required":["database","schema","query"],"properties":{"query":{"type":"string","title":"Query","format":"editor","options":{"editor":{"mode":"text/x-sql"}},"description":"Query to execute","propertyOrder":300},"schema":{"type":"string","title":"Schema","description":"Snowflake schema where the query will be executed","propertyOrder":200},"database":{"type":"string","title":"Database","description":"Snowflake database where the query will be executed","propertyOrder":100}}},"createConfigurationRowSchema":null,"configurationDescription":"## Configuration-Specific Parameters\n\nThe following parameters need to be specified to connect successfully to a Snowflake instance:\n\n- `account`: Snowflake account name, [see Snowflake documentation for more information](https://docs.snowflake.com/en/user-guide/connecting.html#your-snowflake-account-name)\n- `username`: Snowflake user that will be used to log in to the instance\n- `#password`: Password for the specified Snowflake user\n- `warehouse`: Name of the Snowflake warehouse where queries will run\n\n## Row-Specific Parameters\n\nEach row allows to specify a query to be run, as well as a database and schema to be used. Parameters are:\n\n- `database`: Name of the Snowflake database to use\n- `schema`: Snowflake schema where the query will be run\n- `query`: Query to execute","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["testConnection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.app-snowflake-query-runner","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.app-snowflake-query-runner","name":"developer-portal-v2/kds-team.app-snowflake-query-runner","tag":"0.1.9","options":{},"digest":"sha256:fca4ae949a91138f23c78e0daf2198480caba491da47e97ee1062738a376a946"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-snowflake-query-runner/32/1674037431264.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-snowflake-query-runner/64/1674037431264.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-snowflake-query-runner/128/1674037431264.png"}},{"id":"keboola.snowflake-transformation","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":61,"name":"Snowflake SQL","type":"transformation","shortDescription":"Runs SQL transformations on the Keboola Snowflake backend.","longDescription":"Application which runs KBC transformations","licenseUrl":"https://www.keboola.com/terms-and-conditions","documentationUrl":"https://help.keboola.com/transformations/snowflake-plain","sourceCodeUrl":"https://github.com/keboola/snowflake-transformation","requiredMemory":null,"processTimeout":86400,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput","genericDockerUI-tableOutput","genericCodeBlocksUI","genericVariablesUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":null,"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"workspace-snowflake","stagingStorageOutput":"workspace-snowflake","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":61,"uri":"docker/keboola.snowflake-transformation","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.snowflake-transformation","name":"developer-portal-v2/keboola.snowflake-transformation","tag":"1.6.1","options":{},"digest":"sha256:e3684cf7387fab9f1f9e38da4043e47eb1acbda0e301cc0b0ec6622e6f89c621"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.snowflake-transformation/32/1666629761300.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.snowflake-transformation/64/1666629761300.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.snowflake-transformation/128/1666629761300.png"}},{"id":"keboola.processor-split-table","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":45,"name":"Split Table","type":"processor","shortDescription":"Split each output table to slices with a defined size and optionally compresses them.","longDescription":"Split each output table to slices with a defined size and optionally compresses them.","licenseUrl":"https://github.com/keboola/processor-split-table/blob/main/LICENSE","documentationUrl":"https://github.com/keboola/processor-split-table/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/processor-split-table","requiredMemory":"1024m","processTimeout":36000,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":[],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":null,"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":45,"uri":"docker/keboola.processor-split-table","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.processor-split-table","name":"developer-portal-v2/keboola.processor-split-table","tag":"v3.1.0","options":{},"digest":"sha256:86178552f02d1d13e20b5d1ea12534c20617d6899c97cf7aa4a4cfba310d1a99"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.processor-split-table/32/1620982382242.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.processor-split-table/64/1620982382242.png","128":null}},{"id":"keboola.wr-db-mssql-v2","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":132,"name":"SQL Server","type":"writer","shortDescription":"Writes data to a Microsoft SQL Server or Azure SQL database.","longDescription":"This component exports tables from Keboola Connection Storage to a [Microsoft SQL Server](https://www.microsoft.com/en-us/sql-server/sql-server-2017) database.\n\nTo configure the writer, you need to\n\n- provide database credentials, and\n- have a connection to the database you want to write to, preferably [secure](https://help.keboola.com/extractors/database/#connecting-to-database). \n\nThe writer supports incremental writing and incremental processing.","licenseUrl":"https://github.com/keboola/db-writer-mssql/blob/master/LICENSE.md","documentationUrl":"https://help.keboola.com/writers/database/mssql/","sourceCodeUrl":"https://github.com/keboola/db-writer-mssql","requiredMemory":"512m","processTimeout":43200,"features":["container-root-user","dev-branch-configuration-unsafe"],"encryption":true,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Database"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput","genericDockerUI-rows"],"imageParameters":{},"stackParameters":{},"testConfiguration":{},"configurationSchema":{"type":"object","$defs":{"credentials":{"type":"object","required":["host","port","user","#password","database"],"properties":{"ssh":{"type":"object","properties":{"keys":{"type":"object","properties":{"public":{"type":"string"},"#private":{"type":"string"}}},"user":{"type":["string","null"]},"enabled":{"type":"boolean"},"sshHost":{"type":["string","null"]},"sshPort":{"type":["string","integer","null"],"default":22},"localPort":{"type":["string","integer"]},"remoteHost":{"type":"string"},"remotePort":{"type":["string","integer"]}}},"host":{"type":"string"},"port":{"type":["string","integer"],"default":1433},"user":{"type":"string"},"driver":{"type":"string"},"database":{"type":"string"},"instance":{"type":"string"},"#password":{"type":"string"},"tdsVersion":{"type":"string"}}}},"title":"keboola.wr-db-mssql-v2 — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","required":["db"],"properties":{"db":{"$ref":"#/$defs/credentials"}}},"configurationRowSchema":{"type":"object","title":"keboola.wr-db-mssql-v2 — Row Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"items":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"size":{"type":["string","integer","null"]},"type":{"type":"string"},"dbName":{"type":"string"},"default":{"type":["string","null"]},"nullable":{"type":"boolean"}}}},"dbName":{"type":"string"},"tables":{"type":"array","options":{"async":{"label":"Re-load tables","action":"getTables"}}},"tableId":{"type":"string"},"primaryKey":{"type":"array","items":{"type":"string"}},"incremental":{"type":"boolean"}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":["testConnection"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.wr-db-mssql-v2","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-db-mssql-v2","name":"developer-portal-v2/keboola.wr-db-mssql-v2","tag":"5.0.3","options":{"region":"us-east-1"},"digest":"sha256:b75a6eebbca43a5623e4a9efe51f310ecd368ef2a3f19b8208a83a7787902757"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-db-mssql-v2/32/1592828428654.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-db-mssql-v2/64/1592828428654.png","128":null}},{"id":"medio.ex-srovname-cz","vendor":{"id":"medio","name":"Taste","address":"Hybernská 1271/32\n110 00 Prague 1\nCzech republic","email":"keboola@taste.cz","type":"other"},"version":33,"name":"Srovnáme.cz","type":"extractor","shortDescription":"Czech shopping advisor portal","longDescription":"# Srovnáme.cz\n**Created with love by Medio**\n\nKBC Docker app for extracting data from Srovname.cz (http://srovname.cz). Get your daily impressions, clicks, cost and conversion data.\n\nThe Extractor gets list of campaign stats for previous day and saves the data to Storage API. Date of downloaded stats can be changed in configuration.\n\n>NOTICE!\n> Data can change for last 30 days","licenseUrl":"https://github.com/tastecz/keboola-components/blob/master/srovname-cz/license","documentationUrl":"https://github.com/tastecz/keboola-components/tree/master/srovname-cz","sourceCodeUrl":null,"requiredMemory":null,"processTimeout":null,"features":["container-root-user"],"encryption":true,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Analytics"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","appInfo.experimental"],"imageParameters":{},"stackParameters":{},"testConfiguration":{},"configurationSchema":{"type":"object","title":"Parameters","required":["since","username","#password","bucket"],"properties":{"since":{"type":"string","title":"Since","default":"-14 day","minLength":1},"bucket":{"type":"string","title":"Output bucket","default":"in.c-ex-srovname-cz","minLength":1},"username":{"type":"string","title":"Username","default":"","minLength":1},"#password":{"type":"string","title":"Password","format":"password","default":"","minLength":1}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"# Configuration\n\n* **Since** - beginning of date range, for which you want statistics to be downloaded. \nSpecific date (e. g. ``2018-01-01``) or relative term (``-365`` days) can be used.\n\n* **Output bucket** - Name of bucket where the data will be saved\n\n* **Username / Password** - Use Srovname.cz login credentials.\n\n# Output\n\nData are saved into table **incrementally**:\n\n**stats** table - contains marketing stats, columns are:\n* **date**\n* **visits**\n* **cpc**\n* **spend**\n* **conversion_rates**\n* **orders**\n* **aov**\n* **transaction_revenue**\n* **pno**","configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/medio.ex-srovname-cz","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/medio.ex-srovname-cz","name":"developer-portal-v2/medio.ex-srovname-cz","tag":"latest","options":{},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/medio.ex-srovname-cz/32/3.png","64":"https://ui.keboola-assets.com/developer-portal/icons/medio.ex-srovname-cz/64/3.png","128":null}},{"id":"keboola.processor-strip-null","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":11,"name":"Strip nulls","type":"processor","shortDescription":"Remove NULL terminator characters from data","longDescription":"Remove NULL terminator characters from data","licenseUrl":"https://github.com/keboola/processor-strip-null/blob/main/LICENSE","documentationUrl":"https://github.com/keboola/processor-strip-null#usage","sourceCodeUrl":"https://github.com/keboola/processor-strip-null","requiredMemory":"256m","processTimeout":21600,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":[],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":null,"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":11,"uri":"docker/keboola.processor-strip-null","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.processor-strip-null","name":"developer-portal-v2/keboola.processor-strip-null","tag":"0.0.5","options":{},"digest":"sha256:34c11ddc55a88c289092ef2ddcaac521cbef415a06c38462642f738bdb7aca25"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.processor-strip-null/32/1666648404771.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.processor-strip-null/64/1666648404771.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.processor-strip-null/128/1666648404771.png"}},{"id":"keboola.ex-stripe","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":18,"name":"Stripe","type":"extractor","shortDescription":"Extracts data from the Stripe REST API.","longDescription":"This component uses the [Stripe API](https://stripe.com/docs/api) to import almost all data from [Stripe](https://www.stripe.com/).\n\nTo configure this extractor, you need to provide a Stripe [API key](https://stripe.com/docs/api#authentication).","licenseUrl":"https://github.com/keboola/kbc-ui-templates/blob/main/LICENSE","documentationUrl":"https://help.keboola.com/extractors/other/stripe/","sourceCodeUrl":"https://github.com/keboola/kbc-ui-templates/tree/master/resources/keboola.ex-stripe/templates","requiredMemory":"512m","processTimeout":32400,"features":["container-root-user"],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"medium","category":null,"categories":["Accounting"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericTemplatesUI"],"imageParameters":{"default_bucket":true},"stackParameters":{},"testConfiguration":{},"configurationSchema":{"type":"object","title":"Parameters","required":["config"],"properties":{"config":{"type":"object","title":"Authorization","properties":{"#token":{"type":"string","links":[{"rel":"Stripe Dashboard","href":"https://dashboard.stripe.com/account/apikeys"}],"title":"Stripe API token","format":"password","minLength":1,"description":"Get your API Key in the Stripe Dashboard"}}}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-stripe","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/ex-generic-v2","name":"developer-portal-v2/ex-generic-v2","tag":"4.2.13","options":{},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-stripe/32/1.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-stripe/64/1.png","128":null}},{"id":"keboola.ex-suiteprojects-pro","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":34,"name":"SuiteProjects Pro","type":"extractor","shortDescription":"Extracts data from NetSuite SuiteProjects Pro (formerly NetSuite OpenAir) through its XML API.","longDescription":"Extracts data from NetSuite SuiteProjects Pro, formerly NetSuite OpenAir, through its XML API. It covers about 160 object types, including projects, tasks, time entries, invoices, charges, approvals and revenue recognition, several of which the REST API does not expose.\n\nEach configuration row reads one object type into one table. Incremental Fetch is the default: after the first run, each run reads only the objects changed since the previous one, which keeps the requests against the account's shared API limits small.\n\nA row can also read the approval history of expense reports and timesheets, write custom fields into a separate table, and store attachment files in Keboola File Storage.\n\n**Before you start:** API access is a licensed SuiteProjects Pro add-on; when it is enabled for the account, SuiteProjects Pro issues the API namespace and the API key. The component signs in as a dedicated API user with the company ID, user ID and password (single sign-on does not work for the API), at the account-specific domain from the address bar. It reads only what that user's role and filter sets allow.","licenseUrl":"https://github.com/keboola/component-ex-suiteprojects-pro/blob/main/LICENSE.md","documentationUrl":"https://help.keboola.com/components/extractors/erp/suiteprojects-pro/","sourceCodeUrl":"https://github.com/keboola/component-ex-suiteprojects-pro","requiredMemory":null,"processTimeout":null,"features":[],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":true,"forwardTokenDetails":true,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-resetState","appInfo.dataIn","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"SuiteProjects Pro Connection","required":["account_domain","company_id","user_id","#password","api_namespace","#api_key"],"properties":{"user_id":{"type":"string","title":"User ID","options":{"tooltip":"Use a dedicated API user who signs in with a password. The component reads only the objects that this user's role and filter sets allow. A type outside the filter sets can come back with no objects instead of an error."},"description":"The User ID of the API user","propertyOrder":3},"#api_key":{"type":"string","title":"API Key","format":"password","options":{"tooltip":"SuiteProjects Pro issues the API Key together with the API Namespace when it enables API access (the API Access add-on) for the account."},"propertyOrder":6},"#password":{"type":"string","title":"Password","format":"password","options":{"tooltip":"The password the API user signs in to SuiteProjects Pro with. A user who can sign in only through single sign-on cannot use the API."},"propertyOrder":4},"company_id":{"type":"string","title":"Company ID","description":"The Company ID you enter on the SuiteProjects Pro sign-in page","propertyOrder":2},"api_namespace":{"type":"string","title":"API Namespace","options":{"tooltip":"SuiteProjects Pro issues the API Namespace together with the API Key when it enables API access (the API Access add-on) for the account."},"description":"Issued by SuiteProjects Pro together with the API Key","propertyOrder":5},"account_domain":{"type":"string","title":"Account Domain","options":{"inputAttributes":{"placeholder":"company-id.app.netsuitesuiteprojectspro.com"}},"description":"The account-specific domain from the address bar after you sign in to SuiteProjects Pro","propertyOrder":1},"test_connection":{"type":"button","format":"test-connection","propertyOrder":7}}},"configurationRowSchema":{"type":"object","title":"Object Type","required":["source","destination"],"properties":{"source":{"type":"object","title":"Source","format":"grid-strict","required":["object_type"],"properties":{"date_end":{"type":"string","title":"Date End","options":{"tooltip":"The Date Window reads from Date Start, included, to Date End, excluded, in SuiteProjects Pro server time. Enter `YYYY-MM-DD`, `YYYY-MM-DD HH:MM:SS` or a relative value such as `30 days ago`, `yesterday` or `today`. On `updated` and `created`, a relative value keeps the time of day of the run. On a date without a time, such as `date` of Task or of Schedulebyday, it starts at midnight: `yesterday` to `today` is yesterday, and `7 days ago` to `now` leaves today out.","dependencies":{"fetch_mode":"date_window"},"grid_columns":6},"description":"Date Start is included and Date End excluded","propertyOrder":18},"lookback":{"type":"string","title":"Lookback","options":{"tooltip":"Enter a whole number of minutes, hours, days or weeks, such as `2 days` or `6 hours`; a trailing `ago` is accepted too. Objects changed in this span before the previous run are read again, on top of an overlap the component always adds: 1 hour plus how far the server clock is ahead of Eastern Standard Time, so 2 hours in summer. With Incremental Load they update their rows.","dependencies":{"fetch_mode":"incremental_fetch"},"inputAttributes":{"placeholder":"2 days"}},"description":"How far before the previous run to read again","propertyOrder":16},"precision":{"type":"integer","title":"Rate Precision","maximum":20,"minimum":0,"options":{"dependencies":{"object_type":"Currencyrate"}},"description":"Digits after the decimal point of the exchange rates","propertyOrder":7},"date_start":{"type":"string","title":"Date Start","options":{"tooltip":"The Date Window reads from Date Start, included, to Date End, excluded, in SuiteProjects Pro server time. Enter `YYYY-MM-DD`, `YYYY-MM-DD HH:MM:SS` or a relative value such as `30 days ago`, `yesterday` or `today`. On `updated` and `created`, a relative value keeps the time of day of the run. On a date without a time, such as `date` of Task or of Schedulebyday, it starts at midnight: `yesterday` to `today` is yesterday, and `7 days ago` to `now` leaves today out.","dependencies":{"fetch_mode":"date_window"},"grid_columns":6},"description":"Date Start is included and Date End excluded","propertyOrder":17},"fetch_mode":{"enum":["full_fetch","incremental_fetch","date_window"],"type":"string","title":"Fetch Mode","default":"incremental_fetch","options":{"tooltip":"**Incremental Fetch**, the default, reads the objects whose Fetch Field is newer than the previous run; the first run reads everything. It keeps the API requests of every later run small, which matters because the account's request limits are shared with its other integrations. **Full Fetch** reads every object; the types without an updated field (Address, Currencyrate, Filter, ImportExport, Module, SummaryView, Term) need it unless you pick another Fetch Field. **Date Window** reads the objects whose Fetch Field is from Date Start to Date End and keeps no position between runs. History rows compare the `created` date of each approval event; HistoryNotes rows apply the mode to the expense reports or timesheets. **Schedulebyday** needs Date Window with Date Start and Date End.","enum_titles":["Full Fetch","Incremental Fetch","Date Window"]},"description":"Which objects each run reads","propertyOrder":14},"fetch_field":{"enum":[],"type":"string","title":"Fetch Field","format":"select","options":{"async":{"label":"Load Date Fields","action":"listDateFields"},"tooltip":"`updated` is the last change of an object, which suits Incremental Fetch. Pick another date, such as `date` of Task, for a Date Window. Any field but `updated` and `created` is taken as a date without a time of day: Incremental Fetch then reads again from the start of the day of its lower bound, and relative Date Window bounds start at midnight. Schedulebyday uses its own dates and ignores this field.","creatable":true,"dependencies":{"fetch_mode":["incremental_fetch","date_window"]},"inputAttributes":{"placeholder":"updated"}},"description":"The date property that Incremental Fetch and Date Window compare","propertyOrder":15},"object_type":{"enum":[],"type":"string","title":"Object Type","format":"select","options":{"async":{"cache":true,"label":"Load Object Types","action":"listObjectTypes","autoload":true},"tooltip":"The list shows every type: first the ones the connection can read, with hints, then the ones the API user cannot read, with the error code. **no objects**: none are visible now. **no id: Full Load only**: the type has no primary key, so it cannot be loaded incrementally. **no updated field: Full Fetch**: the type has no change date, so it needs Full Fetch or another Fetch Field. **Date Window only**: Schedulebyday needs Fetch Mode Date Window. **History:…** reads the approval history of expense reports or timesheets directly, one read per approval action, and compares the `created` date of each event. **HistoryNotes:…** reads the approval notes per expense report or timesheet. **A type that is not in the list** can be typed: the component reads it as a generic type and learns from one of its objects whether it has an id (the primary key) and an updated field. A misspelled name fails at the row's check with the API's error.","creatable":true},"description":"The object type or approval history this row extracts into one table","propertyOrder":1},"between_date":{"type":"string","title":"Between Date","options":{"tooltip":"Enter `YYYY-MM-DD` or a relative value such as `yesterday`; `0000-00-00` returns the tags without start and end dates. Like Exclude Settings, it uses the Not Equal To read method when Read Method is All.","dependencies":{"object_type":"Entitytag"},"inputAttributes":{"placeholder":"yesterday"}},"description":"Only the entity tags that apply on this date","propertyOrder":8},"base_currency":{"type":"string","title":"Base Currency","options":{"dependencies":{"object_type":"Currencyrate"},"inputAttributes":{"placeholder":"USD"}},"description":"ISO 4217 code of the base currency; empty uses the account currency","propertyOrder":6},"exclude_flags":{"type":"boolean","title":"Exclude Settings","format":"checkbox","options":{"tooltip":"SuiteProjects Pro allows this option only with the Equal To and Not Equal To read methods. With All, the component reads every object through Not Equal To. This changes the output columns: before you change it, delete the table in Storage and clear the row state, which remembers the old columns and the watermark.","dependencies":{"object_type":["User","Company"]}},"description":"Leave out the flags column with the account or user settings","propertyOrder":3},"tag_with_name":{"type":"boolean","title":"Tag With Name","format":"checkbox","options":{"tooltip":"Like Exclude Settings, it uses the Not Equal To read method when Read Method is All. This changes the output columns: before you change it, delete the table in Storage and clear the row state, which remembers the old columns and the watermark.","dependencies":{"object_type":"Entitytag"}},"description":"Add the names of the tag group and the tag group attribute","propertyOrder":9},"download_files":{"type":"boolean","title":"Download Files","format":"checkbox","options":{"tooltip":"One API request per file, which counts against the API limits of the account: the run stops before the downloads would use the last 20 % (at least 1,000) of the requests left in the 24-hour window. With Incremental Fetch only the attachments changed since the last run are downloaded. The files are tagged `suiteprojects-pro-attachment` and `suiteprojects-pro-attachment-<id>`; a saved configuration also adds `suiteprojects-pro-config-<configuration id>` and `suiteprojects-pro-row-<row id>`. Folders and empty files are passed over.","dependencies":{"object_type":"Attachment"}},"description":"Also store the content of the attachment files in Keboola File Storage","propertyOrder":11},"calculate_hours":{"type":"boolean","title":"Calculate Minimum and Maximum Hours","format":"checkbox","options":{"tooltip":"SuiteProjects Pro warns that this can slow the reads down considerably when the timesheet rules use a percentage of the work schedule. This changes the output columns: before you change it, delete the table in Storage and clear the row state, which remembers the old columns and the watermark.","dependencies":{"object_type":"Timesheet"}},"description":"Add the minimum and maximum hours from the timesheet rules","propertyOrder":5},"permanent_files":{"type":"boolean","title":"Keep Files Permanently","format":"checkbox","options":{"tooltip":"Keboola deletes files that are not permanent after its default retention period of 15 days.","dependencies":{"object_type":"Attachment","download_files":true}},"description":"Keep the files in File Storage instead of letting them expire","propertyOrder":12},"max_file_size_mb":{"type":"integer","title":"Max File Size (MB)","minimum":1,"options":{"dependencies":{"object_type":"Attachment","download_files":true}},"description":"Skip files larger than this; empty downloads every file","propertyOrder":13},"schedule_all_days":{"type":"boolean","title":"All Days","format":"checkbox","options":{"tooltip":"Exceptions take one read per 200 users. All days take one request per 10 users for every 100 days of the Date Window, which counts against the API limits of the account.","dependencies":{"object_type":"Schedulebyday"}},"description":"Read every day of the schedules, not only the exceptions to the base schedule","propertyOrder":10},"with_project_only":{"type":"boolean","title":"Only Customers With Projects","format":"checkbox","options":{"dependencies":{"object_type":"Customer"}},"description":"Read only the customers associated with one or more projects","propertyOrder":4},"include_placeholder_users":{"type":"boolean","title":"Include Placeholder Users (Generic Resources)","format":"checkbox","options":{"tooltip":"Placeholder users stand in for a role in resource planning, such as 'Senior Consultant – TBD'. They are read in a second pass over User. The generic column (1/0) tells them apart from named users.","dependencies":{"object_type":"User"}},"description":"Also read placeholder users, the generic resources of resource planning","propertyOrder":2}},"propertyOrder":10},"filters":{"type":"object","title":"Filters","format":"grid-strict","properties":{"user_ids":{"type":"array","items":{"enum":[],"type":"string"},"title":"Users","format":"select","options":{"async":{"label":"Load Users","action":"listUsers"},"creatable":true,"dependencies":{"read_method":"user"}},"description":"The list shows up to the newest 5,000 users; you can also type an id","uniqueItems":true,"propertyOrder":3},"conditions":{"type":"array","items":{"type":"object","title":"Condition","properties":{"field":{"enum":[],"type":"string","title":"Field","format":"select","options":{"async":{"label":"Load Fields","action":"listFilterFields"},"creatable":true},"propertyOrder":1},"value":{"type":"string","title":"Value","propertyOrder":2}}},"title":"Conditions","format":"table","options":{"tooltip":"A field is a property of the object type, such as `customerid`; for a HistoryNotes row, a field of the expense report or timesheet. A custom field ends with `__c`. Compare date fields in Date Conditions. History rows take no Filters.","dependencies":{"read_method":["equal_to","not_equal_to"]}},"propertyOrder":2},"project_ids":{"type":"array","items":{"enum":[],"type":"string"},"title":"Projects","format":"select","options":{"async":{"label":"Load Projects","action":"listProjects"},"creatable":true,"dependencies":{"read_method":"project"}},"description":"The list shows up to the newest 5,000 projects; you can also type an id","uniqueItems":true,"propertyOrder":4},"read_method":{"enum":["all","equal_to","not_equal_to","user","project"],"type":"string","title":"Read Method","default":"all","options":{"tooltip":"**All** reads every object. **Equal To** and **Not Equal To** read the objects whose fields match, or do not match, all Conditions. **Objects of Users** and **Objects of Projects** read the objects of each listed user or project, one read per id.","enum_titles":["All","Equal To","Not Equal To","Objects of Users","Objects of Projects"]},"propertyOrder":1},"status_filters":{"type":"array","items":{"enum":["open-envelopes","approved-envelopes","rejected-envelopes","submitted-envelopes","nonreimbursed-envelopes","reimbursable-envelope","open-slips","approved-slips","open-timesheets","approved-timesheets","rejected-timesheets","submitted-timesheets","approved-revenue-recognition-transactions"],"type":"string","options":{"enum_titles":["Open Expense Reports","Approved Expense Reports","Rejected Expense Reports","Submitted Expense Reports","Non-Reimbursed Expense Reports","Reimbursable Expense Reports","Open Charges","Approved Charges","Open Timesheets","Approved Timesheets","Rejected Timesheets","Submitted Timesheets","Approved Revenue Recognition Transactions"]}},"title":"Status Filters","format":"select","options":{"tooltip":"Each filter applies to its own type: the expense report filters to Envelope, the charge filters to Slip, the timesheet filters to Timesheet, and the revenue recognition filter to Revenue_recognition_transaction."},"uniqueItems":true,"propertyOrder":5},"date_conditions":{"type":"array","items":{"type":"object","title":"Date Condition","properties":{"date":{"type":"string","title":"Date","propertyOrder":3},"field":{"enum":[],"type":"string","title":"Date Field","format":"select","options":{"async":{"label":"Load Date Fields","action":"listDateConditionFields"},"creatable":true},"propertyOrder":2},"operator":{"enum":["date_equal_to","date_not_equal_to"],"type":"string","title":"Operator","default":"date_equal_to","options":{"enum_titles":["Is On","Is Not On"]},"propertyOrder":1}}},"title":"Date Conditions","format":"table","options":{"tooltip":"The date is `YYYY-MM-DD`, `YYYY-MM-DD HH:MM:SS` or relative, such as `yesterday`. History rows take no Filters, Date Conditions included."},"propertyOrder":7},"not_exported_application":{"type":"string","title":"Not Exported To","description":"Only the objects not yet exported to this application, as ImportExport names it","propertyOrder":6}},"description":"Which objects of the type the row reads","propertyOrder":20},"destination":{"type":"object","title":"Destination","format":"grid-strict","required":["load_type"],"properties":{"load_type":{"enum":["full_load","incremental_load"],"type":"string","title":"Load Type","default":"incremental_load","options":{"tooltip":"**Incremental Load** updates the rows by the primary key and keeps the rest. **Full Load** replaces the table: with Full Fetch it mirrors SuiteProjects Pro, and with Incremental Fetch or a Date Window the table holds only each run's objects. Types without a primary key, such as Term, need Full Load.","enum_titles":["Full Load","Incremental Load"],"grid_columns":6},"description":"How the output table is written to Storage","propertyOrder":1},"table_name":{"type":"string","title":"Table Name","options":{"tooltip":"Use letters, digits, underscores and dashes. All rows of the configuration write to the same bucket, so two rows of the same type need different table names, for example a Date Window backfill next to the Incremental Fetch row.","grid_columns":6},"description":"Storage table name; empty uses the object type in lowercase","propertyOrder":2}},"propertyOrder":30},"read_options":{"type":"object","title":"Read Options","format":"grid-strict","properties":{"columns":{"type":"array","items":{"enum":[],"type":"string"},"title":"Columns","format":"select","options":{"async":{"label":"Load Columns","action":"listColumns"},"tooltip":"This changes the output columns: before you change it, delete the table in Storage and clear the row state, which remembers the old columns and the watermark. Fewer columns make some types much faster: on a production account 10 Columns cut a Slip page from about 16 s to about 6 s, and to about 3 s with Custom Fields Off; for Task they made no difference. The primary key and, for Incremental Fetch, the Fetch Field are always read. Attachment file content is never a column.","creatable":true},"description":"The properties to read; empty reads all of them","uniqueItems":true,"propertyOrder":4},"batch_size":{"type":"integer","title":"Batch Size","maximum":1000,"minimum":1,"options":{"tooltip":"Every request counts against the API limits of the account. An account can allow fewer than 1,000 objects per request; the component then halves the batch size until requests succeed and logs the value to set here. Keep 1,000: on a production account 500 was 11 to 18 % slower.","grid_columns":6,"inputAttributes":{"placeholder":"1000"}},"description":"Objects per API request, at most 1,000; empty uses 1,000","propertyOrder":1},"custom_fields":{"enum":["inline","separate_table","off"],"type":"string","title":"Custom Fields","default":"inline","options":{"tooltip":"**Inline Columns**, the default, adds them as columns ending with `__c`. It makes the pages of a type with custom fields slower: on a production account a Task page took about 5.7 s inline and 1.8 s with Off. **Separate Table** writes a long table `<table>_custom_fields` with `object_id`, `name` and `value`; it takes about one API request per 20 objects for every 50 custom fields, plus one request that counts the fields of the first object when Custom Field Names is empty. **Off** reads no custom fields: use it only for a heavy row that needs no `__c` columns. With Off or Separate Table, the `__c` columns a custom-field condition returns are left out of the main table. For a slow type such as Slip, set Columns first. This changes the output columns: before you change it, delete the table in Storage and clear the row state, which remembers the old columns and the watermark.","enum_titles":["Inline Columns","Separate Table","Off"],"grid_columns":6},"description":"How custom field values are written","propertyOrder":2},"include_deleted":{"type":"boolean","title":"Include Deleted","format":"checkbox","options":{"tooltip":"SuiteProjects Pro removes deleted objects permanently 180 days after their last change, so run the row at least that often. Not every type supports it; the run then fails with a message. This changes the output columns: before you change it, delete the table in Storage and clear the row state, which remembers the old columns and the watermark."},"description":"Also read the objects marked as deleted and flag them in an is_deleted column","propertyOrder":5},"custom_field_names":{"type":"array","items":{"enum":[],"type":"string"},"title":"Custom Field Names","format":"select","options":{"tooltip":"Type each name as SuiteProjects Pro names the custom field, without the `__c` ending of the inline columns: `cost_center`, not `cost_center__c`. A trailing `__c` is dropped. Empty reads every custom field of the type, plus one request that counts the fields of the first object.","creatable":true,"dependencies":{"custom_fields":"separate_table"},"inputAttributes":{"placeholder":"cost_center"}},"description":"The custom fields for the separate table; empty reads all of them","uniqueItems":true,"propertyOrder":3}},"propertyOrder":40}}},"createConfigurationRowSchema":null,"configurationDescription":"The component reads SuiteProjects Pro (NetSuite OpenAir) through its XML API. Each row extracts one object type or approval history into one table.\n\n1. API access is a licensed add-on. When SuiteProjects Pro enables it for the account, it issues the API namespace and the API key.\n2. Use a dedicated API user who signs in with a password, not with single sign-on. The component reads only the objects that this user's role and filter sets allow.\n3. Enter the account domain and the connection fields, then click Test Connection.\n4. Add a row for each object type. Pick the type with Load Object Types. Keep Fetch Mode at Incremental Fetch wherever the type has an updated field: every later run then reads only what changed.\n\nEvery request counts against the account's API limits for 60 seconds and 24 hours, which the account shares with its other integrations. Keep row parallelism off.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["listColumns","listDateConditionFields","listDateFields","listFilterFields","listObjectTypes","listProjects","listUsers","testConnection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-suiteprojects-pro","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-suiteprojects-pro","name":"developer-portal-v2/keboola.ex-suiteprojects-pro","tag":"0.1.0","options":{},"digest":"sha256:c53e4ca21cf1b17736f44d491c6226db8482d3815858bea1e277383a0aa46d0f"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-suiteprojects-pro/32/1790765337662.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-suiteprojects-pro/64/1790765337662.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-suiteprojects-pro/128/1790765337662.png"}},{"id":"kds-team.ex-survey-monkey","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":31,"name":"SurveyMonkey","type":"extractor","shortDescription":"Downloads surveys, results, questions, and bulk responses from SurveyMonkey API","longDescription":"SurveyMonkey is an online survey development cloud-based software as a service company.\n\nThis component downloads surveys, results, questions, and bulk responses from SurveyMonkey API.\n \n[API Documentation v3](https://developer.surveymonkey.com/api/v3/)\n\nWhen any unexpected errors are encountered during the extractions of the child jobs, the user will need to switch to raw JSON editor and either inject [Filters](https://developers.keboola.com/extend/generic-extractor/configuration/config/jobs/children/#filter) or [Ignore Error](https://developers.keboola.com/extend/generic-extractor/configuration/api/#ignore-errors) to filter out the problematic child requests.","licenseUrl":"https://github.com/keboola/kbc-ui-templates/blob/main/LICENSE","documentationUrl":"https://github.com/keboola/kbc-ui-templates/blob/main/resources/kds-team.ex-survey-monkey/templates/README.md","sourceCodeUrl":"https://github.com/keboola/generic-extractor","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Marketing"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericTemplatesUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["config"],"properties":{"config":{"type":"object","title":"Surveymonkey Input","required":["#access_token"],"properties":{"#access_token":{"type":"string","title":"API Access Token","format":"password","default":"","minLength":1,"description":"Please, see your Surveymonkey developer account settings for personalized access token"}}}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":31,"uri":"docker/kds-team.ex-survey-monkey","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/ex-generic-v2","name":"developer-portal-v2/ex-generic-v2","tag":"latest","options":{},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-survey-monkey/32/2.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-survey-monkey/64/2.png","128":null}},{"id":"keboola.wr-synapse","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":35,"name":"Synapse","type":"writer","shortDescription":"Writes data to Azure Synapse.","longDescription":"This component sends tables from Keboola Connection Storage to an Azure Synapse database.\n\nTo configure the writer, you need to\n\n- provide database credentials, and\n- have a connection to the database you want to write to, preferably [secure](https://help.keboola.com/extractors/database/#connecting-to-database).\n\nThe writer supports incremental writing and incremental processing.","licenseUrl":"https://github.com/keboola/db-writer-synapse/blob/master/LICENSE","documentationUrl":"https://github.com/keboola/db-writer-synapse/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/db-writer-synapse","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Database"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":null,"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["testConnection"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"abs","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.wr-synapse","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-synapse","name":"developer-portal-v2/keboola.wr-synapse","tag":"v1.4.1","options":{},"digest":"sha256:2e69c180aed5c3aa30e31ab5ba31fb1c10a67bc2cf099e08a89c154a424c599d"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-synapse/32/1615369324285.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-synapse/64/1615369324285.png","128":null}},{"id":"kds-team.app-table-definition-generator","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":135,"name":"Table Definition Generator","type":"application","shortDescription":"Generates strictly-typed Storage table definitions from an input JSON specification.","longDescription":"Create Keboola Storage Table Definitions from input JSON files containing the Table Definitions configuration","licenseUrl":"https://github.com/keboola/component-table-definition-generator/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-table-definition-generator/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-table-definition-generator","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-fileInput"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"extractor configuration","required":["#api_token","newest_files"],"properties":{"#api_token":{"type":"string","title":"Storage Token","format":"password","propertyOrder":10},"newest_files":{"type":"boolean","title":"Only newest files","format":"checkbox","description":"Process only newest version of each file (by name).","propertyOrder":20}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"Configuration description.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.app-table-definition-generator","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.app-table-definition-generator","name":"developer-portal-v2/kds-team.app-table-definition-generator","tag":"0.1.3","options":{},"digest":"sha256:ef7c0ab1cddee7db8b85725e4c8f965dd58bb28a1dfd54a350ab7931ec4caae9"},"publishingStatus":"public","icon":{"32":null,"64":null,"128":null}},{"id":"kds-team.app-tableau-extract-refresh-trigger","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":408,"name":"Tableau extract refresh trigger","type":"application","shortDescription":"Trigger Tableu extract refresh directly from Keboola Connection.","longDescription":"Allows triggering Tableau extract refresh tasks based on type (`Incremental`, `Full`). Supports `poll mode` to control whether to wait on the result or just trigger and pass. A refresh that Tableau reports as already in the queue can optionally be handled as a warning, so the job finishes successfully instead of failing.","licenseUrl":"https://github.com/keboola/component-tableau-extract-refresh-trigger/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/component-tableau-extract-refresh-trigger/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/component-tableau-extract-refresh-trigger","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Configuration","required":["endpoint","datasources","poll_mode","site_id","authentication_type"],"properties":{"site_id":{"type":"string","title":"Tableau Site ID. Use with online version","description":"The Site ID can be found in the URL: https://dub01.online.tableau.com/#/site/SITE_ID/home","propertyOrder":255},"endpoint":{"type":"string","title":"Tableau server API endpoint URL","description":"Just the domain part from the URL, e.g. https://dub01.online.tableau.com","propertyOrder":250},"poll_mode":{"enum":[0,1],"type":"number","title":"Poll mode","default":0,"options":{"enum_titles":["No","Yes"]},"description":"If set to `Yes` the trigger will wait for all triggered jobs to finish, otherwise it will trigger all the jobs and finish successfully right after.","propertyOrder":455},"workbooks":{"type":"array","items":{"type":"object","title":"Workbook","format":"grid","required":["name","tag","luid"],"properties":{"tag":{"type":"string","title":"Workbook tag.","description":"Optional workbook tag as found in Tableau.","propertyOrder":2000},"luid":{"type":"string","title":"Tableu server unique LUID of the workbook (as represented via API)","description":"Optional unique datasource identifier i.e. xx12-3324-1323, available via API. This ensures unique identification of the workbook. If specified, the 'tag' parameter is ignored. Fill this in after the first execution. The LUID will be printed in the component job log.","propertyOrder":3000},"name":{"type":"string","title":"Workbook name.","description":"<b>Required</b> Workbook name as found in Tableau.","propertyOrder":1000}}},"title":"Tableau workbooks","description":"List of workbooks which embedded datasources will be refreshed."},"token_name":{"type":"string","title":"PAT Token Name","options":{"dependencies":{"authentication_type":["Personal Access Token"]}},"description":"To create the token see the <a href=\"https://help.tableau.com/current/server/en-us/security_personal_access_tokens.htm#create-tokens\">documentation</a>","propertyOrder":100},"datasources":{"type":"array","items":{"type":"object","title":"Extract","format":"grid","required":["name","tag","luid","type"],"properties":{"tag":{"type":"string","title":"Data source tag.","description":"Optional data source tag as found in Tableau.","propertyOrder":2000},"luid":{"type":"string","title":"Tableu server unique LUID of the datasource (as represented via API)","description":"Optional unique datasource identifier i.e. xx12-3324-1323, available via API. This ensures unique identification of the datasource. If specified, the 'tag' parameter is ignored. Fill this in after the first execution. The LUID will be printed in the component job log.","propertyOrder":3000},"name":{"type":"string","title":"Data source name.","description":"<b>Required</b> Data source name as found in Tableau.","propertyOrder":1000},"type":{"enum":["RefreshExtractTask","IncrementExtractTask"],"type":"string","title":"Refresh type","default":"RefreshExtractTask","options":{"enum_titles":["Full","Incremental"]},"description":"Extract refresh type","propertyOrder":4000}}},"title":"Tableau datasources","description":"List of published datasources with extracts to trigger. Note that there must be appropriate tasks/schedules set for all these sources otherwise the execution will fail"},"#token_secret":{"type":"string","title":"PAT Token Secret","format":"password","options":{"dependencies":{"authentication_type":["Personal Access Token"]}},"description":"To create the token see the <a href=\"https://help.tableau.com/current/server/en-us/security_personal_access_tokens.htm#create-tokens\">documentation</a>","propertyOrder":200},"continue_on_error":{"enum":[false,true],"type":"boolean","title":"Continue on error","default":false,"options":{"tooltip":"This suppresses all trigger errors, including genuine ones such as missing permissions. If the only case you want to tolerate is a refresh that is already in the queue, use \"Handle 'already in queue' as warning\" below instead."},"description":"If set to true, the component will continue with refresh of other data sources or workbooks even if the current one fails.","propertyOrder":465},"authentication_type":{"enum":["Personal Access Token"],"type":"string","title":"Authentication Type","default":"Personal Access Token","readOnly":true,"propertyOrder":10},"already_in_queue_as_warning":{"type":"boolean","title":"Handle 'already in queue' as warning","format":"checkbox","default":false,"options":{"tooltip":"When a refresh for the same data source or workbook is already queued or in progress, Tableau refuses to queue a duplicate. Checked, that is logged as a warning and the job finishes successfully. Unlike \"Continue on error\", it applies to this single case only - a missing permission, a disallowed refresh type or an unrecognised Tableau conflict still fails the job. Unchecked (the default), an already queued refresh fails the job."},"description":"Log a refresh that is already queued in Tableau as a warning instead of failing the job","propertyOrder":470}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"Create a [PAT token](https://help.tableau.com/current/pro/desktop/en-us/useracct.htm#create-and-revoke-personal-access-tokens) to authenticate. \r\n\r\nSpecify datasource with extract tasks to be refreshed.\r\n\r\n**NOTE**: Only extract with tasks/schedules defined will be refreshed.\r\nAny datasources without extract refresh defined won't be available for the trigger.\r\n\r\n### LUID setup\r\n\r\nThe LUIDs are Tableau server internal unique identificators of datasource objects. It is recommended to use the LUID in \r\ncombination with datasource name to ensure there is no ambiguity in the setup, because in theory, it is possible \r\nfor multiple datasources to have same name and/or tags.\r\n\r\nIf you don't know the LUID you may use unique combination of the `name` and `tag` parameters first to identify the datasource. Once you run the configuration \r\nfor the first time, the appropriate `LUID` will be displayed for each specified data source in the **job log**. \r\nLook for message like `INFO - Triggering extract for: \"TABLEAU_TRIGGER_TEST\" with LUID: \"067098d0-d160-4117-977c-b18f1051aec7\"\"` \r\nin the job log and use the displayed `LUID` to update the configuration after first run.\r\n\r\nAdditional documentation [available here.](https://bitbucket.org/kds_consulting_team/kds-team.app-tableau-extract-refresh-trigger/src/master/README.md)\r","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":408,"uri":"docker/kds-team.app-tableau-extract-refresh-trigger","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.app-tableau-extract-refresh-trigger","name":"developer-portal-v2/kds-team.app-tableau-extract-refresh-trigger","tag":"1.1.23","options":{},"digest":"sha256:2708b74437867f72730e5a3dccaa15ddfc59758c9bbd3f0e96c63e5095d082d9"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-tableau-extract-refresh-trigger/32/1595918545916.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-tableau-extract-refresh-trigger/64/1595918545916.png","128":null}},{"id":"tde-exporter","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":48,"name":"Tableau TDE","type":"writer","shortDescription":"Exports tables to Tableau Data Extract files.","longDescription":"This component exports tables from Keboola Connection Storage into \n[Tableau Data Extract (TDE)](https://www.tableau.com/about/blog/2014/7/understanding-tableau-data-extracts-part1) files. You can then download the TDE files to your computer or upload them to the Tableau Server, Google Drive or Dropbox.","licenseUrl":"https://github.com/keboola/tde-exporter/blob/master/LICENSE","documentationUrl":"https://help.keboola.com/writers/bi-tools/tableau/","sourceCodeUrl":"https://github.com/keboola/tde-exporter","requiredMemory":"4096m","processTimeout":36000,"features":["container-root-user","dev-branch-configuration-unsafe","dev-branch-job-blocked"],"encryption":true,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":true,"forwardTokenDetails":true,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Data Visualization"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows"],"imageParameters":{},"stackParameters":{},"testConfiguration":{},"configurationSchema":{},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"yaml","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/tde-exporter","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/tde-exporter","name":"developer-portal-v2/tde-exporter","tag":"4.6.4","options":{},"digest":"sha256:bf1f5ce09e77402eb91ff749355357823850914719dc400c62bb39464037fea2"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/tde-exporter/32/1595918556604.png","64":"https://ui.keboola-assets.com/developer-portal/icons/tde-exporter/64/1595918556604.png","128":null}},{"id":"bizztreat.ex-talon-one","vendor":{"id":"bizztreat","name":"BizzTreat s.r.o.","address":"Olšanská 2643/1A\n130 00 Praha 3","email":"support@bizztreat.com","type":"other"},"version":44,"name":"Talon One","type":"extractor","shortDescription":"This extractor makes the general process for exporting existing coupons or effects from Talon.One","longDescription":"## Configuration\n\n\n### Parameters\n\nfrom endpoint\nhttps://example.talon.one/v1/applications/42/endpoint\n\n```\n{\n  \"project\": \"<example>\",\n  \"application-id\": <id>,\n  \"endpoint\": \"<endpoint>\",\n  \"#bearer\": \"$YOUR_TOKEN\",\n  \"customerId\": <id> \n}\n```\n\n\n- `endpoint` is an endpoint of the service (choose from 2 available)\n- `#bearer` is your secret token\n- `project` is your name of organisation\n- `application-id` is your application id\n- `customerId` is your customer id. You can find it on the end of URL your customer's page\n","licenseUrl":"https://github.com/bizztreat/ex-talon-one/blob/master/LICENSE.md","documentationUrl":"https://github.com/bizztreat/ex-talon-one/blob/master/MANUAL.md","sourceCodeUrl":null,"requiredMemory":"1024m","processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Marketing"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","options":{"remove_empty_properties":true},"required":["project","application-id","endpoint","#bearer","customerId"],"properties":{"#bearer":{"type":"string","title":"Bearer Token","format":"password","default":"","minLength":1,"propertyOrder":4},"project":{"type":"string","title":"Project","default":"","minLength":1,"description":"Name of organization","propertyOrder":1},"endpoint":{"enum":["export_coupons","export_effects","customers"],"type":"string","title":"Endpoint","propertyOrder":3},"customerId":{"type":"integer","title":" Customer ID (NOT integration customer ID)","default":"","propertyOrder":5},"application-id":{"type":"integer","title":"Application ID","default":"","minLength":1,"propertyOrder":2}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":44,"uri":"docker/bizztreat.ex-talon-one","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/bizztreat.ex-talon-one","name":"developer-portal-v2/bizztreat.ex-talon-one","tag":"1.2.9","options":{},"digest":"sha256:14b8a92fbe880a1f99566800b29061cfa8b2c11f3d6f47c27d56edf62c6f255f"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/bizztreat.ex-talon-one/32/10.png","64":"https://ui.keboola-assets.com/developer-portal/icons/bizztreat.ex-talon-one/64/10.png","128":null}},{"id":"bizztreat.wr-talon-one-coupon","vendor":{"id":"bizztreat","name":"BizzTreat s.r.o.","address":"Olšanská 2643/1A\n130 00 Praha 3","email":"support@bizztreat.com","type":"other"},"version":32,"name":"Talon One Coupon","type":"writer","shortDescription":"This writer makes the general process for importing existing coupon codes into Talon.One","longDescription":"### Allowed data objects to write\n\n- CSV file\n\n#### input.csv\n\nRepresents collected raw coupon data in format below:\n\n[\"value\",\"expirydate\",\"startdate\",\"recipientintegrationid\",\"limitval\",\"attributes\"]\n\nNote that only the **value** column is required. All others are optional. Limits default to 1 if they are not provided.\nThe structure of a coupon import CSV file is using ISO8601 for dates. \n\n- value: Id of the specific coupon, Id is unique\n- expirydate: Timestamp YYYY-MM-DDTHH:mm:ssZ\n- startdate: Timestamp YYYY-MM-DDTHH:mm:ssZ\n- recipientintegrationid: customer Id\n- limitval: is integer, default 1\n- attributes: format example: \"{\"\"Key1\"\": \"\"value\"\", \"\"Key2\"\": \"\"value\"\"}\"\n\nInput table must be named \\\"input.csv\\\"\n\n## Configuration\n\n\n### Parameters\n\nfrom endpoint\nhttps://example.talon.one/v1/applications/42/campaigns/3/import_coupons\n\n<pre>\n{\n  \"project\": \"<example>\",\n  \"application-id\": <id>,\n  \"campaign-id\": <id>,\n  \"#bearer\": \"$YOUR_TOKEN\"\n}\n</pre>\n\n\n- `endpoint` is an endpoint of the service\n- `#bearer` is your secret token\n- `project` is your name of organization\n- `application-id` is your application id\n- `campaign-id` is your campaign id","licenseUrl":"https://github.com/bizztreat/wr-talon-one-coupon/blob/master/LICENSE.md","documentationUrl":"https://github.com/bizztreat/wr-talon-one-coupon/blob/master/MANUAL.md","sourceCodeUrl":null,"requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Marketing"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["project","application-id","campaign-id","#bearer"],"properties":{"#bearer":{"type":"string","title":"Bearer Token","format":"password","default":"","minLength":1,"propertyOrder":4},"project":{"type":"string","title":"Project","default":"","minLength":1,"description":"Name of organization","propertyOrder":1},"campaign-id":{"type":"integer","title":"Compaign ID","default":"","minLength":1,"propertyOrder":3},"application-id":{"type":"integer","title":"Application ID","default":"","minLength":1,"propertyOrder":2}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":32,"uri":"docker/bizztreat.wr-talon-one-coupon","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/bizztreat.wr-talon-one-coupon","name":"developer-portal-v2/bizztreat.wr-talon-one-coupon","tag":"1.1.15","options":{},"digest":"sha256:4257a573b0cbe96b486697d361d030b5c1a542e4d1ea584c7eac269e89b6f0ba"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/bizztreat.wr-talon-one-coupon/32/5.png","64":"https://ui.keboola-assets.com/developer-portal/icons/bizztreat.wr-talon-one-coupon/64/5.png","128":null}},{"id":"kds-team.app-dateio-tapix","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":275,"name":"TapiX","type":"application","shortDescription":"TapiX, by Dateio, converts your raw card transactional data into meaningful information containing shop name and logo, address with GPS and business categorization.","longDescription":"# TapiX Application\n\nThe Keboola application for TapiX by Dateio serves as a connector to the TapiX service developed by Dateio for processing and enriching bank transaction data.\n\n# Configuration\n\nThe configuration of the application is pretty straightforward. The component requires 5 parameters and depending on the mode, an input table may be required.\n\nA sample of the configuration can be found in the [component's repository](https://bitbucket.org/kds_consulting_team/kds-team.app-dateio-tapix/src/master/component_config/sample-config).","licenseUrl":"https://bitbucket.org/kds_consulting_team/kds-team.app-dateio-tapix/src/master/LICENSE.md","documentationUrl":"https://bitbucket.org/kds_consulting_team/kds-team.app-dateio-tapix/src/master/README.md","sourceCodeUrl":"https://bitbucket.org/kds_consulting_team/kds-team.app-dateio-tapix/src","requiredMemory":"512m","processTimeout":28800,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"out","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput","genericDockerUI-processors"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["username","#password","mode","invalidations_date","output"],"properties":{"mode":{"enum":["transactions","invalidations","shops","merchants"],"type":"string","title":"Mode","default":"transactions","description":"A mode, in which the application will be ran. See documentation for more information.","propertyOrder":3000},"output":{"type":"object","title":"Output Table","format":"grid-strict","required":["bucket","table","incremental"],"properties":{"table":{"type":"string","title":"Output Table","options":{"grid_columns":4},"description":"<i>Optional:</i> Name of the table in storage, where the data will be loaded.</br>If not provided, name of the table will be set by the mode used.","propertyOrder":200},"bucket":{"type":"string","title":"Output Bucket","options":{"grid_columns":4},"description":"<i>Optional:</i> Identificator of the bucket, where the table should be loaded. Specify in <i>[in/out].c-bucket_name</i> format.</br>If not provided, the bucket name will be auto-generated.","propertyOrder":100},"incremental":{"type":"boolean","title":"Load Type","default":true,"options":{"enum_titles":["Incremental Load","Full Load"],"grid_columns":4},"description":"Specifies load type back to storage.","propertyOrder":300}},"description":"Specifies destination in storage, where the resulting table will be stored.","propertyOrder":6000},"username":{"type":"string","title":"Username","description":"Username used to log in to the TapiX Dateio API. This might be different from the username used to log in to the API docs.","propertyOrder":1000},"#password":{"type":"string","title":"Password","format":"password","description":"Password used to log in to the TapiX Dateio API. This might be different from the password used to log in to the API docs.","propertyOrder":2000},"invalidations_date":{"type":"object","title":"Invalidations Date Settings","format":"grid-strict","required":["since","until"],"properties":{"since":{"type":"string","title":"Date Since","default":"last","options":{"grid_columns":6},"description":"Date from which invalidations will be downloaded. Can be specified in:</br><ul><li>relative format, e.g. 3 days ago,</li><li>absolute format, e.g. 2020-12-01,</li><li>keyword \"last\" to utilize last saved value,</li><li>\"last - 1\" to utilize last saved value and subtract 1 day.</li></ul>If left empty, defaults to \"last\".","propertyOrder":100},"until":{"type":"string","title":"Date Until","default":"now","options":{"grid_columns":6},"description":"Date until which invalidations will be downloaded. Can be specified in:</br><ul><li>relative format, e.g. now,</li><li>absolute format, e.g. 2020-12-01,</li></ul>If left empty, defaults to \"now\".</br>If \"last\" is used in <i>since</i> date, this date automatically defaults to \"now\".","propertyOrder":200}},"description":"Specifies date range for which invalidations will be downloaded.","propertyOrder":5000}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"A sample of the configuration can be found in the [component's repository](https://bitbucket.org/kds_consulting_team/kds-team.app-dateio-tapix/src/master/component_config/sample-config).\n\n### Parameters\n\nFollowing parameters are required by the application:\n\n- `username` - a username to the TapiX API; beware, that this username may be different to the username used to access the API docs;\n- `#password` - a password to the TapiX API; again, may be different to the password used to access the API docs;\n- `mode` - specifies, in which mode the application will be launched;\n- `incremental` - whether the outputs will be loaded into storage incrementally or not;\n- `invalidations_since` - a date string in relative (e.g. 3 days ago), absolute (2020-01-01) format, or use keyword **last** to load latest data based on last saved state; the parameter is only needed for the `invalidations` mode.\n\n#### Mode\n\nThe application can work in 4 different modes:\n\n- `transactions` - utilizes endpoint `POST /shops/findByCardTransactionBatch` to find shops by transactions;\n- `shops` - utilizes endpoint `GET /shops/{id}` to download details about shops;\n- `merchants` - utilizes endpoint `GET /merchants/{id}` to download details about merchants;\n- `invalidations` - utilizes endpoint `GET /invalidations` to download data about invalidations.\n\n### Input Tables\n\nAll modes, except for `invalidations` mode, require a table on the input mapping to work properly.\n\nFor `transactions`, the table should be mapped to `transactions.csv` and should contain only column (attributes), which are supported by `/shops/findByCardTransactionBatch` endpoint. Additionally, `customId` column is required as the results need to be mapped back to their original records.\n\nFor `shops`, the table should be mapped to `shops.csv` and can contain arbitrary number of columns. Required column is `id`, which must contain the `uid` of the shop, for which the information should be downloaded.\n\nFor `merchants`, the table should be mapped to `merchants.csv` and can contain arbitrary number of columns. Required column is `id`, which must contain the `uid` of the merchant, for which the information should be downloaded.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"normal","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":275,"uri":"docker/kds-team.app-dateio-tapix","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.app-dateio-tapix","name":"developer-portal-v2/kds-team.app-dateio-tapix","tag":"1.2.7","options":{},"digest":"sha256:37a6e81b15e3e866e89b514741480f1481174633b33d0438a9f7e25115b34fa6"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-dateio-tapix/32/1610597385396.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-dateio-tapix/64/1610597385396.png","128":null}},{"id":"keboola.ex-telemetry-data","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":124,"name":"Telemetry","type":"extractor","shortDescription":"The Telemetry Data extractor allows you to retrieve data about your project or about your whole organization.","longDescription":"The Telemetry Data extractor allows you to retrieve data about your project or about your whole organization. It helps you monitor activities and usage of your Keboola Connection projects. It also helps Keboola calculate your project consumption.","licenseUrl":"https://github.com/keboola/ex-telemetry-data/blob/master/LICENSE.md","documentationUrl":"https://help.keboola.com/components/extractors/other/telemetry-data/","sourceCodeUrl":"https://github.com/keboola/ex-telemetry-data","requiredMemory":"1024m","processTimeout":null,"features":["container-root-user"],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{"tables":["kbc_branch","kbc_component_configuration","kbc_component_configuration_version","kbc_component_configuration_row","kbc_job","kbc_project","kbc_project_snapshot","kbc_project_user","kbc_snowflake_stats","kbc_usage_metrics_values","security_event","contract_limit_monthly","kbc_organization","usage_metric","kbc_bucket","kbc_column","kbc_column_metadata","kbc_flow_phase","kbc_flow_task","kbc_notification_subscription","kbc_organization_user","kbc_schedule","kbc_table","kbc_table_event","kbc_table_metadata","kbc_token","kbc_token_event","kbc_transformation_code","kbc_trigger","kbc_trigger_table","kbc_user_activity","kbc_workspace_event","kbc_file_event","kbc_data_app_params_event","kbc_bigquery_stats","kbc_mcp_event","kbc_sql_workspace","kbc_non_sql_workspace","kbc_non_sql_workspace_run"],"tablesIgnoringIncrementalFetching":["kbc_bucket","kbc_column","kbc_column_metadata","kbc_component_configuration_row","kbc_flow_phase","kbc_flow_task","kbc_notification_subscription","kbc_schedule","kbc_table","kbc_table_metadata","kbc_token","kbc_transformation_code","kbc_trigger","kbc_trigger_table","usage_metric","contract_limit_monthly","kbc_branch"]},"stackParameters":{"connection.keboola.com":{"db":{"host":"rl74503-keboola_telemetry.snowflakecomputing.com","port":443,"user":"telemetry_data","schema":"telemetry_data","database":"telemetry_data","warehouse":"TELEMETRY","#privateKey":"KBC::ComponentSecure::eJwB7wcQ+GE6Mjp7aTowO3M6MTgxNDoi3vUCAN2mL0dN/KrIQQ1eQJ1J+2pdVsGoeUTDQoaNvkndtIYdZn7+TcUNV7dXNn0hmohR8Yk5Nax44V2Eo+SorCmGbbqHc2PNjG5g7XMDClazFUJEbW6c8TPNS9ze0oCPrj/bvvR+EllDFwFEIaEerRob5ejZCm4BddU4nz96njyfKd8CgaiIoFgGHw/+glp/HkpES0RK65cOSKhUwun2/bYk79aT71LNjDX4duTzqcZviTrHjBp4jk7wcqpZbsLBEVUa/xrUxCO71IS/WLSRFEgXfNHjQyRsh2tiW3q6TXHLLapFI0tHzAS0y1cvd1wGf/rihLaOEThqZ1En2Ax5W76/cyTaZOWqfFY1dMH/wUbFrfnHVMLmW/lRRjG4O1W6lO0+RjZ5cwDIueO6m5YUXkXd9ZcVivmNXyuiPbvhPd7HY+4j7AtFK0Ag9nDFDArtmyI4p/5O2zSVVXgzkI9ZeGOu0PfhW/r2Zd6p1pal+p5ZNhohJdv57JAoL2+CS9STvNmAy693zLptfjxDubcf0tL5zHam1xKGpvhqPjRMN0RfXrvgMclUhq0aN9VjDlTivt1FZ9JI7wvegdxxvDDsK5Bf5LU5sp5aGbZqpVhF9mD+SMaqypYp+BEjJZH7z1EVnbu0fEN4K5srIAy8D7Ryp5eTPND+XQ1USe/c+RkYNIFqM3Ft61l/SyZyJJa0EEAg/32d0XuzH/ezmUFPTsOhXtiq2fpq4C7Vmzhef4u6tmL3K00wVV/RboqYBEN6VIQqH8+8d1VUkMBnbWGPO3syZT09M7D01HugwC+4bNM1aldEjOQQNyx0SLbmTDMUIHKzYe9PeXikvtyHz4TxzcgxgBsFCTIJWIa/1VpHbgKyXapLzEQSkALUH4l1VZ1yWRSO6TPyk6jbCEvu5mTS2ZL8Hcf7m/nyWGYyoD3p2d78CnHMBO7JdFMmryILiiG3kulrZS9hrVG+iZoWrk0TiHT8njC4j2Z3cJ5S+EWfvx1FsMH4KN/3zRiRlWsXYU32hScNr+UVlC8Z9PBteWWRcEjb73KdOv4MmfHJopcAZ9n5aGK0yp6VN/RjVzArWiHm5USR+ksfVdPP7hlFbXjd11qLC5NQbx0WjSjQaX7cknsvF4pbZCX5VC7UKqDTUZF1vboEjrWPCeDCtdb4nfpQePRHkgUVtLUvz/kWMy29x5hZxUQpKffbLyNcUo+jv4c+z7cfX0nkhXvmz8Tch2D+iy7+1Mb0LssmgQWIhaOnW8ik9Wa4zCsZRsjcQXmD3xKaDEC/yf2pHHUKABBHEFGTUcMzD0Cf/juDKfblop/cvqPL7n7zMuptqT2JcjxXGw5N8XecpTsnrHOzewF225fNCteS2UeTe3xJvExzFaNaY1nMr5349uQzrAPLOIMpTz47J9jP+hTDYjCPjJ1KSoweHH+O+u4RpOKZ9zh46npbD7JuvBQ20voJlIHaD4Q9STQ7nOKkELjfw+vwoxxs05ROrZJctPoAtZcnmtLkdAjfgxUtP2n2R38gmDgNfa5WqBEf9cgqKMceRL1Gj77lBrPM9m7yeCrb0nOObrgwNXauX7Glkrbj+nUhkzgp70fcCCUyMPf4ZzvdtENQNMjcvM8tha03XQlacqn3AKyUkJ0VoCkwcU2gSUWVwHlllt7oDa5eiz7b7p+OGi1qDnBDlyPdpdRZzua5I3qNoMt3iOInmpnjU1wJ8Mvjw0NF5V5ePgy/q/+FjJhNIOKNm7YqeMuGlL5/3ZGiWDu72XH70Xkcpa4oiQGrUiTdPxcVh37rJKiyGbqu0G/D9MRpCEMLU6o7ETCnXYwamxVqoURH0KdAxqto25OsPF/CCQzoC7MduLxzQ5BVMWdb2D89tJ+ZfChJjPJ+p+L0f1ikTfDQrnD1tbhl3SRjsUu4GWcP6IRZYlHdUApndV+pUc8knELB9HAKgySI1u1eg1b0U37XTVizqGD05tZCx9kBF+wcLSqE2kfI1gNFWjjBh06unjVU4SFMJuL0EE+MvmcO+pwEI78iZ5oUEpgCVdxh75qknzsfpUPrF9by2CgKSbAb4VfO0PFlQiapxrC4RwNm236wIgwnvG6YhYuNmQly5v9fpxkgHWoKxL/FlCakrrvoyYvG+SKTPmiorWIgcjspqT6uWlVZv6SUrnHf/NWk2dZ71VBQYGYhyk1+CznWzKmnB2Nx9Zqegsz0jZlJiQv7DHDYNFz4ek5OFB8L9HQHG3/anJo7eqAjS4cgg+nfzatzQZ2p5WjdSBUTLLt44ogde20OZ7l6FTweB/RFoLBxnB4IJgG6OoHwRyqrkc+tMEje5kc2okdOvGO0zLiwHrUTyU9KeU3pCxAovi7aezjSZL8KfFODnQnVRIiXdCL0C6USrjN4ZkyOvE+85+Q7G+BdQjojZMnCkRJSQQGNdOftgm0iO2k6MTtzOjE4NDoiAQIDAHhlXs9v5x5d+klIkL9bzyaH5qzvWHJt2fGW9czDhWdtwAEXsEQOG37vOUd39/usQCY9AAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMgf5wfWtlZBsy6uktAgEQgDtB1Slih80T0BqiA1rzlRHoeZ8Brnq6xL2E1KN2NzVvdAFCQ19l/vyIB+SefNxhWVH/JBin2UxKq5DMgSI7fZgx2kQ="}},"connection.hckz.keboola.cloud":{"db":{"host":"rl74503-keboola_telemetry.snowflakecomputing.com","port":443,"user":"telemetry_data","schema":"telemetry_data","database":"telemetry_data","#password":"KBC::ComponentSecureKV::eJxLtDK2qs60MrIutjI0MLFSuveViYFBaY//dZFd93+urVnM8k1g1cfdt1wO3/72vHCvjqWB3ASngkPPirmSxVILEpWLEjhXN6+UmWHm1Snb1DHjmGjUtHsVCU/ylkme35rreu9DkfRUpzOHq0Ufn3PRcsjNc3WtYNt+d/v0vEAl60wrY6ClRmZWSumpebqpeclFlQUl+UVm5okG5gYG5sbJxpbJIFUmQFXGRlZKFgZGKaaWZkbmySYpJklmSUmmZolmlomJSRZJppap5uZK1rUAo5JOng==","warehouse":"TELEMETRY"}},"connection.slsp.keboola.cloud":{"db":{"host":"rl74503-keboola_telemetry.snowflakecomputing.com","port":443,"user":"telemetry_data","schema":"telemetry_data","database":"telemetry_data","#password":"KBC::ComponentSecureKV::eJwBzQAy/2E6Mzp7aToyO3M6MTA0OiLe9QIAid9Dpi39WWAE/xKeVvUUd3e5lDEuV92Ez+yHAkd7zidNvEEdm9GULVoP/T7gyf1k245B8rycoHVHYQUlfNOX45jI1f+OgJozybwXAI7IH1vJG/vfuVj42OCKi7SKcZ5A+kkJFCI7aTozO3M6MjY6Imdlbi1lbmNyeXB0b3I2NWQzNjY2MjU0MGZjIjtpOjQ7czozMjoiZmE5YzNjNTUzZDgyNDQwMDg0ZTZkOTZhYzcyYzdjZjUiO30511Ji","warehouse":"TELEMETRY"}},"connection.coates.keboola.cloud":{"db":{"host":"rl74503-keboola_telemetry.snowflakecomputing.com","port":443,"user":"telemetry_data","schema":"telemetry_data","database":"telemetry_data","#password":"KBC::ComponentSecure::eJwBQAG//mE6Mjp7aTowO3M6MTA0OiLe9QIAihS93aQJ0de0xFj/SN4P7qkViwjT+bN1j4PkXfvVc/5dBTjjt+SO2n5YvvzCDeLqWz6KiJgo3Dp5OA90LSUhkPbdk/k5GT4cB8KPef7z9jgsvKeuyK8qHs+O1d5tRYYV4iKUmCI7aToxO3M6MTg0OiIBAgMAeKetrUM5SE8yUNXxk/fXkBm33isJEIpD116G239gJK2gAYUCh5dq/G/NphVNBF1tAvYAAAB+MHwGCSqGSIb3DQEHBqBvMG0CAQAwaAYJKoZIhvcNAQcBMB4GCWCGSAFlAwQBLjARBAxr/pxjRAryfIaugHwCARCAO1pw7pkYy+X9OAwoaBX81EcTMxhG7Fho+ySPCiXtKqB74XzyP2bN7ScApSLLx87Wl+F5IRYmH8VHsvPjIjt9JdSHQQ==","warehouse":"TELEMETRY"}},"connection.groupon.keboola.cloud":{"db":{"host":"rl74503-keboola_telemetry.snowflakecomputing.com","port":443,"user":"telemetry_data","schema":"telemetry_data","database":"telemetry_data","#password":"KBC::ComponentSecureGKMS::eJwBYwGc/mE6Mjp7aToxO3M6MTA0OiLe9QIA1rlEKpszYSCMV/VYb14Z4oAELdf3vtUBq0UktJOFNo7YQwnaVBZFae80o4kWiicEsaZX7sc6biBM93TAsZfvC+Yuet4wR4m7Qh6szgs9fR4QXiTvo78z3XkRt1ieOWqtsGbUJCI7aTowO3M6MjE5OiIKJACb/G1fmTmJabTN6e3PHZpTZ1l3ZT4QpNwE2TBAz+b3A241KRKyAQBe/0Ye/wk1VsQXSOilDycg0ds7WltbNhAAxy6xYmJx95YH4/ERFVoE2fX5TGXuDkonnld4ZdbFTIBlv7Xo68jPo6PdguSwmLUkWE18LbvDsMHsYkGTO+Lq2o3SobdhoQI13YKCrfaDW2Y/hQiZ/I0LSXHskhQYRvzchHu6//lZsf6xzqrHEIrNoaaYEJbk9Uqmg0bQRE/cohQsohq0fVkazj9k4PRQW+Eq9bICFbtSZaAiO32uk6c1","warehouse":"TELEMETRY"}},"connection.creditinfo.keboola.cloud":{"db":{"host":"rl74503-keboola_telemetry.snowflakecomputing.com","port":443,"user":"telemetry_data","schema":"telemetry_data","database":"telemetry_data","#password":"KBC::ComponentSecureKV::eJwBzQAy/2E6Mzp7aToyO3M6MTA0OiLe9QIAUsUAOYi+oCyxGufQrxYkWPfI7Nx/7srlkme3F3HkmD22j5FJNPB1o2QsFOJPNymts1zKIarjrQ2BXaghooUkvMzAg6gkZcahP8Xee5ssZM5xcMdDzeyYl03w30liVHXJwWzpPCI7aTozO3M6MjY6Imdlbi1lbmNyeXB0b3I2NmE4ZTFkZDZiYmI2IjtpOjQ7czozMjoiMTQzMzJlMmQ3NDkzNGUwOGJlNzg0ODNiNWE5ZTgyOTIiO33n2VNP","warehouse":"TELEMETRY"}},"connection.eu-central-1.keboola.com":{"db":{"host":"rl74503-keboola_telemetry.snowflakecomputing.com","port":443,"user":"telemetry_data","schema":"telemetry_data","database":"telemetry_data","warehouse":"TELEMETRY","#privateKey":"KBC::ComponentSecure::eJwB7wcQ+GE6Mjp7aTowO3M6MTgxNDoi3vUCAKBhDsBY8yhe4JoiQX26aiLw+UYAL8E/t+gDVF3c1O8CtElGTTpS6RharXPrqGQWd1meXGifFXyTc/VHcpoJkNtdtsL5Od1PXmJ9mJtQn8fv9SZdxWaPvyWPT3XZs//rmCyRj9PdB/qsLn0aDknPYX+dnGhq6FF+Y5IL1SwmLL48ZUnpIww8nlrvYrwFoD2yixqLaWcfK/goeWz+Hilu1uUlm6QwaPRT4SUs214F3Af5LpB9xLTt2Z02s3Xei6XKIWFrBDETtcqOwA6e3YtThP/j/d+BfJvYmmX/dM5gnDAFDckC7KInnKSgc3dPNFwpS3/7mwCKaIbd5bLEb6xxrTmvpndGLZ3DK6UfUdtxxulhoFlt35bzhpBRxx2btTySlQGSfLkQRun8KoYeKra4PWpdhx0A7LldRWKtHbqwS6CChokQ38+G+xyq4fBMu/jHPILMk01tzLL0QjwlWpO80f9AR/PtJ6APux6IsWfkXM9KauF8ycQqWKw1Opg148ECEPEDBh+5BNHbe3I1XDc9FEHlVsUSeCftqJOwL71yU0uMFfrpyqzfJjUZy4eBfAZ3TI6NjnPHChvi+kdeDZbTdDachk3c0r6aFW0KOVzPVkOcOMWEN42YlJu2YK7QHzIoM57wwgH05M2J81IMfKSn6re3JxRFcG+o9OU6IMWeVUhHn1ayEgTUMBIuDs+faRnxbwZ65i9ExwqJmEKqYmypopZOyj/LeFKKRqKjHyE2wWm0ErEV89CV+V3tYPOtsvjB887OduBWLJpobEbz2GbCG0iobbWcgz4iWL4ts0/K6KxxcPTWgXWYZpoxSYxNbX09Ro/VEmCuVC8YIsfXLLdfWL6+7VxKw8BRtkyxrvBxp+MFES/gQAQHDL1as3Adz7Ry/l3OZfTEhpi3LK1oJl2uqBT2QGBKmzvWUgkVNvEEBECSeySAFApbL5khPwf0wV0uXwpCZRwzl0WOvFP7MgmgstdIC6a0RSQ7vbPrzjOkUdHguDtVoHJmbjde1dUFsKwCs/vQkrMRsN04FKlxddi3xIq7q8mbsJGgtQrdG23zOVYKpYeRa1A8+bsLsl1j+vKXaLmfArJQEPpjkQBonR0akaju5Lv1L/JcbTDFMqfjrtHwies0B2tkCcrYxDVJlhGlBY5oClM49KFb856YQe3/12CpaV0mqPoISZ693T79NJtmP0bce+hIzP4wc8YD1RCGkaknzRZCIMr71LygW+K6IOUpoQoAGzKXDfcBG6cv7JZJ3WFo8BbeR1W3EF1NofzbSuYxRdyuvysDV1cozD1c3UNVxPjcVfnt52jOa99T7lu+hQuIbP7P19g0UpP34tAPJepIvKOF8sKzh4QZs05ZKIsmJlNz412TB15u6ER1Ra+6ElSGIpQKFmunMt7L1a0o/xDu7oWczmEjzW8D7DKZ9OpzCny4IZI/Zv+v4YTdoR7Pr9mOuX4xa3OMVlRdYsiBBZZXJ5JxeKO7Dph0SASGPv1chGEx5faoDxSVGhrifUphed8nDs/WN785aqiIVzX9ihNndB6acMEERL+8IdKBHqIopNiseqp7mh+9kQ8eqqBiHbPNeUc2k5+b3KV/5w5cg0S+p11Hew35p7Deq2fgn2Lwr3vGl7DzCtLSNdOeP8M4LZ8akJlkL8ijTrFecWnObiTUU5RyPoN2Xp7OY1KHYjoKeFw2XXkrIBqKwuJZ54/LUzB5DKE10rSCisBch/MhHgmHpAK8QDSYwprOqV+iAbDIlONT5RvW0FuKTDrABmawwF6LdJXEFh8rat/+iuGEkTNzA3wMGIQDjswgQd96ISgJyYq2kIWEd3HtU2dBIQDOPS4q7jbIs+E7OdFuOw/MMXsnTDhosfRcfOIueL5JoYZ2axu/CZzenSYCthqJuBC78ZLxU4VCQXsUhNuyECWLB7ucQIDlcZOyVdUaVdrpH/hlTfrTgWFVf1ffRif/BFteDpYtm3YnGCVZ79Saakm0gYz5wEEiQIfX6qGxg4yZZD0E2l+THWpJHg5GYqJFuuP+Gy1idqduxgWl5PE3FMfHEO588U5UIg3t8/+934o4XYSnUbmiDm3RGNyKsaH+aEFLIP0oUrBB/8Odt8hU6mI00AgEvlxdemk9yuP/MYc04vq8lIB+0xS224RNao03uNxtjpuzQQUa6k4Y3+fbEji64HxUbtI5c3zj8cRrahJiy0VMy5jzMx9lH6BYliNPAtbnWgAJ9YceEJnAwnGXjT6No9TE74jCqKeUyUalApWaHnEzU2ascikfJRhiL0ARhwnop7vEuhfz1F3/pKONmmPKkupXU/ROsV+j1dEQht3rZV29ipokaBTbPanbjjqui9rFiODDJABwh04UK78d4EPd+TYqUZBfG32ckRIyUNm+Dss7AeEDkhZqlJfg2S3yDRZT12UiO2k6MTtzOjE4NDoiAQIDAHgnCmavCe8cyL4f29jZwBY0RNPSDhp56xkxc7WSeqIfzgGh5cZSG5HaNq3d6DAsHaO1AAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQM9NgHYRFKqMt4vcV3AgEQgDt40YmasQNQ07D0O10aPgG507qbupkZiCrnWL/ACtJNt6togzjkOA3g1A3co8N6WO30S+dhV5TZlWzRUSI7fd7K1NQ="}},"connection.innogy-hub.keboola.cloud":{"db":{"host":"rl74503-keboola_telemetry.snowflakecomputing.com","port":443,"user":"telemetry_data","schema":"telemetry_data","database":"telemetry_data","#password":"KBC::ComponentSecure::eJxLtDKyqs60MrAutjI0MLFSuveViaFLvyVuTvcjjkWHdYQ7Dz7d8fdg+qlTXxUfBt8zfmb9+tiuoFuyyR/2qBzUDGmed6rE9qNF5sYFbzSn5b6e4HJ569ZPjfrJzLJe6p7yayLs84VK1KYfL9H55i7gF/rMxcfwQEDH3YsKD5crWWdaGYIstQBaysjEzFBxJVT64Mn/iZ9PW0W8Lelb/ft8Kt8Do7obbL+NN3rO29F1jtHpIrOs2JG3jr2vjJNe/Pd4w8DAUGdQw8ap1ebR9p2XkZ1tQb5BLhMjg0EGQozRQI6NM6HNgzGVmYVRz0CQhWcHzyaDpY1WkvpTZBKZGAUarHfsYc3oiVLYZcRQxavzpkf9/MIffLpJc3bvUwzjEi+exa0kfeqQw2ePjW3CrfW1HIvCHj2OqxMsMm1kcIpWsq4FAIdTgTE=","warehouse":"TELEMETRY"}},"connection.us-east4.gcp.keboola.com":{"db":{"host":"rl74503-keboola_telemetry.snowflakecomputing.com","port":443,"user":"telemetry_data","schema":"telemetry_data","database":"telemetry_data","warehouse":"TELEMETRY","#privateKey":"KBC::ComponentSecureGKMS::eJwBEwjs92E6Mjp7aToxO3M6MTgxNDoi3vUCAJO3OOgoyOISabuicdNxdmI5Q/tuoZgmjov2OtEsKX0is7E9ClaPmq+m1CogkwWHiJqPqXqGrqrRQIxfV55yB6NnnVayjZxrpK99eyYlJ/fvTtZQFu6K9WYJpDeHMXP5VzVOge56evc3jAi/2kwjxaLPLAOWt9VOeO0qP6gUyQbwpywLXdqFBumc38d92Uql8q1A9xEqK6nhkv51uMaIyJRMwqsnCMo++2PfAwsbbv5lbSi25sU07Pgmq4rneqCOK+tJimBKJMECDugvOGpkn1g7/bPFUJIMCLQJaI+oyj019C31FL0M4HezAq9MmqEMXNcFaX4Bz/dqOVoJOvhbmzq+vxOhjdSm0ipxAqrVOPxl1yjUWmYxUG8R6WkDtF8Fp881+uxWIU0ctHq5eLKyTZKuEl2SLWEe6v1HSu+6OgIRZ8YkjNZCgrFSC6I/KdxwkeXiCFcI9iNPN69wtrshLD+kKbPpkzF+OUO2DNR90yH98w1wQgwOZSJK9Jh4f1QqB6gJn71jx0La8TJ6fnIqtzxP6RzIk2HXRO3nYHvYBEJIwIU/n0ptU5pasCLGk/o1erp+khwBfvOsryMH+wr/D8of/LTfArxj/bLdr2Mv89MNj1hjUWF0thBhd7hT3WATzDwqdf6Wpds0JQBdnh+xubWZEj/vhjggDkHGbDtwG65vYW0LoPZ7FvSQCoprj7GY4QiReHGYbFn2TbDY3jrTonF6ovGMVsJYsZcN7OXKxdBD+n9slFaW50ZXOVv4dthWPr+6mtrEWHGDr0/7+xsrQxvRUL21er0qo6kqdxgfqTgZ5BKtecTKw/9NUtqto3Jih8FlR8ZBCUT//RiHybK/HOpToo3zvkI+LH3u8MIOXdh/JcEp5ocdgmg3fuUxoQr4pL1vIF2MTSMVTJj+6v32igocebeDu/XDVRKXlwPQbVgYYcJoCC5a9AtApxA08su6kSz4uBYtGr9T3Bghejelx6wGrEteuvgJiycnYZ0Xa4XqnGUv6CXufm7PUhBxCJQCMrv1UOTpb45GojPInnx1Cm390I/y4id13JaPlujOCeJaodAMR4z2pXqBFTAwYiGzFJyLnNDd1nKleGoWkGoMc/U7ExBVa5OQ68KtOgYuLJjMSjypHFqE65qyCDMqBAyznVoJThlHFg0IsMwCoQ3pINZ8zkOHiKwtGImEQ+5mZwft/lTas6ZDw9Y0EqfZaxv9k1JbRL/WDOgjBg/VLeKJtmMQ7CYLyEpQalexT7LWOAS8zPhmFXG+VXQaNmrpeD7zUO7iwK5xgYuWpqoqmiTTOLn00u5lbCZKQ7yB3VPR14UWZYjGHj5f49NraORC87YqrHjVVmQk5zQcN65nHPBmphVXC4JKDqNaGXMxbyaYyQ/YDnvLbTfwnbhwVpcqaZ8zS5Ojfjj3iB8nx+xysl7w0HaH/K2mG5TPq7O0aRvAFP7jF4RF21xXmOgXl67gAfMZF9Cu3yOtGOsePzWmF39nKAmb/Ano0I3CHTZhVbCK/BzvHo7Un7DquQOCBQRLVe8qWMWrrcoFN8PQ1PeFqpqv7P2eU1CNO/VRTD9KcXs2dDEzEEkn7twB1BiBnU25lBIKhGUA2DjUolt6qXb/y9UKZaUFeCkVxqOIYbQB4kUL8tN73Fj9TFQjQPCtwdbfG7D6MEIHIk+ZWyycoHZSh3DFrhHZQW7nmnAqpYczLt5aOfM1+bWIP/wTVNrtVVYLj03RwdNdo95noL4P8QGY0wNVC+tqL5hJskUv118dnAdHkQX1hZ0apgmiGg9fRiTrBfWsZnNUkgymzrulTvpQDDticpyjjFlLgy4YhA9Jozz6sFMhmI07yJW4tYG602NLGj5/ZXl08QjD51Ye7pUd92ekPuzmy3TbPOwg3+SHvzwm1SWloPfHln9ZJF5ZW+BXFyA7GnAaaCUF6ZXjml7mWwluxKhRR8VUKcw8RkSwc8zHOH7sf5ZjBCAkkr6oz0N95Lbyd2UvaKZAoRVtzQasKyXHJcLh5+Pk4txBGH7D6yqYGF5Z8KAgT1CtVahSlLJFO1/WkmSMwyLC1NF834ZefCofQmGYSG3o2RRTHfckgKJ0G9KpC3n39+SR7bsRcvkJlZf4E11FWBo3ixwXo1Eh+CIF0ehXU37D9BSiLDQStk6G/a4ZTGvRBdaxJlfcv7lvUlEVOWSFBoFO0mJxamYtVGOHIpoCug7pLcKYs+hDMnDAeQDmGD04DGma8fwFM6hvtogrMiAvtQh3fX26cr83HDkydCOjnG+L0DL8Bf5awrLueclNqdWfvkjAbHF80nmRR3yA/fsZBB8Bnps0bUFS/eggsgM/XJ2Ng4e3EHvY44922u55AK0U1CJx2X06S3F+Ru+8WBgm/A47p4HM7x5Q7ZviHxR5Oi0iyWvpASJbdyVGkhWPmq0iO2k6MDtzOjIyMDoiCiUAarPL4ODyveMeR7BU/5ANS0f35LNeDF2kKTWj7k5CjcWrdZySErIBADq+o1rwATpUEZzIfpGiZVfTfN8HX8bk1pyCbQMJfI6jAkwYROy1yy+HCI1BcM2U2ruGkFTlwIHGOGD7sPB8PwzjYydpU2cvYrIrtiML52iFDDBUMCAUoybBHkOk4tY0Y6vfHvn+nWujsNv/UUy5caVV89zn7vi/HzwtfXWKO+uEI+KOkOIF3DeiqMhVY+0rZcJuZ8YwCEt94iuhYxLGX5jfmNOnVDUGVb72so7AVCWcPSI7fWx45Mw="}},"connection.europe-west3.gcp.keboola.com":{"db":{"host":"rl74503-keboola_telemetry.snowflakecomputing.com","port":443,"user":"telemetry_data","schema":"telemetry_data","database":"telemetry_data","warehouse":"TELEMETRY","#privateKey":"KBC::ComponentSecureGKMS::eJwBEgjt92E6Mjp7aToxO3M6MTgxNDoi3vUCAM8nuSyo5/sq5ke8U+ai5XARzO9aRWX9xqrnPeJtqj0ODr+CNETUf/Nzqw3SDEZBLl/RHvlo/+/+lYrQDzD5bcoMdu13Hcri1sa3MVXfB7KmkMI7FfmPRtLK/u8tNz8tTZzVDvctFGbejgx+MKvotOqnk/op6CrKmuw35q23JvlrQIaRFffviIqC2etAr/Lu14Wk1rrOr/ZZxVtQOcAt5awBshfSNt81YkA8BuBkPVXk6fb6FPuOTXW7HxA7kX6c9cZrzjrFu/s2yM5DQ7lu9veCHusr0ao6r/xGUClUOLQNhd+qC0kr9i6MoRU84tHSAtMRBdLRcoPYjTk2M+Sb4+JwaTTuuDQsL5MXbhtyvldALJ1eqhHtBpQlBJY0nZo9Fp8XOM9426pVncp5LBLs414W3T/H0Eg/hjRK2Nzzh3FVerr8i+yen5nXXXiiVk+OMdMOgldrPCbE1p7Xf7iHgdCrKUKFghhLSvPud414QnWQs5vPu8FpXDbQuyXnmRL8GPjiUXMoaqiXmnAfLS8P3hvAJsqQcuGmw8mkeVue275V8lcU/f8Z9YrXDhBymFT7tk3i4WmkAbB+dQMFAZAzq09TkHnyIik+9U7n2Zse4BQeS6PwypGoklseYA8TXU3to3QyrZenkBl+Fu8DKHV8eDruDquOWmEPWniLP/5QF9xwTPcaVo7nZ+rnZj/d1e3WUR0MsQ3bWoMLqeZnOHKJAPnr+WOZR3HPpi/bnnJ0mWEhKG+dZk5JCEnBgpuIdwHP4liYXw8c+RGoRpysD5P0guU1ibnEgg2O/OssDtW76XCvljFPG6MIiO8rQtZeZK1Ot7Ku1C5DO5DL+f9Z+EAgw/ToUwlRhmICPKm9eYLaiR7jX8VSDQnNpFsqWJO+DPa9d7wuvy+HWRnj9FXvv/Pql1dFCHFetRC+E7scwt9zD5P39gf0TxmixlSSTXcjIrsgJ7rqdsyG2HDQme72/z9Y9flM4UyH14ZXfHW3rMU8wAb5/8B6qXjC68UoLGjuiOPvaxAkat2WHYMwE41ImdyTtMuC7wZVtCNnGVfq3fgAmjOfonYEMAGoIpYNgxOWh5pi9i4OkuO23ZvQaTskMjONr2F4vyn4BH5pAOUTHAmY68ouEfoMGisMVjfC0hZd6JjwXNUuQbw0LQfj76IUsgfPSrDkIIABd2DDyx9VezPqwkDzBUW9nntBZXlxeFxgOvApGh0mqU/D3IOvmL2pJIYuJJBbn+fVq0x8B8wFOXQNs1F2Fs5DNG38pvYVAltx9GXq/JUR54JMstH/y5RgEpubsnA9N0ZizGV5OjI7FrzawVeCylolOUMsWj/AiaKmjSLaAgrnPxPE++RFBKM9e0r10MKA3lE/XKNAue8Jr16gAz+2ECPLT8WjTdbZOLqj1RoJwpFgnqPlz1OhOaFsgivWj2pftsGkq2djybzfmpqTF0Qiaz/0kgJ0jfSgDhcSgYEIAztIJ6Di28ESaNgZ/CqBH7Yr+CHPSspzdMrERbUjKf8j3HmaLEXvjI1gW8fM4hBqxYZuHgNk2OZPTZAEVHgZTHRXsNEX9prOdeAN/eHjnJTG2XiFLJ93l8WgqDdsl39cVAUkxTQjSp9BPNFBzz0dGdpUrZm7z+jgVoHem5sVeWuiUXZTMsPfI107+uSPIwTnK4op4XmPBuZ0998K6X29TTGGPZv0CL5TBVwj5W9koXuvxVxxYyAGcROvO8N7NCSqwhSMk1g/Fl4TaXpqmXdwHKs62OaE4VIXV6Gz/W3/iUsgnoXINT4fgVQvUlx19GtNVh2VziMUjVPwNVPGJhNvIXIHlnV/0OUfmaz7T2nPzYnqOYW2JkNJ8jyiUQvPeAjzp2mm3/e4Fz8CblWJenna48AyilCZvFiVVRti9K9e+LOBSatgqb/xeC+WnDkqD8CaLK635KUjU5tMH5Z37Mk1Doz/QHcC1bQ428Yt1mR8Snh9SalCqfMsinbCuiSIMqiUUZTV7obOCoWRQ4fWdhFy7KcaYqByY5RFnZJax+OgqZ8LsallxHZO/NUwj6/W77F0TfD4bM+M2yDzTSixjdW2o5Lga/RQ/C4+JZB9n/D+Nz30Lh+3LzWrFyL61X5oHYMF8BaIpxDsnQzWK7DuQx+7ikxs/J29Gp+KJSaJQLDiWxFroFGtEo0n/jQ1F5v5A2qyOAamEvZzdS83W9BLaMVfVDnQzCpuQGnuS7g8Pf5BVWCQcSbR74T05/FHvMcIRiYrPUhZNq26crS/2tvyd6cANGwij6amA/uv/tkdHmhg8fa06dgqw4qh8Rx8px44rQbGGOt5/Ho3v2KQVNdU9qGmS8+7smHL/ufoIQqdqdK3+Ge9ezulcdTbN7DhwjpeOQofeaejfWb8qiK/36PhbU1jl/dMwtPK+dRIAE/zf4XHWuPtA6MiO2k6MDtzOjIxOToiCiUALjJ1JwdeEXeI4uDsFXhwzHefPg7+iz3zfnm0XcRa2Mty0KlnErEBAKfD0RyPu2CD1r4edGzV19fOkiEx4ReBwac5ybbmpjd3oPX5Qjnh8H8NIjo7QswMn3pBDkP2d57cOVXMjJUz9ecv5gE0RiOAS/sQv3d4ufOu5Fh/EY2CZ9MBQZ/TdMXw59U+ZwlNI5DtuQuuvNnDn3EFhznvyHzWvCIkQo0omkdxTlf5dQu2muqXhQD3WemmCup3NCgINQyUW2JwVdUfvZTTmOnqLp7kncmxgWyHydpEIjt939kJHQ=="}},"connection.north-europe.azure.keboola.com":{"db":{"host":"rl74503-keboola_telemetry.snowflakecomputing.com","port":443,"user":"telemetry_data","schema":"telemetry_data","database":"telemetry_data","warehouse":"TELEMETRY","#privateKey":"KBC::ComponentSecureKV::eJwBhgd5+GE6Mzp7aToyO3M6MTgxNDoi3vUCALFdndRFHjnNHwDEUpQUT2AElBlwXqeiAFll2WvGGot1qBO7resuIuZPTQs+3bh7Vkxbl9FjaajVpBVTf9zLtliISxHPhJ88+Lq2tbzezeKYPv+54dBBjeyZLrW1ecqYLJ7ZcZycOVh3RYSc5q4LSvDFZlcfvyH8vnxyyAj7Ued41Cixx2kMsdqx3k5gPuplRU8OLuAJe1AzPDq0WZiVEcT7etazTI35ThuHhuSMZ6KdsscSgbnGzBZ7QPdnFvDePeqaDBEwYF9KhRaRhStFt15zXjyq6iG3AzdPmZFuTa01c80PhK/zttmu3ODsuuyIUoreMC+WmzCRozi8ZFHQYAN3XZ3A3R36kgYs1ktGA38GLLy/u9U1t6bVOAtJYI1amItZAto11t4WrZtZWoc8D7KIdO5tL1tVW+4hL41eOo7dl95Vx6ba7yDpuYvLb74faMwM4siPNpjLzONQpvEsWte5dpQKc4TBpw5fvKgikzhhaRv0hCzxkM+IldVLcRTAkKYDBjcbxzejpYfopBAmfiHO0vOk7kua1n5AXFjLXuQ0FuKzab1CzV225te8HkpZgs+UDRsOlBj5mjeN1eX/lYVl3LFui7XFTu1UQ1JwmO0Cf7EQiwVXjRnB05cfkw+7pQDsz+3bsc5TyGnR39txk0gJfVXLx5VpZLq+MkLyOtcVwM52bzNrCpwlQYAlHeiPxP9ix0onOZlTr9S/fJD9hHNfiTfMA6CyIscvqBTgHraG6N8OO+PmtZrEYcW6dRkeoQoR2mVhkPn1wPxKKSwpftejf5WBq80mHUS0UFcauFvCVGCi8+lhTyAk7EtEXkm2FhB404I5+Ts2UdaGmbMWF1V3XZjmD1wg/vGnqAYZkVTs29w/2toz4o8UeMDpMenr5weGD9ZuX1cBeKuFUDjagRC4Elp1ySiwVYL97uLXZKBc1doXbqumqze1V7749DU/xJ6vJPk2UUY1s3m4+eky4C4rTWeMwRhaXedvLiO6WNSRpqJiz8paLkLxKH9G3U30bAaAquLKazFH7LXThPo6AsBvLtBwoE3qd9BELut9X9f5/g4Q9niGlzOrdI+mLF9P+kQo/GAp7wptxwBlQK1naTNyBUNZIbCnHPbkHWl0ZroZlcMf2ALrFu7rNlC0iYig/D2jQGsR1ATYPNvVSEWwMGGCamlHdvR0grzYsnwnScQDOMRwgLELp4PyNI+/Fav978EeB5DiJFBdJcaLwDgLHV8MmjAwt13NtAdKK0a9Jd/DnlTbNFJiXrpQ3McxgUOJkYLCWnAF+e+qVgfaficLNjXyZLPky37LQ4p7xYToPUcek2X3huiouc/heMY0sq8yl4i9fh6quV5Q0VbLzlUArC0xT2019OQUJ4HpTJrSYJMp8ZUsAZgsUylfjjRLXB/SuPsVCLDjvfBzu6VYJkfmO3NgOVcsRopWLpIMIcNcPWM89Vjr23/jDGOFRrcwtoi9sgL5ncVic8hZwOw93le3SEYTNKq6fK419/jlMlUPqo2/EjNYREgZZ1qOgb0fnnUwtHLqaoyTA3bXlcXS256XCgcF/0k27p8nVrYh6A7SQoVSPHrTs+hmUeiEjSo1pfhh5hTtJzJwYzNSr17fszbGhxZLZ+z+eakOaVMGiXgmtk/8Gb29D7zLhPRwKTovnbdLtgChLVULRbnO+NHGcts2vq1/6qMHHW1F9XCZDmtuXusxye/BCbLdNt0QQ9NtWouMzSdibhQ4MLwXwNexycnFOGN+GDTaQRI+oD3abAxZBCXKu4YqJblr0RnF04ty2N2CZLSGWb9ptcV0O7+6kn9GtDKekBQnh45OaWkk1dk/JWKU+oUKk4MbY7rqkLBXZ1A6rIAt324gu7GHU0wmPIwQeNI9HENWZuZHjaBlmPrASSEQc0vSV49PrgJbhysDCp/w/NDeynjtjXZ+5cynw+RqatlLNwCZ/LOxrCrXB4VcBzbPRR4D4Ay8vw3NfMPQelhQdsY6dHX4ZiXJf1eoJv4WmX7huaqRm8Qasxi5fa+mnE4Z6C2DmCxY6DyrgTMNgKXwWWleeBXR6JqUHFCtUchkxXJxwucGVKgjDIh5gxfP5+reunTUJXswyOUNmSAnmqPNOPgCoyeCdIqxoYhVUWIV0lpD8CciLPjycs04XVKPZRfgf4/WK8m24BBcQ3p9S+diTNFT49PsOGqF53aGi+4GWmyx2QiT5/3fqdl+o18pd14x/vKsNcN0/sPofwJj2oGFM8Y/mEi/u6co47AnOQzT5fbSFOjRJdi0amzB+A/t68zRBTU43C3dO/wj4k/k2mctuCu86AeGalE9gj/gh1ew5uaAKCt5uh7lbrv8VFJqZxEaMOGXyfSi//aKAtR4ysOElmzf8edzo+DAhHeFZiNhd76sDBR/8yz/+UIwFP5ze+TFtGUiO2k6MztzOjM2OiJiMjdmMDczMS0yZWI1LTQ5YzctYjMyZi0yMWUyMzJmMTQxMmYiO2k6NDtzOjMyOiJjMzc0ZmRhMzMwZDc0NDk4ODJkY2IyZThkMTkxZDFlOCI7fZ6Lrj4="}}},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["mode"],"properties":{"mode":{"enum":["project","organization","activity-center"],"type":"string","title":"Mode","default":"project","options":{"enum_titles":["Project","Organization","Activity Center"]},"minLength":1,"description":"In <strong>Project</strong> mode, data is extracted for this Keboola Connection project only. <strong>Organization</strong> mode provides data from all projects of your organization — the data are extracted to a single target project that must be set via your Keboola Account Manager or by request to our support. <strong>Activity Center</strong> mode provides additional data and is available only to the customers with add-on in their contract — the data are extracted to a single target project that must be set via your Keboola Account Manager or by request to our support.","propertyOrder":1},"incremental":{"type":"boolean","title":"Incremental load","format":"checkbox","description":"If incremental load is turned on, the table will be updated instead of rewritten. Tables with a primary key will have rows updated, tables without a primary key will have rows appended.","propertyOrder":3},"incrementalFetching":{"type":"boolean","title":"Incremental fetching","format":"checkbox","description":"Incremental fetching allows to dramatically reduce the amount of data loaded.","propertyOrder":2}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-telemetry-data","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-telemetry-data","name":"developer-portal-v2/keboola.ex-telemetry-data","tag":"v2.17.0","options":{},"digest":"sha256:84bf8a99f3990f381c10b8b33e065dc85844dcfa621f26e50e41d601835f8763"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-telemetry-data/32/1674038913811.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-telemetry-data/64/1674038913811.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-telemetry-data/128/1674038913811.png"}},{"id":"keboola.ex-teradata","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":56,"name":"Teradata","type":"extractor","shortDescription":"Extracts tables or query results from a Teradata database.","longDescription":"This component imports data from [Teradata](https://www.teradata.com/), an external database. It connects to the database, executes your queries, and stores the results in Keboola Connection Storage\n\nTo configure the extractor, you need to \n\n- provide database credentials, and \n- have a connection to the database you want to read, preferably [secure](https://help.keboola.com/extractors/database/#connecting-to-database).\n","licenseUrl":"https://github.com/keboola/ex-teradata/blob/master/LICENSE","documentationUrl":"https://help.keboola.com/extractors/database/sqldb/","sourceCodeUrl":"https://github.com/keboola/ex-teradata","requiredMemory":null,"processTimeout":72000,"features":["container-root-user","has-simplified-ui"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"easy","category":null,"categories":["Database"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","$defs":{"credentials":{"type":"object","required":["host","port","user","#password"],"properties":{"host":{"type":"string"},"port":{"type":"integer"},"user":{"type":"string"},"database":{"type":"string"},"#password":{"type":"string"}}}},"title":"keboola.ex-teradata — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","required":["db"],"properties":{"db":{"$ref":"#/$defs/credentials"}}},"configurationRowSchema":{"type":"object","title":"keboola.ex-teradata — Row Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"id":{"type":["string","integer"]},"name":{"type":"string"},"query":{"type":"string"},"table":{"oneOf":[{"type":"string"},{"type":"object","properties":{"schema":{"type":"string"},"tableName":{"type":"string"}}}]},"tables":{"type":"array","options":{"async":{"label":"Re-load tables","action":"getTables"}}},"columns":{"type":"array","items":{"type":"string"}},"enabled":{"type":"boolean"},"primaryKey":{"type":"array","items":{"type":"string"}},"incremental":{"type":"boolean"},"outputTable":{"type":"string"},"advancedMode":{"type":"boolean"},"incrementalFetchingLimit":{"type":"integer"},"incrementalFetchingColumn":{"type":"string"}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["testConnection","getTables"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-teradata","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-teradata","name":"developer-portal-v2/keboola.ex-teradata","tag":"0.3.1","options":{},"digest":"sha256:45fb35267b5e912848a45d23aa8f78a8be8d301fafb43723b5cc1bf36aa37013"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-teradata/32/22.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-teradata/64/22.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-teradata/128/22.png"}},{"id":"keboola.wr-thoughtspot","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":52,"name":"ThoughtSpot","type":"writer","shortDescription":"Writes data to ThoughtSpot.","longDescription":"This writer sends data to a Falcon-backed instance of [ThoughtSpot](https://www.thoughtspot.com/product).\n\nPlease use the relevant database writer (Snowflake, BigQuery etc.) for Embrace deployments.\n\nTo configure the writer, you need to\n\n- provide database credentials, and\n- have an [SSH connection](https://docs.thoughtspot.com/4.4/app-integrate/introduction/logins.html) to the server instance. \n\nThe writer supports incremental writing and incremental processing.","licenseUrl":"https://github.com/keboola/thoughtspot-writer/blob/master/LICENSE.md","documentationUrl":"https://help.keboola.com/writers/bi-tools/thoughtspot/","sourceCodeUrl":"https://github.com/keboola/thoughtspot-writer","requiredMemory":null,"processTimeout":null,"features":["container-root-user","dev-branch-configuration-unsafe"],"encryption":true,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Analytics","Data Visualization"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput","genericDockerUI-rows"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","$defs":{"credentials":{"type":"object","required":["host","port","user","#password","database"],"properties":{"host":{"type":"string"},"port":{"type":["string","integer"],"default":12345},"user":{"type":"string"},"driver":{"type":"string"},"schema":{"type":"string"},"sshUser":{"type":"string"},"database":{"type":"string"},"#password":{"type":"string"},"#sshPassword":{"type":"string"}}}},"title":"keboola.wr-thoughtspot — Root Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","required":["db"],"properties":{"db":{"$ref":"#/$defs/credentials"},"tables":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"items":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"size":{"type":["string","integer","null"]},"type":{"type":"string"},"dbName":{"type":"string"},"default":{"type":["string","null"]},"nullable":{"type":"boolean"}}}},"dbName":{"type":"string"},"export":{"type":"boolean"},"tableId":{"type":"string"},"primaryKey":{"type":"array","items":{"type":"string"}},"incremental":{"type":"boolean"}}},"options":{"async":{"label":"Re-load tables","action":"getTables"}}}}},"configurationRowSchema":{"type":"object","title":"keboola.wr-thoughtspot — Row Configuration (parameters)","$schema":"http://json-schema.org/draft-07/schema#","properties":{"type":{"type":"string"},"items":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"size":{"type":["string","integer","null"]},"type":{"type":"string"},"dbName":{"type":"string"},"default":{"type":["string","null"]},"nullable":{"type":"boolean"}}}},"dbName":{"type":"string"},"export":{"type":"boolean"},"tables":{"type":"array","options":{"async":{"label":"Re-load tables","action":"getTables"}}},"tableId":{"type":"string"},"primaryKey":{"type":"array","items":{"type":"string"}},"incremental":{"type":"boolean"}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["testConnection"],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.wr-thoughtspot","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-thoughtspot","name":"developer-portal-v2/keboola.wr-thoughtspot","tag":"1.2.2","options":{"region":"us-east-1"},"digest":"sha256:98c8aebbdc3e9c9aff47db71213246f152f9828f7722667f59d6b1f31b7d15d1"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-thoughtspot/32/1674040437153.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-thoughtspot/64/1674040437153.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-thoughtspot/128/1674040437153.png"}},{"id":"kds-team.app-tiketo-pass-manager","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":49,"name":"Tiketo Pass Manager","type":"application","shortDescription":"Manage Tiketo digital passes, members, venues, organizations, and push notification campaigns.","longDescription":"Keboola component for full integration with the Tiketo CMS API. Manages digital passes (Apple Wallet, Google Wallet), members, venues, organizations, and push notification campaigns via GraphQL API. Supports extraction of all entity types and batch write operations.","licenseUrl":"https://github.com/kbcMichal/app-tiketo-pass-manager/blob/main/LICENSE.md","documentationUrl":"https://github.com/kbcMichal/app-tiketo-pass-manager/blob/main/README.md","sourceCodeUrl":"https://github.com/kbcMichal/app-tiketo-pass-manager","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","appInfo.experimental"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Tiketo Pass Manager Configuration","required":["#token","action"],"properties":{"#token":{"type":"string","title":"API Token","format":"password","description":"Your Tiketo CMS API token","propertyOrder":1},"action":{"enum":["extract","write"],"type":"string","title":"Action","default":"extract","description":"Extract pulls all data from Tiketo. Write performs a specific operation on a chosen entity.","propertyOrder":2},"entity":{"enum":["passes","members","venues","organizations","campaigns"],"type":"string","title":"Entity","options":{"dependencies":{"action":"write"}},"description":"Select the entity type to work with","propertyOrder":3},"date_to":{"type":"string","title":"Campaign End Date","options":{"dependencies":{"action":"write","entity":"campaigns"}},"description":"Campaign end date (ISO format, optional)","propertyOrder":14},"date_from":{"type":"string","title":"Campaign Start Date","options":{"dependencies":{"action":"write","entity":"campaigns"}},"description":"Campaign start date (ISO format, optional)","propertyOrder":13},"operation":{"type":"string","title":"Operation","options":{"dependencies":{"action":"write"}},"description":"Select the operation to perform on the chosen entity","propertyOrder":4},"batch_size":{"type":"integer","title":"Batch Size","default":50,"maximum":100,"minimum":1,"options":{"dependencies":{"action":"write"}},"description":"Number of items to process per API request (1-100)","propertyOrder":5},"message_body":{"type":"string","title":"Notification Body","options":{"dependencies":{"action":"write","entity":"campaigns"}},"description":"Push notification body text (required for campaign creation)","propertyOrder":11},"template_ids":{"type":"array","items":{"type":"string"},"title":"Template IDs","options":{"dependencies":{"action":"write","entity":"campaigns"}},"description":"Template IDs to target with template campaign","propertyOrder":12},"message_header":{"type":"string","title":"Notification Header","options":{"dependencies":{"action":"write","entity":"campaigns"}},"description":"Push notification header text","propertyOrder":10}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"Provide your Tiketo API token and select an action to perform. Extract actions fetch data from Tiketo into Keboola tables. Write actions read from input tables and push data to Tiketo.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.app-tiketo-pass-manager","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.app-tiketo-pass-manager","name":"developer-portal-v2/kds-team.app-tiketo-pass-manager","tag":"0.0.8","options":{},"digest":"sha256:43738b4b6e26cfc19f1bcc2a3fa4fab4346f947aa0b61ce64e805ad8121b041f"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-tiketo-pass-manager/32/1773238404183.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-tiketo-pass-manager/64/1773238404183.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-tiketo-pass-manager/128/1773238404183.png"}},{"id":"kds-team.ex-tiktok-ads","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":247,"name":"TikTok Ads","type":"extractor","shortDescription":"Extracts TikTok Ads reports.","longDescription":"This component enables users to extract integrated TikTok Ad reports into Keboola","licenseUrl":"https://github.com/keboola/component-tiktok-ads/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-tiktok-ads/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-tiktok-ads","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-authorization"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{},"configurationRowSchema":{"type":"object","title":"Row Configuration","required":["advertiser_id","report_settings","destination"],"properties":{"destination":{"type":"object","title":"Destination","required":["output_table_name","incremental"],"properties":{"incremental":{"type":"boolean","title":"Incremental load","format":"checkbox","description":"If incremental load is turned on, the table will be updated instead of rewritten. Tables with a primary key will have rows updated, tables without a primary key will have rows appended.","propertyOrder":20},"output_table_name":{"type":"string","title":"Storage table name","description":"Name of the table stored in Storage","propertyOrder":10}},"propertyOrder":30},"advertiser_id":{"type":"array","items":{"enum":[],"type":"string"},"title":"Advertiser ID","format":"select","options":{"async":{"label":"Re-load Advertiser IDs","action":"loadAdvertiserIds"}},"description":"Specifies ad accounts for which the report will be downloaded. If left empty, all ad accounts will be downloaded.","uniqueItems":true,"propertyOrder":10},"report_settings":{"type":"object","title":"Report settings","required":["dimensions","report_type","date_from","service_type","date_to","metrics"],"properties":{"date_to":{"type":"string","title":"Date to","default":"now","description":"End date of the report. Either date in YYYY-MM-DD format or dateparser string; i.e., 5 days ago, 1 month ago, yesterday, etc.","propertyOrder":70},"filters":{"type":"array","items":{"type":"object","title":"Filter","properties":{"field_name":{"type":"string","title":"Field name","propertyOrder":150},"filter_type":{"enum":["IN","MATCH","GREATER_THAN","GREATER_EQUAL","LOWER_THAN","LOWER_EQUAL","RANGE"],"type":"string","title":"Type","default":"MATCH","required":true,"propertyOrder":200},"filter_value":{"type":"string","title":"Value","propertyOrder":300}}},"title":"Filter","format":"table","options":{"hidden":true},"propertyOrder":100},"metrics":{"type":"string","title":"Metrics","format":"textarea","options":{"input_height":"100px"},"description":"Comma-separated list of metrics to use for the report, find supported metrics for specific report types in the <a href='https://ads.tiktok.com/marketing_api/docs?id=1738864835805186'>documentation</a>","propertyOrder":50},"date_from":{"type":"string","title":"Date from","default":"1 week ago","description":"Start date of the report. Either date in YYYY-MM-DD format or dateparser string; i.e., 5 days ago, 1 month ago, yesterday, etc.","propertyOrder":60},"data_level":{"enum":["NOT_DEFINED","AUCTION_AD","AUCTION_ADGROUP","AUCTION_ADVERTISER","AUCTION_CAMPAIGN","RESERVATION_AD","RESERVATION_ADGROUP","RESERVATION_ADVERTISER","RESERVATION_CAMPAIGN"],"type":"string","title":"Data level","required":true,"description":"Select one of the data level types described in the <a href='https://ads.tiktok.com/marketing_api/docs?id=1740302848100353'>documentation</a>. Use NOT_DEFINED if you do not need the data level, e.g., with the report type PLAYABLE_MATERIAL","propertyOrder":30},"dimensions":{"type":"string","title":"Dimensions","format":"textarea","options":{"input_height":"100px"},"description":"Comma-separated list of dimensions to use for the report, find supported dimensions for specific report types in the <a href='https://ads.tiktok.com/marketing_api/docs?id=1738864835805186'>documentation</a>","propertyOrder":40},"report_type":{"enum":["BASIC","AUDIENCE","PLAYABLE_MATERIAL","CATALOG"],"type":"string","title":"Report type","default":"BASIC","required":true,"description":"Select one of the available report types described in the <a href='https://ads.tiktok.com/gateway/docs/index?identify_key=2b9b4278e47b275f36e7c39a4af4ba067d088e031d5f5fe45d381559ac89ba48&language=ENGLISH&doc_id=1701890951192578'>documentation</a>","propertyOrder":10},"service_type":{"enum":["AUCTION","RESERVATION"],"type":"string","title":"Service type","default":"AUCTION","required":true,"description":"Select one of the service types described in the <a href='https://ads.tiktok.com/marketing_api/docs?id=1740302848100353'>documentation</a>","propertyOrder":20}},"propertyOrder":20}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["loadAdvertiserIds"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":247,"uri":"docker/kds-team.ex-tiktok-ads","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-tiktok-ads","name":"developer-portal-v2/kds-team.ex-tiktok-ads","tag":"1.0.2","options":{},"digest":"sha256:bd37c1570b61c10fb6d37eda5858ecae66ce040e9a60915556176c1ff5c374e6"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-tiktok-ads/32/1677849307058.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-tiktok-ads/64/1677849307058.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-tiktok-ads/128/1677849307058.png"}},{"id":"kds-team.ex-timedoctor","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":174,"name":"Time Doctor","type":"extractor","shortDescription":"Extracts user and activity data from Time Doctor.","longDescription":"# Time Doctor\n\nThe Time Doctor extractor for Keboola allows users to download data from Time Doctor about users and their activity. To download all data available from the API, the following prerequisities need to be met:\n\n- authorize extractor with admin account.\n\n## Configuration\n\nA sample configuration, with both input and output folders can be found [in the component's repository](https://bitbucket.org/kds_consulting_team/kds-team.ex-timedoctor/src/master/component_config/sample-config/).\n\n### Parameters\n\nTo configure the extractor, a set of objects which should be downloaded needs to be specified along with the date range, for which statistics table will be downloaded. A sample `config.json` file can be found [here](https://bitbucket.org/kds_consulting_team/kds-team.ex-timedoctor/src/master/component_config/sample-config/config.json).\n\n#### Objects (`endpoints`)\n\nA list of objects, which should be downloaded from the API. By design of the API, only two objects support date filtering, where specifying a valid date range will support only records present within the date range. Currently supported objects are:\n\n- `companies`\n  - **description:** downloads a list of companies, to which authenticated user has access to\n  - **documentation:** https://webapi.timedoctor.com/doc#companies#get--v1.1-companies\n  - **date:** no\n- `users`\n  - **description:** downloads a list of users present within the company\n  - **documentation:** https://webapi.timedoctor.com/doc#users#get--v1.1-companies-{company_id}-users\n  - **date:** no\n- `projects`\n  - **description:** downloads a list of projects and a list of users, who are assigned to each project\n  - **documentation:** https://webapi.timedoctor.com/doc#projects#get--v1.1-companies-{company_id}-users-{user_id}-projects\n  - **date:** no\n- `tasks`\n  - **description:** downloads a list of tasks which are assigned to each user\n  - **documentation:** https://webapi.timedoctor.com/doc#tasks#get--v1.1-companies-{company_id}-users-{user_id}-tasks\n  - **date:** no\n- `worklogs`\n  - **description:** downloads worklogs, to which project and task they belong to and how much time was logged\n  - **documentation:** https://webapi.timedoctor.com/doc#worklogs#get--v1.1-companies-{company_id}-worklogs\n  - **date:** yes\n- `websites and applications`\n  - **description:** downloads a list of websites and applications, where users spend time while working, and associated worklogs\n  - **documentation:** https://webapi.timedoctor.com/doc#webandapp#get--v1.1-companies-{company_id}-webandapp\n  - **date:** yes\n\n#### Date settings (`date_settings`)\n\nA start and end date for `worklogs` and `websites and applications` objects. Both start date and end date support relative date specification in format like `2 days ago`, `3 months ago`, `a year ago`, etc; or standard `YYYY-MM-DD` format can be used. For full list of supported formats visit [`dateparser` library documentation](https://dateparser.readthedocs.io/en/latest/).\n\n### Output\n\nAll tables are loaded incrementally into storage with primary keys set.","licenseUrl":"https://bitbucket.org/kds_consulting_team/kds-team.ex-timedoctor/src/master/LICENSE.md","documentationUrl":"https://bitbucket.org/kds_consulting_team/kds-team.ex-timedoctor/src/master/README.md","sourceCodeUrl":"https://bitbucket.org/kds_consulting_team/kds-team.ex-timedoctor/src/master/","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-authorization"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["endpoints","date_settings","incremental"],"properties":{"endpoints":{"type":"array","items":{"enum":["companies","users","projects","tasks","worklogs","webandapp"],"type":"string","options":{"enum_titles":["companies","users","projects","tasks","worklogs","websites and applications"]}},"title":"Objects to download","format":"select","default":["companies","users","projects","tasks","worklogs","webandapp"],"description":"A list of objects which will be downloaded. One or multiple objects can be specified.","uniqueItems":true,"propertyOrder":100},"incremental":{"type":"boolean","title":"Incremental Loading","default":true,"description":"Marks whether tables should be loaded incrementally to storage.","uniqueItems":true,"propertyOrder":300},"date_settings":{"type":"object","title":"Date settings","format":"grid","required":["start_time","end_time"],"properties":{"end_time":{"type":"string","title":"End Date","default":"today","description":"End date, to which the extractor will download data. Can be specified as YYYY-MM-DD or in form of 30 days ago, 2 months ago, etc.","propertyOrder":200},"start_time":{"type":"string","title":"Start Date","default":"30 days ago","description":"Start date, from which the extractor will download data. Can be specified as YYYY-MM-DD or in form of 30 days ago, 2 months ago, etc.","propertyOrder":100}},"description":"Setting date range for which the statistics will be downloaded.","propertyOrder":200}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"To configure the extractor, a set of objects which should be downloaded needs to be specified along with the date range, for which statistics table will be downloaded. A sample `config.json` file can be found [here](https://bitbucket.org/kds_consulting_team/kds-team.ex-timedoctor/src/master/component_config/sample-config/config.json).\n\n#### Objects (`endpoints`)\n\nA list of objects, which should be downloaded from the API. By design of the API, only two objects support date filtering, where specifying a valid date range will support only records present within the date range. Currently supported objects are:\n\n- `companies`\n  - **description:** downloads a list of companies, to which authenticated user has access to\n  - **documentation:** https://webapi.timedoctor.com/doc#companies#get--v1.1-companies\n  - **date:** no\n- `users`\n  - **description:** downloads a list of users present within the company\n  - **documentation:** https://webapi.timedoctor.com/doc#users#get--v1.1-companies-{company_id}-users\n  - **date:** no\n- `projects`\n  - **description:** downloads a list of projects and a list of users, who are assigned to each project\n  - **documentation:** https://webapi.timedoctor.com/doc#projects#get--v1.1-companies-{company_id}-users-{user_id}-projects\n  - **date:** no\n- `tasks`\n  - **description:** downloads a list of tasks which are assigned to each user\n  - **documentation:** https://webapi.timedoctor.com/doc#tasks#get--v1.1-companies-{company_id}-users-{user_id}-tasks\n  - **date:** no\n- `worklogs`\n  - **description:** downloads worklogs, to which project and task they belong to and how much time was logged\n  - **documentation:** https://webapi.timedoctor.com/doc#worklogs#get--v1.1-companies-{company_id}-worklogs\n  - **date:** yes\n- `websites and applications`\n  - **description:** downloads a list of websites and applications, where users spend time while working, and associated worklogs\n  - **documentation:** https://webapi.timedoctor.com/doc#webandapp#get--v1.1-companies-{company_id}-webandapp\n  - **date:** yes\n\n#### Date settings (`date_settings`)\n\nA start and end date for `worklogs` and `websites and applications` objects. Both start date and end date support relative date specification in format like `2 days ago`, `3 months ago`, `a year ago`, etc; or standard `YYYY-MM-DD` format can be used. For full list of supported formats visit [`dateparser` library documentation](https://dateparser.readthedocs.io/en/latest/).","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":174,"uri":"docker/kds-team.ex-timedoctor","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-timedoctor","name":"developer-portal-v2/kds-team.ex-timedoctor","tag":"0.1.7","options":{},"digest":"sha256:e79744edcd02f9833211a24e52f14abeb10b0938cc585a28e98a295ad000b955"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-timedoctor/32/1574331285416.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-timedoctor/64/1574331285416.png","128":null}},{"id":"kds-team.ex-time-doctor-2","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":418,"name":"Time Doctor 2","type":"extractor","shortDescription":"Extracts users, tasks, projects, worklog, edit-time, and timeuse data from the Time Doctor 2 API.","longDescription":"This Extractor fetches data from TimeDoctor 2 API and supports following endpoints:\n\n- users\n- tasks\n- projects\n- worklog\n- edit-time\n- timeuse","licenseUrl":"https://github.com/keboola/component-time-doctor-2/blob/main/LICENSE.md","documentationUrl":"https://help.keboola.com/components/extractors/other/time-doctor-2/","sourceCodeUrl":"https://github.com/keboola/component-time-doctor-2","requiredMemory":null,"processTimeout":14400,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"extractor configuration","properties":{"endpoints":{"type":"object","title":"Endpoints","properties":{"tasks":{"type":"boolean","title":"tasks","format":"checkbox","propertyOrder":60},"_users":{"type":"boolean","title":"users","format":"checkbox","propertyOrder":10},"timeuse":{"type":"boolean","title":"timeuse","format":"checkbox","options":{"dependencies":{"_users":true}},"propertyOrder":40},"worklog":{"type":"boolean","title":"worklog","format":"checkbox","options":{"dependencies":{"_users":true}},"propertyOrder":20},"projects":{"type":"boolean","title":"projects","format":"checkbox","propertyOrder":50},"edit-time":{"type":"boolean","title":"edit-time","format":"checkbox","options":{"dependencies":{"_users":true}},"propertyOrder":30}},"description":"It is necessary to use users endpoint for endpoints worklog, edit-time and timeuse","propertyOrder":7},"increment":{"type":"boolean","title":"Incremental load","default":true,"description":"If set to false, component will truncate data in existing Keboola tables.","propertyOrder":8},"time-range":{"type":"object","title":"Time range settings","properties":{"to":{"type":"string","title":"To","description":"Enter timestamp in `%Y-%m-%dT%H:%M:%S` format or a relative date of valid dateparser format. Defaults to now if empty.","propertyOrder":2},"from":{"type":"string","title":"From","description":"Enter timestamp in `%Y-%m-%dT%H:%M:%S` format or a relative date of valid dateparser format. Defaults to now if empty.","propertyOrder":1}},"propertyOrder":2},"authorization":{"type":"object","title":"Authorization","required":["email","#password"],"properties":{"email":{"type":"string","title":"Email","propertyOrder":1},"#password":{"type":"string","title":"Password","format":"password","propertyOrder":2},"company_id":{"type":"string","title":"Company ID","description":"If not specified, component will fetch data for the first company that companies endpoint will return.","propertyOrder":3}},"propertyOrder":1}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"Prerequisites\n=============\n\nTo use this component you need user that is privileged to access data from used endpoints.\n\n\nSupported endpoints\n===================\n- users\n- tasks\n- projects\n- worklog\n- edit-time\n- timeuse\n\nYou can find more information about these endpoints in [TD2 API docs](https://api2.timedoctor.com/#/Activity/getActivityEditTime)\n\nIf you need more endpoints, please submit your request to\n[ideas.keboola.com](https://ideas.keboola.com/)\n\nConfiguration\n=============\n\n### Extractor configuration\n - Email (email) - [REQ] email for user whose credentials the data will be fetched\n - Password (#password) - [REQ] user's password\n - Company ID (company_id) - [OPT] Company ID - If not specified, component will fetch data for the first company\nthat companies endpoint will return.\n - From (from) - [OPT] Enter timestamp in `%Y-%m-%dT%H:%M:%S` format or a relative date of valid dateparser format. Defaults to now if empty.\n - To (to) - [OPT] Enter timestamp in `%Y-%m-%dT%H:%M:%S` format or a relative date of valid dateparser format. Defaults to now if empty.\n - users (_users) - [OPT] This endpoint is required to be processed for endpoints worklog, edit-time and timeuse\n - worklog (worklog) - [OPT] fetched data from worklog endpoint\n - edit-time (edit-time) - [OPT] fetches data from edit-time endpoint\n - timeuse (timeuse) - [OPT] fetches data from timeuse endpoint\n - projects (projects) - [OPT] fetches data from projects endpoint\n - tasks (tasks) - [OPT] fetches data from tasks endpoint\n - Incremental load (increment) - [OPT] If set to false, component will truncate data in existing Keboola tables.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":418,"uri":"docker/kds-team.ex-time-doctor-2","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-time-doctor-2","name":"developer-portal-v2/kds-team.ex-time-doctor-2","tag":"0.0.20","options":{},"digest":"sha256:4fdeb4b97c20e697f7373b1e31c645e96158e1cc34621967bb6fa0440a5b427c"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-time-doctor-2/32/1680783570186.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-time-doctor-2/64/1680783570186.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-time-doctor-2/128/1680783570186.png"}},{"id":"phalanx-ai.czech-psc","vendor":{"id":"phalanx-ai","name":"Phalanx s.r.o.","address":"Grösslingova 61,\nBratislava,\nSlovakia","email":"marek.grac@phalanx.ai","type":"other"},"version":65,"name":"Transform Czech PSČ to district/county","type":"application","shortDescription":"Use ZIP code (PSČ) to map addresses in Czech Republic to districts and counties.","longDescription":"## Transform Czech ZIP (PSČ) to district/county\n\nTable with ZIP codes (from Czech Republic) contains enough information to fill columns with District and County.\n\nBe aware that one ZIP code can be part of multiple districts/counties. Fortunately, it only happens for smallest villages where impact on your results can be ignored. \n\n## Configuration\n\nData transformation is applied to all of the input/output mappings. A configuration also consists of following parameters:\n\n* Name of the existing column with ZIP/PSČ code (`column_psc`)\n* Name of the new column with districts (`column_district`) - When parameter is not defined, the value of district is not filled.\n* Name of the new column with counties (`column_county`) - When parameter is not defined, the value of county is not filled.\n\n## Output\n\nOutput tables as defined in the configuration with new columns for district and/or county.","licenseUrl":"https://github.com/Phalanx-Ai/transformer-psc/blob/master/LICENSE.md","documentationUrl":"https://github.com/Phalanx-Ai/transformer-psc/blob/master/README.md","sourceCodeUrl":"https://github.com/Phalanx-Ai/transformer-psc.git","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput","genericDockerUI-tableOutput"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["column_psc"],"properties":{"column_psc":{"type":"string","title":"Name of existing column with ZIP/PSČ","propertyOrder":1},"column_county":{"type":"string","title":"Name of new column with County","propertyOrder":3},"column_district":{"type":"string","title":"Name of new column with District","propertyOrder":2}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"Testing configuration description.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":65,"uri":"docker/phalanx-ai.czech-psc","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/phalanx-ai.czech-psc","name":"developer-portal-v2/phalanx-ai.czech-psc","tag":"0.2.4","options":{},"digest":"sha256:5448d663ecf7aaa80e7575359191293ab19ea928e37f901a2848ab848c4e2abd"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/phalanx-ai.czech-psc/32/1657554151880.png","64":"https://ui.keboola-assets.com/developer-portal/icons/phalanx-ai.czech-psc/64/1657554151880.png","128":null}},{"id":"keboola.app-transformation-migration","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":55,"name":"Transformation Migration","type":"application","shortDescription":"Migrate Snowflake transformations to DuckDB with automatic SQL dialect translation","longDescription":"# Transformation Migration Tool\n\nThis component migrates Snowflake transformations to DuckDB transformations with automatic SQL dialect translation using SQLglot.\n\n## Features\n\n- **Select Multiple Transformations**: Choose one or more Snowflake transformations to migrate\n- **Branch Management**: Migrate to an existing dev branch or create a new one\n- **SQL Translation**: Automatically translates Snowflake SQL to DuckDB dialect using SQLglot\n- **Preserves Mappings**: Keeps input/output table mappings and runtime settings intact\n- **Error Handling**: If SQL translation fails, preserves original SQL as comments and reports errors\n\n## How It Works\n\n1. Select Snowflake transformations from a dropdown (populated via sync action)\n2. Choose destination branch or create a new one\n3. Optionally customize the destination config name using `%s` as a placeholder\n4. The component will:\n   - Load each Snowflake transformation configuration\n   - Translate all SQL code blocks from Snowflake to DuckDB dialect\n   - Create new DuckDB transformation configurations with the translated SQL\n   - Preserve input/output mappings and runtime settings\n   - Report any translation errors\n\n## Configuration\n\n- **Source Transformations**: Multi-select dropdown of available Snowflake transformations\n- **Destination Branch**: Select existing dev branch or create new\n- **Config Name Pattern**: Use `%s` as placeholder for original config name (default: `%s`)\n- **Debug Mode**: Enable detailed logging\n\n## Notes\n\n- Requires `KBC_TOKEN` environment variable to be set\n- If SQL translation fails, the original Snowflake SQL is preserved as comments\n- The component will raise an error if any translation fails, but configurations are still created","licenseUrl":"https://github.com/keboola/component-transformation-migration/blob/master/LICENSE.md","documentationUrl":"https://help.keboola.com/transformations/duckdb/snowflake-migration/#transformation-migration-component","sourceCodeUrl":"https://github.com/keboola/component-transformation-migration","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":true,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","appInfo.experimental"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Transformation Migration Configuration","format":"grid-strict","required":["source_branch","destination_branch","source_type","destination_type","source_transformations"],"properties":{"debug":{"type":"boolean","title":"Debug Mode","format":"checkbox","default":false,"options":{"grid_columns":12},"description":"If enabled, the component will produce detailed logs","propertyOrder":7},"source_type":{"enum":["snowflake","duckdb","bigquery"],"type":"string","title":"Source Transformation Type","format":"select","default":"snowflake","options":{"enum_titles":["Snowflake","DuckDB","BigQuery"],"grid_columns":6},"propertyOrder":3},"source_branch":{"enum":[],"type":"string","title":"Source Branch","format":"select","default":"default","options":{"tags":true,"async":{"label":"Load branches","action":"list_branches"},"grid_columns":6},"description":"Branch to migrate from","propertyOrder":1},"destination_type":{"enum":["snowflake","duckdb","bigquery"],"type":"string","title":"Destination Transformation Type","format":"select","default":"duckdb","options":{"enum_titles":["Snowflake","DuckDB","BigQuery"],"grid_columns":6},"propertyOrder":4},"destination_branch":{"enum":[],"type":"string","title":"Destination Branch","format":"select","default":"default","options":{"tags":true,"async":{"label":"Load branches","action":"list_branches"},"creatable":true,"grid_columns":6},"description":"Branch name (existing or new)","propertyOrder":2},"source_transformations":{"type":"array","items":{"enum":[],"type":"string"},"title":"Transformations to Migrate","format":"select","options":{"async":{"label":"Load transformations","action":"list_transformations"},"grid_columns":12},"minItems":1,"description":"Select transformations to migrate","uniqueItems":true,"propertyOrder":5},"destination_config_name":{"type":"string","title":"Destination Config Name Pattern","default":"%s","options":{"grid_columns":12},"description":"Pattern for destination config names. Use %s as placeholder for source config name","propertyOrder":6}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"# Configuration\n\nSelect the Snowflake transformations you want to migrate to DuckDB and specify the destination branch.\n\n## Parameters\n\n- **Source Transformations**: Select one or more Snowflake transformations to migrate\n- **Destination Branch**: Choose an existing dev branch or create a new one\n- **Create New Branch**: Check this to create a new branch instead of using an existing one\n- **New Branch Name**: Name for the new branch (required if \"Create New Branch\" is checked)\n- **Destination Config Name Pattern**: Pattern for naming the migrated configs. Use `%s` to insert the original config name\n- **Debug Mode**: Enable detailed logging for troubleshooting","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["list_branches","list_transformations"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.app-transformation-migration","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.app-transformation-migration","name":"developer-portal-v2/keboola.app-transformation-migration","tag":"0.0.4","options":{},"digest":"sha256:e86ac47fc9664559bb9eda33a857b8a9224e6b9686914aa72d9b5e9f8f37fde5"},"publishingStatus":"public","icon":{"32":null,"64":null,"128":null}},{"id":"kds-team.ex-mibook","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":482,"name":"Traveltek Fusion MiBook API","type":"extractor","shortDescription":"Extracts booking data from the Traveltek Travelfusion (MiBook) API.","longDescription":"The component uses the Traveltek Travelfusion Direct Connect XML API (MiBook) to provide information about bookings.\n\nThe component uses the \"getbookings\" method to get booking IDs for a specific time frame and saves them in the \"bookings\" output table.\n\nThen, it calls the API with the \"getportfolio\" method to gather details for each booking ID from the previous step, storing this information in four portfolio tables.","licenseUrl":"https://bitbucket.org/kds_consulting_team/kds-team.ex-mibook/src/master/LICENSE.md","documentationUrl":"https://bitbucket.org/kds_consulting_team/kds-team.ex-mibook/src/master/README.md","sourceCodeUrl":"https://bitbucket.org/kds_consulting_team/kds-team.ex-mibook/src/master/src/","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","appInfo.experimental"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"extractor configuration","required":["credentials"],"properties":{"credentials":{"type":"object","title":"Authorization","required":["username","#password"],"properties":{"username":{"type":"string","title":"Username","propertyOrder":1},"#password":{"type":"string","title":"Password","format":"password","propertyOrder":2}},"propertyOrder":1},"destination":{"type":"object","title":"Destination","required":["load_type"],"properties":{"load_type":{"enum":["full_load","incremental_load"],"type":"string","title":"Load Type","format":"checkbox","default":"full_load","options":{"enum_titles":["Full Load","Incremental Load"]},"description":"If Full load is used, the destination table will be overwritten every run. If incremental load is used, data will be upserted into the destination table. Tables with a primary key will have rows updated, tables without a primary key will have rows appended.","propertyOrder":20}},"propertyOrder":400},"sync_options":{"type":"object","title":"Sync Options","properties":{"end_date":{"type":"string","title":"Date to","default":"now","options":{"dependencies":{"sync_mode":"incremental_sync"}},"description":"Date to which data is downloaded. Either date in YYYY-MM-DD format or dateparser string i.e. 5 days ago, 1 month ago, now, etc.","propertyOrder":30},"sync_mode":{"enum":["full_sync","incremental_sync"],"type":"string","title":"Sync Mode","default":"full_sync","options":{"enum_titles":["Full Sync","Incremental Sync"]},"required":true,"description":"Full Sync downloads all data from the source every run, Incremental Sync downloads data created or updated in a specified time range","propertyOrder":10},"start_date":{"type":"string","title":"Date From","default":"last run","options":{"dependencies":{"sync_mode":"incremental_sync"}},"description":"Date from which data is downloaded. Either date in YYYY-MM-DD format or dateparser string i.e. 5 days ago, 1 month ago, yesterday, etc. You can also set this as last run, which will fetch data from the last run of the component.","propertyOrder":20}},"propertyOrder":200}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"Configuration description.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.ex-mibook","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-mibook","name":"developer-portal-v2/kds-team.ex-mibook","tag":"0.1.1","options":{},"digest":"sha256:bb8f58421e0eab374540c4458c1c87f8b66363a31b67a36c4ce60f4f095d20f6"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-mibook/32/1700293306226.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-mibook/64/1700293306226.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-mibook/128/1700293306226.png"}},{"id":"keboola.app-tree","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":23,"name":"Tree Depth","type":"application","shortDescription":"Application computes the tree depth","longDescription":"This application computes levels in a table representing a tree (e.g. product categories). The tree data must be stored in a child-parent relationship. A column named **levels** will be added to the table (root nodes will have number 1). Additionally a column named **root** will be added, containing the ID of the root item.","licenseUrl":"https://github.com/keboola/app-tree/blob/master/LICENSE","documentationUrl":"https://github.com/keboola/app-tree/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/app-tree","requiredMemory":"8024m","processTimeout":10800,"features":["container-root-user","dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput","genericDockerUI-tableOutput"],"imageParameters":{},"stackParameters":{},"testConfiguration":{},"configurationSchema":{"type":"object","title":"Parameters","required":["idColumn","parentColumn"],"properties":{"idColumn":{"type":"string","title":"ID Column","default":"categoryId","description":"Name of column containing row identifier"},"parentColumn":{"type":"string","title":"Parent Column","default":"categoryParentId","description":"Name of column containing parent identifier"}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"The tree data must be stored in a child-parent relationship. A column named **levels** will be added to the table (root nodes will have number 1). Additionally a column named **root** will be added, containing the ID of the root item.\n\nSample input \n-------------------\n\ncategoryId | categoryParentId\t| title\n--- | --- | --- \n1 |\t0 | foo\n2 | 1 | bar\n3 | 1 | baz\n4 | 2 | buzz\n\n\nSample output\n-------------------\n\ncategoryId | categoryParentId | title | levels | root\n--- | --- | --- | --- | --- |\n1 |\t0 | foo | 1 | 1 |\n2 | 1 | bar | 2 | 1 |\n3 | 1 | baz | 2 | 1 |\n4 | 2 | buzz | 3 | 1 |","configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.app-tree","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.app-tree","name":"developer-portal-v2/keboola.app-tree","tag":"3.1.0","options":{"region":"us-east-1"},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.app-tree/32/3.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.app-tree/64/3.png","128":null}},{"id":"kds-team.ex-trustpilot","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":66,"name":"Trustpilot","type":"extractor","shortDescription":"Extracts Trustpilot reviews, business-unit profiles, and statistics.","longDescription":"# TrustPilot extractor\n\nThe TrustPilot extractor allows users to extract reviews for the specified business units. All that is needed is the API key and either IDs or names of the business units for which the reviews should be downloaded. Besides reviews, profile information and statistics are downloaded as well.\n\nAll tables are loaded incrementally to storage.\n\n## Output\n\nThe output of the extractor are 3 tables: **business-units**. **business-units-statistics** and **reviews**. All of the tables are loaded incrementally and each has a unique primary key.\n\nThe sample of output tables can be found [here](https://bitbucket.org/kds_consulting_team/kds-team.ex-trustpilot/src/master/component_config/sample-config/out/tables/). ","licenseUrl":"https://bitbucket.org/kds_consulting_team/kds-team.ex-trustpilot/src/master/LICENSE.md","documentationUrl":"https://bitbucket.org/kds_consulting_team/kds-team.ex-trustpilot/src/master/README.md","sourceCodeUrl":"https://bitbucket.org/kds_consulting_team/kds-team.ex-trustpilot/src/master/","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["#apiKey","businessUnits"],"properties":{"#apiKey":{"type":"string","title":"API Key","format":"password","description":"API Key for TrustPilot."},"businessUnits":{"type":"string","title":"Business Units","format":"textarea","options":{"input_height":"100px"},"description":"Comma or new line separated list of business units. IDs or names can be provided."}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"The sample configuration can be found in the [components' repository](https://bitbucket.org/kds_consulting_team/kds-team.ex-trustpilot/src/master/component_config/sample-config/config.json).\n\n### API Key (`#apiKey`)\n\nThe API Key is the main form of authentication for TrustPilot. If the wrong key is provided, the application fails due to not being authorized to download anything. Follow (this article) to learn, how to obtain the API key.\n\n### Business Units (`businessUnits`)\n\nThe comma or new line separated list of business units, for which the reviews should be downloaded. If a business unit does not exist in TrustPilot database, no reviews are extracted for it. Follow [this article](https://developers.trustpilot.com/tutorials/how-to-find-your-business-unit-id) to learn, how to find the business unit identificator.\n\n## Output\n\nThe output of the extractor are 3 tables: **business-units**. **business-units-statistics** and **reviews**. All of the tables are loaded incrementally and each has a unique primary key.\n\nThe sample of output tables can be found [here](https://bitbucket.org/kds_consulting_team/kds-team.ex-trustpilot/src/master/component_config/sample-config/out/tables/). ","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":66,"uri":"docker/kds-team.ex-trustpilot","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-trustpilot","name":"developer-portal-v2/kds-team.ex-trustpilot","tag":"0.1.2","options":{},"digest":"sha256:8af278cfd5b2fca3c3bc7c5db676d5b87daedc7fb892f1eec8becfdffb5790d7"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-trustpilot/32/51.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-trustpilot/64/51.png","128":null}},{"id":"kds-team.wr-twilio","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":31,"name":"Twilio","type":"writer","shortDescription":"Sends SMS messages via Twilio.","longDescription":"Twilio is the world's leading cloud communication platform that enables you to engage customers across channels - SMS, voice, video, WhatsApp, email and more. This component allows users to send SMS messages programmatically to the phone numbers configured in the input table mapping. Send log will be available for the list of numbers this component is sending out.\n\n### Configurations\n\nThe component is required to have at least one table in the input table mapping. If more the one tables are configured in the input table mapping, the component will loop through all of the input tables and process all the rows sending out the configured messages to the assigned numbers. \n\n#### Input Mapping Requirements\nAll tables are required to have the following columns\n| Required Columns |\n|-|\n| phone_number |\n| message |\n\n#### Configuration Parameters\n1. Account SID\n    - Can be found in the Console\n2. Authentication Token\n    - Can be found in the Console\n3. Messaging Service SID\n    - Can be created via `Messaging Service` in the Console\n    - The purpose of this service is to define the service identity\n4. Output Log\n    - Users have the options to output a log of the list of messages and targets sent out using this application.","licenseUrl":"https://github.com/keboola/component-twilio/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-twilio/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-twilio","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["CRM"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"extractor configuration","required":["account_sid","#auth_token","messaging_service_sid","output_log"],"properties":{"output_log":{"type":"boolean","title":"Output Log","default":false,"description":"Option to output a log of the list of messages sent out using this application.","propertyOrder":400},"#auth_token":{"type":"string","title":"Authentication Token","format":"password","description":"Can be found in the Console.","propertyOrder":200},"account_sid":{"type":"string","title":"Account SID","description":"Can be found in the Console.","propertyOrder":100},"messaging_service_sid":{"type":"string","title":"Messaging Service SID","description":"Can be created via [Messaging Services] in the Console.","propertyOrder":300}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"The component is required to have at least one table in the input table mapping. If more the one tables are configured in the input table mapping, the component will loop through all of the input tables and process all the rows sending out the configured messages to the assigned numbers. \n\n#### Input Mapping Requirements\nAll tables are required to have the following columns\n| Required Columns |\n|-|\n| phone_number |\n| message |","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":31,"uri":"docker/kds-team.wr-twilio","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.wr-twilio","name":"developer-portal-v2/kds-team.wr-twilio","tag":"0.0.1","options":{},"digest":"sha256:59fd9ce5244ff3740b3507b9fb8b4b64517c7575808d4b5eb56a8ea433a45b0d"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.wr-twilio/32/1621277272243.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.wr-twilio/64/1621277272243.png","128":null}},{"id":"fisa.ex-typeform","vendor":{"id":"fisa","name":"Martin Fiser","address":"Vancouver, Canada","email":"vfisa.stuff@gmail.com","type":"other"},"version":51,"name":"Typeform","type":"extractor","shortDescription":"Extract data from Typeform API","longDescription":null,"licenseUrl":"https://bitbucket.org/VFisa/kbc_typeform_extractor/src/91d37420f2c439ab675761df06da7ca823700243/Licence.md","documentationUrl":"https://bitbucket.org/VFisa/kbc_typeform_extractor/src/91d37420f2c439ab675761df06da7ca823700243/Component%20Description.md","sourceCodeUrl":null,"requiredMemory":"512m","processTimeout":3600,"features":["container-root-user"],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Marketing"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":1024,"uiOptions":["genericTemplatesUI"],"imageParameters":{"default_bucket":true},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["config"],"properties":{"config":{"type":"object","title":"Parameters","required":["#token"],"properties":{"#token":{"type":"string","title":"API Token","format":"password","minLength":1}}}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/fisa.ex-typeform","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/ex-generic-v2","name":"developer-portal-v2/ex-generic-v2","tag":"latest","options":{},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/fisa.ex-typeform/32/1677065329751.png","64":"https://ui.keboola-assets.com/developer-portal/icons/fisa.ex-typeform/64/1677065329751.png","128":"https://ui.keboola-assets.com/developer-portal/icons/fisa.ex-typeform/128/1677065329751.png"}},{"id":"keboola.ukg-hr","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":37,"name":"UKG HR","type":"extractor","shortDescription":"Extracts UKG HR Service Delivery resources into Keboola Storage using OAuth2 client-credentials authentication.","longDescription":"The UKG HR extractor connects to the UKG HR Service Delivery (HRSD) API v2 (`/api/v2/client`) and extracts HR resources into Keboola Storage. Each configuration row extracts one resource.\n\n## Authentication\n\nThe extractor uses the OAuth2 client-credentials grant flow. Provide your application ID, application secret, client ID, and deployment region (EU, US, ATL/UltiPro, or TOR/UltiPro Canada). The component obtains and refreshes access tokens automatically at runtime. Credentials are customer-provided and stored encrypted; no Keboola OAuth broker or partner registration is required.\n\n## Resources\n\nEach configuration row extracts one resource:\n\n- **requests** — People Assist requests/cases. Supports incremental load (by `updated_at`, `created_at`, or `closed_at`).\n- **employees** — Employee directory. Supports incremental load (by `created_at`).\n- **employee_documents** — Employee document metadata. Supports incremental load (by `created_at`). Binary file download is not included.\n- **organizations** — Company structure. Full load only (the API exposes no date filter).\n- **users** — User profiles. Full load only (the API exposes no date filter).\n\n## Incremental load\n\nFor resources that support it, incremental load filters by a datetime field using a watermark stored in per-row state. An overlap margin (seconds) can be configured to re-fetch a small window and catch late-arriving records; the primary key makes the overlap idempotent.\n\n## Pagination & filtering\n\nThe component follows the API's RFC 5988 `link` pagination headers. Per-resource filters (e.g. status/priority/organization for requests, organization/terminated for employees, document type/expiry for documents) can be set on each row to scope what is extracted. Note: the API exposes no field-selection parameter, so each resource always returns its full object shape.\n\n## Output\n\nEach resource produces a table in Keboola Storage with primary key `id`. Nested objects are flattened with underscore-separated keys; list and object-array values are serialized as JSON strings. Datetime fields are typed as `TIMESTAMP` in the output schema.","licenseUrl":"https://github.com/keboola/component-ex-ukg-hr/blob/main/LICENSE.md","documentationUrl":"https://help.keboola.com/components/extractors/other/ukg-hr/","sourceCodeUrl":"https://github.com/keboola/component-ex-ukg-hr","requiredMemory":null,"processTimeout":null,"features":[],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["HR"],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","appInfo.experimental"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"UKG HR Extractor Configuration","required":["#application_id","#application_secret","#client_id","region"],"properties":{"region":{"enum":["eu","us","atl","tor"],"type":"string","title":"Region","options":{"enum_titles":["EU","US","ATL (UltiPro)","TOR (UltiPro Canada)"]},"description":"Deployment region for the UKG HR tenant.","propertyOrder":40},"#client_id":{"type":"string","title":"Client ID","format":"password","description":"UKG HR service client identifier.","propertyOrder":30},"#application_id":{"type":"string","title":"Application ID","format":"password","description":"UKG HR service application identifier.","propertyOrder":10},"test_connection":{"type":"button","format":"test-connection","propertyOrder":100},"#application_secret":{"type":"string","title":"Application Secret","format":"password","description":"UKG HR service application secret.","propertyOrder":20}}},"configurationRowSchema":{"type":"object","title":"Resource Configuration","required":["resource","load_type"],"properties":{"q":{"type":"string","title":"Full-text Query","options":{"dependencies":{"resource":["requests","organizations"]}},"description":"Full-text search query (requests and organizations).","propertyOrder":100},"email":{"type":"string","title":"Email","options":{"dependencies":{"resource":"users"}},"description":"Exact-match lookup for a specific user email address.","propertyOrder":210},"embed":{"type":"array","items":{"enum":["creator","employee","closed_by"],"type":"string","options":{"enum_titles":["Creator","Employee","Closed By"]}},"title":"Embed Related Objects","options":{"dependencies":{"resource":"requests"}},"description":"Include related-user detail in request records.","propertyOrder":90},"since":{"type":"string","title":"Start Date","options":{"dependencies":{"resource":["requests","employees","employee_documents"],"load_type":"incremental_load"}},"description":"Start date for the initial incremental load lower bound. Accepts an ISO 8601 datetime (e.g. `2026-01-01T00:00:00+00:00`) OR a relative phrase (e.g. `yesterday`, `3 days ago`, `now`).","propertyOrder":30},"active":{"type":"boolean","title":"Active Users Only","options":{"dependencies":{"resource":"users"}},"description":"true = only users who have logged in.","propertyOrder":190},"status":{"type":"array","items":{"enum":["created","opened","pending","closed","archived"],"type":"string","options":{"enum_titles":["Created","Opened","Pending","Closed","Archived"]}},"title":"Status Filter","options":{"dependencies":{"resource":"requests"}},"description":"Filter requests by status (leave empty for all statuses).","propertyOrder":60},"expired":{"type":"boolean","title":"Expired Documents","options":{"dependencies":{"resource":"employee_documents"}},"description":"true = end-of-retention documents only.","propertyOrder":150},"role_id":{"type":"string","title":"Role ID","options":{"dependencies":{"resource":"users"}},"description":"Scope users to a specific role.","propertyOrder":200},"trashed":{"type":"boolean","title":"Trashed Documents","options":{"dependencies":{"resource":"employee_documents"}},"description":"Include trashed documents (default false).","propertyOrder":160},"priority":{"type":"array","items":{"enum":["1","2","3"],"type":"string","options":{"enum_titles":["1 — Low","2 — Normal","3 — Urgent"]}},"title":"Priority Filter","options":{"dependencies":{"resource":"requests"}},"description":"Filter requests by priority level.","propertyOrder":80},"resource":{"enum":["requests","employees","employee_documents","organizations","users"],"type":"string","title":"Resource","options":{"enum_titles":["Requests","Employees","Employee Documents","Organizations","Users"]},"description":"UKG HR resource to extract.","propertyOrder":10},"load_type":{"enum":["full_load","incremental_load"],"type":"string","title":"Load Type","default":"incremental_load","options":{"enum_titles":["Full Load","Incremental Load"]},"description":"Full load replaces all data; incremental load appends new records.","propertyOrder":20},"recursive":{"type":"boolean","title":"Recursive","options":{"dependencies":{"resource":"organizations"}},"description":"Include all descendants of the selected organization.","propertyOrder":180},"date_field":{"enum":["updated_at","created_at","closed_at"],"type":"string","title":"Date Field","default":"updated_at","options":{"enum_titles":["Updated At (recommended)","Created At","Closed At"],"dependencies":{"resource":"requests","load_type":"incremental_load"}},"description":"Datetime field to use for incremental filtering (requests only).","propertyOrder":50},"terminated":{"type":"boolean","title":"Terminated Employees","options":{"dependencies":{"resource":"employees"}},"description":"true = terminated only, false = active only, omit for all.","propertyOrder":120},"organization_id":{"type":"array","items":{"type":"string"},"title":"Organization IDs (requests)","options":{"dependencies":{"resource":"requests"}},"description":"Scope requests to specific organization IDs.","propertyOrder":70},"document_type_id":{"type":"string","title":"Document Type ID","options":{"dependencies":{"resource":"employee_documents"}},"description":"Scope employee documents to a specific document type.","propertyOrder":140},"organization_ids":{"type":"array","items":{"type":"string"},"title":"Organization IDs (employees / documents)","options":{"dependencies":{"resource":["employees","employee_documents"]}},"description":"Scope employees or employee documents to specific organization IDs.","propertyOrder":110},"synchronization_date":{"type":"string","title":"Synchronization Date","options":{"dependencies":{"resource":"employees"}},"description":"Filter employees by last synchronization date (YYYY-MM-DD).","propertyOrder":130},"users_organization_id":{"type":"string","title":"Organization ID (users)","options":{"dependencies":{"resource":"users"}},"description":"Scope users to a specific organization ID.","propertyOrder":185},"overlap_margin_seconds":{"type":"integer","title":"Overlap Margin (seconds)","default":0,"options":{"dependencies":{"resource":["requests","employees","employee_documents"],"load_type":"incremental_load"}},"description":"Seconds to subtract from the last watermark to catch late-arriving records.","propertyOrder":40},"parent_organization_id":{"type":"string","title":"Parent Organization ID","options":{"dependencies":{"resource":"organizations"}},"description":"List children of this parent organization (default: root).","propertyOrder":170}}},"createConfigurationRowSchema":null,"configurationDescription":"# Configuration\n\n## Root Configuration\n\nAuthentication credentials for the UKG HR Service Delivery (HRSD) API.\n\n- **Application ID** (`#application_id`): The application identifier from the UKG HR service.\n- **Application Secret** (`#application_secret`): The application secret from the UKG HR service.\n- **Client ID** (`#client_id`): The client identifier for OAuth2 token requests.\n- **Region**: Deployment region of the UKG HR tenant (`eu`, `us`, `atl`, `tor`).\n\nThe component performs an OAuth2 client-credentials grant at runtime against the tenant's token endpoint.\n\n## Row Configuration (per resource)\n\nEach configuration row extracts one UKG HR resource. The available filter fields change with the selected resource.\n\n- **Resource**: The resource to extract — `requests`, `employees`, `employee_documents`, `organizations`, or `users`. Select the resource to extract from the list.\n- **Load Type**: `full_load` replaces all data each run; `incremental_load` extracts records changed since the last run (upsert by primary key). `organizations` and `users` are full-load only.\n\n### Incremental options (requests, employees, employee_documents)\n\n- **Date Field** (requests only): datetime field for incremental filtering — `updated_at` (default), `created_at`, or `closed_at`. Employees and employee documents always filter by `created_at`.\n- **Start Date**: Lower bound for the first incremental run. Accepts an ISO 8601 datetime (e.g. `2026-01-01T00:00:00+00:00`) or a relative phrase (e.g. `yesterday`, `3 days ago`, `now`).\n- **Overlap Margin (seconds)**: seconds subtracted from the last watermark to re-fetch a small window and catch late-arriving records.\n\n### Requests filters\n\n- **Status**, **Priority**, **Organization ID(s)**, **Embed** (creator/employee/closed_by), **Search** (`q`).\n\n### Employees filters\n\n- **Organization IDs**, **Terminated**, **Synchronization Date**.\n\n### Employee documents filters\n\n- **Document Type ID**, **Organization IDs**, **Expired**, **Trashed**.\n\n### Organizations filters\n\n- **Parent Organization ID**, **Recursive**, **Search** (`q`).\n\n### Users filters\n\n- **Active**, **Role ID**, **Organization ID**, **Email**.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["testConnection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":37,"uri":"docker/keboola.ukg-hr","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ukg-hr","name":"developer-portal-v2/keboola.ukg-hr","tag":"0.1.0","options":{},"digest":"sha256:968927da70840fe8c6391fec02e98075a5263b926af7c1e211f0727161dc417f"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ukg-hr/32/1781856720345.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ukg-hr/64/1781856720345.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ukg-hr/128/1781856720345.png"}},{"id":"keboola.ukg-wfm","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":83,"name":"UKG Pro Workforce Management","type":"extractor","shortDescription":"Extracts UKG Pro Workforce Management (Dimensions) data — people, timekeeping, scheduling, accruals, leave, attendance, activities, payroll and forecasting.","longDescription":"The UKG Pro Workforce Management extractor reads the WFM (formerly Workforce Dimensions / Kronos) API surface: People/Persons, Business Structure, Hyperfind queries, Timekeeping (punches, timecards, timecard metrics), Scheduling (schedules, shifts, open shifts, swaps), Accruals (balances, transactions, summaries), Leave (cases, edits), Attendance (records, events), Attestations, Work/Activities (activities, activity shifts, net-change resources), Payroll async export, and Forecasting.\n\n**Authentication.** Auth is OAuth 2.0 `password` grant (resource-owner) against your tenant vanity host (e.g. `https://mycompany.prd.mykronos.com`), so a dedicated **service account** is required. You supply the host, the OAuth `client_id` and the service-account `username` (plain identifiers), and two secrets — `client_secret` and `password`. The `client_id`/`client_secret` are issued by UKG when the tenant is set up, and a tenant Developer Admin must create the service account. The tenant host is a configuration field and is never composed by the component.\n\n**Configuration model.** One configuration row = one resource. The global configuration holds authentication; each row selects a resource, a load type, an optional date window / symbolic period, and an optional Hyperfind query (employee scope). Incremental resources upsert by primary key and split the fetch window into ≤365-day sub-windows to respect service limits; the window is recomputed from the row's Start/End Date on every run, with no stored watermark. Resources without a stable primary key always run full-load.\n\n**Provisioning note.** There is no public UKG WFM sandbox, so credentials come from a provisioned customer/partner tenant. The endpoint contract has been verified against a live tenant. Two families are documented but not data-verified there: Work/Activities requires the Activities Integration API license (HTTP 403) and Forecasting requires tenant-configured category drivers.","licenseUrl":"https://github.com/keboola/component-ex-ukg-wfm/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-ex-ukg-wfm/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-ex-ukg-wfm","requiredMemory":null,"processTimeout":null,"features":[],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":true,"forwardTokenDetails":true,"injectEnvironment":false,"complexity":"medium","category":null,"categories":[],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"UKG Pro WFM Extractor Configuration","required":["host","client_id","#client_secret","username","#password"],"properties":{"host":{"type":"string","title":"Tenant Host URL","options":{"tooltip":"The base vanity URL you use to sign in to UKG Pro WFM — the host only, nothing after the domain. Example: `https://mycompany.prd.mykronos.com`.","inputAttributes":{"placeholder":"https://mycompany.prd.mykronos.com"}},"description":"Your UKG tenant sign-in URL, with no trailing path","propertyOrder":10},"username":{"type":"string","title":"Service Account Username","description":"Username of the dedicated UKG service account this extractor signs in as.","propertyOrder":40},"#password":{"type":"string","title":"Service Account Password","format":"password","description":"Password of that UKG service account.","propertyOrder":50},"client_id":{"type":"string","title":"Client ID","description":"OAuth client id issued by UKG when your tenant is set up.","propertyOrder":20},"#client_secret":{"type":"string","title":"Client Secret","format":"password","description":"OAuth client secret issued by UKG when your tenant is set up.","propertyOrder":30},"test_connection":{"type":"button","format":"test-connection","propertyOrder":100}}},"configurationRowSchema":{"type":"object","title":"Resource Configuration","required":["resource","load_type"],"properties":{"since":{"type":"string","title":"Start Date","options":{"tooltip":"ISO 8601 (e.g. `2026-01-01T00:00:00+00:00`) or a relative phrase (e.g. `30 days ago`, `yesterday`). Applied on every run as the lower bound of the fetch window — Load Type only changes how rows are written to Storage, not which data is fetched.","dependencies":{"window_type":"date_window"}},"description":"Lower bound of the fetch window","propertyOrder":30},"until":{"type":"string","title":"End Date","options":{"tooltip":"Optional. ISO 8601 (e.g. `2026-02-01T00:00:00+00:00`) or a relative phrase (e.g. `yesterday`, `now`). Leave empty to fetch up to the current run time; set it to bound a backfill to a fixed window.","dependencies":{"window_type":"date_window"}},"description":"Upper bound of the fetch window","propertyOrder":40},"resource":{"enum":["accruals_balances","accruals_summaries","accruals_transactions","attendance_events","attendance_records","attestations","business_structure","forecasting","hyperfind_queries","leave_cases","leave_edits","payroll_export","persons","scheduling_open_shifts","scheduling_schedules","scheduling_shifts","scheduling_swaps","timekeeping_punches","timekeeping_timecard_metrics","timekeeping_timecards","work_activities","work_activity_net_changes","work_activity_shifts"],"type":"string","title":"Resource","options":{"enum_titles":["Accruals — Balances","Accruals — Summaries","Accruals — Transactions","Attendance — Events","Attendance — Records","Attestations","Business Structure","Forecasting (labor/volume)","Hyperfind Queries","Leave — Cases","Leave — Edits","Payroll Export (async)","People / Persons","Scheduling — Open Shifts","Scheduling — Schedules","Scheduling — Shifts","Scheduling — Swaps","Timekeeping — Punches","Timekeeping — Timecard Metrics","Timekeeping — Timecards","Work / Activities","Work / Activities — Net Changes (delta)","Work / Activities — Shifts"]},"description":"UKG Pro WFM resource to extract (one resource per configuration row).","propertyOrder":10},"load_type":{"enum":["full_load","incremental_load"],"type":"string","title":"Load Type","default":"incremental_load","options":{"tooltip":"This controls the Storage write mode only, not how much data is fetched — the fetch window is set by Start/End Date. Incremental load upserts by the Primary Key; a resource with no primary key always runs as a full replace.","enum_titles":["Full Load","Incremental Load"]},"description":"How rows are written to the table: full load replaces it each run; incremental load upserts by primary key","propertyOrder":75},"batch_size":{"type":"integer","title":"Employee Batch Size","minimum":1,"options":{"tooltip":"Optional. Number of employees sent per multi_read request. The whole batch response is parsed into memory at once, so if a run fails with 'out of memory (exceeded 256M)' — most likely on Timecard Metrics or Accruals over a wide date range — lower this (e.g. to 25). It is the primary memory lever for rollup resources (Timecard Metrics, Accruals), which cannot be split by date the way per-event resources can with Window Chunk Size. Trade-off: fewer employees per request means more requests, so the run is slower. Leave empty for the per-resource default (Timecard Metrics and Punches 100; Accruals and most per-event resources 500; activity net-changes 50). Ignored by resources that are not employee-scoped (e.g. Persons, Business Structure)."},"description":"Employees fetched per API request. Lower it if a run hits the 256 MB memory limit.","propertyOrder":43},"primary_key":{"type":"array","items":{"enum":[],"type":"string"},"title":"Primary Key","format":"select","options":{"async":{"label":"Re-load Columns from Storage","action":"list_columns"},"tooltip":"On incremental load the component upserts on these columns. The WFM API doesn't expose a field list, so the picker reads columns from this resource's output table in Storage — which exists only after the first run. Run once, then click Re-load Columns from Storage; or type the column name(s) directly (before the first run, on a dev branch, or with a custom output bucket). Supplying a key also enables upsert for a resource with no registry default, and for Timecard Metrics it replaces the default 'uniqueId' key (use it when your line items need a wider key, e.g. plus job and labor account). Empty = the resource's registry default. Note: Timecard Metrics on FULL load is always written with no primary key (a configured key is ignored), because 'uniqueId' is not unique when an employee works several jobs on one day.","creatable":true,"dependencies":{"load_type":"incremental_load"}},"description":"Column(s) that identify a row for upsert. The API returns no field list, so columns are read from Storage after the first run — run once then Re-load, or type them.","uniqueItems":true,"propertyOrder":80},"window_days":{"type":"integer","title":"Window Chunk Size (days)","maximum":365,"minimum":1,"options":{"tooltip":"Optional. For a large date range, lower this to pull the data in smaller pieces so the job stays under the memory limit — each chunk is fetched and written separately. Supported for per-event resources (schedules, shifts, timecards, leave, attendance, attestations) and for Timecard Metrics with the Actual totals metric group, whose rows are one per line item. Leave empty for the default (21 days for Timecard Metrics / Actual totals, 365 days elsewhere). NOT for rollup reads (the other timecard metric groups, Accruals), which return one total per employee — control their memory with a smaller employee batch instead. Punch-level resources always use their own per-request cap.","dependencies":{"window_type":"date_window"}},"description":"Split the Start/End window into chunks of at most this many days, fetched one at a time.","propertyOrder":41},"window_type":{"enum":["date_window","symbolic_period"],"type":"string","title":"Date Selection","default":"date_window","options":{"tooltip":"Date range: set an explicit Start Date / End Date window. Symbolic period: use a UKG rolling period (e.g. Current Pay Period) that resolves the range for you. Symbolic periods are not supported for scheduling resources — use a date range there.","enum_titles":["Date range (Start / End)","Symbolic period"]},"description":"Choose the fetch window by explicit dates or by a rolling symbolic period","propertyOrder":20},"metric_group":{"enum":["FTPTDATA_ALL","FTPTDATA","AVERAGING","SCHEDULED_TOTALS","CONTRACT_TOTALS","PROJECTED_TOTALS","PROJECTED_TOTALS_ONLY_CORRECTIONS","PROJECTED_TOTALS_EXCLUDE_CORRECTIONS","ACTUAL_TOTALS","ACTUAL_TOTALS_ONLY_CORRECTIONS","ACTUAL_TOTALS_EXCLUDE_CORRECTIONS","EXCEPTION_TOTAL","EXCEPTION_TOTAL_UNREVIEWED","EXCEPTION_TOTAL_EMPLOYEE_JUSTIFIED","EXCEPTION_TOTAL_MANAGER_JUSTIFIED","EXCEPTION_TOTAL_AUTO_RESOLVED","SHIFT_ACTUAL_TOTAL_SUMMARY","SHIFT_SCHEDULED_TOTAL_SUMMARY","SHIFT_CONTRACT_TOTAL_SUMMARY","SHIFT_PROJECTED_TOTAL_SUMMARY","DAILY_ACTUAL_TOTAL_SUMMARY","DAILY_SCHEDULED_TOTAL_SUMMARY","DAILY_CONTRACT_TOTAL_SUMMARY","DAILY_PROJECTED_TOTAL_SUMMARY","ACCRUAL_SUMMARY","ACCRUAL_TRANSACTIONS","ABSENCE_EXCEPTION","ISR_DAILY","ISR_SUMMARY"],"type":"string","title":"Timecard Metric Group","format":"select","options":{"tooltip":"Pick the one metric group you need. Its response section is exploded into per-line-item rows (with applyDate and a uniqueId primary key). Leaving it unset is not allowed for this resource — an empty selection would return every section, which cannot be exploded into one table.","enum_titles":["Full/part-time data — all weeks","Full/part-time data — worked weeks","Averaging totals","Scheduled totals","Contract totals","Projected totals (incl. corrections)","Projected totals — corrections only","Projected totals — exclude corrections","Actual totals","Actual totals — corrections only","Actual totals — exclude corrections","Exception count — total","Exception count — unreviewed","Exception count — employee-justified","Exception count — manager-justified","Exception count — auto-resolved","Shift summary — actual","Shift summary — scheduled","Shift summary — contract","Shift summary — projected","Daily summary — actual","Daily summary — scheduled","Daily summary — contract","Daily summary — projected","Accrual summary","Accrual transactions","Absence exceptions","Include summary report — daily","Include summary report — summary"],"dependencies":{"resource":["timekeeping_timecard_metrics"]}},"description":"The one metric group (select token) to pull for Timekeeping — Timecard Metrics. Its line items are exploded into one row per item (with applyDate; on full load the table has no primary key). Exactly one group is required for this resource.","propertyOrder":61},"hyperfind_ref":{"enum":[],"type":"string","title":"Hyperfind Query","format":"select","options":{"async":{"cache":true,"label":"Load Hyperfinds","action":"list_hyperfinds","autoload":true},"tooltip":"The Hyperfind query that resolves which employees this resource extracts. Click Load Hyperfinds and pick from the tenant's saved queries (public, personal, and system). Leave unset to fall back to 'All Home', which large tenants reject above their size threshold — pick a narrower query instead.","dependencies":{"resource":["timekeeping_punches","timekeeping_timecards","timekeeping_timecard_metrics","scheduling_schedules","scheduling_shifts","scheduling_open_shifts","scheduling_swaps","accruals_balances","accruals_transactions","accruals_summaries","leave_cases","leave_edits","attendance_records","attendance_events","attestations","work_activities","work_activity_shifts","work_activity_net_changes"]}},"description":"Employee set this resource is pulled for","propertyOrder":50},"payroll_query":{"type":"string","title":"Payroll Export Query","format":"textarea","options":{"tooltip":"The SQL-like query UKG WFM runs for the async payroll export (POST /commons/payroll/export/async). It is tenant-specific — use the export query your WFM tenant defines. Required for the Payroll Export resource.","dependencies":{"resource":"payroll_export"}},"description":"Tenant-defined payroll export query","propertyOrder":45},"symbolic_period":{"enum":[],"type":"string","title":"Symbolic Period","format":"select","options":{"async":{"cache":true,"label":"Load Symbolic Periods","action":"list_symbolic_periods","autoload":true},"tooltip":"The UKG-named rolling period range (e.g. `Current Pay Period`, `Previous Pay Period`, `Yesterday`, `Today`). Click Load Symbolic Periods and pick from the tenant's periods; the value stored is the numeric id — WFM rejects a period name, only the id works. Not supported for scheduling resources (they require a Date range). See the UKG Pro WFM API reference: https://developer.ukg.com/wfm/reference","dependencies":{"window_type":"symbolic_period"}},"description":"Rolling period window (e.g. Current Pay Period) used instead of an explicit start/end date window","propertyOrder":42},"max_wait_seconds":{"type":"integer","title":"Payroll Max Wait (seconds)","minimum":1,"options":{"tooltip":"If left empty, the component waits up to 1800 seconds (30 minutes) before failing the poll.","dependencies":{"resource":"payroll_export"}},"description":"Maximum time to poll a Payroll async export before failing (avoids hanging).","propertyOrder":90},"hyperfind_threshold":{"type":"integer","title":"Hyperfind Threshold","minimum":1,"options":{"tooltip":"UKG rejects a Hyperfind that resolves more employees than this cap with error WCO-112003. UKG's per-request default is low, so a broad Hyperfind ('All Home'/'All People') fails unless it is raised. If left empty, the component applies 50000 — raise it only if your tenant roster is larger, or lower it to cap the roster deliberately.","dependencies":{"resource":["timekeeping_punches","timekeeping_timecards","timekeeping_timecard_metrics","scheduling_schedules","scheduling_shifts","scheduling_open_shifts","scheduling_swaps","accruals_balances","accruals_transactions","accruals_summaries","leave_cases","leave_edits","attendance_records","attendance_events","attestations","work_activities","work_activity_shifts","work_activity_net_changes"]}},"description":"Maximum number of employees the Hyperfind Query above may resolve before the request is rejected.","propertyOrder":55},"max_missing_employees":{"type":"integer","title":"Max Missing Employees","minimum":0,"options":{"tooltip":"Timecard Metrics and Accruals (Balances, Transactions, Summaries) are read with partial_success=true, which lets UKG silently omit employees the API user cannot fully access instead of failing the whole request. Every omission is always logged as a warning. Set this to fail the run (instead of loading a silently-incomplete table) once the number of omitted employees exceeds this count — 0 means any omission fails. Leave empty to only warn and never fail, which preserves today's default behaviour.","dependencies":{"resource":["timekeeping_timecard_metrics","accruals_balances","accruals_transactions","accruals_summaries"]}},"description":"Fail the run if UKG silently omits more than this many employees from a Timecard Metrics / Accruals response. Leave empty to only warn (default, back-compatible behaviour).","propertyOrder":44},"poll_interval_seconds":{"type":"integer","title":"Payroll Poll Interval (seconds)","minimum":1,"options":{"tooltip":"If left empty, the component polls every 15 seconds.","dependencies":{"resource":"payroll_export"}},"description":"Seconds between Payroll async export status polls.","propertyOrder":100}}},"createConfigurationRowSchema":null,"configurationDescription":"## Global configuration (authentication)\n\n| Field | Secret | Description |\n|---|---|---|\n| `host` | no | Your UKG tenant sign-in URL, host only, e.g. `https://mycompany.prd.mykronos.com`. |\n| `client_id` | no | OAuth client id issued by UKG when your tenant is set up. |\n| `#client_secret` | yes | OAuth client secret issued by UKG when your tenant is set up. |\n| `username` | no | Username of the dedicated UKG service account this extractor signs in as. |\n| `#password` | yes | Password of that UKG service account. |\n\nUse the **Test Connection** button to verify your credentials.\n\n## Row configuration (one per resource)\n\n| Field | Description |\n|---|---|\n| `resource` | The UKG WFM resource to extract (see the resource dropdown / README table). |\n| `window_type` | Date Selection: `date_window` (explicit Start/End Date) or `symbolic_period` (a rolling UKG period). Chooses which of the two the form shows. |\n| `since` | Start Date — lower bound of the fetch window (ISO 8601 or a relative phrase like `30 days ago`). **Required** for a date-windowed resource (a run with no Start Date and no Symbolic Period fails fast). Applied on every run; Load Type changes only how rows are written, not what is fetched. Shown when Date range is selected. |\n| `until` | End Date — optional upper bound (ISO 8601 or a relative phrase). Empty = up to the current run time. Must be after Start Date. Shown when Date range is selected. |\n| `window_days` | Optional. Max span in days of each date sub-window when chunking a Start/End pull on a **per-event** resource (schedules, shifts, timecards, leave, attendance, attestations) — lower it to fetch a large range in smaller pieces and keep memory under the limit. Empty = 365 days. **Not supported for rollup resources** (Timecard Metrics, Accruals), which return one total per employee — use a smaller employee `batch_size` there. Punch-level resources use their own per-call cap. Shown when Date range is selected. |\n| `symbolic_period` | Symbolic-period **id** (e.g. `1` = Current Pay Period). Pick it with the Load Symbolic Periods button; only the id works, not a name. Shown when Symbolic period is selected. Not supported for scheduling resources. |\n| `hyperfind_ref` | Hyperfind query resolving the employee set. Empty = the tenant `All Home` default (employee-scoped resources only). |\n| `load_type` | `full_load` replaces the table each run; `incremental_load` upserts by primary key. Resources without a stable primary key always run full-load. |\n| `primary_key` | Incremental load only. Column(s) that identify a row for upsert. The API returns no field list, so columns are read from Storage after the first run (Load Columns from Storage) — or type them directly. Overrides the resource default and can enable upsert for an otherwise keyless resource. |\n| `max_wait_seconds` | Payroll export only: maximum polling time before failing (default 1800). |\n| `poll_interval_seconds` | Payroll export only: seconds between status polls (default 15). |","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["list_columns","list_hyperfinds","list_symbolic_periods","testConnection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":83,"uri":"docker/keboola.ukg-wfm","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ukg-wfm","name":"developer-portal-v2/keboola.ukg-wfm","tag":"0.1.3","options":{},"digest":"sha256:67f0039a0b9fe9137a575877e8b141ca922701c769e3396b1f6f450053a4765e"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ukg-wfm/32/1784643411134.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ukg-wfm/64/1784643411134.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ukg-wfm/128/1784643411134.png"}},{"id":"kds-team.processor-unzip","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":149,"name":"unzip","type":"processor","shortDescription":"Simple processor unzipping files in the data/in/files and storing results in data/out/files. It supports formats '.zip', '.7z', '.tar.bz2', '.tbz2', '.gz', '.tar.gz', '.tgz', '.tar', '.tar.xz' and '.txz'","longDescription":"Simple processor unzipping files in the `data/in/files` and storing results in `data/out/files`.\n\n### Supported file formats:\n- .7z\n- .tar.bz2\n- .tbz2\n- .gz\n- .tar.gz\n- .tgz\n- .tar\n- .tar.xz\n- .txz\n- .zip\n\n**NOTE** The reason for writing this is that the keboola-decompress processor can't handle situations when files in the zipfile \ncontain (back)slash characters, e.g. `\\filename.xml`\n\n**Table of contents:**  \n  \n[TOC]\n\n\n\n# Configuration\n\n### Sample configuration\n\n```json\n{\n    \"definition\": {\n        \"component\": \"kds-team.processor-unzip\"\n    },\n    \"parameters\": {\n        \"extract_to_folder\" : true\n    }\n}\n```\n- **extract_to_folder** - boolean to indicate if zipped folders should be extracted to folders within `data/out/files`\n  or if files within the zipped folder should be added directly to the `data/out/files`","licenseUrl":"https://github.com/keboola/processor-unzip/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/processor-unzip/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/processor-unzip","requiredMemory":"1000m","processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":[],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"extractor configuration","required":["print_hello"],"properties":{"debug":{"type":"boolean","title":"Debug"},"print_hello":{"type":"boolean","title":"Print Hello"}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"Configuration description.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.processor-unzip","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.processor-unzip","name":"developer-portal-v2/kds-team.processor-unzip","tag":"0.3.7","options":{},"digest":"sha256:8a30c4038f88967e534d5bb5d32a21c749777840aeb589552adfdbe780bd1293"},"publishingStatus":"public","icon":{"32":null,"64":null,"128":null}},{"id":"keboola.ex-uol","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":43,"name":"UOL","type":"extractor","shortDescription":"Extracts invoices, contacts, products, accounting records and more from UOL Účetnictví via its REST API.","longDescription":"The UOL Účetnictví extractor pulls data from the [UOL Účetnictví](https://www.uol.cz/) cloud\naccounting/ERP system into Keboola Storage via its REST API.\n\n## What it extracts\n\nYou select one object (endpoint) per configuration row. The extractor supports all of UOL's list\nendpoints, including:\n\n- **Sales** — sales invoices, sales orders, retails\n- **Purchases** — purchase invoices, purchase orders\n- **Contacts** — contacts (with addresses), contact bank accounts\n- **Products & pricing** — products, product categories, price lists\n- **Banking** — bank accounts, bank movements, demands for payment\n- **Cash** — petty cashes, cash incomes and disbursements\n- **Accounting** — accounting records, receivables, internal documents\n- **Documents & reference data** — uploaded documents, document templates, currencies, countries,\n  predefined texts, payment rules, departments, companies, contracts\n\nEach object becomes one Storage table; nested line items (e.g. invoice `items`, contact `addresses`,\nreceivable `payments`) are split into linked child tables.\n\n## Load types\n\n- **Full load** (default) — re-reads the whole object on every run.\n- **Incremental load** — for endpoints that expose a date filter, choose the date field and a\n  starting point. The starting point accepts `last_run` (continue from the previous run's watermark),\n  a relative value such as `yesterday` or `5 days ago`, or a fixed `YYYY-MM-DD` date. Rows are\n  upserted on their primary key.\n\n## Authentication\n\nHTTP Basic authentication using your UOL login **email** and an **API token** generated in UOL under\n*Settings → API tokens*. The account must have the **REST API** permission enabled.\n\n## Notes & limitations\n\n- Incremental filtering is only available on the endpoints that expose a date filter; all other\n  objects are full-load only.\n- The API is rate limited (≈30 requests / 10 s); the extractor throttles and retries automatically.","licenseUrl":"https://github.com/keboola/component-ex-uol/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-ex-uol/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-ex-uol","requiredMemory":null,"processTimeout":null,"features":[],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"UOL Connection","required":["server_type","customer_id","email","#api_token"],"properties":{"email":{"type":"string","title":"Email","description":"UOL login email (Basic-auth username).","propertyOrder":3},"#api_token":{"type":"string","title":"API Token","format":"password","description":"Token from UOL Settings → API tokens. The account needs the 'REST API' permission.","propertyOrder":4},"customer_id":{"type":"string","title":"Customer ID","description":"Your UOL customer ID (the subdomain assigned by UOL).","propertyOrder":2},"server_type":{"enum":["production","sandbox"],"type":"string","title":"Server","format":"select","default":"production","description":"Which UOL environment to connect to.","propertyOrder":1},"test_connection":{"type":"button","format":"test-connection","propertyOrder":5}}},"configurationRowSchema":{"type":"object","title":"Object to extract","required":["endpoint","load_type"],"properties":{"probe":{"type":"object","title":"Probe","options":{"collapsed":true},"properties":{"run_probe":{"type":"button","format":"sync-action","options":{"async":{"label":"Run Probe","action":"probe"}},"propertyOrder":2},"probe_limit":{"type":"integer","title":"Sample size","default":5,"maximum":20,"minimum":1,"description":"Preview real sample data for this object before committing to a full extraction. Set the sample size and click **Run Probe**.\n\nWith an object selected (this row), it returns up to this many real records (1–20), flattened exactly as the extraction writes them, plus the object's primary key, date fields and columns. Run it from the connection with no object selected to instead list every available object with its primary key, date fields and columns.\n\nThe result is a JSON object inside the result message (a fenced ```json block).\n\nUse what it returns to set the row up:\n- if the object has date fields → set **Load Type** to incremental and choose a **Date Field**\n- pick the **Columns to extract** you want (the primary key is always kept)\n\nKeep the sample size small; very large results may be truncated.","propertyOrder":1}},"description":"Preview real sample data for this object before running a full extraction.","propertyOrder":6},"columns":{"type":"array","items":{"enum":[],"type":"string"},"title":"Columns to extract","format":"select","options":{"async":{"cache":true,"label":"Re-load columns","action":"listColumns","autoload":false}},"description":"Optional; restrict the output table to these columns; leave empty to extract all columns; primary-key columns are always included.","uniqueItems":true,"propertyOrder":5},"endpoint":{"enum":[],"type":"string","title":"Object / Endpoint","format":"select","options":{"async":{"cache":true,"label":"Re-load objects","action":"listEndpoints","autoload":true}},"description":"Which UOL resource to extract.","propertyOrder":1},"date_from":{"type":"string","title":"Date From","options":{"dependencies":{"load_type":"incremental_load"}},"description":"Lower bound for the selected date field. Accepts 'last_run' (continue from last run), a relative value like 'yesterday' or '5 days ago', or an ISO date (YYYY-MM-DD).","propertyOrder":4},"load_type":{"enum":["full_load","incremental_load"],"type":"string","title":"Load Type","format":"select","default":"full_load","description":"Full load re-reads everything each run. Incremental load filters by a date field from a chosen starting point.","propertyOrder":2},"date_field":{"enum":[],"type":"string","title":"Date Field","format":"select","options":{"async":{"cache":true,"label":"Re-load date fields","action":"listDateFields","autoload":true},"dependencies":{"load_type":"incremental_load"}},"description":"Date field to filter on. Only some endpoints offer date filters.","propertyOrder":3}}},"createConfigurationRowSchema":null,"configurationDescription":"### Connection\n\nSet these once on the configuration:\n\n- **API Base URL** — the full UOL API base URL including `/api`, e.g.\n  `https://test.demo.uol.cz/api` or `https://{customerId}.ucetnictvi.uol.cz/api`.\n- **Email** — your UOL login email (used as the Basic-auth username).\n- **API Token** — a token from UOL *Settings → API tokens*. The account needs the **REST API**\n  permission. Stored encrypted.\n\nUse **Test Connection** to verify the credentials.\n\n### Objects (rows)\n\nAdd one row per object you want to extract:\n\n- **Object / Endpoint** — the UOL resource to extract (e.g. `sales_invoices`, `contacts`).\n- **Date Field** — optional. For endpoints that support it, the date filter to use for incremental\n  loads (e.g. `updated_at_from`, `issue_date_from`). Leave empty for a full load.\n- **Date From** — optional. The incremental lower bound: `last_run` (continue from the last run),\n  a relative value like `yesterday` or `5 days ago`, or a fixed `YYYY-MM-DD` date. Applies only when\n  a Date Field is set.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["listColumns","listDateFields","listEndpoints","probe","testConnection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":43,"uri":"docker/keboola.ex-uol","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-uol","name":"developer-portal-v2/keboola.ex-uol","tag":"0.1.1","options":{},"digest":"sha256:90ddb8d798fe54cf62479bbf75c610d2b2b8d49e46790c8e25378792e702e4c0"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-uol/32/1780932596276.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-uol/64/1780932596276.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-uol/128/1780932596276.png"}},{"id":"keboola.wr-uol","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":38,"name":"UOL","type":"writer","shortDescription":"Writes data from Keboola Storage tables into the UOL Účetnictví accounting system via its REST API.","longDescription":"UOL Účetnictví writer pushes rows from Keboola Storage tables into the [UOL Účetnictví](https://www.uol.cz) cloud accounting system through its [REST API](https://api.uol.cz).\n\nThe component is configured with one configuration row per write target. Each row selects a UOL endpoint (contacts, sales invoices, purchase invoices, products, contact bank accounts), links one input table, and maps the table's columns to the endpoint's fields. Every input row is sent to UOL as a create or upsert call.\n\n## Features\n\n- **Per-endpoint configuration rows** — each row writes one input table to one UOL endpoint, with its own column mapping and write mode.\n- **Explicit column mapping** with assisted setup — a sync action lists the endpoint's fields and auto-maps your input columns to them (with fuzzy name matching), which you can then adjust.\n- **Create or upsert** — for endpoints that expose a unique lookup key (e.g. contacts via `external_id`), upsert creates new records and updates existing ones. Endpoints without a lookup key are create-only.\n- **Nested data** — columns can carry JSON arrays for nested structures such as invoice items or contact addresses.\n- **Optional results table** — an audit table reporting the per-row outcome (success or error) for inspection downstream.\n\n## Authentication\n\nAuthentication uses HTTP Basic auth with the API user's email and an API token. Generate the token in your UOL system under *Settings ▸ Technical ▸ API tokens* and enable the \"REST API\" permission for the user.","licenseUrl":"https://github.com/keboola/component-wr-uol/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-wr-uol/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-wr-uol","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":true,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"UOL Connection","required":["environment","customer_id","email","#api_token"],"properties":{"debug":{"type":"boolean","title":"Debug","default":false,"propertyOrder":99},"email":{"type":"string","title":"API User Email","propertyOrder":3},"#api_token":{"type":"string","title":"API Token","format":"password","propertyOrder":4},"customer_id":{"type":"string","title":"Customer ID","description":"Your UOL customer ID (the subdomain of your UOL instance).","propertyOrder":2},"environment":{"enum":["sandbox","production"],"type":"string","title":"Environment","default":"production","propertyOrder":1},"test_connection":{"type":"button","format":"test-connection","options":{"async":{"label":"Test Connection","action":"testConnection"}},"propertyOrder":5}}},"configurationRowSchema":{"type":"object","title":"UOL Write Target","properties":{"endpoint":{"enum":[],"type":"string","title":"Endpoint","format":"select","options":{"async":{"cache":true,"label":"Load Endpoints","action":"listEndpoints","autoload":true}},"propertyOrder":1},"write_mode":{"enum":["create","upsert"],"type":"string","title":"Write Mode","default":"create","options":{"enum_titles":["Create","Upsert (create or update)"],"dependencies":{"endpoint":["contacts","sales_invoices","purchase_invoices","products"]}},"description":"Upsert creates or updates an existing record using the endpoint's lookup key.","propertyOrder":2},"load_mapping":{"type":"button","format":"sync-action","options":{"async":{"label":"Load / Re-load Column Mapping","action":"loadColumnMapping"}},"propertyOrder":4},"fail_on_error":{"type":"boolean","title":"Fail on First Error","default":false,"propertyOrder":8},"column_mapping":{"type":"array","items":{"type":"object","required":["source","destination"],"properties":{"source":{"type":"string","title":"Source Column","options":{"readOnly":true}},"destination":{"type":"string","title":"UOL Field","watch":{"uol_fields":"_metadata_.uol_fields"},"format":"select","enumSource":[{"title":"{{item.label}}","value":"{{item.field_name}}","source":"uol_fields"}]}}},"title":"Column Mapping","format":"table","propertyOrder":5},"write_results_table":{"type":"boolean","title":"Write Results Table","default":true,"propertyOrder":7},"write_mode_create_only":{"enum":["create"],"type":"string","title":"Write Mode","default":"create","options":{"enum_titles":["Create"],"dependencies":{"endpoint":["contact_bank_accounts"]}},"description":"This endpoint only supports create.","propertyOrder":3}}},"createConfigurationRowSchema":null,"configurationDescription":"Set the UOL environment, customer ID, API user email and API token at the connection level. Then add one configuration row per write target: pick an endpoint, link an input table, load and adjust the column mapping, and choose the write mode (create or upsert).","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["listEndpoints","loadColumnMapping","testConnection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":38,"uri":"docker/keboola.wr-uol","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-uol","name":"developer-portal-v2/keboola.wr-uol","tag":"0.1.0","options":{},"digest":"sha256:5b3f17c837dffd97d074ac34a1fe7fb720e72c1649b5a7bf4578fdd8fffe13cf"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-uol/32/1780932591276.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-uol/64/1780932591276.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-uol/128/1780932591276.png"}},{"id":"fisa.ex-vision-critical","vendor":{"id":"fisa","name":"Martin Fiser","address":"Vancouver, Canada","email":"vfisa.stuff@gmail.com","type":"other"},"version":9,"name":"Vision Critical","type":"extractor","shortDescription":"Extract data from Vision Critical Community Wisdom API","longDescription":"Extract data from Vision Critical public API. Please contact your administrator to obtain login for API communication:   \n - Email    \n - Password   \n - Community ID","licenseUrl":"https://bitbucket.org/VFisa/kbc_visioncritical_extractor/src/f8aa1f1231c3bffe5b79023a4e5c17f63822bc89/Licence.md","documentationUrl":"https://bitbucket.org/VFisa/kbc_visioncritical_extractor/src/f8aa1f1231c3bffe5b79023a4e5c17f63822bc89/Component%20Description.md","sourceCodeUrl":null,"requiredMemory":"512m","processTimeout":3600,"features":["container-root-user"],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":1024,"uiOptions":["genericTemplatesUI"],"imageParameters":{"default_bucket":true},"stackParameters":{},"testConfiguration":{},"configurationSchema":{"type":"object","title":"Parameters","required":["config"],"properties":{"config":{"type":"object","title":"Authorization","properties":{"debug":{"enum":["true","false"],"type":"string","title":"Debug Mode","default":"false","required":true},"email":{"type":"string","title":"Email","required":true,"minLength":1,"description":""},"#password":{"type":"string","title":"Password","format":"password","required":true,"minLength":1,"description":""},"community":{"type":"string","title":"Community","default":"your_community","required":true,"minLength":1}}}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"Extract data from Vision Critical public API. Please contact your administrator to obtain login for API communication: \n- Email \n- Password \n- Community ID","configurationFormat":"yaml","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/fisa.ex-vision-critical","repository":{"type":"dockerhub","uri":"keboola/docker-generic-extractor","name":null,"tag":null,"options":{},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/fisa.ex-vision-critical/32/1.png","64":"https://ui.keboola-assets.com/developer-portal/icons/fisa.ex-vision-critical/64/1.png","128":null}},{"id":"kds-team.ex-warsaw-open-data","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":133,"name":"Warsaw Open Data","type":"extractor","shortDescription":"Extracts data from the City of Warsaw Open Data API.","longDescription":"This compoenent enables users to extract open data resources from the Warsaw government","licenseUrl":null,"documentationUrl":null,"sourceCodeUrl":"https://bitbucket.org/kds_consulting_team/kds-team.ex-warsaw-open-data","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Configuration Schema","required":["#api_key","endpoints"],"properties":{"#api_key":{"type":"string","title":"Api key","format":"password","description":"API Key generated from the <a href='https://api.um.warszawa.pl/'>Warsaw Open Data Portal</a>","propertyOrder":10},"endpoints":{"type":"array","items":{"enum":["trees","groups_of_trees","forests","groups_of_shrubs","shrubs","municipal_waste_segregation","internet_access","purpose_of_computers"],"type":"string","title":"Endpoints","options":{"enum_titles":["Ekologia - Trees","Ekologia - Groups of trees","Ekologia - Forests","Ekologia - Groups of shrubs","Ekologia - Shrubs","Ekologia - Municipal waste segregation","Edukacja - Internet access","Edukacja - Purpose of computers"]},"properties":{}},"title":"Endpoints","format":"select","description":"List of data that you want to fetch from the Warsaw Open Data Portal","uniqueItems":true,"propertyOrder":20}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"Configuration description.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":133,"uri":"docker/kds-team.ex-warsaw-open-data","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-warsaw-open-data","name":"developer-portal-v2/kds-team.ex-warsaw-open-data","tag":"0.1.0","options":{},"digest":"sha256:531b48f5678c2fe1f4fa596ad09368fad0308ea42c257f58b33fede88284e254"},"publishingStatus":"public","icon":{"32":null,"64":null,"128":null}},{"id":"kds-team.ex-weather-api","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":166,"name":"Weather API","type":"extractor","shortDescription":"Extracts forecast and historical weather data from Weather API.","longDescription":"This component enables users to extract forecast and historical weather data from the [Weather API](https://www.weatherapi.com).\n\nWeather API is offered as a free and paid service.\n\nThe component can fetch data according to a single parameter or multiple from the input table.\n\nEach row in the input table is a single request to the API.","licenseUrl":"https://github.com/keboola/component-weather-api/blob/main/LICENSE.md","documentationUrl":"https://help.keboola.com/components/extractors/other/weather-api/","sourceCodeUrl":"https://github.com/keboola/component-weather-api","requiredMemory":null,"processTimeout":21600,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"extractor configuration","required":[],"properties":{"authentication":{"type":"object","title":"Authentication Settings","properties":{"#api_token":{"type":"string","title":"API Token","format":"password","description":"API token from you Weather API account","propertyOrder":10},"test_connection":{"type":"button","format":"test-connection","propertyOrder":60}},"propertyOrder":10},"fetching_settings":{"type":"object","title":"Fetching Settings","properties":{"request_type":{"enum":["forecast","history"],"type":"string","title":"Request Type","format":"select","default":"si","options":{"enum_titles":["Forecast","History"]},"required":true,"propertyOrder":20},"forecast_days":{"type":"integer","title":"Forecast Days","default":"10","maximum":14,"minimum":1,"options":{"dependencies":{"request_type":"forecast","fetch_parameter_from":"config_parameters"}},"required":true,"description":"Number of days of forecast required.","propertyOrder":40},"location_query":{"type":"string","title":"Location","default":"New York","options":{"dependencies":{"fetch_parameter_from":"config_parameters"}},"required":true,"description":"Query parameter for location. It could be Latitude and Longitude (Decimal degree) e.g 48.8567,2.3508, or city name e.g. Paris","propertyOrder":30},"historical_date":{"type":"string","title":"Historical Date","default":"2022-09-09","options":{"dependencies":{"request_type":"history","fetch_parameter_from":"config_parameters"}},"required":true,"description":"Date to fetch historical data from, either exact date in YYYY-MM-DD format or relative date e.g: last week.","propertyOrder":50},"continue_on_failure":{"type":"boolean","title":"Continue On Failure","format":"checkbox","default":true,"options":{"dependencies":{"fetch_parameter_from":"input_table"}},"description":"If selected, if a request for a  specific loaction/time fails, the component continues to run and ends with a success. If not, the component fails","propertyOrder":70},"fetch_parameter_from":{"enum":["config_parameters","input_table"],"type":"string","title":"Parameters From","format":"select","default":"config_parameters","options":{"enum_titles":["Configuration Parameters","Using An Input Table"]},"required":true,"description":"Select which way you prefer to input the fetching parameter, either by inputting them via the configuration or via an input table.","propertyOrder":10}},"propertyOrder":20},"destination_settings":{"type":"object","title":"Destination Settings","properties":{"load_type":{"enum":["full_load","incremental_load"],"type":"string","title":"Load Type","format":"checkbox","default":"incremental_load","options":{"enum_titles":["Full Load","Incremental Load"]},"description":"If Full load is used, the destination table will be overwritten every run. If incremental load is used, data will be upserted into the destination table.","propertyOrder":20}},"propertyOrder":30}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"[Weather API](https://www.weatherapi.com) is a service that provides data of Real Time, Forecasted, Future, Marine and Historical Weather\nThis component enables users to extract forecast and historical weather data from the [Weather API](https://www.weatherapi.com).\n\nIf the **Parameters From** is set to **Configuration Parameters** set the fetching parameters in the configuration parameters.\n\nIf the **Parameters From** is set to **Using An Input Table**, a single input table can be used to set parameters for fetching.\n\n* The table must contain a 'location' column, or a 'latitude' and 'longitude' column to define the location to fetch for.\n* If Request Type is set to 'forecast', a 'forecast_days' column can be added, that defines the 'forecast_days' from the configuration, If it is not added, the 'forecast_days' defaults to 10.\n* If Request Type is set to 'history', a 'historical_date' column must be added, that defines the 'historical_date' from the configuration.\n\nEach row in the input table is a single request to the API.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["testConnection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.ex-weather-api","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-weather-api","name":"developer-portal-v2/kds-team.ex-weather-api","tag":"1.0.1","options":{},"digest":"sha256:3e1484c9b47f7856dd36f3a9024d45c25636e979d0d9d7dcdaf91abeb2c6b17b"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-weather-api/32/1682265342890.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-weather-api/64/1682265342890.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-weather-api/128/1682265342890.png"}},{"id":"keboola.wr-webdav","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":38,"name":"WebDAV","type":"writer","shortDescription":"Uploads tables and files from Keboola Storage to a WebDAV server, supporting custom remote paths, optional timestamp suffixes, and flexible datetime formats.","longDescription":"The WebDAV Writer allows you to seamlessly export data from Keboola Storage to any WebDAV-compatible server.\n\nIt scans your component’s input directories and automatically uploads tables and files to your chosen WebDAV destination. Each file’s name and path can be customized, and you can optionally append a timestamp suffix in various formats, enabling easy file versioning and organization on the remote server.\n\nThe writer supports flexible configuration of the WebDAV connection, including authentication credentials and remote paths, and ensures robust error handling to safeguard your uploads.\n\nThis component is designed as a modern, maintainable replacement for legacy implementations, bringing better performance, clearer configuration validation, and improved logging and security.\n\nUse the WebDAV Writer to integrate Keboola with external systems, backup solutions, or any services supporting the WebDAV protocol, enabling smooth, automated data distribution to your infrastructure or partners.","licenseUrl":"https://github.com/keboola/component-webdav-writer/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/component-webdav-writer/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/component-webdav-writer","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-tableInput","genericDockerUI-processors","genericDockerUI-fileInput"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"WebDAV Writer Configuration","required":["authorization"],"properties":{"authorization":{"type":"object","title":"Authorization","options":{"section":"Authorization","collapsed":false},"required":["webdav_hostname","username","#password"],"properties":{"username":{"type":"string","title":"Username","propertyOrder":2},"#password":{"type":"string","title":"Password","format":"password","propertyOrder":3},"webdav_hostname":{"type":"string","title":"WebDAV Server URL","format":"uri","description":"Example: https://myserver.com","propertyOrder":1}},"propertyOrder":1}}},"configurationRowSchema":{"type":"object","title":"WebDAV Sync Options","required":["sync_options"],"properties":{"sync_options":{"type":"object","title":"Synchronization Options","options":{"section":"Sync Options","collapsed":false},"required":["remote_path","append_datetime"],"properties":{"remote_path":{"type":"string","title":"Remote Path","default":"/","description":"Remote folder where files will be uploaded. E.g. /reports/ or /.","propertyOrder":1},"append_datetime":{"type":"boolean","title":"Append Datetime Suffix","default":false,"description":"If enabled, adds a timestamp suffix to each file name on upload.","propertyOrder":2},"datetime_format":{"enum":["%Y-%m-%d","%Y-%m-%d_%H-%M-%S","%Y%m%d","%Y%m%d_%H%M%S","{epoch}"],"type":"string","title":"Datetime Suffix Format","default":"%Y-%m-%d","options":{"dependencies":{"append_datetime":true}},"enumNames":["YYYY-MM-DD","YYYY-MM-DD_HH-mm-ss","YYYYMMDD","YYYYMMDD_HHMMSS","Timestamp (Epoch)"],"description":"Choose how to format timestamps added to filenames.","propertyOrder":3}},"propertyOrder":1}}},"createConfigurationRowSchema":null,"configurationDescription":"Configure the WebDAV Writer by specifying your WebDAV connection details and how you'd like your files stored remotely.\n\n- **Authorization** (Required)  \n  Provide your WebDAV server credentials:\n  - **WebDAV Hostname**: The URL of your WebDAV server, e.g. `https://webdav.example.com`.\n  - **Username**: Your WebDAV login username.\n  - **Password**: Your WebDAV login password (stored securely).\n\n- **Synchronization Options** (Required)  \n  Control how your data is organized on the remote server:\n  - **Remote Path**: The base folder on your WebDAV server where files will be uploaded, e.g. `/backup/files/`.\n  - **Append Datetime**: If enabled, a timestamp is added to filenames for easier versioning.\n  - **Datetime Format**: Select the format for the timestamp suffix, such as `YYYY-MM-DD` or `YYYYMMDD_HHMMSS`.\n\nDuring execution, the WebDAV Writer scans the input directories (`/data/in/tables/` and `/data/in/files/`) and uploads all discovered files to your configured WebDAV destination.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":38,"uri":"docker/keboola.wr-webdav","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-webdav","name":"developer-portal-v2/keboola.wr-webdav","tag":"0.0.3","options":{},"digest":"sha256:5cf31839e258aba1794fc10293d30a847cf81cc890c8bf24e2b6c319e1325825"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-webdav/32/1753394830185.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-webdav/64/1753394830185.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-webdav/128/1753394830185.png"}},{"id":"keboola.app-what3words","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":31,"name":"What3words Augmentation","type":"extractor","shortDescription":"Converts addresses between what3words 3-word addresses and GPS coordinates.","longDescription":"This component uses the [what3words RESTful API](https://docs.what3words.com/api/v2/#overview) to translate [what3words](https://what3words.com/) addresses to coordinates and vice versa. \n\nTo configure this extractor, you need to have \n\n- a working what3words **account**,\n- a what3words [**API key**](https://docs.what3words.com/api/v2/#overview), and \n- a **table** with your data (containing either one column with addresses, or two columns with coordinates). \n\nEach translated address requires one API call.","licenseUrl":"https://github.com/keboola/app-what3words/blob/master/LICENSE","documentationUrl":"https://help.keboola.com/extractors/other/what3words/","sourceCodeUrl":"https://github.com/keboola/app-what3words","requiredMemory":null,"processTimeout":null,"features":["container-root-user"],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"out","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"medium","category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput","appInfo.dataOut"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Person","required":["lang","#apiKey","direction"],"properties":{"lang":{"type":"string","title":"Language Code","default":"en","minLength":2,"description":"See https://docs.what3words.com/api/v2/#reverse-params for more information about the supported languages.","propertyOrder":3},"#apiKey":{"type":"string","title":"API Key","description":"See https://docs.what3words.com/api/v2/#overview for more information about obtaining the token.","propertyOrder":2},"direction":{"enum":["forward","reverse"],"type":"string","title":"Direction","description":"Forward converts w3w addresses to latitude and longitude.","propertyOrder":1}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"To turn what3words addresses into coordinates, choose the `forward` direction and input only one table with a single column containing the what3words addresses.\n\nTo convert coordinates to what3words addresses, choose the `reverse` direction and input one or more tables with two columns containing latitude and longitude. \n\nThe names of the tables and columns are arbitrary.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.app-what3words","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.app-what3words","name":"developer-portal-v2/keboola.app-what3words","tag":"0.1.0","options":{},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.app-what3words/32/4.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.app-what3words/64/4.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.app-what3words/128/4.png"}},{"id":"kds-team.ex-woocommerce","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":273,"name":"WooCommerce","type":"extractor","shortDescription":"Extracts WooCommerce orders, products, and customers.","longDescription":"WooCommerce API Plugin\n\nDownload all data under `Orders`, `Products`, and `Customer` hierarchies\n\nRequirements:\n\nTo enable this application you need to:\n\n- API Version: v3\n- [Rest API Keys](https://woocommerce.github.io/woocommerce-rest-api-docs/#authentication)\n- [Rest API Secret](https://woocommerce.github.io/woocommerce-rest-api-docs/#authentication)\n\nGenerating API keys in the WordPress admin interface\n\nTo create or manage keys for a specific WordPress user:\n\n- go to `WooCommerce > Settings > API > Keys/Apps`.\n- Click the \"Add Key\" button. In the next screen, add a description and select the WordPress user you would like to generate the key for\n- Choose the level of access for this REST API key, which can be Read access. \n- Then click the \"Generate API Key\" button and WooCommerce will generate REST API keys. These two keys are your Consumer Key and Consumer Secret.","licenseUrl":"https://github.com/keboola/component-woocommerce/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-woocommerce/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-woocommerce","requiredMemory":"1024m","processTimeout":14400,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["E-commerce"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"extractor configuration","required":["store_url","#consumer_key","#consumer_secret","load_type","endpoint"],"properties":{"date_to":{"type":"string","title":"To date [exclusive]","default":"now","options":{"dependencies":{"fetching_mode":"Incremental Fetching with publish date"}},"description":"Date to. Date in YYYY-MM-DD format or a string i.e. 5 days ago, 1 month ago, yesterday, etc. If left empty, all records are downloaded.","propertyOrder":600},"endpoint":{"type":"array","items":{"enum":["Customers","Orders","Products"],"type":"string"},"title":"Endpoint","format":"select","default":["Customers","Orders","Products"],"options":{"grid_columns":12},"description":"To fetch data from selected endpoints i.e. Customers, Orders and Products. Note that the Customers endpoint is not affected by the selected period.","uniqueItems":true,"propertyOrder":900},"date_from":{"type":"string","title":"From date [inclusive]","default":"1 week ago","options":{"dependencies":{"fetching_mode":"Incremental Fetching with publish date"}},"description":"Date from. Date in YYYY-MM-DD format or a string i.e. 5 days ago, 1 month ago, yesterday, etc. If left empty, all records are downloaded.","propertyOrder":500},"load_type":{"enum":[0,1],"type":"number","title":"Load type","default":1,"options":{"enum_titles":["Full Load","Incremental Update"]},"description":"If set to Incremental update, the result tables will be updated based on primary key. Full load overwrites the destination table each time. NOTE: If you wish to remove deleted records, this needs to be set to Full load and the Period from attribute empty.","propertyOrder":400},"store_url":{"type":"string","title":"Store URL","description":"Your shop domain name, e.g. https://myshop.com","propertyOrder":100},"#consumer_key":{"type":"string","title":"Consumer Key","format":"password","description":"Rest API Consumer Key from WooCommerce Admin panel","propertyOrder":200},"fetching_mode":{"enum":["Incremental Fetching with publish date","Incremental Fetching with custom field","Full Download"],"type":"string","title":"Fetching mode","default":"Incremental Fetching with publish date","required":true,"description":"If set to Incremental Fetching with publish date, data will be fetched that has been published in a defined date range. Full Download downloads all data. Incremental Fetching with custom field allows the use of a custom field","propertyOrder":400},"#consumer_secret":{"type":"string","title":"Consumer secret","format":"password","description":"Rest API Consumer Secret from WooCommerce Admin panel","propertyOrder":300},"query_string_auth":{"type":"boolean","title":"Include authorization keys in query string","format":"checkbox","default":false,"description":"Select this option if you receive 401 errors from your server. Some servers may have issues with standard Authorization header processing.","propertyOrder":350},"custom_incremental_field":{"type":"string","title":"Custom Incremental Parameter","default":"modified_after","options":{"dependencies":{"fetching_mode":"Incremental Fetching with custom field"}},"description":"Custom parameter in WooCommerce for incremental fetching","propertyOrder":700},"custom_incremental_value":{"type":"string","title":"Custom From date","default":"2 days ago","options":{"dependencies":{"fetching_mode":"Incremental Fetching with custom field"}},"description":"Date from for the custom incremental fetching parameter. Date in YYYY-MM-DD format or a string i.e. 5 days ago, 1 month ago, yesterday, etc.","propertyOrder":800}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"To download data form WooCommerce we need to configure\n\n- `store_url` Website Domain name where WooCommerce is hosted. e.g. https://myshop.com\n- `consumer_key` Rest API Consumer Key from WooCommerce Admin panel\n- `consumer_secret` Rest API Consumer Secret from WooCommerce Admin panel\n- `fetching_mode` If set to Incremental Fetching with publish date, data will be fetched that has been published in the date range. Full Download downloads all data. Incremental Fetching with custom field allows the use of a custom field\n- `custom_incremental_field` Custom parameter in WooCommerce for incremental fetching\n- `custom_incremental_value` Inclusive Date in YYYY-MM-DD format or a string i.e. 5 days ago, 1 month ago, yesterday, etc. which will be used for fetching with the custom fetching field\n- `date_from` Inclusive Date in YYYY-MM-DD format or a string i.e. 5 days ago, 1 month ago, yesterday, etc.\n- `date_to` Exclusive Date in YYYY-MM-DD format or a string i.e. 5 days ago, 1 month ago, yesterday, etc.\n- `load_type` If set to Incremental update, the result tables will be updated based on primary key. Full load overwrites the destination table each time. NOTE: If you wish to remove deleted records, this needs to be set to Full load and the Period from attribute empty.\n- `endpoint` To fetch data from selected endpoints i.e. Customers, Orders and Products. Default selection is all\ni.e.\n- Orders endpoint list all orders for give date range\n- Products endpoint list all Products for given date range\n- Customers endpoint list all customers\n\n__NOTE:__ *The date selection does not affect Customers endpoint*\n\n**Getting the token:**\n\nTo create or manage keys for a specific WordPress user, go to `WooCommerce > Settings > API > Keys/Apps`.\nClick the `Add Key` button. In the next screen, add a description and select the WordPress user you would like to generate the key for\nChoose the level of access for this REST API key, which can be Read access. Then click the `Generate API Key` button and WooCommerce will generate REST API keys\nThese two keys are your Consumer Key and Consumer Secret.\n\n\n**Custom Fetching:**\n\nYou can use [this plugin](https://wordpress.org/plugins/products-and-orders-last-modified-for-wc-rest-api/) or implement the custom incremental field by yourself.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":273,"uri":"docker/kds-team.ex-woocommerce","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-woocommerce","name":"developer-portal-v2/kds-team.ex-woocommerce","tag":"1.4.1","options":{},"digest":"sha256:181ba3f0ed803c17d8729a10515835064ab84454df6e2ff784208a9eb5bc7aad"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-woocommerce/32/1615281618002.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-woocommerce/64/1615281618002.png","128":null}},{"id":"keboola.ex-x-ads","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":36,"name":"X Ads","type":"extractor","shortDescription":"Extracts X Ads (Twitter Ads) accounts, campaigns, line items, promoted tweets and performance analytics into Keboola Storage.","longDescription":"The X Ads extractor pulls advertising data from the [X Ads API](https://docs.x.com/x-ads-api) (formerly\nTwitter Ads) into Keboola Storage, so you can build ad reporting and blend it with the rest of your data.\n\n## Features\n\n- **Campaign-management entities** — extract accounts, funding instruments, campaigns, line items,\n  promoted tweets, promoted accounts and media creatives. Pick exactly which objects you need.\n- **Performance analytics** — pull metrics (engagement, billing, video, conversions, ...) via the\n  asynchronous analytics jobs, at daily, hourly or total granularity, for the entity levels you choose.\n- **Incremental loading** — output tables are upserted on their primary key and the extractor keeps a\n  watermark of the last run, so scheduled runs only fetch what changed.\n- **Multiple accounts** — extract from several X Ads accounts in a single configuration.\n\n## Authentication\n\nThe X Ads API requires **OAuth 1.0a** user-context authentication. Provide the four credentials from your\nX developer App (Consumer API Key & Secret, Access Token & Secret). The access token is long-lived, so you\ngenerate it once and paste it into the configuration — there is no interactive login at run time.\n\n> Your developer App must be **approved for the Ads API** by X before any endpoint will return data.","licenseUrl":"https://github.com/keboola/component-x-ads/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-x-ads/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-x-ads","requiredMemory":null,"processTimeout":null,"features":[],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"X Ads Extractor configuration","properties":{"account_ids":{"type":"array","items":{"enum":[],"type":"string"},"title":"Ad Accounts","format":"select","default":[],"options":{"tags":true,"async":{"label":"Load Accounts","action":"listAccounts","autoload":["#consumer_key","#consumer_secret","#access_token","#access_token_secret"]}},"description":"Select the X (Twitter) Ads accounts to extract data for.","uniqueItems":true,"propertyOrder":6},"#access_token":{"type":"string","title":"Access Token","format":"password","required":true,"propertyOrder":3},"#consumer_key":{"type":"string","title":"Consumer API Key","format":"password","required":true,"propertyOrder":1},"test_connection":{"type":"button","format":"test-connection","options":{"async":{"label":"Test Connection","action":"testConnection"}},"propertyOrder":5},"#consumer_secret":{"type":"string","title":"Consumer API Secret","format":"password","required":true,"propertyOrder":2},"#access_token_secret":{"type":"string","title":"Access Token Secret","format":"password","required":true,"propertyOrder":4}}},"configurationRowSchema":{"type":"object","title":"X Ads Extractor row configuration","properties":{"object":{"enum":["","accounts","funding_instruments","campaigns","line_items","promoted_tweets","promoted_accounts","media_creatives"],"type":"string","title":"Object to extract","default":"","options":{"enum_titles":["— None (analytics only) —","Accounts","Funding Instruments","Campaigns","Line Items","Promoted Tweets","Promoted Accounts","Media Creatives"]},"description":"Campaign-management entity to extract as a table. Leave unselected for an analytics-only row.","propertyOrder":1},"analytics":{"type":"object","title":"Analytics","properties":{"n_days":{"type":"integer","title":"Number of days","default":7,"maximum":90,"minimum":1,"options":{"dependencies":{"enabled":true,"date_range_mode":"last_n_days"}},"description":"Number of trailing days (including today) to fetch analytics for.","propertyOrder":7},"enabled":{"type":"boolean","title":"Enable analytics","format":"checkbox","default":false,"propertyOrder":1},"end_date":{"type":"string","title":"End date","options":{"dependencies":{"enabled":true,"date_range_mode":"custom"},"inputAttributes":{"placeholder":"YYYY-MM-DD or e.g. today"}},"description":"Window end (exclusive). Accepts an absolute date (YYYY-MM-DD) or a relative expression like 'today' or 'yesterday'.","propertyOrder":9},"entities":{"type":"array","items":{"enum":["ACCOUNT","FUNDING_INSTRUMENT","CAMPAIGN","LINE_ITEM","PROMOTED_TWEET","PROMOTED_ACCOUNT"],"type":"string"},"title":"Entities","format":"select","default":[],"options":{"tooltip":"Each selected level produces an `x_ads_stats_<entity>` table (e.g. Line Item → per-line-item metrics).  \n\n[X Ads analytics docs](https://docs.x.com/x-ads-api/analytics)","enum_titles":["Account","Funding Instrument","Campaign","Line Item","Promoted Tweet","Promoted Account"],"dependencies":{"enabled":true}},"description":"Entity levels to pull performance stats for.","uniqueItems":true,"propertyOrder":2},"placement":{"enum":["ALL_ON_TWITTER","PUBLISHER_NETWORK"],"type":"string","title":"Placement","default":"ALL_ON_TWITTER","options":{"tooltip":"**All on Twitter** — on X itself.  \n**Publisher Network** — X Audience Platform / off-X placements.  \n\nMetrics are reported separately per placement, so pick the surface you want to measure.","enum_titles":["All on Twitter","Publisher Network"],"dependencies":{"enabled":true}},"description":"Where the ads were served.","propertyOrder":5},"start_date":{"type":"string","title":"Start date","options":{"dependencies":{"enabled":true,"date_range_mode":"custom"},"inputAttributes":{"placeholder":"YYYY-MM-DD or e.g. 30 days ago"}},"description":"Window start. Accepts an absolute date (YYYY-MM-DD) or a relative expression like 'yesterday', '30 days ago' or 'last monday'.","propertyOrder":8},"granularity":{"enum":["DAY","TOTAL","HOUR"],"type":"string","title":"Granularity","default":"DAY","options":{"tooltip":"**Day** — one row per day.  \n**Hour** — one row per hour.  \n**Total** — a single aggregate over the whole date range.","enum_titles":["Day","Total","Hour"],"dependencies":{"enabled":true}},"description":"Time bucketing for the metrics.","propertyOrder":4},"metric_groups":{"type":"array","items":{"enum":["ENGAGEMENT","BILLING","VIDEO","MEDIA","WEB_CONVERSION","MOBILE_CONVERSION","LIFE_TIME_VALUE_MOBILE_CONVERSION"],"type":"string"},"title":"Metric groups","format":"select","default":["ENGAGEMENT","BILLING"],"options":{"tooltip":"**Engagement** — impressions/clicks/likes/retweets/etc.  \n**Billing** — spend & billed charges.  \n**Video** — view quartiles.  \n**Media** — media views/engagements.  \n**Web/Mobile Conversion** — conversion events.  \n\n[X Ads metrics & segmentation docs](https://docs.x.com/x-ads-api/analytics/metrics-and-segmentation)","enum_titles":["Engagement","Billing","Video","Media","Web Conversion","Mobile Conversion","Life Time Value Mobile Conversion"],"dependencies":{"enabled":true}},"description":"Which metric families to fetch.","uniqueItems":true,"propertyOrder":3},"date_range_mode":{"enum":["last_n_days","custom"],"type":"string","title":"Date range mode","default":"last_n_days","options":{"enum_titles":["Last N Days","Custom Date Range"],"dependencies":{"enabled":true}},"propertyOrder":6}},"propertyOrder":2},"load_type":{"enum":["full_load","incremental_load"],"type":"string","title":"Load type","default":"incremental_load","options":{"tooltip":"**Full load** overwrites the destination tables on every run.\n\n**Incremental load** upserts rows based on the primary key, keeping previously loaded data.","enum_titles":["Full Load","Incremental Load"]},"description":"How data is written to the destination tables.","propertyOrder":3}}},"createConfigurationRowSchema":null,"configurationDescription":"### Authentication\n\nProvide the four OAuth 1.0a credentials from your X developer App (which must be approved for the Ads API):\n\n- **Consumer API Key** / **Consumer API Secret** — your App's keys.\n- **Access Token** / **Access Token Secret** — generated for a user with access to the ad account(s).\n\nUse **Test Connection** to verify the credentials.\n\n- **Ad Accounts** — select the X Ads account(s) to extract from. This selection is shared by every row.\n\n### Rows — one per extraction\n\nThis component is **row-based**: the authentication and account selection above live on the main\nconfiguration, and each **row** defines one independent extraction that runs on its own (in row order,\nwith its own incremental state). A typical setup is one row for entities and another for analytics.\n\nEach row has:\n\n- **Objects to extract** — the campaign-management entities you want (campaigns, line items, promoted\n  tweets, ...). Each becomes an output table `x_ads_<object>`.\n- **Analytics** — enable to pull performance metrics. Choose the entity levels, metric groups,\n  granularity and date range. Each entity level becomes an output table `x_ads_stats_<entity>`.\n- **Load type**:\n  - **incremental_load** (default) — upserts on the primary key and only fetches data since the last run.\n  - **full_load** — overwrites the output tables on every run.\n\n> Tip: because rows write to shared table names (`x_ads_<object>` / `x_ads_stats_<entity>`), avoid\n> extracting the same object in two rows with **full_load** — the later row would overwrite the earlier.\n> With **incremental_load** the rows safely upsert into the same table.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["listAccounts","testConnection"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-x-ads","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-x-ads","name":"developer-portal-v2/keboola.ex-x-ads","tag":"0.0.2","options":{},"digest":"sha256:f5a79aed469eb4b0658dc64331617e1526089fde91222f9c9b7e2367221876fa"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-x-ads/32/1784634055560.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-x-ads/64/1784634055560.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-x-ads/128/1784634055560.png"}},{"id":"keboola.wr-xero-accounting","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":288,"name":"Xero Accounting","type":"writer","shortDescription":"Write data from Keboola Storage to Xero Accounting — sync contacts, invoices, payments, purchase orders, journals, and more.","longDescription":"The Xero Accounting Writer enables seamless synchronisation of data from Keboola Storage into [Xero](https://www.xero.com/), a cloud-based accounting platform trusted by millions of businesses worldwide. Whether you are automating the creation of invoices, syncing supplier contacts from a CRM, importing payroll employees, or pushing journal entries from an external system, this component provides a unified, configuration-driven way to write accounting data to Xero without custom code.\n\nAll entity types are processed in a single component run using one OAuth session, eliminating token conflicts when writing multiple tables. Each entity is configured with its own source table and write mode, giving you precise control over which data flows to Xero and how.\n\n**Supported entity types:**\n\n- **Contacts** — Suppliers and customers with addresses and phone numbers\n- **Invoices** — Accounts receivable and payable invoices with line items\n- **Payments** — Invoice payment records linked to bank accounts\n- **Purchase Orders** — Supplier purchase orders with line items and delivery details\n- **Manual Journals** — Custom journal entries for bookkeeping adjustments\n- **Items** — Product and service catalogue with sales and purchase pricing\n- **Credit Notes** — Credit notes for receivable and payable accounts\n- **Currencies** — Organisation currency configuration\n- **Employees** — Basic employee records for payroll integration\n- **Quotes** — Sales quotes with expiry dates and line items\n- **Tracking Categories** — Custom tracking dimensions for reporting\n- **Bank Transactions** — Spend and receive money transactions\n\n**Key features:**\n\n- **Upsert and create modes** — Upsert creates new records or updates existing ones by Xero ID or natural key; create mode adds new records only\n- **Single OAuth session** — All entities are written in one execution, avoiding multiple token refresh cycles\n- **Multi-tenant support** — Specify a Tenant ID explicitly or let the component auto-select the first available Xero organisation\n- **Flat CSV input** — Each entity maps from a flat CSV table using named columns; empty cells are safely ignored\n- **Batch processing** — Records are submitted in batches with per-record validation error reporting\n- **Automatic token refresh** — The OAuth token is refreshed at startup and the new token is persisted to component state for subsequent runs","licenseUrl":"https://github.com/keboola/component-xero-accounting-writer/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/component-xero-accounting-writer/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-xero-accounting-writer","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":true,"forwardTokenDetails":true,"injectEnvironment":false,"complexity":null,"category":null,"categories":["ERP"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput","genericDockerUI-authorization","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Xero Accounting Writer","properties":{"entities":{"type":"array","items":{"type":"object","title":"Endpoint","required":["entity_type","write_mode","source_table"],"properties":{"write_mode":{"enum":["create","upsert"],"type":"string","title":"Write Mode","default":"upsert","options":{"enum_titles":["Create (POST)","Upsert (POST + PUT)"]},"description":"Create: add new records only. Upsert: create or update by Xero ID or reference.","propertyOrder":20},"entity_type":{"enum":["Contacts","Invoices","Payments","PurchaseOrders","ManualJournals","Items","CreditNotes","Currencies","Employees","Quotes","TrackingCategories","BankTransactions"],"type":"string","title":"Endpoint Type","options":{"enum_titles":["Contacts","Invoices","Payments","Purchase Orders","Manual Journals","Items","Credit Notes","Currencies","Employees","Quotes","Tracking Categories","Bank Transactions"]},"propertyOrder":10},"source_table":{"type":"string","title":"Input Table Name","description":"The destination name of the input table as configured in storage mapping.","propertyOrder":30},"column_mapping":{"type":"array","items":{"type":"object","title":"Column","required":["source","destination"],"properties":{"source":{"type":"string","title":"Source Column","options":{"creatable":true},"enumSource":"columns","propertyOrder":10},"required":{"type":"boolean","title":"Required","format":"checkbox","propertyOrder":30},"destination":{"type":"string","title":"Xero Field Name","propertyOrder":20}}},"title":"Column Mapping","format":"table","options":{"tooltip":"Maps your **Source Column** to the target **Xero Field Name**.\n\nClick **Reload All Mappings** (above the endpoints list) to auto-fill based on your input table columns.\n\nNested Xero objects are flattened with underscore notation — e.g. `Address_City` represents the `city` field inside the `addresses` object. See the [Xero API documentation](https://developer.xero.com/documentation/api/accounting/overview) for field definitions.\n\nNon-essential fields with no matching source column can be deleted."},"description":"Maps your input table columns to Xero field names. Click Reload All Mappings to auto-fill.","propertyOrder":40}}},"title":"Endpoints to Write","propertyOrder":20},"tenant_id":{"enum":[],"type":"string","title":"Tenant ID","format":"select","options":{"async":{"label":"Re-load tenants","action":"listTenants"}},"description":"Xero organisation ID. Leave blank to use the first available tenant.","propertyOrder":10},"create_errors_table":{"type":"boolean","title":"Create Errors Table","format":"checkbox","default":false,"description":"When enabled, records that fail Xero validation are written to an output table 'validation_errors' with columns: entity_type, record_id, errors.","propertyOrder":16},"reload_all_mappings":{"type":"button","title":"Reload All Mappings","format":"sync-action","options":{"async":{"cache":false,"label":"Reload All Mappings","action":"loadFieldSuggestions"}},"description":"Auto-match columns for all configured endpoints based on their input tables.","propertyOrder":19},"skip_validation_errors":{"type":"boolean","title":"Continue on Error","format":"checkbox","default":false,"description":"When enabled, records that fail Xero validation are skipped with a warning. When disabled (default), the job fails if any record has validation errors.","propertyOrder":15}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["listTenants","loadFieldSuggestions"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.wr-xero-accounting","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.wr-xero-accounting","name":"developer-portal-v2/keboola.wr-xero-accounting","tag":"0.1.1","options":{},"digest":"sha256:6d8503011f47f4ba5c350ea4c485b02295a1b196b6f91f3e9c259c11a7f8229a"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-xero-accounting/32/1771860968407.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-xero-accounting/64/1771860968407.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.wr-xero-accounting/128/1771860968407.png"}},{"id":"keboola.ex-xero-accounting-reports","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":251,"name":"Xero Accounting Reports","type":"extractor","shortDescription":"Extracts financial reports from the Xero Accounting API.","longDescription":"The component allows extracting financial reports from Xero, a cloud-based accounting software platform trusted by millions of businesses worldwide. Xero provides comprehensive financial management capabilities including invoicing, bank reconciliation, inventory tracking, and powerful reporting tools. By connecting Keboola with Xero, this component enables seamless extraction of accounting reports such as Profit & Loss, Balance Sheet, Trial Balance, Executive Summary, Bank Summary, Budget Summary, and Aged Receivables/Payables into KBC Storage. This makes it easier for finance teams and data analysts to integrate financial data with other business metrics, perform advanced analytics, create consolidated reporting dashboards, and gain deeper insights into their organization's financial performance.","licenseUrl":"https://github.com/keboola/component-xero-accounting-reports/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/component-xero-accounting-reports/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/component-xero-accounting-reports","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":true,"forwardTokenDetails":true,"injectEnvironment":false,"complexity":"medium","category":null,"categories":["Accounting","ERP"],"dataTypeSupport":"authoritative","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-authorization","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Xero Reports Extractor Configuration","required":["reports"],"properties":{"reports":{"type":"array","items":{"type":"object","title":"Report","required":["report_type"],"properties":{"date":{"type":"string","title":"Date","options":{"dependencies":{"report_type":["AgedPayablesByContact","AgedReceivablesByContact","BalanceSheet","BudgetSummary","ExecutiveSummary","TrialBalance"]}},"description":"Report date (use dynamic dates like 'yesterday', '3 months ago')","propertyOrder":3},"periods":{"type":"integer","title":"Periods","options":{"dependencies":{"report_type":["BalanceSheet","BudgetSummary","ProfitAndLoss"]}},"description":"Number of periods to compare","propertyOrder":7},"to_date":{"type":"string","title":"To Date","options":{"dependencies":{"report_type":["AgedPayablesByContact","AgedReceivablesByContact","BankSummary","ProfitAndLoss"]}},"description":"End date for report period","propertyOrder":5},"from_date":{"type":"string","title":"From Date","options":{"dependencies":{"report_type":["AgedPayablesByContact","AgedReceivablesByContact","BankSummary","ProfitAndLoss"]}},"description":"Start date for report period (use dynamic dates like 'yesterday', '3 months ago')","propertyOrder":4},"report_id":{"type":"string","title":"Report ID","options":{"dependencies":{"report_type":["BASReport","GSTReport"]}},"description":"Report ID (required)","propertyOrder":15},"timeframe":{"enum":["MONTH","QUARTER","YEAR"],"type":"string","title":"Timeframe","options":{"dependencies":{"report_type":["BalanceSheet","BudgetSummary","ProfitAndLoss"]}},"description":"Timeframe unit","propertyOrder":8},"contact_id":{"type":"string","title":"Contact ID","options":{"dependencies":{"report_type":["AgedPayablesByContact","AgedReceivablesByContact"]}},"description":"Filter by specific contact","propertyOrder":6},"destination":{"type":"object","title":"Destination","required":["load_type"],"properties":{"load_type":{"enum":["full_load","incremental_load"],"type":"string","title":"Load Type","format":"checkbox","default":"full_load","options":{"enum_titles":["Full Load","Incremental Load"]},"description":"If Full load is used, the destination table will be overwritten every run. If incremental load is used, data will be upserted into the destination table. Tables with a primary key will have rows updated, tables without a primary key will have rows appended.","propertyOrder":20},"primary_keys":{"type":"array","items":{"enum":[],"type":"string"},"title":"Primary Keys","format":"select","options":{"async":{"label":"GET COLUMNS","action":"get_output_columns"},"creatable":true,"dependencies":{"load_type":"incremental_load"}},"description":"Select primary key columns for incremental loads. Use the 'Get Columns' button to see available columns. Required for incremental loads.","uniqueItems":true,"propertyOrder":30},"output_table_name":{"type":"string","title":"Storage Table Name","default":"","description":"Name of the table stored in Storage. Leave empty to use the report type name (e.g., 'ProfitAndLoss', 'BalanceSheet').","propertyOrder":10}},"propertyOrder":100},"report_type":{"enum":["TenNinetyNine","AgedPayablesByContact","AgedReceivablesByContact","BalanceSheet","BankSummary","BASReport","BudgetSummary","ExecutiveSummary","GSTReport","ProfitAndLoss","TrialBalance"],"type":"string","title":"Report Type","enumNames":["1099 Report (US)","Aged Payables By Contact","Aged Receivables By Contact","Balance Sheet","Bank Summary","BAS Report (Australia)","Budget Summary","Executive Summary","GST Report (New Zealand)","Profit and Loss","Trial Balance"],"description":"Select the type of Xero report to extract","propertyOrder":1},"report_year":{"type":"string","title":"Report Year","options":{"dependencies":{"report_type":"TenNinetyNine"}},"description":"Year for 1099 report (required)","propertyOrder":2},"payments_only":{"type":"boolean","title":"Payments Only","options":{"dependencies":{"report_type":["BalanceSheet","ProfitAndLoss","TrialBalance"]}},"description":"Show payments only","propertyOrder":14},"standard_layout":{"type":"boolean","title":"Standard Layout","options":{"dependencies":{"report_type":["BalanceSheet","ProfitAndLoss"]}},"description":"Use standard report layout","propertyOrder":13},"tracking_option_id":{"type":"string","title":"Tracking Option ID","options":{"dependencies":{"report_type":["BalanceSheet","ProfitAndLoss"]}},"description":"Filter by tracking option","propertyOrder":9},"tracking_category_id":{"type":"string","title":"Tracking Category ID","options":{"dependencies":{"report_type":"ProfitAndLoss"}},"description":"First tracking category","propertyOrder":10},"tracking_option_id_2":{"type":"string","title":"Tracking Option ID 2","options":{"dependencies":{"report_type":"ProfitAndLoss"}},"description":"Second tracking option","propertyOrder":12},"tracking_category_id_2":{"type":"string","title":"Tracking Category ID 2","options":{"dependencies":{"report_type":"ProfitAndLoss"}},"description":"Second tracking category","propertyOrder":11}}},"title":"Reports Configuration","description":"Configure which reports to extract. You can add the same report type multiple times with different parameters and table names.","propertyOrder":2},"xero_tenant_ids":{"type":"string","title":"Xero Tenant IDs","default":"","description":"Enter comma-separated Xero tenant IDs (e.g., 'abc-123-def, xyz-789-ghi'). Leave empty to fetch reports for ALL connected organizations. Tenant IDs must be valid UUIDs.","propertyOrder":1}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"Xero API link: https://developer.xero.com/documentation/api/accounting/reports","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["get_output_columns"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-xero-accounting-reports","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-xero-accounting-reports","name":"developer-portal-v2/keboola.ex-xero-accounting-reports","tag":"1.0.0","options":{},"digest":"sha256:19d75da966634aa52a406995b8ceb782e9c7833f58bc9b8d64a186ca7cd8ae64"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-xero-accounting-reports/32/1764149249093.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-xero-accounting-reports/64/1764149249093.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-xero-accounting-reports/128/1764149249093.png"}},{"id":"kds-team.ex-xero-accounting-v2","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":233,"name":"Xero Accounting V2","type":"extractor","shortDescription":"Extract and load data from Xero Accounting API into Keboola Connection with support for multiple endpoints, tenants, and incremental loading.","longDescription":"Integration between Xero's accounting platform and Keboola Connection. It provides a robust solution for extracting financial and accounting data from Xero's API and loading it into your data warehouse.\n\nKey Features:\n- Supports multiple Xero Accounting API endpoints including Accounts, Invoices, Contacts, Bank Transactions, and more\n- Handles multiple Xero organizations/tenants in a single configuration\n- Provides both full and incremental loading\n- Implements OAuth 2.0 authentication with automatic token refresh\n- Supports date-based filtering to extract only modified records\n- Handles API pagination automatically\n- Includes tenant identification for multi-tenant setups","licenseUrl":"https://github.com/keboola/component-xero-accounting-v2/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-xero-accounting-v2/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-xero-accounting-v2","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-authorization","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Xero Accounting configuration","required":["endpoints"],"properties":{"endpoints":{"type":"array","items":{"enum":["Accounts","BankTransfers","BatchPayments","BrandingThemes","ContactGroups","Currencies","Employees","ExpenseClaims","InvoiceReminders","Items","LinkedTransactions","Organisations","Payments","Quotes","RepeatingInvoices","TaxRates","Users","Contacts","Invoices","BankTransactions","Journals","ManualJournals","TrackingCategories"],"type":"string"},"title":"Endpoints","format":"select","description":"Endpoints to download from the Xero Accounting API.","uniqueItems":true,"propertyOrder":20},"tenant_ids":{"type":"string","title":"Tenant IDs","description":"Comma separated list of Tenant IDs of tenants to download the data from. Leave empty to download all available. Data will be merged from all provided tenants.","propertyOrder":10},"destination":{"type":"object","title":"Destination","properties":{"load_type":{"enum":["full_load","incremental_load"],"type":"string","title":"Load Type","default":"full_load","options":{"enum_titles":["Full Load","Incremental Load"]},"required":true,"description":"If Full load is used, the destination table will be overwritten every run. If incremental load is used, data will be upserted into the destination table. Tables with a primary key will have rows updated, tables without a primary key will have rows appended.","propertyOrder":20}},"propertyOrder":40},"modified_since":{"type":"string","title":"Modified since","description":"YYYY-MM-DD formatted date or relative string supported by date parser, e.g. \"5 days ago\", used to filter results if available for given endpoint.","propertyOrder":30}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"Configuration description.","configurationFormat":"json","emptyConfiguration":{"parameters":{"endpoints":["Accounts","BankTransfers","BatchPayments","BrandingThemes","ContactGroups","Currencies","Employees","ExpenseClaims","InvoiceReminders","Items","LinkedTransactions","Organisations","Payments","Quotes","RepeatingInvoices","TaxRates","Users","Contacts"],"tenant_ids":"","destination":{"load_type":"full_load"},"modified_since":"1 month ago"}},"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.ex-xero-accounting-v2","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-xero-accounting-v2","name":"developer-portal-v2/kds-team.ex-xero-accounting-v2","tag":"0.2.4","options":{},"digest":"sha256:9049068ec9b91431a7311e8292e4791558beaefa9042c9f7d6d3db8de7dba877"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-xero-accounting-v2/32/1674813092968.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-xero-accounting-v2/64/1674813092968.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-xero-accounting-v2/128/1674813092968.png"}},{"id":"jakub-bartel.processor-xls2csv","vendor":{"id":"jakub-bartel","name":"Jakub Bartel","address":"Jana Palacha 962\nRoztoky 252 63","email":"jakub.bartel@gmail.com","type":"other"},"version":35,"name":"Xls","type":"processor","shortDescription":"Convert xls (Excel) file to csv","longDescription":null,"licenseUrl":"https://github.com/jakubbartel/keboola-xls2csv-processor/blob/master/LICENSE.md","documentationUrl":"https://github.com/jakubbartel/keboola-xls2csv-processor","sourceCodeUrl":"https://github.com/jakubbartel/keboola-xls2csv-processor","requiredMemory":"2048m","processTimeout":null,"features":["container-root-user"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":[],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":null,"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":35,"uri":"docker/jakub-bartel.processor-xls2csv","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/jakub-bartel.processor-xls2csv","name":"developer-portal-v2/jakub-bartel.processor-xls2csv","tag":"v1.5.1","options":{},"digest":"sha256:d201a2ae06dd6c3ef93519806f52305c23706a815e9d363eec641cf4755e2735"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/jakub-bartel.processor-xls2csv/32/10.png","64":"https://ui.keboola-assets.com/developer-portal/icons/jakub-bartel.processor-xls2csv/64/10.png","128":"https://ui.keboola-assets.com/developer-portal/icons/jakub-bartel.processor-xls2csv/128/10.png"}},{"id":"kds-team.processor-xlsx-name-ranges-2-csv","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":82,"name":"XLSX name ranges to csv","type":"processor","shortDescription":"Convert XLSX named ranges into CSV.","longDescription":"Convert XLSX named ranges into CSV.","licenseUrl":"https://bitbucket.org/kds_consulting_team/kds-team.processor-xls_name_range/src/master/LICENSE.md","documentationUrl":"https://bitbucket.org/kds_consulting_team/kds-team.processor-xls_name_range/src/master/README.md","sourceCodeUrl":"https://bitbucket.org/kds_consulting_team/kds-team.processor-xls_name_range/src/master/","requiredMemory":"1024m","processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":[],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":null,"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"normal","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":82,"uri":"docker/kds-team.processor-xlsx-name-ranges-2-csv","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.processor-xlsx-name-ranges-2-csv","name":"developer-portal-v2/kds-team.processor-xlsx-name-ranges-2-csv","tag":"1.1.0","options":{},"digest":"sha256:f68c35688a696a133e86be6ddd9c9872fcd60ea809398625c62ba4689ffb49cb"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.processor-xlsx-name-ranges-2-csv/32/1575475644340.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.processor-xlsx-name-ranges-2-csv/64/1575475644340.png","128":null}},{"id":"kds-team.processor-xlsx2csv","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":146,"name":"XLSX to CSV","type":"processor","shortDescription":"Convert XLSX format to CSV files","longDescription":"Processing single, multiple or all sheets in XLSX, convert sheets into sliced tables, and output into the subfolder with the filename of the XLSX input","licenseUrl":"https://bitbucket.org/kds_consulting_team/kds-team.processor-xlsx2csv/src/master/LICENSE.md","documentationUrl":"https://bitbucket.org/kds_consulting_team/kds-team.processor-xlsx2csv/src/master/README.md","sourceCodeUrl":"https://bitbucket.org/kds_consulting_team/kds-team.processor-xlsx2csv/src/master/src/","requiredMemory":"3000m","processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-fileInput"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"Taking all XLSX files from `/data/in/files` and convert selected sheets to CSV. Selected sheets will be stored with the sheet name to `/data/out/files`.\n\n### Prerequisites\n1. All files must be XLSX formatted\n2. Number of sheets in XLSX cannot exceed 49\n\n### Optional Parameters:\n1. addFileName\n    - `Boolean` JSON input\n    - allows users to have the option to append original XLSX filename into the output sheet filename\n    - Example:\n    \n        ```\n        XLSX input: input_file.xlsx;\n        Available sheet: Sheet_1\n        ```\n        \n        ```\n        addFileName: False;\n        Output file >> Sheet_1.csv\n        ```\n        \n        ```\n        addFileName: True;\n        Output file >> input_file_Sheet_1.csv\n        ```\n        \n2. selectSheets\n    - `List` JSON input\n    - allows users to select the sheets to output\n    - If both `selectSheets` and `ignoreSheets` are not configured, all sheets from XLSX will be outputted\n    - If `selectSheets` is configured, it will overwrite any inputs from `ignoreSheets`\n    \n3. ignoreSheets\n    - `List` JSON input \n    - allows users to ignore the sheets to output\n    - If both `selectSheets` and `ignoreSheets` are not configured, all sheets from XLSX will be outputted\n    - If `selectSheets` is configured, it will overwrite any inputs from `ignoreSheets`\n\n    - Example\n    \n        ```\n        XLSX input: input_file.xlsx;\n        Available sheets: [Sheet_1, Sheet_2, Sheet_3]\n        ```\n        \n        ```\n        Configuration:\n            {\n                \"selectSheets\": [\"Sheet_1\", \"Sheet_2\"],\n                \"ignoreSheets\": [\"Sheet_1\"]\n            }\n        ```\n        \n        ```\n        Output File >>\n            Sheet_1.csv,\n            Sheet_2.csv\n        ```\n\n### Sample Configuration\n\nDefault Parameters\n```\n{\n    \"definition\": {\n        \"component\": \"kds-team.processor-xlsx2csv\"\n    }\n}\n```\n\nWith optional parameters:\n```\n{\n    \"definition\": {\n        \"component\": \"kds-team.processor-xlsx2csv\"\n    },\n    \"parameters\": {\n        \"addFileName\": True,\n        \"selectSheets\": [\n            \"Sheet 1\"\n        ],\n        \"ignoreSheets\" : []\n    }\n}\n```","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":146,"uri":"docker/kds-team.processor-xlsx2csv","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.processor-xlsx2csv","name":"developer-portal-v2/kds-team.processor-xlsx2csv","tag":"0.0.12","options":{},"digest":"sha256:5c958e63507a45c18e73bd1f5e00eeaf72f6cb8cefddfce5b8adff442720c0c7"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.processor-xlsx2csv/32/1592521462162.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.processor-xlsx2csv/64/1592521462162.png","128":null}},{"id":"tomastrnka.kbl_csv_s3_xlsx","vendor":{"id":"tomastrnka","name":"Tomáš Trnka","address":"Praha\nCZ","email":"tomas.trnka@live.com","type":"other"},"version":11,"name":"XLSX to S3","type":"writer","shortDescription":"XLSX File sent to S3","longDescription":"This writer takes CSV from Keboola Storage, transforms it into XLSX and uploads it into Amazon S3","licenseUrl":"https://github.com/tomastrnka/kbl_csv_s3_xlsx/blob/master/license","documentationUrl":"https://github.com/tomastrnka/kbl_csv_s3_xlsx/blob/master/README.md","sourceCodeUrl":null,"requiredMemory":"512m","processTimeout":3600,"features":["container-root-user","dev-branch-configuration-unsafe"],"encryption":true,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":1024,"uiOptions":["genericDockerUI","genericDockerUI-tableInput"],"imageParameters":{},"stackParameters":{},"testConfiguration":{},"configurationSchema":{"type":"object","title":"Parameters","required":["#S3key","#S3secretKey","bucketName","fileName","sortkey"],"properties":{"#S3key":{"type":"string","title":"S3 Access Key","format":"password","default":"","minLength":1},"sortkey":{"type":"array","items":{"type":"string","title":"Column name"},"title":"Sort Key","default":null,"description":"Columns of input table to sort data with","uniqueItems":true},"fileName":{"type":"string","title":"File Name","default":"","minLength":1},"bucketName":{"type":"string","title":"Bucket Name","default":"","minLength":1},"#S3secretKey":{"type":"string","title":"S3 Secret Key","format":"password","default":"","minLength":1}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/tomastrnka.kbl_csv_s3_xlsx","repository":{"type":"dockerhub","uri":"svetlanamargetova/kbl_csv_s3_xlsx","name":null,"tag":"latest","options":{},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/tomastrnka.kbl_csv_s3_xlsx/32/1576491184910.png","64":"https://ui.keboola-assets.com/developer-portal/icons/tomastrnka.kbl_csv_s3_xlsx/64/1576491184910.png","128":null}},{"id":"kds-team.processor-xml2csv","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":40,"name":"XML to CSV","type":"processor","shortDescription":"Convert XML files to CSV","longDescription":"Convert XML files to CSV. Automatically flattens the structure, creating multiple tables. It works with namespaces and attributes.\n\n- The conversion is executed as follows: XML -> JSON -> CSV to allow additional JSON parser features\n- Allows defining additional fields like row number, file name. \n- Force attributes to be always converted to array\n- Define custom mapping to control the output table structure and define primary keys  - in the same way as the [Generic Extractor mapping](https://developers.keboola.com/extend/generic-extractor/configuration/config/mappings/)","licenseUrl":"https://github.com/keboola/kds-team.processor-xml2csv/blob/master/LICENSE","documentationUrl":"https://github.com/keboola/kds-team.processor-xml2csv/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/kds-team.processor-xml2csv.git","requiredMemory":"5g","processTimeout":7200,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":[],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":null,"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":40,"uri":"docker/kds-team.processor-xml2csv","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.processor-xml2csv","name":"developer-portal-v2/kds-team.processor-xml2csv","tag":"1.2.2","options":{},"digest":"sha256:9acab12ffb6b0adb9094c9aff09e6dfd9fb25ded5483110ccdf140a76350da10"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.processor-xml2csv/32/1589973897020.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.processor-xml2csv/64/1589973897020.png","128":null}},{"id":"kds-team.ex-yourpass","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":95,"name":"YourPass","type":"extractor","shortDescription":"Extracts mobile wallet passes from the YourPass API.","longDescription":"This component allows you to extract all data about passes from a specific project or template and save them into a table in Keboola.","licenseUrl":"https://bitbucket.org/kds_consulting_team/kds-team.ex-yourpass/src/master/LICENSE.md","documentationUrl":"https://help.keboola.com/components/extractors/other/yourpass/","sourceCodeUrl":"https://bitbucket.org/kds_consulting_team/kds-team.ex-yourpass/src/master/src/","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"YourPass Authentication","required":["username","#password","client_id"],"properties":{"sandbox":{"type":"boolean","title":"Sandbox","format":"checkbox","default":false,"description":"Download data from sandbox environment instead of the production environment.","propertyOrder":5},"username":{"type":"string","title":"Username","propertyOrder":1},"#password":{"type":"string","title":"Password","format":"password","propertyOrder":2},"client_id":{"type":"string","title":"Client ID","description":"YourPass API Client ID","propertyOrder":3},"client_secret":{"type":"string","title":"Client Secret","format":"password","description":"YourPass API Client secret","propertyOrder":4}}},"configurationRowSchema":{"type":"object","title":"YourPass Endpoint Configuration","required":["endpoint","output_name"],"properties":{"endpoint":{"enum":["Pass"],"type":"string","title":"Endpoint","default":"Pass","propertyOrder":10},"project_id":{"type":"string","title":"Project Id","default":"","options":{"dependencies":{"endpoint":"Pass"}},"propertyOrder":20},"output_name":{"type":"string","title":"Output name","description":"Name of output table in Keboola storage","propertyOrder":15},"template_id":{"type":"string","title":"Template Id","default":"","options":{"dependencies":{"endpoint":"Pass"}},"propertyOrder":20},"loading_options":{"type":"object","title":"Loading Options","required":["incremental"],"properties":{"pkey":{"type":"array","items":{"type":"string","title":"Primary key column"},"title":"Primary key","default":["id"],"propertyOrder":5000},"incremental":{"enum":[0,1],"type":"integer","title":"Load type","default":0,"options":{"enum_titles":["Full Load","Incremental Update"]},"description":"If set to Incremental update, the result tables will be updated based on primary key and new records will be fetched. Full load overwrites the destination table each time.","propertyOrder":200},"incremental_fetch":{"type":"boolean","title":"Incremental fetch","format":"checkbox","default":false,"options":{"dependencies":{"incremental":1}},"description":"Fetch data that has been updated since the last run of the component","propertyOrder":250}},"propertyOrder":100}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":95,"uri":"docker/kds-team.ex-yourpass","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-yourpass","name":"developer-portal-v2/kds-team.ex-yourpass","tag":"0.0.7","options":{},"digest":"sha256:18fbed6a8ec7ccc15679510b9efcc6a22b0dec349b5fe0c62cb18ba96d560acf"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-yourpass/32/1622533484327.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-yourpass/64/1622533484327.png","128":null}},{"id":"kds-team.wr-yourpass","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":171,"name":"YourPass","type":"writer","shortDescription":"Creates, updates, and deletes passes via the YourPass API.","longDescription":"This component allows you to create, delete, and update passes in YourPass.","licenseUrl":"https://bitbucket.org/kds_consulting_team/kds-team.wr-yourpass/src/master/LICENSE.md","documentationUrl":"https://help.keboola.com/components/writers/other/yourpass/","sourceCodeUrl":"https://bitbucket.org/kds_consulting_team/kds-team.wr-yourpass/src/master/","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput","genericDockerUI-rows"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"YourPass Authentication","required":["username","#password","client_id"],"properties":{"sandbox":{"type":"boolean","title":"Sandbox","format":"checkbox","default":false,"description":"Download data from sandbox environment instead of the production environment.","propertyOrder":5},"username":{"type":"string","title":"Username","propertyOrder":1},"#password":{"type":"string","title":"Password","format":"password","propertyOrder":2},"client_id":{"type":"string","title":"Client ID","description":"YourPass API Client ID","propertyOrder":3},"#client_secret":{"type":"string","title":"Client Secret","format":"password","description":"YourPass API Client secret","propertyOrder":4}}},"configurationRowSchema":{"type":"object","title":"YourPass Endpoint Configuration","required":["endpoint","action"],"properties":{"action":{"enum":["Create","Update","Delete"],"type":"string","title":"Pass action","default":"Create","options":{"dependencies":{"endpoint":"Pass"}},"propertyOrder":20},"endpoint":{"enum":["Pass"],"type":"string","title":"Endpoint","default":"Pass","propertyOrder":10}}},"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":171,"uri":"docker/kds-team.wr-yourpass","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.wr-yourpass","name":"developer-portal-v2/kds-team.wr-yourpass","tag":"0.1.0","options":{},"digest":"sha256:33b05634e75a13c851cc362b55e8107cae922418b60072d117961ece22bf47e9"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.wr-yourpass/32/1622533500663.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.wr-yourpass/64/1622533500663.png","128":null}},{"id":"keboola.ex-youtube","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":25,"name":"YouTube Data API","type":"extractor","shortDescription":"Extracts channels, playlists, videos, comments, and captions from the YouTube Data API.","longDescription":"This component uses the [YouTube Data API](https://developers.google.com/youtube/v3/docs/) to extract data about your YouTube channels, playlists, videos, comments, captions, and your YouTube activity (uploading, rating, or sharing a video, marking a video as a favorite, etc.).\n\nFor analytics and reporting, use the Google Analytics extractor or the YouTube Reporting extractor.","licenseUrl":"https://github.com/keboola/kbc-ui-templates/blob/main/LICENSE","documentationUrl":"https://help.keboola.com/extractors/social/youtube/","sourceCodeUrl":"https://github.com/keboola/kbc-ui-templates/tree/main/resources/keboola.ex-youtube/templates","requiredMemory":null,"processTimeout":null,"features":["container-root-user"],"encryption":true,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"easy","category":null,"categories":["Social","Advertisement"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-authorization","genericTemplatesUI"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":null,"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"Either choose one of the predefined templates, or define your own configuration directly using the JSON editor.\n\nThere are two templates available:\n\n- Channels: info about your own channels\n- Videos: info about your playlists and all their videos","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-youtube","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/ex-generic-v2","name":"developer-portal-v2/ex-generic-v2","tag":"3.4.0","options":{},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-youtube/32/1677064121951.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-youtube/64/1677064121951.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-youtube/128/1677064121951.png"}},{"id":"kds-team.ex-youtube-analytics","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":282,"name":"YouTube Reporting","type":"extractor","shortDescription":"Extracts YouTube Analytics reports via the YouTube Reporting API.","longDescription":"Use this connector to gain insights into the performance of your YouTube\ncontent. Get detailed statistics and reports about various aspects of your YouTube channel, including:\n\n1. **View Counts:** Information about the number of views your videos have received.\n2. **Watch Time:** The total amount of time that people have spent watching your videos.\n3. **Demographics:** Data on the age, gender, and location of your audience.\n4. **Traffic Sources:** Insights into how viewers find your content, whether through search, suggested videos, or external websites.\n5. **Revenue and Monetization:** If you're a YouTube partner, you can see data related to ad revenue and other monetization metrics.\n\n**Google Limited Use Policy Disclosure:**\n\nApp’s use and transfer to any other app of information received from Google APIs will adhere\nto [Google API Services User Data Policy](https://developers.google.com/terms/api-services-user-data-policy#additional_requirements_for_specific_api_scopes)\n, including the Limited Use requirements.","licenseUrl":"https://github.com/keboola/component-youtube-analytics/blob/main/LICENSE.md","documentationUrl":"https://help.keboola.com/components/extractors/social/youtube-reporting/","sourceCodeUrl":"https://github.com/keboola/component-youtube-analytics","requiredMemory":null,"processTimeout":14400,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"easy","category":null,"categories":["Social","Analytics"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-authorization","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"YouTube reports","required":["on_behalf_of_content_owner","report_settings"],"properties":{"report_settings":{"type":"object","title":"Report settings","required":["report_types"],"properties":{"report_types":{"type":"array","items":{"enum":["channel_annotations_a1","channel_basic_a3","channel_cards_a1","channel_combined_a3","channel_demographics_a1","channel_device_os_a3","channel_end_screens_a1","channel_playback_location_a3","channel_province_a3","channel_sharing_service_a1","channel_subtitles_a3","channel_traffic_source_a3","playlist_basic_a2","playlist_combined_a2","playlist_device_os_a2","playlist_playback_location_a2","playlist_province_a2","playlist_traffic_source_a2","content_owner_basic_a4","content_owner_province_a3","content_owner_playback_location_a3","content_owner_traffic_source_a3","content_owner_device_os_a3","content_owner_demographics_a1","content_owner_sharing_service_a1","content_owner_annotations_a1","content_owner_cards_a1","content_owner_end_screens_a1","content_owner_subtitles_a3","content_owner_combined_a3","content_owner_playlist_basic_a2","content_owner_playlist_province_a2","content_owner_playlist_playback_location_a2","content_owner_playlist_traffic_source_a2","content_owner_playlist_device_os_a2","content_owner_playlist_combined_a2","content_owner_ad_rates_a1","content_owner_estimated_revenue_a1","content_owner_asset_estimated_revenue_a1","content_owner_asset_basic_a3"],"type":"string","options":{"enum_titles":["Channel annotations","Channel user activity","Channel cards","Channel combined","Channel demographics","Channel device and OS","Channel end screens","Channel playback locations","Channel province","Channel sharing service","Channel subtitles","Channel traffic sources","Playlist user activity","Playlist combined","Playlist device and OS","Playlist playback locations","Playlist province","Playlist traffic sources","Content owner channel user activity","Content owner channel province","Content owner channel playback locations","Content owner channel traffic sources","Content owner channel device and OS","Content owner channel viewer demographics","Content owner channel sharing service","Content owner channel annotations","Content owner channel cards","Content owner channel end screens","Content owner channel subtitles","Content owner channel combined","Content owner playlist user activity","Content owner playlist province","Content owner playlist playback locations","Content owner playlist traffic sources","Content owner playlist device and OS","Content owner playlist combined","Content owner ad rate reports","Content owner estimated video revenue","Content owner estimated asset revenue","Content owner asset user activity"]}},"title":"Report types","format":"select","minLength":1,"description":"Select one of the available report types described in the <a href='https://developers.google.com/youtube/reporting/v1/reports/'>documentation</a>.","uniqueItems":true,"propertyOrder":250}},"propertyOrder":500},"content_owner_id":{"type":"string","title":"Content owner","options":{"dependencies":{"on_behalf_of_content_owner":true}},"minLength":1,"description":"Enter the ID of the content owner.","propertyOrder":200},"on_behalf_of_content_owner":{"type":"boolean","title":"Use content owner ID","format":"checkbox","default":false,"description":"YouTube partners managing multiple accounts may run reports on behalf of different content owners.","propertyOrder":100}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"**WARNING:** Please note that during the first execution, if there is no job for the specified report type yet,\nthe job is created, and no data is downloaded. **The first report may take up to 24 hours to be available.**","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["list_report_types"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.ex-youtube-analytics","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-youtube-analytics","name":"developer-portal-v2/kds-team.ex-youtube-analytics","tag":"1.0.3","options":{},"digest":"sha256:62d85f1a82b041f445d54770eee35d696292cd8a1316af8ccc496e46fdedb493"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-youtube-analytics/32/1705072074468.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-youtube-analytics/64/1705072074468.png","128":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-youtube-analytics/128/1705072074468.png"}},{"id":"medio.ex-zbozi-v2","vendor":{"id":"medio","name":"Taste","address":"Hybernská 1271/32\n110 00 Prague 1\nCzech republic","email":"keboola@taste.cz","type":"other"},"version":63,"name":"Zboží v2","type":"extractor","shortDescription":"Download statistics from czech advisor portal zbozi.cz","longDescription":"# Zbozi.cz extractor\n**Created with love by Medio**\n\nKBC Docker app for extracting data from Zboží.cz (http://zbozi.cz). Get your daily impressions, clicks, cost and conversion data.\n\nThe Extractor gets list of campaign stats for previous day and saves the data to Storage API. Date of downloaded stats can be changed in configuration.\n\n# Configuration Parameters\n* **ShopId** - Shop ID (premise ID) of your account. You can find it in HP (https://admin.zbozi.cz/infoScreen) >  table \"Provozovny\" > column \"Akce\" > click on \"Správa provozovny\".  You'll find premise id in URL. ``https://admin.zbozi.cz/premiseManageScreen?premiseId=666999#0`` More info about shopID -> https://api.zbozi.cz/\n\n* **API key** - Obtained from the https://admin.zbozi.cz/.\n\n* **DateFrom** - Beginning of date range, for which you want statistics to be downloaded. Has to be less than ``400 days old``.\nSpecific date (e. g. ``2018-01-01``) or relative term (``-365 days``) can be used.\n* **DateTo** - End of date range, for which you want statistics to be downloaded. Has to be less than ``400 days old``.\nSpecific date (e. g. ``2018-01-01``) or relative term (``-365 days``) can be used.\n\n* **Reports** - You can select ``stats`` and/or ``categories``.\n\n* **Output bucket** - Name of bucket where the data will be saved.\n\n# Output tables\n**stats** table - contains marketing stats, columns are:\n* **premiseId**\n* **date**\n* **impressions**\n* **click**\n* **ctr**\n* **cpc**\n* **spend**\n* **position**\n* **conversions**\n* **conversion_value**\n* **conversion_rate**\n* **conversion_price**\n\n**categories** table - contains marketing stats sliced by categories, columns are:\n* **premiseId**\n* **date**\n* **categoryId**\n* **categoryName**\n* **impressions**\n* **clicks**\n* **spend**\n* **conversions**\n\n>NOTICE!\n>Data can change for last 30 days.\n>Cases where Category is not filled in zbozi.cz have in category table category and category ID empty string.","licenseUrl":"https://github.com/tastecz/keboola-components/blob/master/zbozi-cz/license","documentationUrl":"https://github.com/tastecz/keboola-components/tree/master/zbozi-cz","sourceCodeUrl":null,"requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["Advertisement"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","appInfo.experimental"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Parameters","required":["stats","#apiKey","dateFrom","dateTo","shopId","bucket"],"properties":{"stats":{"type":"array","items":{"enum":["stats","categories"],"type":"string"},"title":"Reports","format":"checkbox","default":["stats"],"maxItems":2,"description":"Define which of statistics will be downloaded.","uniqueItems":true,"propertyOrder":5},"bucket":{"type":"string","title":"Output bucket","default":"in.c-ex-zbozi-v2","minLength":1,"propertyOrder":6},"dateTo":{"type":"string","title":"Date TO","default":"today","minLength":1,"description":"Default is today","propertyOrder":4},"shopId":{"type":"integer","title":"Shop ID","default":"","minLength":1,"description":"(ID provozovny)","propertyOrder":1},"#apiKey":{"type":"string","title":"API key","default":"","minLength":1,"propertyOrder":2},"dateFrom":{"type":"string","title":"Date FROM","default":"-399 days","minLength":1,"description":"Default is -399 days","propertyOrder":3}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"* **ShopId** - Shop ID (premise ID) of your account. You can find it in HP (https://admin.zbozi.cz/infoScreen) >  table \"Provozovny\" > column \"Akce\" > click on \"Správa provozovny\".  You'll find premise id in URL. ``https://admin.zbozi.cz/premiseManageScreen?premiseId=666999#0`` More info about shopID -> https://api.zbozi.cz/\n\n* **API key** - Obtained from the https://admin.zbozi.cz/.\n\n* **DateFrom** - Beginning of date range, for which you want statistics to be downloaded. Has to be less than ``400 days old``.\nSpecific date (e. g. ``2018-01-01``) or relative term (``-365 days``) can be used.\n* **DateTo** - End of date range, for which you want statistics to be downloaded. Has to be less than ``400 days old``.\nSpecific date (e. g. ``2018-01-01``) or relative term (``-365 days``) can be used.\n\n* **Reports** - You can select ``stats`` and/or ``categories``.\n\n* **Output bucket** - Name of bucket where the data will be saved.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":63,"uri":"docker/medio.ex-zbozi-v2","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/medio.ex-zbozi-v2","name":"developer-portal-v2/medio.ex-zbozi-v2","tag":"0.0.17","options":{},"digest":"sha256:2ef6b4a3748b2152aa409c7a69ac03e81d85fce5f8acbd0dd1b8765f43ecd558"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/medio.ex-zbozi-v2/32/9.png","64":"https://ui.keboola-assets.com/developer-portal/icons/medio.ex-zbozi-v2/64/9.png","128":null}},{"id":"kds-team.wr-zendesk","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":126,"name":"Zendesk","type":"writer","shortDescription":"Creating or updating the relative endpoint objects in the Zendesk API with users' defined input parameters","longDescription":"Zendesk Writer enables users to create/update Zendesk Support API properties with the flexibility of defining their own parameters.\n\nTo configure the writer, you need:\n\n- provide Zendesk credentials and domain\n- Have the Zendesk Support API endpoints you want to create/update, please visit [Zendesk](https://developer.zendesk.com/rest_api/docs/support/introduction) for more details\n- Understand the format required for the parameters you wish to create/update for your endpoints","licenseUrl":"https://github.com/keboola/component-zendesk-wr/blob/main/LICENSE.md","documentationUrl":"https://github.com/keboola/component-zendesk-wr/blob/main/README.md","sourceCodeUrl":"https://github.com/keboola/component-zendesk-wr","requiredMemory":null,"processTimeout":14400,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":["CRM"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput","appInfo.dataOut"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Configuration","required":["email","#api_token","domain","full_url","function"],"properties":{"email":{"type":"string","title":"Login Email","minLength":1,"propertyOrder":100},"domain":{"type":"string","title":"Zendesk Domain","default":"DOMAIN","minLength":1,"propertyOrder":300},"full_url":{"type":"string","title":"Zendesk URL","watch":{"domain":"domain"},"template":"https://{{domain}}.zendesk.com","description":"This is generated automatically from 'Zendesk Domain'.","propertyOrder":400},"function":{"enum":["CREATE","UPDATE"],"type":"string","title":"Function","default":"CREATE","options":{"enum_titles":["CREATE","UPDATE"]},"propertyOrder":500},"#api_token":{"type":"string","title":"API token","format":"password","minLength":1,"propertyOrder":200},"continue_on_error":{"type":"boolean","title":"Continue on Error","default":false,"description":"Marks, if the writer should continue writing data, if an error with any record occured.","propertyOrder":600}}},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"The component takes tables from the input mapping and create/updates records in Zendesk API. The table names from the input mapping will be used to define the Zendesk object the users wish to create/update. Example: users.csv will be creating/updating Zendesk's User endpoint.\n\n## Configuration Parameters\n1. Login Email\n    - Zendesk account login email\n2. API Token\n    - Zendesk account API token\n    - You can obtain API tokens from the Zendesk Support admin interface at Admin > Channels > API \n3. Zendesk Domain\n    - The domain of the Zendesk instance\n4. Zendesk URL\n    - This configuration is generated automatically from the input of `Zendesk Domain`\n5. Function\n    - Defines the type of request user wants to perform for all the endpoints define in the input mapping\n    - CREATE\n        - performing `POST` request to the endpoints defined\n    - UPDATE\n        - Performing `PUT` request to the endpoints defined\n\n## Endpoint Specifications\nThe table names from the input mapping will be used to define the Zendesk endpoint the users wish to perform the specified `Function` (CREATE/UPDATE).\nExample: users.csv will be creating/updating Zendesk's User endpoint.\n\n## Supported Endpoints\n1. [users](https://developer.zendesk.com/rest_api/docs/support/users)\n2. [tickets](https://developer.zendesk.com/rest_api/docs/support/tickets)\n    - Account inputted in the configuration will be used as the requester_id. If user wants to alter the request_id, please perform such action via `UPDATE` request.\n3. [organizations](https://developer.zendesk.com/rest_api/docs/support/organizations)\n4. [groups](https://developer.zendesk.com/rest_api/docs/support/groups)\n5. [ticket_fields](https://developer.zendesk.com/rest_api/docs/support/ticket_fields)\n6. [organization_fields](https://developer.zendesk.com/rest_api/docs/support/organization_fields)\n7. [user_fields](https://developer.zendesk.com/rest_api/docs/support/user_fields)\n\n*Please visit [Endpoint Parameters](https://bitbucket.org/kds_consulting_team/kds-team.wr-zendesk/src/master/docs/endpoint_parameters.md) for list of supported parameters and required parameters*\n\nAll columns from the input mappings will be converted as a request parameter object for the API request and they need to be valid for the supported endpoint. Each combinatino of function and endpoint contains required parameters for the API request. <br>\nFor `CREATE` requests, the input tables need to contain columns defined in the `CREATE_required` fields. <br>\nFor `UPDATE` requests, the input tables need to contain columsn defined in the `UPDATE_required` fields.\n\n### Supported Endpoints DataType\nThe value of the Input table's column need to match with the DataType for the respective parameters defined in [Endpoint Parameters](https://bitbucket.org/kds_consulting_team/kds-team.wr-zendesk/src/master/docs/endpoint_parameters.md). The writer will not perform API requests for rows having misaligned Datatypes. All parameters that have a `ReadOnly` configured as True are not available as one of the request parameters. If `ReadOnly` parameter is configured within the input, it will be omitted from the API requests.\n\n| DataType | Descriptions |\n|-|-|\n| string | Values will be sent as a `STR`. |\n| integer | Values will be converted to `INT` in the request parameters. |\n| boolean | Values will be converted to `BOOL`  in the request parameters. |\n| date | Values will be send as a `STR`.|\n| array | Values need to be a valid `LIST`. Values will be sent as a `JSON LIST` object. |\n| object | Values need to be a valid `JSON` object. |\n| attachment | `Not supported` |\n| via | `Not supported` |\n\n## Log Outputs\nUnless users have the invalid account information in the configurations or invalid endpoints specified in the input mappings, the component will not fail even when a API request failed. \nA log will contain wether or not an API request went through. If not, a description from the API response will be available in one of the columns of the log. ","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":126,"uri":"docker/kds-team.wr-zendesk","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.wr-zendesk","name":"developer-portal-v2/kds-team.wr-zendesk","tag":"0.0.4","options":{},"digest":"sha256:79f802f87b74cbf9f0da4e07ebd9000ad85604a5e698c2fcfc28dca3294cb55e"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.wr-zendesk/32/1593116617700.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.wr-zendesk/64/1593116617700.png","128":null}},{"id":"keboola.ex-zendesk-v2","vendor":{"id":"keboola","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":150,"name":"Zendesk V2","type":"extractor","shortDescription":"Extracts tickets, users, and organizations from Zendesk.","longDescription":"This component enables you to extract data from your Zendesk instance into Keboola. You can extract various types of data including tickets, users, organizations, and custom fields.\n\nTo use this component, you need to provide:\n- Zendesk subdomain\n- API token and email for authentication\n\nThe component supports incremental loading for most tables.\n\nAvailable resources:\n- [Zendesk API Documentation](https://developer.zendesk.com/api-reference)","licenseUrl":"https://github.com/keboola/component-zendesk/blob/master/LICENSE.md","documentationUrl":"https://github.com/keboola/component-zendesk/blob/master/README.md","sourceCodeUrl":"https://github.com/keboola/component-zendesk","requiredMemory":"4096m","processTimeout":43200,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":true,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"extractor configuration","required":["authentication"],"properties":{"debug":{"type":"boolean","title":"Debug","format":"checkbox","propertyOrder":90},"destination":{"type":"object","title":"Destination","required":["load_type"],"properties":{"load_type":{"enum":["full_load","incremental_load"],"type":"string","title":"Load Type","format":"checkbox","default":"incremental_load","options":{"enum_titles":["Full Load","Incremental Load"]},"description":"If Full load is used, the destination table will be overwritten every run. If incremental load is used, data will be upserted into the destination table. Tables with a primary key will have rows updated, tables without a primary key will have rows appended.","propertyOrder":10},"custom_bucket":{"type":"boolean","title":"Custom output bucket","format":"checkbox","description":"By default bucket will be created","propertyOrder":20},"destination_bucket":{"enum":[],"type":"string","items":{"enum":[],"type":"string"},"title":"Destination bucket","format":"select","options":{"async":{"label":"Load available buckets","action":"get_buckets","autoload":["parameters.custom_bucket"]},"dependencies":{"custom_bucket":true}},"description":"Choice of destination bucket","uniqueItems":true,"propertyOrder":30}},"propertyOrder":30},"sync_options":{"type":"object","title":"Sync Options","properties":{"date_from":{"type":"string","title":"From date","options":{"dependencies":{"sync_mode":"incremental_sync"}},"description":"Date from. Date in YYYY-MM-DD format or a string i.e. 5 days ago, 1 month ago, yesterday, etc. If left empty, all records from 2000-01-01 are downloaded.","propertyOrder":20},"sync_mode":{"enum":["full_sync","incremental_sync"],"type":"string","title":"Sync Mode","default":"incremental_sync","options":{"enum_titles":["Full Sync","Incremental Sync"]},"required":true,"description":"Full Sync downloads all data from the source every run, Incremental Sync downloads data (tickets, ticket_comments and ticket_audits) by parameter start_time described <a href='https://developer.zendesk.com/api-reference/ticketing/ticket-management/incremental_exports/#per_page'>here</a>. The start time is taken from the last successful run.","propertyOrder":10}},"propertyOrder":20},"authentication":{"type":"object","title":"Authorization","required":["email","#api_token","sub_domain"],"properties":{"email":{"type":"string","title":"Email","propertyOrder":10},"#api_token":{"type":"string","title":"API token","format":"password","description":"<a href='https://support.zendesk.com/hc/en-us/articles/4408889192858-Generating-a-new-API-token'>How to obtain API token</a>","propertyOrder":20},"sub_domain":{"type":"string","title":"Sub-domain","description":"Sub-domain is a part of your Zendesk URL. For example: https://mysubdomain.zendesk.com.","propertyOrder":30}},"propertyOrder":10},"available_details":{"type":"object","title":"Available Details","properties":{"ticket_audits_raw":{"type":"boolean","title":"Audits","format":"checkbox","default":true,"propertyOrder":20},"ticket_comments_raw":{"type":"boolean","title":"Comments","format":"checkbox","default":true,"propertyOrder":10}},"description":"Choose details of tickets which will be loaded also. Details are loaded per ticket. It has an impact on performance.","propertyOrder":15}}},"configurationRowSchema":{},"createConfigurationRowSchema":null,"configurationDescription":"Configuration description.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["get_buckets"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/keboola.ex-zendesk-v2","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/keboola.ex-zendesk-v2","name":"developer-portal-v2/keboola.ex-zendesk-v2","tag":"0.1.4","options":{},"digest":"sha256:e71094f9d69278216f13082d3b29bbcd53f1096725f7c4be052dbed971009e02"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-zendesk-v2/32/1723138805396.png","64":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-zendesk-v2/64/1723138805396.png","128":"https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-zendesk-v2/128/1723138805396.png"}},{"id":"kds-team.ex-zoho","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":510,"name":"Zoho","type":"extractor","shortDescription":"Extracts Zoho CRM module records.","longDescription":"Zoho CRM extractor using bulk read operations of the v2 API.","licenseUrl":"https://github.com/keboola/component-zoho/blob/main/LICENSE.md","documentationUrl":"https://help.keboola.com/components/extractors/marketing-sales/zoho/","sourceCodeUrl":"https://github.com/keboola/component-zoho","requiredMemory":null,"processTimeout":null,"features":[],"encryption":false,"network":"bridge","defaultBucket":true,"defaultBucketStage":"in","forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":"easy","category":null,"categories":["CRM"],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-rows","genericDockerUI-authorization","appInfo.beta"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{"type":"object","title":"Zoho CRM API (v2) configuration","required":["account"],"properties":{"account":{"type":"object","title":"Account","required":["user_email","zoho_datacenter"],"properties":{"user_email":{"type":"string","title":"User email","propertyOrder":1},"zoho_datacenter":{"enum":["EU","US","UK","IN","AU","JP","CA"],"type":"string","title":"Zoho Datacenter","default":"COM","propertyOrder":2}},"propertyOrder":1}}},"configurationRowSchema":{"type":"object","title":"Zoho CRM API (v2) row configuration","required":["module_records_download_config"],"properties":{"destination":{"type":"object","title":"Destination settings","properties":{"load_mode":{"enum":["full","incremental"],"type":"string","title":"Load mode","options":{"enum_titles":["Full","Incremental"]},"propertyOrder":3},"output_table_name":{"type":"string","title":"Output table name (Optional)","propertyOrder":1}},"propertyOrder":3},"sync_options":{"type":"object","title":"Sync Options","properties":{"value":{"type":"string","title":"Value","default":"now","options":{"dependencies":{"sync_mode":"incremental_sync"}},"description":"Either date in YYYY-MM-DD format or dateparser string i.e. 5 days ago, 1 month ago, last_run, now, etc.","propertyOrder":40},"operator":{"enum":["greater_than","greater_equal","less_than","less_equal"],"type":"string","title":"Operator","default":"less_equal","options":{"enum_titles":["Greater than","Greater than or equal to","Less than","Less than or equal to"],"dependencies":{"sync_mode":"incremental_sync"}},"description":"The operator you want to use to filter the field.","propertyOrder":30},"sync_mode":{"enum":["full_sync","incremental_sync","advanced"],"type":"string","title":"Sync Mode","default":"full_sync","options":{"enum_titles":["Full Sync","Incremental Sync","Advanced"]},"required":true,"description":"Full Sync downloads all data from the source every run, Incremental Sync downloads data created or updated in a specified time range and Advanced option enables custom filtering.","propertyOrder":10},"incremental_field":{"enum":[],"type":"string","items":{"enum":[],"type":"string"},"title":"Incremental Field","options":{"async":{"label":"List DateTime Fields","action":"listFieldsDatetime"},"dependencies":{"sync_mode":"incremental_sync"}},"description":"Field/column to be used for incremental fetching","propertyOrder":20},"filtering_criteria":{"type":"object","title":"Filtering Criteria","format":"editor","options":{"dependencies":{"sync_mode":"advanced"}},"description":"Filtering criteria is either a single filtering criterion or a filtering criteria group. For more information, visit the <a href='https://bitbucket.org/kds_consulting_team/kds-team.ex-zoho/src/master/README.md'>Component's documentation</a>.","propertyOrder":50}},"propertyOrder":2},"module_records_download_config":{"type":"object","title":"Bulk Read Job configuration","minItems":1,"required":["module_name"],"properties":{"field_names":{"type":"array","items":{"enum":[],"type":"string"},"title":"Fields (optional)","format":"select","options":{"async":{"cache":false,"label":"List Fields","action":"listFields"}},"description":"List of field names to be downloaded","uniqueItems":true,"propertyOrder":2},"module_name":{"enum":[],"type":"string","items":{"enum":[],"type":"string"},"title":"Module API name","options":{"async":{"cache":false,"label":"List Modules","action":"listModules"}},"description":"Use sync action to get a list of available modules.","propertyOrder":1}},"uniqueItems":true,"propertyOrder":1}}},"createConfigurationRowSchema":null,"configurationDescription":"Extracts data about Zoho CRM modules using the [Bulk Read APIs](https://www.zoho.com/crm/developer/docs/api/v2/bulk-read/overview.html).","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":["listFields","listFieldsDatetime","listModules"],"fees":false,"limits":null,"logger":"gelf","loggerConfiguration":{"verbosity":{"100":"normal","200":"normal","250":"normal","300":"verbose","400":"verbose","500":"camouflage","550":"camouflage","600":"camouflage"},"gelf_server_type":"tcp"},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/kds-team.ex-zoho","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.ex-zoho","name":"developer-portal-v2/kds-team.ex-zoho","tag":"1.0.13","options":{},"digest":"sha256:87cdc15a10cd831fb37b1d27b7e994298fd14971384cf06214833631b7645211"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-zoho/32/1574120501367.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.ex-zoho/64/1574120501367.png","128":null}},{"id":"kds-team.app-zoom-registrator","vendor":{"id":"kds-team","name":"Keboola Czech s.r.o.","address":"Dělnická 191/27\nHolešovice\n170 00 Praha 7","email":"support@keboola.com","type":"keboola"},"version":165,"name":"Zoom Webinar Registrator","type":"writer","shortDescription":"Application ingests list of people to be registered to specific Zoom Webinar and processes this registration.","longDescription":"App ingests list of people to be registered with a specific Webinar ID. This ID can be retreived from Zoom website or \nvia Keboola's Zoom Extractor. The app processes the registration to specific webinar by utilizing a Zoom JWT Application\nregistered via https://marketplace.zoom.us/user/build. \nThis app is necessary to retrieve an API token. \n\nOnly registrants (unique combination of Webinar ID and email) that have not yet been registered for given Webinar ID \nwill be registered and notified via email. ","licenseUrl":"https://bitbucket.org/kds_consulting_team/kds-team.app-zoom-registrator/src/master/LICENSE.md","documentationUrl":"https://bitbucket.org/kds_consulting_team/kds-team.app-zoom-registrator/src/master/README.md","sourceCodeUrl":"https://bitbucket.org/kds_consulting_team/kds-team.app-zoom-registrator/src/master/src/","requiredMemory":null,"processTimeout":null,"features":["dev-branch-configuration-unsafe"],"encryption":false,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":null,"uiOptions":["genericDockerUI","genericDockerUI-tableInput","genericDockerUI-authorization"],"imageParameters":{},"stackParameters":{},"testConfiguration":null,"configurationSchema":{},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":"#### Application requires 1 (one) input mapping. \nThe data-set in input mapping must include following columns:\n- __webinar_id__ (mandatory)\t\n- __email__ (mandatory)\n- __first_name__ (mandatory)\n- __last_name__\t(mandatory)\n\nOptionally, you can add another columns as follows:\n- address\t\n- city\n- country\t\n- zip\t\n- state\t\n- phone\t\n- industry\t\n- org\t\n- job_title\t\n- purchasing_time_frame\t(allowed values: Within a month, 1-3 months, 4-6 months, More than 6 months, No timeframe)\n- role_in_purchase_process (allowed values: Decision Maker, Evaluator/Recommender, Influencer, Not involved)\n- no_of_employees (allowed values: 1-20, 21-50, 51-100, 101-500, 500-1000, 1001-5000, 5001-10000, More than 10000)\n- comments    \n---\n#### Authorization\nIn order to use this app you need to authorize the Zoom account via oAuth in the Authorization tab.","configurationFormat":"json","emptyConfiguration":null,"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":null,"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":true,"publishedVersion":165,"uri":"docker/kds-team.app-zoom-registrator","repository":{"type":"ecr","uri":"147946154733.dkr.ecr.us-east-1.amazonaws.com/developer-portal-v2/kds-team.app-zoom-registrator","name":"developer-portal-v2/kds-team.app-zoom-registrator","tag":"0.1.6","options":{},"digest":"sha256:0ea18cec93894f63493930ed228aa9fdecd27a66833225e7a6148690c1369c96"},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-zoom-registrator/32/1589379025993.png","64":"https://ui.keboola-assets.com/developer-portal/icons/kds-team.app-zoom-registrator/64/1589379025993.png","128":null}},{"id":"ex-zuora-aqua","vendor":{"id":"vokurka","name":"Vojtěch Kurka","address":"Bali DataSurfHouse","email":"kurka.vojtech@gmail.com","type":"other"},"version":9,"name":"Zuora AQuA","type":"extractor","shortDescription":"Extractor for reports created by Zuora's Aggregated Query API (AQua)","longDescription":null,"licenseUrl":"https://github.com/vokurka/keboola-zuora-ex/blob/master/LICENSE.md","documentationUrl":"https://github.com/vokurka/keboola-zuora-ex/blob/master/README.md","sourceCodeUrl":null,"requiredMemory":"256m","processTimeout":3600,"features":["container-root-user"],"encryption":true,"network":"bridge","defaultBucket":false,"defaultBucketStage":null,"forwardToken":false,"forwardTokenDetails":false,"injectEnvironment":false,"complexity":null,"category":null,"categories":[],"dataTypeSupport":"none","allowedProcessorPosition":"any","cpuShares":1024,"uiOptions":["genericDockerUI","legacyHasRun"],"imageParameters":{},"stackParameters":{},"testConfiguration":{},"configurationSchema":{},"configurationRowSchema":null,"createConfigurationRowSchema":null,"configurationDescription":null,"configurationFormat":"yaml","emptyConfiguration":{},"emptyConfigurationRow":null,"actions":[],"fees":false,"limits":null,"logger":"standard","loggerConfiguration":{},"stagingStorageInput":"local","stagingStorageOutput":"local","isDeprecated":false,"expiredOn":null,"replacementApp":null,"isPublic":true,"isPublished":false,"publishedVersion":null,"uri":"docker/ex-zuora-aqua","repository":{"type":"quay","uri":"vokurka/keboola-zuora-ex","name":null,"tag":null,"options":{},"digest":null},"publishingStatus":"public","icon":{"32":"https://ui.keboola-assets.com/developer-portal/icons/ex-zuora-aqua/32/1.png","64":"https://ui.keboola-assets.com/developer-portal/icons/ex-zuora-aqua/64/1.png","128":null}}]