Reco v1.8.0: External API migration, multi-severity filter (PRO-303), 5 new commands#2
Open
yanivblumReco wants to merge 5 commits into
Open
Reco v1.8.0: External API migration, multi-severity filter (PRO-303), 5 new commands#2yanivblumReco wants to merge 5 commits into
yanivblumReco wants to merge 5 commits into
Conversation
…ty filter - Migrate alerts, identities, apps, files, labels, and comments from internal table APIs to /api/v1/external-api/* endpoints; responses are plain JSON (no base64-encoded cell rows) - Support comma-separated Risk level filter in fetch-incidents (e.g. HIGH,CRITICAL builds a SCIM OR filter) — resolves PRO-303 - Add automatic 429 retry with exponential backoff for all External API calls via _rate_limited_request() - Add five new list commands backed by the External API: reco-list-events, reco-list-posture-issues, reco-list-accounts, reco-list-devices, reco-list-ai-agents (all accept SCIM filters) - Update pack README with Reco SaaS & AI Security positioning - Bump version to 1.8.0 Signed-off-by: Yaniv Blum <yanivb@reco.ai>
yanivblumReco
force-pushed
the
reco-external-api-migration
branch
from
July 17, 2026 17:25
e40d7c5 to
81d64a6
Compare
…ilter - Silence xsoar-lint E9003 on the rate-limit backoff sleep (matches the inline-disable convention used by other integrations' retry loops). - Rewrite unit tests that still mocked the old internal Table API endpoints for flows migrated to the External API (fetch-incidents, risky users, user context, sensitive assets, app discovery/auth status), and fix a couple of assertions left over from the old response shapes. - Change the risk_level fetch-incidents parameter from a comma-separated exact-match list back to a single minimum-severity value: e.g. MEDIUM now fetches medium, high, and critical alerts (PRO-303).
- List every renamed/removed context output field per migrated command (RiskyUsers, User, SensitiveAssets, Apps, AppAuthorization) so upgrading customers know which playbooks/layouts will silently stop populating. - Call out the fetch-incidents Risk level semantic change explicitly: it now fetches the given severity and above, not an exact match. - Correct "five new commands" to the actual 14 added in this release.
- Reco.py: bound the _paginate_all loop with MAX_PAGES, call demisto.args() once and reuse it in main(), remove the unused create_filter() helper. - Reco_test.py: add unit tests for all 14 new reco-list-* commands. - Reco.yml: fix output/argument descriptions to start with "The " and end with a period, use active voice in command descriptions, drop the default-value duplication in limit-arg descriptions, bump fromversion to 6.8.0 (sectionorder/section require it), and restore additionalinfo for config params that generate-docs left blank. - Regenerate the integration README structurally (Base Command sections, full Input/Output tables for every command, including the 14 new list commands and the ones with stale "Same as X" shortcuts), while preserving the hand-written intro and SCIM filter guide. - Pack README: fix multi-product wording, AI agent capitalization, and a missing comma. - Bump to 2.0.0 (major) for the breaking changes, add the breakingChanges companion JSON, and rewrite the release notes to match this repo's doc-review templates (starred command/field styling, approved bullet prefixes, no ad-hoc heading for breaking changes). - pack_metadata.json: add the Reco keyword and githubUser field.
Box-drawing separators, em dashes, and an arrow in comments/docstrings
were valid UTF-8 but broke XSOAR's Go-based YAML parser when the
script gets embedded into the unified integration YAML on upload
("yaml: control characters are not allowed"). Replaced with plain
ASCII equivalents.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
/api/v1/external-api/endpoints, which return clean JSON. Affected commands: alert fetch/detail, comments, labels, identities, risky users, apps, app auth status, files, and API key validation.Risk levelconfiguration parameter now accepts a comma-separated list (e.g.HIGH,CRITICALor30,40). Values are parsed into a SCIM OR filter:(severity eq "HIGH" or severity eq "CRITICAL"). Single values continue to work unchanged._rate_limited_request()which retries on HTTP 429 (up to 3× with exponential backoff, honouringRetry-Afterheader).filtersandlimit):reco-list-eventsreco-list-posture-issuesreco-list-accountsreco-list-devicesreco-list-ai-agentsreco-get-risky-users,reco-get-user-context-by-email-address,reco-get-sensitive-assets-by-id,reco-get-assets-by-id, andreco-get-appsupdated to camelCase External API field names.Key API endpoint changes
fetch-incidents/ alert listPUT /policy-subsystem/alert-inbox/tableGET /external-api/alerts/listget_single_alertGET /policy-subsystem/alert-inbox/{id}GET /external-api/alert-details/{id}reco-add-comment-to-alertPOST /share-service/share-commentPOST /external-api/comments/createPUT /set-label-statusPOST /external-api/labels/addreco-get-user-context-by-email-addressPUT /risk-management/get-risk-management-tableGET /external-api/users/listreco-get-risky-usersGET /external-api/accounts/list?filters=isRiskyUser eq truereco-get-appsPUT /asset-management/queryGET /external-api/apps/listreco-set-app-authorization-statusPUT /app-risk-management/insert-risk-management-appPUT /external-api/apps/{id}/auth-statusPUT /asset-management/queryGET /external-api/files/listtest-moduleGET /policy-subsystem/alert-inbox?limit=1GET /external-api/alerts/list?count=1Commands kept on internal APIs (no external equivalent):
reco-change-alert-status,reco-resolve-visibility-event,reco-get-assets-user-has-access-to,reco-get-sensitive-assets-with-public-link,reco-get-3rd-parties-accessible-to-data-list,reco-get-files-shared-with-3rd-parties,reco-get-files-exposed-to-email-address,reco-get-assets-shared-externally,reco-get-private-email-list-with-access,reco-add-exclusion-filter,reco-get-link-to-user-overview-page,reco-get-alert-ai-summary.Test plan
test-modulepasses against a live Reco instancefetch-incidentswithRisk level = HIGH,CRITICALreturns only HIGH and CRITICAL alertsfetch-incidentswithRisk level = 30(single numeric) continues to workreco-list-events,reco-list-accounts,reco-list-devices,reco-list-ai-agents,reco-list-posture-issuesreturn results with SCIM filter examples from READMEreco-get-risky-usersreturns Account objects (camelCase fields:accountEmail,hasMfa,isRiskyUser)reco-get-appsreturns App objects (camelCase fields:usersCount,vendorGrade,aiCapability)reco-add-comment-to-alertposts a comment via the external APIreco-add-risky-user-labellabels an identity via the external labels endpointResolves PRO-303
🤖 Generated with Claude Code