Skip to content

fix(cloudflare,netskope): fix schema bugs blocking Integration Model import - #100

Merged
michaelelrom merged 3 commits into
mainfrom
fix/cloudflare-netskope-import-validation
Sep 10, 2026
Merged

michaelelrom merged 3 commits into
mainfrom
fix/cloudflare-netskope-import-validation

Conversation

@michaelelrom

@michaelelrom michaelelrom commented Sep 10, 2026 •

Copy link
Copy Markdown
Collaborator

Both specs had never actually been imported into a live Itential Platform instance before merging — testing that surfaced real bugs in both, plus the same filename/version convention gap already found and fixed for NDFC in #98. Also adds the Studio Projects that should have shipped with the original PRs.

Import-blocking bugs

Cloudflare (cloudflare-latest.json): 20 schemas used the Draft-04/Swagger 2.0 boolean exclusiveMinimum form (e.g. "exclusiveMinimum": true, "minimum": 0). OpenAPI 3.0 requires this as a single numeric value ("exclusiveMinimum": 0). Platform's AJV validation rejected the import outright. Fixed all 20 occurrences.

Netskope (netskope-latest.json, full spec):

  1. Two paths shared the operationId RolesController_getRole (/platform/roles/{role_id} and /rbac/roles/{rid}) — Itential Platform rejects duplicate operation IDs. Renamed the RBAC one to RbacRolesController_getRole.
  2. DELETE /platform/admin/preferences/{page}/{feature} had its {feature} path parameter marked required: false — OpenAPI 3.0 requires all in: path parameters to be required: true. Fixed.

Convention fixes (same class as #98)

  • Full-spec filenames didn't match info.version: cloudflare_v4.json → cloudflare-4.0.0.json, netskope_v2.json → netskope-1.0.0.json.
  • -latest specs kept the real vendor version in info.version instead of "latest" — now "latest", with the real version preserved in x-vendor-api-version.
  • Both titles dropped the redundant "API"/"REST API" suffix (Cloudflare API → Cloudflare, Netskope REST API v2 → Netskope).

Studio Projects added

  • Cloudflare — 29 workflows across 6 folders (DNS records, zones, firewall rules, load balancers, workers, access applications)
  • Netskope — 24 workflows across 5 folders (real-time policy, SCIM users/groups, URL lists, RBAC roles)

Built locally, one atomic workflow per operation. Not yet imported/tested against a live platform instance.

All specs confirmed importing successfully against a live platform instance, including the corrected identity (Cloudflare:latest, Netskope:latest).

…odel import

Found by actually importing both specs into a live Itential Platform
instance (they had never been tested end-to-end before):

- Cloudflare curated spec: several schemas used the Draft-04/Swagger 2.0
  boolean exclusiveMinimum form (paired with a separate minimum key),
  which OpenAPI 3.0 requires as a single numeric exclusiveMinimum value.
  Fixed 20 occurrences.
- Netskope curated + full specs: two paths shared the same operationId
  (RolesController_getRole on /platform/roles/{role_id} and
  /rbac/roles/{rid}) — Itential Platform rejects duplicate operation IDs
  on import. Disambiguated the RBAC one. Also fixed one path parameter
  ({feature} on DELETE /platform/admin/preferences/{page}/{feature})
  incorrectly marked required: false — OpenAPI 3.0 requires all path
  parameters to be required: true.

All three specs now import successfully.
Same class of violation caught in NDFC (PR #98): full-spec filenames
didn't match info.version (cloudflare_v4.json -> cloudflare-4.0.0.json,
netskope_v2.json -> netskope-1.0.0.json), -latest specs kept the real
vendor version in info.version instead of "latest" (now preserved in
x-vendor-api-version), and both titles carried a redundant "API"/"REST
API" suffix. Confirmed both curated specs still import cleanly with the
corrected identity (Cloudflare:latest, Netskope:latest).
…ubset

Cloudflare: 29 workflows across 6 folders (DNS records, zones, firewall
rules, load balancers, workers, access applications).
Netskope: 24 workflows across 5 folders (real-time policy, SCIM
users/groups, URL lists, RBAC roles).

Built locally, one atomic workflow per operation, not yet imported/tested
against a live platform instance.
@michaelelrom
michaelelrom merged commit b891b96 into main Sep 10, 2026
@michaelelrom
michaelelrom deleted the fix/cloudflare-netskope-import-validation branch September 10, 2026 22:46

This branch was successfully deployed

1 active deployment
production — 17f5cee6 Deployed Sep 10, 2026 by michaelelrom via deploy-assets-production #56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants