# AS3 declaration explainer

> Paste the JSON you POST to /mgmt/shared/appsvcs/declare and it reads it back: whether it is a full AS3 request or an ADC-only declaration, the schemaVersion and metadata, and the Tenant to Application to resource tree with every class explained, while checking the structural rules F5 documents. Runs entirely in your browser.

- Tool: https://ronutz.com/en/tools/as3-explainer-validator
- Family: Networking

---

## What it does

Paste an F5 BIG-IP AS3 declaration, the JSON you POST to `/mgmt/shared/appsvcs/declare`, and this reads it back to you: whether it is a full AS3 request or an ADC-only declaration, the top-level options, the ADC metadata, and the Tenant to Application to resource tree with every class named and explained. It also checks the structural rules F5 documents. It is a decode-only tool that runs entirely in your browser, grounded in F5's AS3 user guide and schema reference.

## Request or declaration

The first thing it tells you is which of two shapes you pasted. A full AS3 request has `class: "AS3"` and carries `action` (deploy, dry-run, retrieve, remove, patch) and `persist`, wrapping the declaration. An ADC-only declaration has `class: "ADC"` at the top and omits the wrapper, which means the action and persist options are not available. The tool surfaces the action and persist for a request, and the schemaVersion, id, label, and remark for the ADC declaration either way.

## The tree it walks

Below the metadata, the tool walks the fixed AS3 hierarchy: each Tenant (which becomes a BIG-IP partition), each Application (with its template, noting when generic is defaulted in AS3 3.20 and later), and each resource object inside. For every object it shows the class and a plain-language explanation, from Service_HTTP and Service_HTTPS through Pool, Monitor, TLS_Server, TLS_Client, Certificate, Persist, WAF_Policy, Endpoint_Policy, and iRule. A class it does not recognize is still listed and marked, never hidden.

## The structural checks

Alongside the explanation, the tool applies the documented rules that make a declaration valid: a top-level AS3 or ADC class, a required schemaVersion, at least one Tenant containing at least one Application containing at least one resource, and the template and service-class matching rule (a template of http, https, tcp, udp, or l4 requires a matching Service object named service, formerly serviceMain). It also flags reserved names (Common, Shared, service) as informational and checks that object names follow the 1 to 64 character, letter-first, alphanumeric rule.

## Scope and grounding

This is a structure explainer and sanity checker, not a full JSON-Schema validator. It does not reproduce the entire AS3 schema or check every property, so a declaration that passes here can still be rejected by AS3 itself; treat a clean result as a good sign rather than a guarantee. Nothing you paste is uploaded or leaves the page. Grounded in F5's AS3 documentation; for a deployment, validate against your AS3 version and the schema reference.

## Standards and references

- [F5 BIG-IP AS3: Composing a Declaration (AS3 class, ADC class, Tenant, Application, template/service rule)](https://clouddocs.f5.com/products/extensions/f5-appsvcs-extension/latest/userguide/composing-a-declaration.html)
- [F5 BIG-IP AS3: Declaration Purpose and Function (tree model, reserved names, pointers, minimum declaration)](https://clouddocs.f5.com/products/extensions/f5-appsvcs-extension/latest/refguide/declaration-purpose-function.html)
- [F5 BIG-IP AS3: Using AS3 (POST/GET/DELETE/PATCH to /mgmt/shared/appsvcs/declare; CRUD actions)](https://clouddocs.f5.com/products/extensions/f5-appsvcs-extension/latest/userguide/using-as3.html)
- [F5 BIG-IP AS3: Schema Reference (the complete class and property catalog)](https://clouddocs.f5.com/products/extensions/f5-appsvcs-extension/latest/refguide/schema-reference.html)

## Related reading

- [Anatomy of an AS3 Declaration: From the AS3 Class Down to the Pool](https://ronutz.com/en/learn/as3-declaration-anatomy.md): An F5 BIG-IP AS3 declaration is a JSON tree that describes the configuration you want, in tenant and application terms, and lets AS3 work out the order of operations. This walks the structure top to bottom: the AS3 request wrapper versus an ADC-only declaration, the ADC class and its schemaVersion, the Tenant that becomes a partition, the Application and its template, and the resource classes like Service_HTTP, Pool, and TLS_Server, plus the rules that make a declaration valid.
- [Declarative Onboarding: The L1-L3 Half of the Automation Toolchain](https://ronutz.com/en/learn/bigip-declarative-onboarding-do.md): AS3 configures application services on a BIG-IP that is already on the network. Declarative Onboarding is what gets it there: licensing, provisioning, DNS and NTP, VLANs and self IPs and routes, users, and clustering, expressed as one JSON declaration against a Device with a single tenant named Common. This walks the model, the onboarding phases, and the version-specific gotchas that bite in production.
- [Telemetry Streaming: The Automation Toolchain Extension That Observes Instead of Configures](https://ronutz.com/en/learn/bigip-telemetry-streaming-ts.md): AS3 configures application services and DO onboards the device. Telemetry Streaming is the third F5 Automation Toolchain extension, and it is the one that observes rather than configures: it aggregates, normalizes, and forwards statistics and events from the BIG-IP to a consumer like Splunk, ElasticSearch, DataDog, or Prometheus, all from one JSON declaration. This walks the Telemetry class model, the source-and-consumer pipeline, and the gaps that make a declaration succeed while collecting nothing.
