Skip to content

feat(netscaler): add ADC NITRO OpenAPI spec and Studio Project - #53

Merged
michaelelrom merged 4 commits into
itential:mainfrom
michaelelrom:feat/netscaler-nitro-openapi-spec
Aug 7, 2026
Merged

feat(netscaler): add ADC NITRO OpenAPI spec and Studio Project#53
michaelelrom merged 4 commits into
itential:mainfrom
michaelelrom:feat/netscaler-nitro-openapi-spec

Conversation

@michaelelrom

Copy link
Copy Markdown
Collaborator

Summary

  • Adds NetScaler/ADC/OpenAPIs/: a full 6,642-operation NITRO API spec (citrix_netscaler_nitro-14.1.json) covering all 1,806 NITRO config resource types, plus a curated 137-operation -latest.json covering 34 hand-reviewed resource types (load balancing, content switching, SSL, GSLB, HA, network/system config, and responder policies).
  • Adds NetScaler/ADC/Studio Projects/: a 132-workflow Studio Project (Load Balancing, Content Switching, SSL, GSLB, Network, Responder, System, High Availability), one workflow per curated-spec operation, scoped to full CRUD only where NITRO actually supports it.
  • Adds a product README.md covering integration configuration (NITRO's static X-NITRO-USER/X-NITRO-PASS header auth, no session/token flow needed), the OpenAPI spec breakdown, the Studio Project's folder structure, and a detailed "Generation Method and Caveats" section.
  • Adds a root README.md vendor index entry for NetScaler.

Notes for reviewers

  • No vendor-published OpenAPI/Swagger spec exists for the NITRO API (NetScaler's official reference is HTML-only), and there's no live-appliance introspection tool. Both specs were generated by parsing the official netscaler/adc-nitro-go Go SDK source (struct fields, JSON tags, doc comments) and mapping NITRO's documented, uniform REST conventions onto it.
  • The full spec's HTTP method availability per resource is a structural default (full CRUD for standalone resources, list/create/delete for bindings), not verified per-resource — the SDK is a generic client and doesn't encode which methods each of the 1,806 resource types actually supports. The curated 34-resource spec was hand-reviewed to correct this.
  • hanode (HA node add/remove) is deliberately excluded from the Studio Project — it's in the curated spec, but adding/removing an HA pair member is high-blast-radius, not routine automation.
  • Both specs pass OpenAPI 3.0 validation and Itential Platform's own integration-model validation endpoint, and all 132 Studio Project workflows were successfully created and built as tasks in Automation Studio. One read operation (List CS Actions) has been confirmed working end-to-end against a live customer NetScaler ADC; the rest share the same spec and task-building pipeline but haven't each been individually executed yet.

Test plan

  • Both OpenAPI specs pass openapi-spec-validator and Itential Platform's PUT /integration-models/validation
  • Integration Model and a live integration instance created successfully on a running Itential Platform
  • All 132 Studio Project workflows created and built as tasks in Automation Studio with zero failures
  • One operation (List CS Actions) confirmed working against a live customer NetScaler ADC
  • Remaining 131 workflows pending individual verification against a live appliance

mikeelrom and others added 4 commits August 7, 2026 17:50
No vendor-published OpenAPI spec exists for NetScaler's NITRO API and
there's no live-instance generator like vmware-openapi-generator, so
both specs are generated by parsing the official netscaler/adc-nitro-go
Go SDK source and mapping NITRO's uniform REST conventions onto it:

- citrix_netscaler_nitro-14.1.json: full spec, 6642 operations across
  all 1806 NITRO config resource types.
- citrix_netscaler_nitro-latest.json: curated to 121 operations across
  30 hand-reviewed resource types covering core load balancing, content
  switching, SSL, GSLB, HA, and basic network/system config.

Both pass OpenAPI 3.0 validation and Itential Platform's own
integration-model validation, and successfully build tasks in
Automation Studio for a representative sample (CRUD, an action, a
binding, and a singleton resource). Neither has been executed against
a live NetScaler appliance -- see the README's Generation Method and
Caveats section for what that means in practice, particularly around
HTTP method availability in the full spec.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Adds a 116-workflow Studio Project (Load Balancing, Content Switching,
SSL, GSLB, Network, System, High Availability) built from the curated
NITRO OpenAPI spec, one workflow per operation, scoped to CRUD where
NITRO actually supports it. hanode is deliberately excluded -- adding
or removing HA pair members is high-blast-radius, not routine
automation.

All 116 workflows were created and built as tasks in Automation
Studio; one read operation (List CS Actions) has been confirmed
working end-to-end against a live customer NetScaler ADC. Also
documents a real gotcha hit during that test: the connection schema
has no separate port field, and a wrong port produces a status:0
connection failure indistinguishable from a network/DNS problem.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…example

The port example used 8080 -- the wrong port from a live debugging
session, not a meaningful example -- and the auth/generation sections
compared NITRO to vSphere's spec in this repo, which doesn't help a
reader who's only here for NetScaler.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Adds responderaction and responderpolicy (full CRUD) plus their CS/LB
vserver bindings to the curated OpenAPI spec (121 -> 137 operations,
30 -> 34 resource types) and a new Responder folder (16 workflows) in
the Studio Project (116 -> 132 total), following the same
action+policy+binding pattern already used for Content Switching.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@michaelelrom
michaelelrom merged commit 186f461 into itential:main Aug 7, 2026
@michaelelrom
michaelelrom deleted the feat/netscaler-nitro-openapi-spec branch August 7, 2026 22:39
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