Feature ideas

We take your ideas seriously! Read more on our prioritization process in our blog https://productmanagement.port.io/posts/managing-feature-ideas
Add opt-in flag to overwrite integration mapping on restart from port-app-config.yml
Background When an Ocean integration starts up, it reads its mapping from .port/resources/port-app-config.yml and applies it to the integration config stored in Port. However, this only happens in two narrow cases: when the integration is being created for the first time, or when it exists but has never been initialized (empty config). In both cases, patch_integration() is called with the port_app_config payload. Once the integration is fully initialized, Port sets arePortResourcesInitialized = true on the integration record. From that point on, every subsequent restart hits an early-return guard in BaseSetup.setup() and skips the entire setup phase. Only metadata fields ( changelogDestination , version , actionsProcessingEnabled , processingMode ) are ever updated via _verify_integration_configuration() - the mapping is never touched. This is intentional: it protects mappings that users may have edited manually in the Port UI from being overwritten on redeploy. Problem The protection has no opt-out, which creates a real friction point for integration developers who manage their mapping in code and expect port-app-config.yml to be the source of truth. In practice this means: Updating the mapping in port-app-config.yml and redeploying silently has no effect - the old mapping keeps running. Running a new version of an integration alongside an outdated mapping is not immediately obvious and can produce confusing behavior. Developers are forced to manually clear or reset the mapping in the Port UI to pick up changes, breaking the "ship code + mapping together" workflow. Proposed Solution Introduce an opt-in configuration flag (e.g. overwrite_config_on_restart , analogous to the k8s-exporter's overwrite-configuration-on-restart ) in IntegrationConfiguration. When enabled: The arePortResourcesInitialized guard in BaseSetup.setup() should not short-circuit. _verify_integration_configuration() (or the setup flow) should call patch_integration(port_app_config=...) with the mapping loaded from port-app-config.yml . The flag should default to false so existing behavior is fully preserved for production deployments where users manage their mappings in the UI. Notes This mirrors a pattern already established in the k8s-exporter ( overwrite-configuration-on-restart ), so there's prior art in the product for this kind of escape hatch. The fix is low-risk when scoped correctly, the default-off behavior means no existing integration is affected unless the flag is explicitly set. A follow-up consideration: whether to expose this flag via an env var, a Helm value, or both, to cover different deployment models.
0
·
Data sources
Full Terraform Provider ↔ API Parity
Summary Several Port API capabilities have no provider equivalent, forcing customers to fall back to null_resource + local-exec raw API calls. This undermines the value of IaC and blocks Via Transportation from going full production. Gaps SaaS Integrations port_integration cannot set installation type correctly; bootstraps hardcode installationType: "OnPrem" on POST. Workaround: manual API calls. Integration Credentials port_integration only applies mapping config; no way to set credentials or other integration configuration available via the API. Workaround: manual API calls. Integration Resync No way to trigger a resync after creation. Suggested implementation via Terraform provider functions. Workaround: manual API calls. Per-Widget Page Editing Only whole-page replacement is supported; no ability to modify individual widgets. Preferred model: port_page as an umbrella resource referencing widgets by position, with port_page_widget as a configurable child resource. Catalog Page Metadata port_page (including beta) does not expose showInSidebar or section fields. Workaround: not possible via IaC. Page Type Support Only blueprint-entities, dashboard, and home page types are currently supported. Workaround: not possible via IaC. Blueprint Relation/Ownership No first-class resource exists; gaps filled today via external scripts (ensure_blueprint_ relation.py , ensure_blueprint_ ownership.sh ). Native Team Field on Entities Ocean cannot set the team field natively. Workaround: apply_team_ membership.py . Ask Full provider ↔ API parity across integrations (SaaS installation type, credentials, resync trigger), page metadata (showInSidebar, section), and all page types. First-class port_page_widget resource — expose port_page as an umbrella resource referencing widgets by position, with port_page_widget as a configurable child resource supporting partial updates. First-class port_blueprint_relation resource — supporting partial updates and deferred binding to eliminate reliance on out-of-band scripts. Documentation of replace-only fields — e.g. the full widgets JSON on catalog pages, which is currently replaced entirely on every apply
0
·
Data model
Load More