IFS Projection Resolver
ℹ️ LEGAL DISCLAIMER
This tool was developed independently using exclusively publicly available information, standard HTTP/REST protocols, and OpenAPI specifications. It is not officially affiliated with, endorsed by, or created by IFS.
Why use this tool instead of the manual IFS Projection Explorer?
Finding the right APIs in IFS Cloud manually can be tedious. The native Projection Explorer requires you to know exactly what you are looking for and involves a lot of clicking to inspect metadata. This tool drastically speeds up your workflow by providing:
- Fuzzy & Broad Search: Instantly search across Projection names, View names, Table names, Entities, and descriptions all at once.
- Offline & Local Capabilities: Scan your local IFS source checkout (
.projection / .views files) in milliseconds without needing a running IFS Cloud instance.
- Automated OpenAPI Resolution: Automatically verify if a projection is active and fetch its OpenAPI specification directly into your IDE.
- Context-Aware Mapping: Seamlessly integrate custom mapping hint files (like DATEV mapping matrices) to immediately see which API endpoints are relevant for your specific integration use cases.
- No Context Switching: Stay entirely within VS Code to find your APIs, copy the JSON results, and continue coding.
This is the generic resolver for IFS Cloud projections. It supports two resolver modes:
- Local mode: scans a local IFS Cloud source checkout for
.projection and .views files.
- Live mode: queries an IFS Cloud environment through Projection Explorer and, optionally, OpenAPI metadata.
Run one of these VS Code commands to get started:
INNEX IFS Projection Resolver: Open Search UI
INNEX IFS Projection Resolver: Quick Search
INNEX IFS Projection Resolver: Show Output
Quick search guide
For a fast, broad overview, enter one short domain term such as customer,
supplier, voucher, invoice, account, or payment. Do not use *, an
empty query, or a full sentence: the resolver performs normalized substring
matching rather than semantic question answering.
Recommended broad-search preset:
| Option |
Initial setting |
Guidance |
| Resolve OpenAPI metadata |
Off |
Enable after narrowing down candidates. |
| Force deep search |
Off |
Can make one request per projection and become slow. |
| JSON output |
Off |
Keeps the readable overview table visible. |
| Source-only scan |
Off |
Enable only to search a local checkout without live access. |
| Include Fragments |
On with a source root |
Gives the broadest local source search. |
| Source root |
checkout when available |
Combines local source results with live results when Source-only is off. |
| Mapping file |
Empty |
Set only when mapping-specific query expansion is wanted. |
| Max deep scan |
50–100 |
Limits an intentional or automatic deep scan; 0 is unlimited. |
Steps to use the search function
- Search
customer or loyalty with the expensive options disabled to get a broad overview.
- Narrow the query to an exact live projection such as
CustomerLoyaltyHandling.
- Enable Resolve OpenAPI metadata for a compact summary of paths, methods, tags, and schema names.
- Select Full OpenAPI Output to load the complete JSON document, including parameters, request bodies, responses, and schema properties. The formatted document replaces the result area so Copy output and Save as JSON export the full specification; Save suggests
<ProjectionName>.json automatically.
- Select Open Documentation online to open the same projection in the interactive IFS API documentation viewer configured by the current Base URL and App Context.
Full OpenAPI Output and Open Documentation online are enabled only when exactly one
live projection matches. Local source artifacts, zero matches, and multiple
matches keep both buttons disabled.
When JSON output is disabled, the readable result table includes an
Active column: a green check mark indicates an active live projection and a
red cross indicates an inactive one. Local artifacts without a live activation
status show a dash.
Preparation
IAM Client Setup
To use the Live mode, you must configure an IAM Client in IFS Cloud with the following settings:
- Client Type: Service Account (or Public with Direct Access Grant).
- Enabled Grants: Direct Access Grant must be enabled to allow username/password or client credentials flow.
- Redirect URI: Set a valid Redirect URI (e.g.,
http://localhost).
- Permissions: The service account/user must be granted access to the
ProjectionExplorer projection (to search metadata) and any other specific APIs you wish to resolve.
Environment Setup
The installed extension has no Python or Go runtime dependency. Its VSIX contains
prebuilt Go resolver binaries for macOS x64/ARM64, Linux x64/ARM64, and Windows
x64. Building the extension from source requires Node.js/npm and Go 1.22 or
newer. A custom compatible resolver executable can be selected with
ifsProjectionResolver.binaryPath.
For live mode in the VS Code extension, prefer global extension settings such as
ifsProjectionResolver.baseUrl, ifsProjectionResolver.appContext, ifsProjectionResolver.tokenUrl,
ifsProjectionResolver.clientId, ifsProjectionResolver.clientSecret and
ifsProjectionResolver.scope. These are passed to the resolver as IFS_* environment
variables before any local .env fallback is considered. Local workspace .env
fallback is disabled by default in the extension and can be enabled with
ifsProjectionResolver.useLocalEnv.
Base URL, token URL, client ID, and client secret are intentionally empty on a
new installation. Enter the values for your own IFS Cloud environment in the
IAM configuration section. Updating the extension does not replace existing
user settings.
For CLI usage, or when .env fallback is enabled, use:
IFS_BASE_URL=https://your-ifs.example.com
IFS_APP_CONTEXT=main
IFS_TOKEN_URL=https://your-ifs.example.com/auth/realms/<realm>/protocol/openid-connect/token
IFS_CLIENT_ID=<client-id>
IFS_CLIENT_SECRET=<client-secret>
IFS_SCOPE="openid microprofile-jwt"
If ifsProjectionResolver.sourceRoot or --source-root points to a local IFS
Cloud checkout and live credentials are missing, the resolver skips live IFS
access and runs a source-only scan instead of failing with a credential error.
Optional resolver settings:
IFS_TIMEOUT_SECONDS=30
IFS_MAPPING_FILE=path/to/optional_mapping_hints.md
Set IFS_APP_CONTEXT=int or ifsProjectionResolver.appContext = "int" for
environments whose APIs live below /int/ifsapplications/.... If the base URL
already ends in /main or /int, the resolver detects that suffix automatically.