[fidldoc] Updating fidldocs
diff --git a/sdk/fidl/fuchsia.accessibility.semantics/index.md b/sdk/fidl/fuchsia.accessibility.semantics/index.md
index b20239c..83c0b19 100644
--- a/sdk/fidl/fuchsia.accessibility.semantics/index.md
+++ b/sdk/fidl/fuchsia.accessibility.semantics/index.md
@@ -214,8 +214,7 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>DEFAULT</code></td>
             <td><code>1</code></td>
-            <td> The default action associated with the role of an element.
-</td>
+            <td></td>
         </tr></table>
 
 ### Role {:#Role}
@@ -230,8 +229,7 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>UNKNOWN</code></td>
             <td><code>1</code></td>
-            <td> Role used to represent elements which role is not currently supported.
-</td>
+            <td></td>
         </tr></table>
 
 
diff --git a/sdk/fidl/fuchsia.auth/index.md b/sdk/fidl/fuchsia.auth/index.md
index c507206..b3258d4 100644
--- a/sdk/fidl/fuchsia.auth/index.md
+++ b/sdk/fidl/fuchsia.auth/index.md
@@ -884,6 +884,884 @@
             </td>
         </tr></table>
 
+## AttestationSigner {:#AttestationSigner}
+*Defined in [fuchsia.auth/attestation_signer.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.auth/attestation_signer.fidl#23)*
+
+
+### SignData {:#SignData}
+
+ Cryptographically signs the `plaintext` data sent in request using a
+ crypto key configured at initialization.
+
+ Returns the raw bytes of the `signature` string on success. Otherwise,
+ an error status is returned.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>plaintext</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#AttestationSignerStatus'>AttestationSignerStatus</a></code>
+            </td>
+        </tr><tr>
+            <td><code>signature</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;?</code>
+            </td>
+        </tr></table>
+
+## AuthenticationUIContext {:#AuthenticationUIContext}
+*Defined in [fuchsia.auth/auth_provider.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.auth/auth_provider.fidl#147)*
+
+ This interface is implemented by base shell. It is used to notify the
+ base shell that a view for login needs to be started / stopped.
+
+### StartOverlay {:#StartOverlay}
+
+ Requests base shell to display `view_holder_token` for authentication.
+ Another call to StartOverlay() will not be made until StopOverlay()
+ has been called.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>view_holder_token</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.ui.views/index.html'>fuchsia.ui.views</a>/<a class='link' href='../fuchsia.ui.views/index.html#ViewHolderToken'>ViewHolderToken</a></code>
+            </td>
+        </tr></table>
+
+
+
+### StopOverlay {:#StopOverlay}
+
+ Requests base shell to stop displaying the auth view.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+## AuthProvider {:#AuthProvider}
+*Defined in [fuchsia.auth/auth_provider.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.auth/auth_provider.fidl#161)*
+
+ OAuth identity service that provisions new users and provides authorization
+ tokens for the currently enrolled users. Some common Auth Providers are
+ Google, Facebook, Spotify and Twitter.
+
+### GetPersistentCredential {:#GetPersistentCredential}
+
+ Authenticates and authorizes a user against an auth provider backend system
+ using the OAuth protocol and returns the persistent credential such as
+ Google's refresh token or Facebook's access token for this user. These
+ persistent credentials are long lived and their expiration time is set by
+ the identity provider, for example Google's refresh tokens are valid until
+ the user changes their password or revokes access explicitly, whereas
+ Facebook access tokens are valid for up to 60 days or until the user
+ revokes access.
+
+ During OAuth handshake, user needs to explicitly consent to the permissions
+ as configured at the server. The consent is presented in a web_view using
+ an `auth_ui_context` overlay provided by the base_shell.
+
+ An optional `user_profile_id` is provided for simplifying reauthorization
+ flow.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>auth_ui_context</code></td>
+            <td>
+                <code><a class='link' href='#AuthenticationUIContext'>AuthenticationUIContext</a>?</code>
+            </td>
+        </tr><tr>
+            <td><code>user_profile_id</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#AuthProviderStatus'>AuthProviderStatus</a></code>
+            </td>
+        </tr><tr>
+            <td><code>credential</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+        </tr><tr>
+            <td><code>user_profile_info</code></td>
+            <td>
+                <code><a class='link' href='#UserProfileInfo'>UserProfileInfo</a>?</code>
+            </td>
+        </tr></table>
+
+### GetAppAccessToken {:#GetAppAccessToken}
+
+ Exchanges a persistent user `credential` for a short lived app specific
+ OAuth access token for the specified `client_id` and `scopes`. The
+ `credential` is a long lived OAuth token as generated by the external
+ identity provider in the above GetPersistentCredential() call. If no
+ client_id is specified a default will be used.
+
+ Access tokens are used by applications to make API requests against
+ services offered by the Auth Provider.
+
+ Returns an `auth_token` response containing an access token, if successful.
+ Otherwise, an error status is returned.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>credential</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>client_id</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+        </tr><tr>
+            <td><code>scopes</code></td>
+            <td>
+                <code>vector&lt;string&gt;</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#AuthProviderStatus'>AuthProviderStatus</a></code>
+            </td>
+        </tr><tr>
+            <td><code>auth_token</code></td>
+            <td>
+                <code><a class='link' href='#AuthToken'>AuthToken</a>?</code>
+            </td>
+        </tr></table>
+
+### GetAppIdToken {:#GetAppIdToken}
+
+ Exchanges a persistent user `credential` for an OAuth Identity token for
+ the specified `audience`. The audience is the intended recipient of the
+ id_token. The `credential` is a long lived OAuth token as generated by the
+ external identity provider in the above GetPersistentCredential() call.
+
+ OAuth Id tokens are JSON Web Tokens (JWT) that contains digitally signed
+ identity information about the user for the intended recipient.
+
+ Returns an `auth_token` response containing an id token, if successful.
+ Otherwise, an error status is returned.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>credential</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>audience</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#AuthProviderStatus'>AuthProviderStatus</a></code>
+            </td>
+        </tr><tr>
+            <td><code>auth_token</code></td>
+            <td>
+                <code><a class='link' href='#AuthToken'>AuthToken</a>?</code>
+            </td>
+        </tr></table>
+
+### GetAppFirebaseToken {:#GetAppFirebaseToken}
+
+ Gets a firebase auth token for the user identified by `id_token` and the
+ requested |firebase_api key|. The `id_token` is a JWT Identity token
+ returned from GetAppIdToken() call above.
+
+ Returns a `firebase_token` from the server if successful. Otherwise, an
+ error status is returned.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>id_token</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>firebase_api_key</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#AuthProviderStatus'>AuthProviderStatus</a></code>
+            </td>
+        </tr><tr>
+            <td><code>firebase_token</code></td>
+            <td>
+                <code><a class='link' href='#FirebaseToken'>FirebaseToken</a>?</code>
+            </td>
+        </tr></table>
+
+### RevokeAppOrPersistentCredential {:#RevokeAppOrPersistentCredential}
+
+ Revokes user's grants at the Auth Provider by revoking a credential. The
+ `credential` is either a long lived OAuth token as returned by the
+ GetPersistentCredential() call or an app specific access token as returned
+ by the GetAppAccessToken() call.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>credential</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#AuthProviderStatus'>AuthProviderStatus</a></code>
+            </td>
+        </tr></table>
+
+### GetPersistentCredentialFromAttestationJWT {:#GetPersistentCredentialFromAttestationJWT}
+
+ Authenticates and authorizes a user against a remote attestation based
+ auth provider backend system that mints bound persistent credentials.
+
+ This method is capable of performing user authorization directly on the
+ device or use the OAuth authorization code generated out-of-band on a
+ secondary device that is sent over a secure channel to the target device.
+ In the latter case, auth_code generated out-of-band is passed as an
+ argument in the attestation `jwt_params`. Where as in the former case,
+ user needs to explicitly consent to the permissions on the target device
+ and the auth_code is returned to the device directly. The consent is
+ presented in a web_view using an `auth_ui_context` overlay provided by the
+ base_shell. An optional `user_profile_id` is provided for simplifying
+ reauthorization flow.
+
+ The authorization code is exchanged to a bound refresh token using an
+ attestation JWT constructed from `jwt_params` and is signed by the
+ `attestation_signer` component passed in the request.
+
+ If the operation is successful, a long-lived `credential` that is bound to
+ the originating device is returned along with an optional `auth_token`
+ containing short-lived access token and an optional `nonce` that is used on
+ next token exchange request. An optional `user_profile_info` containing
+ user profile attributes is also returned if successful. Otherwise, an error
+ status is returned.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>attestation_signer</code></td>
+            <td>
+                <code><a class='link' href='#AttestationSigner'>AttestationSigner</a></code>
+            </td>
+        </tr><tr>
+            <td><code>jwt_params</code></td>
+            <td>
+                <code><a class='link' href='#AttestationJWTParams'>AttestationJWTParams</a></code>
+            </td>
+        </tr><tr>
+            <td><code>auth_ui_context</code></td>
+            <td>
+                <code><a class='link' href='#AuthenticationUIContext'>AuthenticationUIContext</a>?</code>
+            </td>
+        </tr><tr>
+            <td><code>user_profile_id</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#AuthProviderStatus'>AuthProviderStatus</a></code>
+            </td>
+        </tr><tr>
+            <td><code>credential</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+        </tr><tr>
+            <td><code>auth_token</code></td>
+            <td>
+                <code><a class='link' href='#AuthToken'>AuthToken</a>?</code>
+            </td>
+        </tr><tr>
+            <td><code>auth_challenge</code></td>
+            <td>
+                <code><a class='link' href='#AuthChallenge'>AuthChallenge</a>?</code>
+            </td>
+        </tr><tr>
+            <td><code>user_profile_info</code></td>
+            <td>
+                <code><a class='link' href='#UserProfileInfo'>UserProfileInfo</a>?</code>
+            </td>
+        </tr></table>
+
+### GetAppAccessTokenFromAssertionJWT {:#GetAppAccessTokenFromAssertionJWT}
+
+ Exchanges a bound persistent user `credential` for a short lived app
+ specific OAuth access token using the specified assertion JWT. The
+ assertion JWT is constructed from `jwt_params` and is signed by the
+ `attestation_signer` component passed in the request.
+
+ Access tokens are used by applications to make API requests against
+ services offered by the Auth Provider.
+
+ Returns an `auth_token` response containing an access token and an optional
+ `updated_credential` and `auth_challenge` to be used on next token refresh
+ request, if successful. Otherwise, an error status is returned.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>attestation_signer</code></td>
+            <td>
+                <code><a class='link' href='#AttestationSigner'>AttestationSigner</a></code>
+            </td>
+        </tr><tr>
+            <td><code>jwt_params</code></td>
+            <td>
+                <code><a class='link' href='#AssertionJWTParams'>AssertionJWTParams</a></code>
+            </td>
+        </tr><tr>
+            <td><code>credential</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>scopes</code></td>
+            <td>
+                <code>vector&lt;string&gt;</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#AuthProviderStatus'>AuthProviderStatus</a></code>
+            </td>
+        </tr><tr>
+            <td><code>updated_credential</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+        </tr><tr>
+            <td><code>auth_token</code></td>
+            <td>
+                <code><a class='link' href='#AuthToken'>AuthToken</a>?</code>
+            </td>
+        </tr><tr>
+            <td><code>auth_challenge</code></td>
+            <td>
+                <code><a class='link' href='#AuthChallenge'>AuthChallenge</a>?</code>
+            </td>
+        </tr></table>
+
+## AuthProviderFactory {:#AuthProviderFactory}
+*Defined in [fuchsia.auth/auth_provider_factory.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.auth/auth_provider_factory.fidl#11)*
+
+ AuthProviderFactory creates an Auth Provider that talks to a particular
+ backend OAuth service such as Google, Facebook, or Twitter that can generate
+ tokens as defined by `auth_provider.fidl`.
+
+### GetAuthProvider {:#GetAuthProvider}
+
+ Creates an auth provider instance for the given OAuth provider.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>auth_provider</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#AuthProvider'>AuthProvider</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#AuthProviderStatus'>AuthProviderStatus</a></code>
+            </td>
+        </tr></table>
+
+## AuthenticationContextProvider {:#AuthenticationContextProvider}
+*Defined in [fuchsia.auth/token_manager.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.auth/token_manager.fidl#95)*
+
+ Implemented by a privileged system component with the ability to display UI
+ to the end user.
+
+ This is provided during the initialization of TokenManager service and is
+ used for any subsequent authorize calls. The UI contexts created by this
+ interface are used to display OAuth login and permission screens to the end
+ user.
+
+### GetAuthenticationUIContext {:#GetAuthenticationUIContext}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#AuthenticationUIContext'>AuthenticationUIContext</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+## TokenManagerFactory {:#TokenManagerFactory}
+*Defined in [fuchsia.auth/token_manager.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.auth/token_manager.fidl#103)*
+
+ This interface provides a discoverable mechanism to create TokenManager
+ instances for each user, and to supply auth provider configuration
+ information using the structs defined in `auth_provider.fidl`.
+
+### GetTokenManager {:#GetTokenManager}
+
+ Creates an OAuth TokenManager instance scoped for the component specified
+ by `application_url`, the Fuchsia user specified by `user_id`, and the list
+ of auth providers specified in `auth_provider_configs`.
+
+ `auth_context_provider` is used to generate AuthenticationUIContexts during
+ TokenManager methods that require UI, unless the caller of those methods
+ supplies an alternative AuthenticationUIContext.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>user_id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>application_url</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>auth_provider_configs</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#AuthProviderConfig'>AuthProviderConfig</a>&gt;</code>
+            </td>
+        </tr><tr>
+            <td><code>auth_context_provider</code></td>
+            <td>
+                <code><a class='link' href='#AuthenticationContextProvider'>AuthenticationContextProvider</a></code>
+            </td>
+        </tr><tr>
+            <td><code>token_manager</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#TokenManager'>TokenManager</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+## TokenManager {:#TokenManager}
+*Defined in [fuchsia.auth/token_manager.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.auth/token_manager.fidl#127)*
+
+ This interface manages OAuth tokens at the Fuchsia system level for different
+ auth identity providers.
+
+ If user authorization is required for minting tokens, TokenManager uses the
+ `auth_context_provider's` UI context for displaying OAuth UI to the end user.
+
+ After initialization, TokenManager handles are typically handed out by
+ Framework to components like Ledger and Agents. These components fetch
+ OAuth tokens from any configured auth provider, and use the
+ `auth_context_provider` initialized above for new authorizations.
+
+### Authorize {:#Authorize}
+
+ The first step of OAuth is to get authorization from the user. For Fuchsia
+ components, this is accomplished by displaying OAuth permissions in a view
+ provided by the caller. This view will use `auth_ui_context` if supplied,
+ or the `auth_context_provider` supplied at TokenManager creation if not.
+ The component's OAuth configuration is provided in `app_config` and
+ `app_scopes`. An optional `user_profile_id` that uniquely identifies an
+ account for a given auth provider may be provided to identify an existing
+ account during a re-auth flow.
+
+ IoT ID authorization includes a mode where the user authorizes on a second
+ device and that device acquires an auth code from the auth provider.
+ In this mode, the auth code may be supplied in `auth_code` and no local
+ user interface will be displayed.
+
+ After the user has successfully authorized, Token manager receives and
+ securely stores a persistent credential, such as an OAuth refresh token,
+ for the intended scopes. TokenManager later uses this credential for
+ minting short lived tokens.
+
+ If the operation is successful, an OK status is returned along with user
+ profile information in `user_profile_info` such as the user's email,
+ image_url, profile_url, and first and last names as configured on the auth
+ provider backend system.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>app_config</code></td>
+            <td>
+                <code><a class='link' href='#AppConfig'>AppConfig</a></code>
+            </td>
+        </tr><tr>
+            <td><code>auth_ui_context</code></td>
+            <td>
+                <code><a class='link' href='#AuthenticationUIContext'>AuthenticationUIContext</a>?</code>
+            </td>
+        </tr><tr>
+            <td><code>app_scopes</code></td>
+            <td>
+                <code>vector&lt;string&gt;</code>
+            </td>
+        </tr><tr>
+            <td><code>user_profile_id</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+        </tr><tr>
+            <td><code>auth_code</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#Status'>Status</a></code>
+            </td>
+        </tr><tr>
+            <td><code>user_profile_info</code></td>
+            <td>
+                <code><a class='link' href='#UserProfileInfo'>UserProfileInfo</a>?</code>
+            </td>
+        </tr></table>
+
+### GetAccessToken {:#GetAccessToken}
+
+ Returns a downscoped access token from an auth provider for the given user
+ `user_profile_id` and `scopes` to a Fuchsia component. The component's
+ OAuth configuration is provided in `app_config` and the `user_profile_id`
+ is the unique user identifier returned by the Authorize() call.
+
+ In the interests of performance, Token Manager does not place the supplied
+ scopes in a canonical order during caching. To benefit from caching of
+ tokens, clients must request the same scopes in the same order across
+ calls.
+
+ The access token is returned from cache if possible, otherwise the auth
+ provider is used to exchange the persistent credential for a new access
+ token.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>app_config</code></td>
+            <td>
+                <code><a class='link' href='#AppConfig'>AppConfig</a></code>
+            </td>
+        </tr><tr>
+            <td><code>user_profile_id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>app_scopes</code></td>
+            <td>
+                <code>vector&lt;string&gt;</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#Status'>Status</a></code>
+            </td>
+        </tr><tr>
+            <td><code>access_token</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+        </tr></table>
+
+### GetIdToken {:#GetIdToken}
+
+ Returns a JWT identity token from an auth provider to a Fuchsia component
+ intended for the given `audience`. The component's OAuth configuration is
+ supplied in `app_config`, the intended recipient of the id_token is
+ supplied in `audience`, and `user_profile_id` is a unique account
+ identifier returned by the Authorize() or ListProfileIds() calls.
+
+ `user_profile_id` is the unique user identifier returned by the
+ Authorize() call.
+
+ The identity token is returned from cache if possible, otherwise the auth
+ provider is used to exchange the persistant credential for a new identity
+ token.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>app_config</code></td>
+            <td>
+                <code><a class='link' href='#AppConfig'>AppConfig</a></code>
+            </td>
+        </tr><tr>
+            <td><code>user_profile_id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>audience</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#Status'>Status</a></code>
+            </td>
+        </tr><tr>
+            <td><code>id_token</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+        </tr></table>
+
+### GetFirebaseToken {:#GetFirebaseToken}
+
+ Returns a Firebase token from an auth provider for the given account and
+ Fuchsia component, and Firebase client. The component's OAuth configuration
+ is supplied in `app_config`, the Firebase client is supplied in
+ `firebase_api_key`, and `user_profile_id` is a unique account identifier
+ returned by the Authorize() or ListProfileIds() calls.
+
+ This api invokes firebase auth's VerifyAssertion endpoint that takes an
+ OAuth IdToken as the fuchsia.ui.input. Audience is the intended recipient
+ of the firebase id token.
+
+ The Firebase auth token is returned from cache if possible, otherwise it is
+ refreshed from the auth provider.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>app_config</code></td>
+            <td>
+                <code><a class='link' href='#AppConfig'>AppConfig</a></code>
+            </td>
+        </tr><tr>
+            <td><code>user_profile_id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>audience</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>firebase_api_key</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#Status'>Status</a></code>
+            </td>
+        </tr><tr>
+            <td><code>firebase_token</code></td>
+            <td>
+                <code><a class='link' href='#FirebaseToken'>FirebaseToken</a>?</code>
+            </td>
+        </tr></table>
+
+### DeleteAllTokens {:#DeleteAllTokens}
+
+ Deletes and revokes all long lived and short lived tokens generated for
+ an account and on behalf of a Fuchsia component. The component's OAuth
+ configuration is provided in `app_config` and `user_profile_id`
+ is a unique account identifier returned by the Authorize() or
+ ListProfileIds() calls.
+
+ Deletion of tokens involves three steps:
+
+   1. Revoking credentials remotely at the auth provider.
+   2. Deleting short lived tokens from the in-memory cache.
+   3. Deleting persistent credentials stored locally on disk.
+
+ If `force` is false then a failure at step 1 will terminate the method,
+ ensuring client and server state remain consistent. If `force` is true
+ then steps 2&3 will be performed and the method will return OK even if
+ step 1 fails, ensuring the local credentials are wiped in all
+ circumstances.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>app_config</code></td>
+            <td>
+                <code><a class='link' href='#AppConfig'>AppConfig</a></code>
+            </td>
+        </tr><tr>
+            <td><code>user_profile_id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>force</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### ListProfileIds {:#ListProfileIds}
+
+ Returns a vector of all currently authorized user_profile_ids for a
+ component's OAuth configuration provided in `app_config`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>app_config</code></td>
+            <td>
+                <code><a class='link' href='#AppConfig'>AppConfig</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#Status'>Status</a></code>
+            </td>
+        </tr><tr>
+            <td><code>user_profile_ids</code></td>
+            <td>
+                <code>vector&lt;string&gt;</code>
+            </td>
+        </tr></table>
+
 
 
 ## **STRUCTS**
@@ -1349,6 +2227,467 @@
         </tr>
 </table>
 
+### AuthToken {:#AuthToken}
+*Defined in [fuchsia.auth/auth_provider.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.auth/auth_provider.fidl#35)*
+
+
+
+ OAuth token response populated after parsing JSON object that contains
+ short-lived access token or id token returned by the auth provider.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>token_type</code></td>
+            <td>
+                <code><a class='link' href='#TokenType'>TokenType</a></code>
+            </td>
+            <td> Type of token.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>token</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> Contains access token or a JWT identity token.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>expires_in</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> The remaining lifetime of the token in seconds.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### FirebaseToken {:#FirebaseToken}
+*Defined in [fuchsia.auth/auth_provider.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.auth/auth_provider.fidl#51)*
+
+
+
+ Stores attributes related to a firebase auth token for a given firebase api
+ key.
+
+ These tokens are minted by Firebase Auth server and are meant to be used for
+ authorizing users into Firebase services such as DB and storage.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>id_token</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> Use this as the auth token in firebase database and storage requests.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>local_id</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td> Use this to uniquely identify users.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>email</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td> Use this to uniquely identify user's email address provided by the
+ Auth Provider Firebase server.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>expires_in</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> The remaining lifetime of the token in seconds.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### AuthChallenge {:#AuthChallenge}
+*Defined in [fuchsia.auth/auth_provider.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.auth/auth_provider.fidl#68)*
+
+
+
+ Challenge response returned by the auth provider during remote attestation
+ based authentication.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>challenge</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> The value of nonce to be used for the next token refresh request
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>expires_in</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> The lifetime of `challenge` in seconds.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### CredentialECKey {:#CredentialECKey}
+*Defined in [fuchsia.auth/auth_provider.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.auth/auth_provider.fidl#77)*
+
+
+
+ Stores Elliptic Curve public key parameters of the credential key.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>curve</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> Supported elliptic curve value used in JWT attestation. Refer to Section
+ 6.2.1.1 of RFC7518 for the canonical list of supported elliptic curves.
+ For example:(P-256,P-384,P-521)
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>key_x_val</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> Value of x of the generated EC key
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>key_y_val</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> Value of y of the generated EC key
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>fingerprint_sha_256</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> Base64 encoded SHA256 hash of the EC public key
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### AttestationJWTParams {:#AttestationJWTParams}
+*Defined in [fuchsia.auth/auth_provider.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.auth/auth_provider.fidl#95)*
+
+
+
+ Contains parameters required by the auth provider component to build
+ attestation JWTs.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>credential_eckey</code></td>
+            <td>
+                <code><a class='link' href='#CredentialECKey'>CredentialECKey</a></code>
+            </td>
+            <td> Contains the ephemeral Elliptic curve credential public key which will be
+ bound to the newly generated refresh token grant.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>certificate_chain</code></td>
+            <td>
+                <code>vector&lt;string&gt;</code>
+            </td>
+            <td> The full chain of certificates from the device attestation certificate
+ to the root certificate that was registered on the OAuth client id.
+ Each string should be base64-encoded DER PKIX certificate value.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>auth_code</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> OAuth authorization code bound to the given user and device
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### AssertionJWTParams {:#AssertionJWTParams}
+*Defined in [fuchsia.auth/auth_provider.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.auth/auth_provider.fidl#110)*
+
+
+
+ Contains parameters required by the auth provider to build assertion JWTs.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>credential_eckey</code></td>
+            <td>
+                <code><a class='link' href='#CredentialECKey'>CredentialECKey</a></code>
+            </td>
+            <td> Contains Elliptic curve credential public key which is bound to existing
+ refresh token.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>challenge</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td> An optional challenge that could be used for the next token refresh request
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### UserProfileInfo {:#UserProfileInfo}
+*Defined in [fuchsia.auth/auth_provider.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.auth/auth_provider.fidl#122)*
+
+
+
+ User attributes returned to callers on authorizing a new user at any auth
+ provider. These attributes are generated by calling the auth provider's
+ user profile apis.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> User identifier returned by the backend identity provider server to
+ identify the user after successful authorization. Some identity providers
+ send verified email address as the identifier, and some send an opaque
+ string as the user identifier.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>display_name</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td> The name that is displayed on the base shell while logging in. Display
+ name is fetched from user profile attributes as configured by the user at
+ the given identity provider.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>url</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td> User's profile url that is used by the base shell while logging in.
+ Profile url is fetched from user profile attributes as configured by the
+ user at the given identity provider.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>image_url</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td> User's profile image url that is used by the base shell while logging in.
+ Profile image url is fetched from user profile attributes as configured by
+ the user at the given identity provider.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### AuthState {:#AuthState}
+*Defined in [fuchsia.auth/common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.auth/common.fidl#36)*
+
+
+
+ An assessment of the current presence and engagement of the human that owns
+ a Fuchsia account, including the system's confidence in that assessment and
+ its timeliness.
+
+ Note this struct is currently defined to enable multi-user experimentation.
+ Substantial work is required before any realistic use cases.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>summary</code></td>
+            <td>
+                <code><a class='link' href='#AuthStateSummary'>AuthStateSummary</a></code>
+            </td>
+            <td> A high level assessment of whether the human that owns a Fuchsia account
+ is present and engaged.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### AuthChangeGranularity {:#AuthChangeGranularity}
+*Defined in [fuchsia.auth/common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.auth/common.fidl#47)*
+
+
+
+ An expression of the types of changes an auth state that should be reported
+ over listener interfaces. By default no changes will be reported.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>summary_changes</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> If true, any changes in the `AuthStateSummary` enumeration will be
+ reported.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ServiceProviderAccount {:#ServiceProviderAccount}
+*Defined in [fuchsia.auth/common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.auth/common.fidl#62)*
+
+
+
+ A unique identifier for an account with some service provider, comprised of
+ the identity of the service provider and an account identity supplied by that
+ service provider.
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>identity_provider_domain</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> The primary domain of the identity provider, such as "www.google.com".
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>user_profile_id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> User identifier as supplied by the identity provider. Some identity
+ providers send verified email address as the identifier, some send an
+ opaque string.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### AuthProviderConfig {:#AuthProviderConfig}
+*Defined in [fuchsia.auth/token_manager.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.auth/token_manager.fidl#49)*
+
+
+
+ Stores configuration parameters required to connect to available
+ `AuthProvider`s. It is used by TokenManager to instantiate all auth providers
+ during startup.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>auth_provider_type</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> Type of OAuth Identity provider. An identity provider authenticates and
+ authorizes users for accessing their services. They also provide unique
+ identifiers for users to interact with the system and may provide
+ information about the user that is known to the provider.
+
+ Sample auth provider types include:
+     Dev : An identity provider that's used for development and testing.
+     Google: Uses Google as the identity provider. Authorization from Google
+             requires a working network connection and a web view.
+     Spotify: Uses Spotify as an identity provider.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>url</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> Url of the Fuchsia component implementing the AuthProvider.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>params</code></td>
+            <td>
+                <code>vector&lt;string&gt;?</code>
+            </td>
+            <td> Optional parameters specified during AuthProvider startup.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### AppConfig {:#AppConfig}
+*Defined in [fuchsia.auth/token_manager.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.auth/token_manager.fidl#71)*
+
+
+
+ Stores OAuth configuration details for a given client application. These
+ details are used in the OAuth authorization step.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>auth_provider_type</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> An OAuth identity provider matching a configuration set in
+ AuthProviderConfig.auth_provider_type.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>client_id</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td> OAuth client id.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>client_secret</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td> OAuth client secret.
+ This field is optional and will only be used on calls to Authorize.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>redirect_uri</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td> OAuth application's redirect uri.
+ This field is optional and will only be used on calls to Authorize.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
 
 
 ## **ENUMS**
@@ -1369,20 +2708,15 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>OK</code></td>
             <td><code>0</code></td>
-            <td> The command completed successfully
-</td>
+            <td></td>
         </tr><tr>
             <td><code>INVALID_ARGUMENT</code></td>
             <td><code>1</code></td>
-            <td> The command referred to a missing, or an invalid argument.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>SIGNING_ERROR</code></td>
             <td><code>2</code></td>
-            <td> There was an error in generating crypto signatures for the given
- plaintext. This usually indicates errors for misconfigured keys or
- signature algorithms from the underlying crypto library.
-</td>
+            <td></td>
         </tr></table>
 
 ### AuthProviderStatus {:#AuthProviderStatus}
@@ -1471,22 +2805,15 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>UNKNOWN</code></td>
             <td><code>0</code></td>
-            <td> No information (either affirming or dissenting) is available about the
- current presence or engagement of the account owner.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>TEST_PRESENT</code></td>
             <td><code>10000</code></td>
-            <td> The account owner has been marked as present by some test or experimental
- authentication mechanism. This state should not be used to grant access
- to any sensitive user information.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>TEST_ABSENT</code></td>
             <td><code>10001</code></td>
-            <td> The account owner has been marked as not-present by some test or
- experimental authentication mechanism.
-</td>
+            <td></td>
         </tr></table>
 
 ### Status {:#Status}
@@ -1501,74 +2828,234 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>OK</code></td>
             <td><code>0</code></td>
-            <td> The command completed successfully
-</td>
+            <td></td>
         </tr><tr>
             <td><code>AUTH_PROVIDER_SERVICE_UNAVAILABLE</code></td>
             <td><code>1</code></td>
-            <td> The command referred to a missing, misconfigured, or failed auth provider.
- Retrying is not recommended.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>AUTH_PROVIDER_SERVER_ERROR</code></td>
             <td><code>2</code></td>
-            <td> The auth server was reachable but responded with an error. These errors
- are typically caused by a configuration problem or a revoked token and so
- should not be retried.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>INTERNAL_ERROR</code></td>
             <td><code>3</code></td>
-            <td> An internal error occurred. This usually indicates a bug within the Token
- Manager itself. Retry is optional.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>INVALID_AUTH_CONTEXT</code></td>
             <td><code>4</code></td>
-            <td> An invalid or non-functional AuthContextProvider was provided. Retrying is
- unlikely to correct this error.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>INVALID_REQUEST</code></td>
             <td><code>5</code></td>
-            <td> The request was malformed in some way, such as using an empty string for
- the user_profile_id. The request should not be retried.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>USER_NOT_FOUND</code></td>
             <td><code>6</code></td>
-            <td> The requested user profile could not be found in the database. The request
- should not be retried.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>IO_ERROR</code></td>
             <td><code>7</code></td>
-            <td> A local error occurred such as disk I/O or memory allocation. Retry, after
- a delay, is recommended.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>UNKNOWN_ERROR</code></td>
             <td><code>8</code></td>
-            <td> Some other problem occurred that cannot be classified using one of the more
- specific statuses. Retry is optional.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>REAUTH_REQUIRED</code></td>
             <td><code>9</code></td>
-            <td> The auth server requires that the user reauthenticate. The client should
- call the Authorize method.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>USER_CANCELLED</code></td>
             <td><code>10</code></td>
-            <td> The user cancelled the flow. User consent is required before any retry.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>NETWORK_ERROR</code></td>
             <td><code>11</code></td>
-            <td> A network error occurred while communicating with the auth server. Retry,
- after a delay, is recommended.
-</td>
+            <td></td>
+        </tr></table>
+
+### AttestationSignerStatus {:#AttestationSignerStatus}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.auth/attestation_signer.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.auth/attestation_signer.fidl#12)*
+
+ This file contains an interface to cryptographically sign any plain text data
+ using any crypto key. This interface is useful for signing JWT's in device
+ attestation based authentication.
+
+ Specifies the success/failure status from the attestation signer.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>OK</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>INVALID_ARGUMENT</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>SIGNING_ERROR</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr></table>
+
+### AuthProviderStatus {:#AuthProviderStatus}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.auth/auth_provider.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.auth/auth_provider.fidl#14)*
+
+ Specifies the success/failure status from auth provider.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>OK</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>BAD_REQUEST</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>BAD_RESPONSE</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>OAUTH_SERVER_ERROR</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>USER_CANCELLED</code></td>
+            <td><code>4</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>REAUTH_REQUIRED</code></td>
+            <td><code>5</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>NETWORK_ERROR</code></td>
+            <td><code>6</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>UNSUPPORTED_PROVIDER</code></td>
+            <td><code>7</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>INTERNAL_ERROR</code></td>
+            <td><code>8</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>UNKNOWN_ERROR</code></td>
+            <td><code>9</code></td>
+            <td></td>
+        </tr></table>
+
+### TokenType {:#TokenType}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.auth/auth_provider.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.auth/auth_provider.fidl#28)*
+
+ The type of token returned.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>ACCESS_TOKEN</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>ID_TOKEN</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr></table>
+
+### AuthStateSummary {:#AuthStateSummary}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.auth/common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.auth/common.fidl#12)*
+
+ A high level assessment of whether the human that owns a Fuchsia account is
+ present and engaged.
+
+ Note this enum is currently defined to enable multi-user experimentation.
+ Substantial work is required before any realistic use cases.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>UNKNOWN</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>TEST_PRESENT</code></td>
+            <td><code>10000</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>TEST_ABSENT</code></td>
+            <td><code>10001</code></td>
+            <td></td>
+        </tr></table>
+
+### Status {:#Status}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.auth/token_manager.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.auth/token_manager.fidl#8)*
+
+ Specifies the success/failure status of TokenManager calls.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>OK</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>AUTH_PROVIDER_SERVICE_UNAVAILABLE</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>AUTH_PROVIDER_SERVER_ERROR</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>INTERNAL_ERROR</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>INVALID_AUTH_CONTEXT</code></td>
+            <td><code>4</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>INVALID_REQUEST</code></td>
+            <td><code>5</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>USER_NOT_FOUND</code></td>
+            <td><code>6</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>IO_ERROR</code></td>
+            <td><code>7</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>UNKNOWN_ERROR</code></td>
+            <td><code>8</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>REAUTH_REQUIRED</code></td>
+            <td><code>9</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>USER_CANCELLED</code></td>
+            <td><code>10</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>NETWORK_ERROR</code></td>
+            <td><code>11</code></td>
+            <td></td>
         </tr></table>
 
 
diff --git a/sdk/fidl/fuchsia.bluetooth.avdtp/index.md b/sdk/fidl/fuchsia.bluetooth.avdtp/index.md
index 9c050b7..8849ceb 100644
--- a/sdk/fidl/fuchsia.bluetooth.avdtp/index.md
+++ b/sdk/fidl/fuchsia.bluetooth.avdtp/index.md
@@ -394,13 +394,11 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>UNKNOWN_FAILURE</code></td>
             <td><code>1</code></td>
-            <td> Failure reason is not known
-</td>
+            <td></td>
         </tr><tr>
             <td><code>PROTOCOL_ERROR</code></td>
             <td><code>2</code></td>
-            <td> The peer is unable to perform the request
-</td>
+            <td></td>
         </tr></table>
 
 
diff --git a/sdk/fidl/fuchsia.bluetooth.bredr/index.md b/sdk/fidl/fuchsia.bluetooth.bredr/index.md
index 2396238..a05e264 100644
--- a/sdk/fidl/fuchsia.bluetooth.bredr/index.md
+++ b/sdk/fidl/fuchsia.bluetooth.bredr/index.md
@@ -604,8 +604,7 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>SerialPort</code></td>
             <td><code>4353</code></td>
-            <td> ServiceDiscoveryService and BrowseGroupDescriptorService used by Fuchsia
-</td>
+            <td></td>
         </tr><tr>
             <td><code>DialupNetworking</code></td>
             <td><code>4355</code></td>
@@ -621,8 +620,7 @@
         </tr><tr>
             <td><code>Headset</code></td>
             <td><code>4360</code></td>
-            <td> Headset Profile (HSP)
-</td>
+            <td></td>
         </tr><tr>
             <td><code>HeadsetAudioGateway</code></td>
             <td><code>4370</code></td>
@@ -634,8 +632,7 @@
         </tr><tr>
             <td><code>AudioSource</code></td>
             <td><code>4362</code></td>
-            <td> Advanced Audio Distribution Profile (A2DP)
-</td>
+            <td></td>
         </tr><tr>
             <td><code>AudioSink</code></td>
             <td><code>4363</code></td>
@@ -647,8 +644,7 @@
         </tr><tr>
             <td><code>AVRemoteControlTarget</code></td>
             <td><code>4364</code></td>
-            <td> Audio/Video Remote Control Profil (AVRCP)
-</td>
+            <td></td>
         </tr><tr>
             <td><code>AVRemoteControl</code></td>
             <td><code>4366</code></td>
@@ -660,8 +656,7 @@
         </tr><tr>
             <td><code>PANU</code></td>
             <td><code>4373</code></td>
-            <td> Personal Area Networking (PAN)
-</td>
+            <td></td>
         </tr><tr>
             <td><code>NAP</code></td>
             <td><code>4374</code></td>
@@ -673,9 +668,7 @@
         </tr><tr>
             <td><code>Handsfree</code></td>
             <td><code>4382</code></td>
-            <td> Basic Printing and Basic Imaging Profiles omitted (unsupported)
- Hands-Free Profile (HFP)
-</td>
+            <td></td>
         </tr><tr>
             <td><code>HandsfreeAudioGateway</code></td>
             <td><code>4383</code></td>
@@ -683,13 +676,11 @@
         </tr><tr>
             <td><code>SIM_Access</code></td>
             <td><code>4397</code></td>
-            <td> Human Interface Device and Hardcopy Cable Replacement Profile omitted (unsupported)
-</td>
+            <td></td>
         </tr><tr>
             <td><code>PhonebookPCE</code></td>
             <td><code>4398</code></td>
-            <td> Phonebook Access Profile (PBAP)
-</td>
+            <td></td>
         </tr><tr>
             <td><code>PhonebookPSE</code></td>
             <td><code>4399</code></td>
@@ -701,8 +692,7 @@
         </tr><tr>
             <td><code>MessageAccessServer</code></td>
             <td><code>4402</code></td>
-            <td> Message Access Profile (MAP)
-</td>
+            <td></td>
         </tr><tr>
             <td><code>MessageNotificationServer</code></td>
             <td><code>4403</code></td>
@@ -714,9 +704,7 @@
         </tr><tr>
             <td><code>MPSProfile</code></td>
             <td><code>4410</code></td>
-            <td> GNSS and 3DSP omitted (unsupported)
- Multi-Profile Specification (MPS)
-</td>
+            <td></td>
         </tr><tr>
             <td><code>MPSClass</code></td>
             <td><code>4411</code></td>
@@ -724,10 +712,7 @@
         </tr><tr>
             <td><code>VideoSource</code></td>
             <td><code>4867</code></td>
-            <td> Calendar, Task, and Notes Profile omitted (unsupported)
- Device ID used by Fuchsia
- Video Distribution Profile (VDP)
-</td>
+            <td></td>
         </tr><tr>
             <td><code>VideoSink</code></td>
             <td><code>4868</code></td>
@@ -739,8 +724,7 @@
         </tr><tr>
             <td><code>HDP</code></td>
             <td><code>5120</code></td>
-            <td> Health Device Profile (HDP)
-</td>
+            <td></td>
         </tr><tr>
             <td><code>HDPSource</code></td>
             <td><code>5121</code></td>
diff --git a/sdk/fidl/fuchsia.bluetooth.control/index.md b/sdk/fidl/fuchsia.bluetooth.control/index.md
index 987acda..a6bfbab 100644
--- a/sdk/fidl/fuchsia.bluetooth.control/index.md
+++ b/sdk/fidl/fuchsia.bluetooth.control/index.md
@@ -557,6 +557,557 @@
             </td>
         </tr></table>
 
+## Control {:#Control}
+*Defined in [fuchsia.bluetooth.control/control.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.control/control.fidl#56)*
+
+ Primary Bluetooth control service to access bluetooth
+
+### IsBluetoothAvailable {:#IsBluetoothAvailable}
+
+ Returns whether or not Bluetooth is currently available on the system.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>available</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr></table>
+
+### SetPairingDelegate {:#SetPairingDelegate}
+
+ Registers a delegate to handle pairing requests.
+ Indicate the capability type of the PairingDelegate using `in` and `out`.
+ If your input/output capability is variable, call this function when it
+ changes to update.
+ Setting a pairing delegate closes the previously assigned pairing Delegate.
+
+ To disable pairing, set `delegate` to null.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>delegate</code></td>
+            <td>
+                <code><a class='link' href='#PairingDelegate'>PairingDelegate</a>?</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>success</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr></table>
+
+### GetAdapters {:#GetAdapters}
+
+ Returns information about all local adapters that are known to the system.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>adapters</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#AdapterInfo'>AdapterInfo</a>&gt;?</code>
+            </td>
+        </tr></table>
+
+### SetActiveAdapter {:#SetActiveAdapter}
+
+ Sets the local adapter with the given `identifier` to act as the backing
+ adapter for all Bluetooth interfaces.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>identifier</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.bluetooth/index.html'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/index.html#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### GetActiveAdapterInfo {:#GetActiveAdapterInfo}
+
+ Returns information on the current active adapter, if it exists.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>adapter</code></td>
+            <td>
+                <code><a class='link' href='#AdapterInfo'>AdapterInfo</a>?</code>
+            </td>
+        </tr></table>
+
+### RequestDiscovery {:#RequestDiscovery}
+
+ If `discovery` is true, active discovery is requested.
+ When requesting discovery, general discovery for BR/EDR and LE will be
+ active and newly discovered devices will be reported via
+ RemoteDeviceDelegate.OnDeviceUpdate().
+
+ Discovery may be active when not reqested.
+ If an error occurs when starting discovery, it is reflected in `status`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>discovery</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.bluetooth/index.html'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/index.html#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### GetKnownRemoteDevices {:#GetKnownRemoteDevices}
+
+ Retrieve the set of known remote devices.
+ Note: These devices are not guaranteed to still be reachable.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>devices</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#RemoteDevice'>RemoteDevice</a>&gt;</code>
+            </td>
+        </tr></table>
+
+### SetName {:#SetName}
+
+ Sets the public Bluetooth name for this device, or resets to the default
+ name if `name` is not present.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>name</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.bluetooth/index.html'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/index.html#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### SetDeviceClass {:#SetDeviceClass}
+
+ Set the Device Class for the active Bluetooth adapter.
+ Values are defined in https://www.bluetooth.com/specifications/assigned-numbers/baseband
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>device_class</code></td>
+            <td>
+                <code><a class='link' href='#DeviceClass'>DeviceClass</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.bluetooth/index.html'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/index.html#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### SetDiscoverable {:#SetDiscoverable}
+
+ Set the discoverability of this device.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>discoverable</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.bluetooth/index.html'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/index.html#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### Connect {:#Connect}
+
+ Attempt to connect to the remote `device_id`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>device_id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.bluetooth/index.html'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/index.html#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### Disconnect {:#Disconnect}
+
+ Disconnect a previously-connected device.
+ Note: This does not remove a device bond, see Control::Forget.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>device_id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.bluetooth/index.html'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/index.html#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### Forget {:#Forget}
+
+ Forgets `device_id` completely, removing all bonding information.
+ This will disconnect a device if it is connected.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>device_id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.bluetooth/index.html'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/index.html#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### SetIOCapabilities {:#SetIOCapabilities}
+
+ Set local IO Capabilities to use during pairing.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>input</code></td>
+            <td>
+                <code><a class='link' href='#InputCapabilityType'>InputCapabilityType</a></code>
+            </td>
+        </tr><tr>
+            <td><code>output</code></td>
+            <td>
+                <code><a class='link' href='#OutputCapabilityType'>OutputCapabilityType</a></code>
+            </td>
+        </tr></table>
+
+
+
+### OnActiveAdapterChanged {:#OnActiveAdapterChanged}
+
+ Sent when the active adapter has been updated. If `active_adapter` is
+ null, then no adapter is currently active.
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>adapter</code></td>
+            <td>
+                <code><a class='link' href='#AdapterInfo'>AdapterInfo</a>?</code>
+            </td>
+        </tr></table>
+
+### OnAdapterUpdated {:#OnAdapterUpdated}
+
+ Sent when an adapter has been updated.
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>adapter</code></td>
+            <td>
+                <code><a class='link' href='#AdapterInfo'>AdapterInfo</a></code>
+            </td>
+        </tr></table>
+
+### OnAdapterRemoved {:#OnAdapterRemoved}
+
+ Sent when an adapter with the given `identifier` has been removed from
+ the system.
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>identifier</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr></table>
+
+### OnDeviceUpdated {:#OnDeviceUpdated}
+
+ Sent when a peer is updated.
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>device</code></td>
+            <td>
+                <code><a class='link' href='#RemoteDevice'>RemoteDevice</a></code>
+            </td>
+        </tr></table>
+
+### OnDeviceRemoved {:#OnDeviceRemoved}
+
+ Sent when a peer is removed.
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>identifier</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr></table>
+
+## PairingDelegate {:#PairingDelegate}
+*Defined in [fuchsia.bluetooth.control/pairing_delegate.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.control/pairing_delegate.fidl#55)*
+
+
+### OnPairingRequest {:#OnPairingRequest}
+
+ Called for most pairing requests. The delegate must respond with “true” or “false” to
+ either accept or reject the pairing request. If the pairing method requires a passkey
+ this is returned as well.
+
+ Any response from this method will be ignored if the OnPairingComplete
+ event has already been sent for `device`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>device</code></td>
+            <td>
+                <code><a class='link' href='#RemoteDevice'>RemoteDevice</a></code>
+            </td>
+        </tr><tr>
+            <td><code>method</code></td>
+            <td>
+                <code><a class='link' href='#PairingMethod'>PairingMethod</a></code>
+            </td>
+        </tr><tr>
+            <td><code>displayed_passkey</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>accept</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr><tr>
+            <td><code>entered_passkey</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+        </tr></table>
+
+### OnPairingComplete {:#OnPairingComplete}
+
+ Called if the pairing procedure for the device with the given ID is completed.
+ This can be due to successful completion or an error (e.g. due to cancellation
+ by the peer, a timeout, or disconnection) which is indicated by `status`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>device_id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.bluetooth/index.html'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/index.html#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+
+
+### OnRemoteKeypress {:#OnRemoteKeypress}
+
+ Called to notify keypresses from the peer device during pairing using
+ PairingMethod.PASSKEY_DISPLAY.
+
+ This event is used to provide key press events to the delegate for a responsive user
+ experience as the user types the passkey on the peer device. This event will be called
+ once for each key-press.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>device_id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>keypress</code></td>
+            <td>
+                <code><a class='link' href='#PairingKeypressType'>PairingKeypressType</a></code>
+            </td>
+        </tr></table>
+
+
+
+### OnLocalKeypress {:#OnLocalKeypress}
+
+ The delegate can send this event to notify the peer of local keypresses
+ during pairing using PairingMethod.PASSKEY_ENTRY.
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>device_id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>keypress</code></td>
+            <td>
+                <code><a class='link' href='#PairingKeypressType'>PairingKeypressType</a></code>
+            </td>
+        </tr></table>
+
 
 
 ## **STRUCTS**
@@ -1082,6 +1633,527 @@
         </tr>
 </table>
 
+### SecurityProperties {:#SecurityProperties}
+*Defined in [fuchsia.bluetooth.control/bonding.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.control/bonding.fidl#7)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>authenticated</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>secure_connections</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>encryption_key_size</code></td>
+            <td>
+                <code>uint8</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### RemoteKey {:#RemoteKey}
+*Defined in [fuchsia.bluetooth.control/bonding.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.control/bonding.fidl#14)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>security_properties</code></td>
+            <td>
+                <code><a class='link' href='#SecurityProperties'>SecurityProperties</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code>uint8[16]</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### LocalKey {:#LocalKey}
+*Defined in [fuchsia.bluetooth.control/bonding.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.control/bonding.fidl#23)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code>uint8[16]</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### LTK {:#LTK}
+*Defined in [fuchsia.bluetooth.control/bonding.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.control/bonding.fidl#29)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>key</code></td>
+            <td>
+                <code><a class='link' href='#RemoteKey'>RemoteKey</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>key_size</code></td>
+            <td>
+                <code>uint8</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>ediv</code></td>
+            <td>
+                <code>uint16</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>rand</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### LEConnectionParameters {:#LEConnectionParameters}
+*Defined in [fuchsia.bluetooth.control/bonding.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.control/bonding.fidl#37)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>connection_interval</code></td>
+            <td>
+                <code>uint16</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>connection_latency</code></td>
+            <td>
+                <code>uint16</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>supervision_timeout</code></td>
+            <td>
+                <code>uint16</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### LEData {:#LEData}
+*Defined in [fuchsia.bluetooth.control/bonding.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.control/bonding.fidl#49)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>address</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>address_type</code></td>
+            <td>
+                <code><a class='link' href='#AddressType'>AddressType</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>connection_parameters</code></td>
+            <td>
+                <code><a class='link' href='#LEConnectionParameters'>LEConnectionParameters</a>?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>services</code></td>
+            <td>
+                <code>vector&lt;string&gt;</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>ltk</code></td>
+            <td>
+                <code><a class='link' href='#LTK'>LTK</a>?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>irk</code></td>
+            <td>
+                <code><a class='link' href='#RemoteKey'>RemoteKey</a>?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>csrk</code></td>
+            <td>
+                <code><a class='link' href='#RemoteKey'>RemoteKey</a>?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### BREDRData {:#BREDRData}
+*Defined in [fuchsia.bluetooth.control/bonding.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.control/bonding.fidl#71)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>address</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>piconet_leader</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>services</code></td>
+            <td>
+                <code>vector&lt;string&gt;</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>link_key</code></td>
+            <td>
+                <code><a class='link' href='#LTK'>LTK</a>?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### BondingData {:#BondingData}
+*Defined in [fuchsia.bluetooth.control/bonding.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.control/bonding.fidl#89)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>identifier</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>local_address</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>name</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>le</code></td>
+            <td>
+                <code><a class='link' href='#LEData'>LEData</a>?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>bredr</code></td>
+            <td>
+                <code><a class='link' href='#BREDRData'>BREDRData</a>?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### HostData {:#HostData}
+*Defined in [fuchsia.bluetooth.control/bonding.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.control/bonding.fidl#108)*
+
+
+
+ Represents persistent local host data.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>irk</code></td>
+            <td>
+                <code><a class='link' href='#LocalKey'>LocalKey</a>?</code>
+            </td>
+            <td> The local Identity Resolving Key used by a bt-host device to generate Resolvable Private
+ Addresses when privacy is enabled.
+
+ NOTE: This key is distributed to LE peers during pairing procedures. The client must take
+ care to assign an IRK that consistent with the local bt-host identity.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### AdapterInfo {:#AdapterInfo}
+*Defined in [fuchsia.bluetooth.control/control.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.control/control.fidl#11)*
+
+
+
+ Bluetooth controller and its associated host-subsystem state that is present
+ on the current platform.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>identifier</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> UUID that uniquely identifies this adapter on the current system.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>technology</code></td>
+            <td>
+                <code><a class='link' href='#TechnologyType'>TechnologyType</a></code>
+            </td>
+            <td> The Bluetooth technologies that are supported by this adapter.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>address</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> Public Bluetooth device address which can be displayed to the user.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>state</code></td>
+            <td>
+                <code><a class='link' href='#AdapterState'>AdapterState</a>?</code>
+            </td>
+            <td> The current adapter state. This field is only present when an AdapterInfo
+ is obtained via the Control and ControlDelegate interfaces. If present,
+ all optional members of `state` will also be present.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### AdapterState {:#AdapterState}
+*Defined in [fuchsia.bluetooth.control/control.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.control/control.fidl#29)*
+
+
+
+ Contains static global information about a local Bluetooth adapter,
+ including its current state.  Each adapter instance represents a physical
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>local_name</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>discoverable</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.bluetooth/index.html'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/index.html#Bool'>Bool</a>?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>discovering</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.bluetooth/index.html'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/index.html#Bool'>Bool</a>?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>local_service_uuids</code></td>
+            <td>
+                <code>vector&lt;string&gt;?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### DeviceClass {:#DeviceClass}
+*Defined in [fuchsia.bluetooth.control/control.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.control/control.fidl#50)*
+
+
+
+ Device Class represents the Major and Minor Device Class and Service Class of an adapter
+ Values are defined in https://www.bluetooth.com/specifications/assigned-numbers/baseband
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### RemoteDevice {:#RemoteDevice}
+*Defined in [fuchsia.bluetooth.control/remote_device.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.control/remote_device.fidl#77)*
+
+
+
+ Represents a remote BR/EDR, LE, or dual-mode BR/EDR/LE device.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>identifier</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> Uniquely identifies this device on the current system.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>address</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> Bluetooth device address that identifies this remote device. Clients
+ should display this field to the user when `name` is not available.
+
+ NOTE: Clients should use the `identifier` field to distinguish between
+ remote devices instead of using their address.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>technology</code></td>
+            <td>
+                <code><a class='link' href='#TechnologyType'>TechnologyType</a></code>
+            </td>
+            <td> The Bluetooth technologies that are supported by this device.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>name</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td> The name of the remote device if present or known.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>appearance</code></td>
+            <td>
+                <code><a class='link' href='#Appearance'>Appearance</a></code>
+            </td>
+            <td> The LE appearance property. Present if this is a LE device and the
+ appearance information was obtained over advertising and/or GATT.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>rssi</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.bluetooth/index.html'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/index.html#Int8'>Int8</a>?</code>
+            </td>
+            <td> The most recently obtained advertising signal strength for this device.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>tx_power</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.bluetooth/index.html'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/index.html#Int8'>Int8</a>?</code>
+            </td>
+            <td> The most recently obtained transmission power for this device.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>connected</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Whether or not a BR/EDR and/or LE connection exists between the local
+ adapter and this device.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>bonded</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Whether or not a bond exists between the local adapter and this device.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>service_uuids</code></td>
+            <td>
+                <code>vector&lt;string&gt;</code>
+            </td>
+            <td> The list of service UUIDs known to be published on this remote device.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
 
 
 ## **ENUMS**
@@ -1163,26 +2235,19 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>CONSENT</code></td>
             <td><code>0</code></td>
-            <td> The user is asked to accept or reject pairing.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>PASSKEY_DISPLAY</code></td>
             <td><code>1</code></td>
-            <td> The user is shown a 6-digit numerical passkey which they must enter on the
- peer device.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>PASSKEY_COMPARISON</code></td>
             <td><code>2</code></td>
-            <td> The user is shown a 6-digit numerical passkey which will also shown on the
- peer device. The user must compare the passkeys and accept the pairing if
- the passkeys match.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>PASSKEY_ENTRY</code></td>
             <td><code>3</code></td>
-            <td> The user is asked to enter a 6-digit passkey.
-</td>
+            <td></td>
         </tr></table>
 
 ### PairingKeypressType {:#PairingKeypressType}
@@ -1196,23 +2261,386 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>DIGIT_ENTERED</code></td>
             <td><code>0</code></td>
-            <td> The user has entered a single digit.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>DIGIT_ERASED</code></td>
             <td><code>1</code></td>
-            <td> The user has erased a single digit.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>PASSKEY_CLEARED</code></td>
             <td><code>2</code></td>
-            <td> The user has cleared the entire passkey.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>PASSKEY_ENTERED</code></td>
             <td><code>3</code></td>
-            <td> The user has finished entering the passkey.
-</td>
+            <td></td>
+        </tr></table>
+
+### Appearance {:#Appearance}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.bluetooth.control/remote_device.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.control/remote_device.fidl#14)*
+
+ Possible values for the LE Appearance property which describes the external
+ appearance of a
+ device at a high level.
+ (See the Bluetooth assigned-numbers document:
+ https://www.bluetooth.com/specifications/gatt/viewer?attributeXmlFile=org.bluetooth.characteristic.gap.appearance.xml)
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>UNKNOWN</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PHONE</code></td>
+            <td><code>64</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>COMPUTER</code></td>
+            <td><code>128</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>WATCH</code></td>
+            <td><code>192</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>WATCH_SPORTS</code></td>
+            <td><code>193</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>CLOCK</code></td>
+            <td><code>256</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>DISPLAY</code></td>
+            <td><code>320</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>REMOTE_CONTROL</code></td>
+            <td><code>384</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>EYE_GLASSES</code></td>
+            <td><code>448</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>TAG</code></td>
+            <td><code>512</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>KEYRING</code></td>
+            <td><code>576</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>MEDIA_PLAYER</code></td>
+            <td><code>640</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>BARCODE_SCANNER</code></td>
+            <td><code>704</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>THERMOMETER</code></td>
+            <td><code>768</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>THERMOMETER_EAR</code></td>
+            <td><code>769</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>HEART_RATE_SENSOR</code></td>
+            <td><code>832</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>HEART_RATE_SENSOR_BELT</code></td>
+            <td><code>833</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>BLOOD_PRESSURE</code></td>
+            <td><code>896</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>BLOOD_PRESSURE_ARM</code></td>
+            <td><code>897</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>BLOOD_PRESSURE_WRIST</code></td>
+            <td><code>898</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>HID</code></td>
+            <td><code>960</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>HID_KEYBOARD</code></td>
+            <td><code>961</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>HID_MOUSE</code></td>
+            <td><code>962</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>HID_JOYSTICK</code></td>
+            <td><code>963</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>HID_GAMEPAD</code></td>
+            <td><code>964</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>HID_DIGITIZER_TABLET</code></td>
+            <td><code>965</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>HID_CARD_READER</code></td>
+            <td><code>966</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>HID_DIGITAL_PEN</code></td>
+            <td><code>967</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>HID_BARCODE_SCANNER</code></td>
+            <td><code>968</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>GLUCOSE_METER</code></td>
+            <td><code>1024</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>RUNNING_WALKING_SENSOR</code></td>
+            <td><code>1088</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>RUNNING_WALKING_SENSOR_IN_SHOE</code></td>
+            <td><code>1089</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>RUNNING_WALKING_SENSOR_ON_SHOE</code></td>
+            <td><code>1090</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>RUNNING_WALKING_SENSOR_ON_HIP</code></td>
+            <td><code>1091</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>CYCLING</code></td>
+            <td><code>1152</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>CYCLING_COMPUTER</code></td>
+            <td><code>1153</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>CYCLING_SPEED_SENSOR</code></td>
+            <td><code>1154</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>CYCLING_CADENCE_SENSOR</code></td>
+            <td><code>1155</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>CYCLING_POWER_SENSOR</code></td>
+            <td><code>1156</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>CYCLING_SPEED_AND_CADENCE_SENSOR</code></td>
+            <td><code>1157</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PULSE_OXIMETER</code></td>
+            <td><code>3136</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PULSE_OXIMETER_FINGERTIP</code></td>
+            <td><code>3137</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PULSE_OXIMETER_WRIST</code></td>
+            <td><code>3138</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>WEIGHT_SCALE</code></td>
+            <td><code>3200</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PERSONAL_MOBILITY</code></td>
+            <td><code>3264</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PERSONAL_MOBILITY_WHEELCHAIR</code></td>
+            <td><code>3265</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PERSONAL_MOBILITY_SCOOTER</code></td>
+            <td><code>3266</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>GLUCOSE_MONITOR</code></td>
+            <td><code>3328</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>SPORTS_ACTIVITY</code></td>
+            <td><code>5184</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>SPORTS_ACTIVITY_LOCATION_DISPLAY</code></td>
+            <td><code>5185</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>SPORTS_ACTIVITY_LOCATION_AND_NAV_DISPLAY</code></td>
+            <td><code>5186</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>SPORTS_ACTIVITY_LOCATION_POD</code></td>
+            <td><code>5187</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>SPORTS_ACTIVITY_LOCATION_AND_NAV_POD</code></td>
+            <td><code>5188</code></td>
+            <td></td>
+        </tr></table>
+
+### TechnologyType {:#TechnologyType}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.bluetooth.control/remote_device.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.control/remote_device.fidl#70)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>LOW_ENERGY</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>CLASSIC</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>DUAL_MODE</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr></table>
+
+### AddressType {:#AddressType}
+Type: <code>uint8</code>
+
+*Defined in [fuchsia.bluetooth.control/bonding.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.control/bonding.fidl#43)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>LE_PUBLIC</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>LE_RANDOM</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>BREDR</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr></table>
+
+### InputCapabilityType {:#InputCapabilityType}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.bluetooth.control/pairing_delegate.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.control/pairing_delegate.fidl#11)*
+
+ Input and Output Capabilities for pairing exchanges.
+ See Volume 3, Part C, Table 5.3 and 5.4
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>NONE</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>CONFIRMATION</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>KEYBOARD</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr></table>
+
+### OutputCapabilityType {:#OutputCapabilityType}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.bluetooth.control/pairing_delegate.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.control/pairing_delegate.fidl#17)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>NONE</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>DISPLAY</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr></table>
+
+### PairingMethod {:#PairingMethod}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.bluetooth.control/pairing_delegate.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.control/pairing_delegate.fidl#24)*
+
+ Different types required by the Security Manager for pairing methods.
+ Bluetooth SIG has different requirements for different device capabilities.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>CONSENT</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PASSKEY_DISPLAY</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PASSKEY_COMPARISON</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PASSKEY_ENTRY</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr></table>
+
+### PairingKeypressType {:#PairingKeypressType}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.bluetooth.control/pairing_delegate.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.control/pairing_delegate.fidl#41)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>DIGIT_ENTERED</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>DIGIT_ERASED</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PASSKEY_CLEARED</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PASSKEY_ENTERED</code></td>
+            <td><code>3</code></td>
+            <td></td>
         </tr></table>
 
 ### Appearance {:#Appearance}
diff --git a/sdk/fidl/fuchsia.bluetooth.gatt/index.md b/sdk/fidl/fuchsia.bluetooth.gatt/index.md
index e88bf45..6c00788 100644
--- a/sdk/fidl/fuchsia.bluetooth.gatt/index.md
+++ b/sdk/fidl/fuchsia.bluetooth.gatt/index.md
@@ -770,6 +770,770 @@
             </td>
         </tr></table>
 
+## RemoteService {:#RemoteService}
+*Defined in [fuchsia.bluetooth.gatt/client.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.gatt/client.fidl#9)*
+
+
+### DiscoverCharacteristics {:#DiscoverCharacteristics}
+
+ Returns the characteristics and characteristic descriptors that belong to
+ this service.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.bluetooth/index.html'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/index.html#Status'>Status</a></code>
+            </td>
+        </tr><tr>
+            <td><code>characteristics</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#Characteristic'>Characteristic</a>&gt;</code>
+            </td>
+        </tr></table>
+
+### ReadCharacteristic {:#ReadCharacteristic}
+
+ Reads the value of the characteristic with `id` and returns it in the
+ reply. If `status` indicates an error `value` will be empty.
+
+ If the characteristic has a long value (i.e. larger than the current MTU)
+ this method will return only the first (MTU - 1) bytes of the value. Use
+ ReadLongCharacteristic() to read larger values or starting at a non-zero
+ offset.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.bluetooth/index.html'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/index.html#Status'>Status</a></code>
+            </td>
+        </tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;</code>
+            </td>
+        </tr></table>
+
+### ReadLongCharacteristic {:#ReadLongCharacteristic}
+
+ Reads the complete value of a characteristic with the given `id`. This
+ procedure should be used if the characteristic is known to have a value
+ that can not be read in a single request.
+
+ Returns up to `max_bytes` octets of the characteristic value starting at
+ the given `offset`.
+
+ This may return an error if:
+   a. `max_bytes` is 0;
+   b. The `offset` is invalid;
+   c. The characteristic does not have a long value;
+   d. The server does not support the long read procedure.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr><tr>
+            <td><code>offset</code></td>
+            <td>
+                <code>uint16</code>
+            </td>
+        </tr><tr>
+            <td><code>max_bytes</code></td>
+            <td>
+                <code>uint16</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.bluetooth/index.html'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/index.html#Status'>Status</a></code>
+            </td>
+        </tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;[512]</code>
+            </td>
+        </tr></table>
+
+### WriteCharacteristic {:#WriteCharacteristic}
+
+ Writes |value| to the characteristic with |id|. This operation may return
+ an error if:
+   a. The size of |value| exceeds the current MTU.
+   b. The characteristic referred to by |id| does not have the 'write'
+      property.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.bluetooth/index.html'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/index.html#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### WriteLongCharacteristic {:#WriteLongCharacteristic}
+
+ Writes |value| to the characteristic with |id|, beginning at |offset|.
+ This procedure should be used if the value to be written is too long to
+ fit in a single request or needs to be written at an offset. This may
+ return an error if:
+   a. The |offset| is invalid;
+   b. The server does not support the long write procedure.
+
+ Long Writes require multiple messages to the remote service and take longer
+ to execute than Short Writes. It is not recommended to send a short write
+ while a long write is in process to the same id and data range. The order
+ of the responses from this function signify the order in which the remote
+ service received them, not necessarily the order in which it is called.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr><tr>
+            <td><code>offset</code></td>
+            <td>
+                <code>uint16</code>
+            </td>
+        </tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;[512]</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.bluetooth/index.html'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/index.html#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### WriteCharacteristicWithoutResponse {:#WriteCharacteristicWithoutResponse}
+
+ Writes `value` to the characteristic with `id` without soliciting an
+ acknowledgement from the peer. This method has no response and its delivery
+ cannot be confirmed.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### ReadDescriptor {:#ReadDescriptor}
+
+ Reads the value of the characteristic descriptor with `id` and returns it
+ in the reply. If `status` indicates an error, `value` can be ignored.
+
+ If the descriptor has a long value (i.e. larger than the current MTU)
+ this method will return only the first (MTU - 1) bytes of the value. Use
+ ReadLongDescriptor() to read larger values or starting at a non-zero
+ offset.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.bluetooth/index.html'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/index.html#Status'>Status</a></code>
+            </td>
+        </tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;</code>
+            </td>
+        </tr></table>
+
+### ReadLongDescriptor {:#ReadLongDescriptor}
+
+ Reads the complete value of a characteristic descriptor with the given `id`.
+ This procedure should be used if the descriptor is known to have a value
+ that can not be read in a single request.
+
+ Returns up to `max_bytes` octets of the characteristic value starting at
+ the given `offset`.
+
+ This may return an error if:
+   a. `max_bytes` is 0;
+   b. The `offset` is invalid;
+   c. The server does not support the long read procedure.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr><tr>
+            <td><code>offset</code></td>
+            <td>
+                <code>uint16</code>
+            </td>
+        </tr><tr>
+            <td><code>max_bytes</code></td>
+            <td>
+                <code>uint16</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.bluetooth/index.html'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/index.html#Status'>Status</a></code>
+            </td>
+        </tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;</code>
+            </td>
+        </tr></table>
+
+### WriteDescriptor {:#WriteDescriptor}
+
+ Writes |value| to the characteristic descriptor with |id|. This operation
+ may return an error if:
+   a. The size of |value| exceeds the current MTU.
+   b. |id| refers to an internally reserved descriptor type (e.g. the Client
+      Characteristic Configuration descriptor).
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.bluetooth/index.html'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/index.html#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### WriteLongDescriptor {:#WriteLongDescriptor}
+
+ Writes |value| to the characteristic descriptor with |id|, beginning at
+ |offset|. This procedure should be used if the value to be written is too
+ long to fit in a single request or needs to be written at an offset. This
+ may return an error if:
+   a. The |offset| is invalid;
+   b. The server does not support the long write procedure.
+   c. |id| refers to an internally reserved descriptor type (e.g. the Client
+      Characteristic Configuration descriptor).
+
+ Long Writes require multiple messages to the remote service and take longer
+ to execute than Short Writes. It is not recommended to send a short write
+ while a long write is in process to the same id and data range. The order
+ of the responses from this function signify the order in which the remote
+ service received them, not necessarily the order in which it is called.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr><tr>
+            <td><code>offset</code></td>
+            <td>
+                <code>uint16</code>
+            </td>
+        </tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;[512]</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.bluetooth/index.html'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/index.html#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### NotifyCharacteristic {:#NotifyCharacteristic}
+
+ Subscribe or unsubscribe to notifications/indications from the characteristic with
+ the given `id`. Notifications or indications will be enabled if `enable` is
+ true or disabled if `enable` is false and they have been enabled for this
+ client.
+
+ Either notifications or indications will be enabled depending on
+ characteristic properties. Indications will be preferred if they are
+ supported.
+
+ This operation fails if the characteristic does not have the "notify" or
+ "indicate" property or does not contain a Client Characteristic
+ Configuration descriptor.
+
+ On success, the OnCharacteristicValueUpdated event will be sent whenever
+ the peer sends a notification or indication. The local host will
+ automically confirm indications.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr><tr>
+            <td><code>enable</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.bluetooth/index.html'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/index.html#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### OnCharacteristicValueUpdated {:#OnCharacteristicValueUpdated}
+
+ Events:
+ Called when a characteristic value notification or indication is received.
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;</code>
+            </td>
+        </tr></table>
+
+## Client {:#Client}
+*Defined in [fuchsia.bluetooth.gatt/client.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.gatt/client.fidl#131)*
+
+
+### ListServices {:#ListServices}
+
+ Enumerates services found on the peer that this Client represents. Results
+ can be restricted by specifying a list of UUIDs in `uuids`. The returned
+ ServiceInfo structures will contain only basic information about each
+ service and the `characteristics` and `includes` fields will be null.
+
+ To further interact with services, clients must obtain a RemoteService
+ handle by calling ConnectToService().
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>uuids</code></td>
+            <td>
+                <code>vector&lt;string&gt;?</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.bluetooth/index.html'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/index.html#Status'>Status</a></code>
+            </td>
+        </tr><tr>
+            <td><code>services</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#ServiceInfo'>ServiceInfo</a>&gt;</code>
+            </td>
+        </tr></table>
+
+### ConnectToService {:#ConnectToService}
+
+ Connects the RemoteService with the given identifier.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr><tr>
+            <td><code>service</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#RemoteService'>RemoteService</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+## LocalServiceDelegate {:#LocalServiceDelegate}
+*Defined in [fuchsia.bluetooth.gatt/server.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.gatt/server.fidl#10)*
+
+ Interface for responding to requests on a local service.
+
+### OnCharacteristicConfiguration {:#OnCharacteristicConfiguration}
+
+ Notifies the delegate when a remote device with `peer_id` enables or
+ disables notifications or indications on the characteristic with the given
+ `characteristic_id`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>characteristic_id</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr><tr>
+            <td><code>peer_id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>notify</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr><tr>
+            <td><code>indicate</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr></table>
+
+
+
+### OnReadValue {:#OnReadValue}
+
+ Called when a remote device issues a request to read the value of the
+ of the characteristic or descriptor with given identifier. The delegate
+ must respond to the request by returning the characteristic value. If the
+ read request resulted in an error it should be returned in `error_code`.
+ On success, `error_code` should be set to NO_ERROR and a `value` should be
+ provided.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr><tr>
+            <td><code>offset</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>value</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;?</code>
+            </td>
+        </tr><tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#ErrorCode'>ErrorCode</a></code>
+            </td>
+        </tr></table>
+
+### OnWriteValue {:#OnWriteValue}
+
+ Called when a remote device issues a request to write the value of the
+ characteristic or descriptor with the given identifier.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr><tr>
+            <td><code>offset</code></td>
+            <td>
+                <code>uint16</code>
+            </td>
+        </tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#ErrorCode'>ErrorCode</a></code>
+            </td>
+        </tr></table>
+
+### OnWriteWithoutResponse {:#OnWriteWithoutResponse}
+
+ Called when a remote device issues a request to write the value of the
+ characteristic with the given identifier. This can be called on a
+ characteristic with the WRITE_WITHOUT_RESPONSE property.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr><tr>
+            <td><code>offset</code></td>
+            <td>
+                <code>uint16</code>
+            </td>
+        </tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+## LocalService {:#LocalService}
+*Defined in [fuchsia.bluetooth.gatt/server.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.gatt/server.fidl#36)*
+
+ Interface for communicating with a published service.
+
+### RemoveService {:#RemoveService}
+
+ Removes the service that this interface instance corresponds to. Does
+ nothing if the service is already removed.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### NotifyValue {:#NotifyValue}
+
+ Sends a notification carrying the `value` of the characteristic with the
+ given `characteristic_id` to the device with `peer_id`.
+
+ If `confirm` is true, then this method sends an indication instead. If the
+ peer fails to confirm the indication, the link between the peer and the
+ local adapter will be closed.
+
+ This method has no effect if the peer has not enabled notifications or
+ indications on the requested characteristic.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>characteristic_id</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr><tr>
+            <td><code>peer_id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;</code>
+            </td>
+        </tr><tr>
+            <td><code>confirm</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr></table>
+
+
+
+## Server {:#Server}
+*Defined in [fuchsia.bluetooth.gatt/server.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.gatt/server.fidl#54)*
+
+
+### PublishService {:#PublishService}
+
+ Publishes the given service so that it is available to all remote peers.
+ A LocalServiceDelegate must be provided over which to receive service requests.
+
+ The caller must assign distinct identifiers to the characteristics and
+ descriptors listed in `info`. These identifiers will be used in requests
+ sent to `delegate`.
+
+ `service` can be used to interact with the pubished service. If this
+ service cannot be published then the handle for `service` will be closed.
+
+ Returns the success or failure status of the call and a unique identifier
+ that can be used to unregister the service.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>info</code></td>
+            <td>
+                <code><a class='link' href='#ServiceInfo'>ServiceInfo</a></code>
+            </td>
+        </tr><tr>
+            <td><code>delegate</code></td>
+            <td>
+                <code><a class='link' href='#LocalServiceDelegate'>LocalServiceDelegate</a></code>
+            </td>
+        </tr><tr>
+            <td><code>service</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#LocalService'>LocalService</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.bluetooth/index.html'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/index.html#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
 
 
 ## **STRUCTS**
@@ -1014,6 +1778,246 @@
         </tr>
 </table>
 
+### SecurityRequirements {:#SecurityRequirements}
+*Defined in [fuchsia.bluetooth.gatt/types.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.gatt/types.fidl#27)*
+
+
+
+ Represents encryption, authentication, and authorization permissions that can
+ be assigned to a specific access permission.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>encryption_required</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> If true, the physical link must be encrypted to access this attribute.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>authentication_required</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> If true, the physical link must be authenticated to access this
+ attribute.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>authorization_required</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> If true, the client needs to be authorized before accessing this
+ attribute.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### AttributePermissions {:#AttributePermissions}
+*Defined in [fuchsia.bluetooth.gatt/types.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.gatt/types.fidl#41)*
+
+
+
+ Specifies the access permissions for a specific attribute value.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>read</code></td>
+            <td>
+                <code><a class='link' href='#SecurityRequirements'>SecurityRequirements</a>?</code>
+            </td>
+            <td> Specifies whether or not an attribute has the read permission. If null,
+ then the attribute value cannot be read. Otherwise, it can be read only if
+ the permissions specified in the Permissions struct are satisfied.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>write</code></td>
+            <td>
+                <code><a class='link' href='#SecurityRequirements'>SecurityRequirements</a>?</code>
+            </td>
+            <td> Specifies whether or not an attribute has the write permission. If null,
+ then the attribute value cannot be written. Otherwise, it be written only
+ if the permissions specified in the Permissions struct are satisfied.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>update</code></td>
+            <td>
+                <code><a class='link' href='#SecurityRequirements'>SecurityRequirements</a>?</code>
+            </td>
+            <td> Specifies the security requirements for a client to subscribe to
+ notifications or indications on a characteristic. A characteristic's
+ support for notifications or indiciations is specified using the NOTIFY and
+ INDICATE characteristic properties. If a local characteristic has one of
+ these properties then this field can not be null. Otherwise, this field
+ must be left as null.
+
+ This field is ignored for Descriptors.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ServiceInfo {:#ServiceInfo}
+*Defined in [fuchsia.bluetooth.gatt/types.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.gatt/types.fidl#76)*
+
+
+
+ Represents a local or remote GATT service.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> Uniquely identifies this GATT service. This value will be ignored for local
+ services. Remote services will always have an identifier.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>primary</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Indicates whether this is a primary or secondary service.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>type</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> The 128-bit UUID that identifies the type of this service. This is a string
+ in the canonical 8-4-4-4-12 format.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>characteristics</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#Characteristic'>Characteristic</a>&gt;?</code>
+            </td>
+            <td> The characteristics of this service.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>includes</code></td>
+            <td>
+                <code>vector&lt;uint64&gt;?</code>
+            </td>
+            <td> Ids of other services that are included by this service.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Characteristic {:#Characteristic}
+*Defined in [fuchsia.bluetooth.gatt/types.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.gatt/types.fidl#96)*
+
+
+
+ Represents a local or remote GATT characteristic.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> Uniquely identifies this characteristic within a service.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>type</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> The 128-bit UUID that identifies the type of this characteristic. This is a
+ string in the canonical 8-4-4-4-12 format.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>properties</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> The characteristic properties bitfield. See kProperty* above for possible
+ values.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>permissions</code></td>
+            <td>
+                <code><a class='link' href='#AttributePermissions'>AttributePermissions</a>?</code>
+            </td>
+            <td> The attribute permissions of this characteristic. For remote
+ characteristics, this value will be null until the permissions are
+ discovered via read and write requests.
+
+ For local characteristics, this value is mandatory.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>descriptors</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#Descriptor'>Descriptor</a>&gt;?</code>
+            </td>
+            <td> The descriptors of this characteristic.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Descriptor {:#Descriptor}
+*Defined in [fuchsia.bluetooth.gatt/types.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.gatt/types.fidl#120)*
+
+
+
+ Represents a local or remote GATT characteristic descriptor.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> Uniquely identifies this descriptor within the characteristic that it
+ belongs to.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>type</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> The 128-bit UUID that identifies the type of this descriptor. This is a
+ string in the canonical 8-4-4-4-12 format.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>permissions</code></td>
+            <td>
+                <code><a class='link' href='#AttributePermissions'>AttributePermissions</a>?</code>
+            </td>
+            <td> The attribute permissions of this descriptor. For remote
+ descriptors, this value will be null until the permissions are
+ discovered via read and write requests.
+
+ For local descriptors, this value is mandatory.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
 
 
 ## **ENUMS**
@@ -1031,25 +2035,47 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>NO_ERROR</code></td>
             <td><code>0</code></td>
-            <td> Indicates that the operation was successful.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>INVALID_OFFSET</code></td>
             <td><code>1</code></td>
-            <td> Indicates that the offset used in a read or write request exceeds the
- bounds of the value.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>INVALID_VALUE_LENGTH</code></td>
             <td><code>2</code></td>
-            <td> Indicates that the value given in a write request would exceed the maximum
- length allowed for the destionation characteristic or descriptor.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>NOT_PERMITTED</code></td>
             <td><code>3</code></td>
-            <td> Indicates that a read or write request is not permitted.
-</td>
+            <td></td>
+        </tr></table>
+
+### ErrorCode {:#ErrorCode}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.bluetooth.gatt/types.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.gatt/types.fidl#9)*
+
+ Codes that can be returned in the `protocol_error_code` field of a
+ bluetooth.Error.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>NO_ERROR</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>INVALID_OFFSET</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>INVALID_VALUE_LENGTH</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>NOT_PERMITTED</code></td>
+            <td><code>3</code></td>
+            <td></td>
         </tr></table>
 
 
@@ -1147,6 +2173,88 @@
                 <td><code>uint32</code></td>
             <td></td>
         </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.gatt/constants.fidl#7">MAX_VALUE_LENGTH</a></td>
+            <td>
+                    <code>512</code>
+                </td>
+                <td><code>uint16</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.gatt/types.fidl#65">kPropertyBroadcast</a></td>
+            <td>
+                    <code>1</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Possible values for the characteristic properties bitfield. These specify the
+ GATT procedures that are allowed for a particular characteristic.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.gatt/types.fidl#66">kPropertyRead</a></td>
+            <td>
+                    <code>2</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.gatt/types.fidl#67">kPropertyWriteWithoutResponse</a></td>
+            <td>
+                    <code>4</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.gatt/types.fidl#68">kPropertyWrite</a></td>
+            <td>
+                    <code>8</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.gatt/types.fidl#69">kPropertyNotify</a></td>
+            <td>
+                    <code>16</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.gatt/types.fidl#70">kPropertyIndicate</a></td>
+            <td>
+                    <code>32</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.gatt/types.fidl#71">kPropertyAuthenticatedSignedWrites</a></td>
+            <td>
+                    <code>64</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.gatt/types.fidl#72">kPropertyReliableWrite</a></td>
+            <td>
+                    <code>256</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.gatt/types.fidl#73">kPropertyWritableAuxiliaries</a></td>
+            <td>
+                    <code>512</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
     
 </table>
 
diff --git a/sdk/fidl/fuchsia.bluetooth.le/index.md b/sdk/fidl/fuchsia.bluetooth.le/index.md
index ed64363..4151a22 100644
--- a/sdk/fidl/fuchsia.bluetooth.le/index.md
+++ b/sdk/fidl/fuchsia.bluetooth.le/index.md
@@ -460,6 +460,460 @@
             </td>
         </tr></table>
 
+## Central {:#Central}
+*Defined in [fuchsia.bluetooth.le/central.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.le/central.fidl#11)*
+
+
+### GetPeripherals {:#GetPeripherals}
+
+ Returns the list of peripherals that are known to the system from previous scan, connection,
+ and/or bonding procedures. The results can be filtered based on service UUIDs that are known to
+ be present on the peripheral.
+
+ This method only returns peripherals (i.e. connectable devices).
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>service_uuids</code></td>
+            <td>
+                <code>vector&lt;string&gt;?</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>peripherals</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#RemoteDevice'>RemoteDevice</a>&gt;</code>
+            </td>
+        </tr></table>
+
+### GetPeripheral {:#GetPeripheral}
+
+ Returns information about a single peripheral that is known to the system from previous scan,
+ connection, and/or bonding procedures based on its unique identifier. Returns null if
+ `identifier` is not recognized.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>identifier</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>peripheral</code></td>
+            <td>
+                <code><a class='link' href='#RemoteDevice'>RemoteDevice</a>?</code>
+            </td>
+        </tr></table>
+
+### StartScan {:#StartScan}
+
+ Initiates a scan session for nearby peripherals and broadcasters. Discovered devices will be
+ reported via CentralDelegate.OnDeviceDiscovered(). If a scan session is already in progress,
+ `filter` will replace the existing session's filter.
+
+ If `filter` is null or empty (i.e. none of its fields has been populated) then the delegate
+ will be notified for all discoverable devices that are found. This is not recommended; clients
+ should generally filter results by at least one of `filter.service_uuids`,
+ `filter.service_data`, and/or `filter.manufacturer_identifier`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>filter</code></td>
+            <td>
+                <code><a class='link' href='#ScanFilter'>ScanFilter</a>?</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.bluetooth/index.html'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/index.html#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### StopScan {:#StopScan}
+
+ Terminate a previously started scan session.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### ConnectPeripheral {:#ConnectPeripheral}
+
+ Creates a connection to the peripheral device with the given identifier.
+ Returns the status of the operation in `status`.
+
+ On success, `gatt_client` will be bound and can be used for GATT client
+ role procedures. On failure, `gatt_client` will be closed and `status` will
+ indicate an error.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>identifier</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>gatt_client</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='../fuchsia.bluetooth.gatt/index.html'>fuchsia.bluetooth.gatt</a>/<a class='link' href='../fuchsia.bluetooth.gatt/index.html#Client'>Client</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.bluetooth/index.html'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/index.html#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### DisconnectPeripheral {:#DisconnectPeripheral}
+
+ Disconnects this Central's connection to the peripheral with the given identifier.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>identifier</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.bluetooth/index.html'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/index.html#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### OnScanStateChanged {:#OnScanStateChanged}
+
+ Called when the scan state changes, e.g. when a scan session terminates due to a call to
+ Central.StopScan() or another unexpected condition.
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>scanning</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr></table>
+
+### OnDeviceDiscovered {:#OnDeviceDiscovered}
+
+ Called for each peripheral/broadcaster that is discovered during a scan session. `rssi`
+ contains the received signal strength of the advertising packet that generated this event, if
+ available.
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>device</code></td>
+            <td>
+                <code><a class='link' href='#RemoteDevice'>RemoteDevice</a></code>
+            </td>
+        </tr></table>
+
+### OnPeripheralDisconnected {:#OnPeripheralDisconnected}
+
+ Called when this Central's connection to a peripheral with the given identifier is terminated.
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>identifier</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr></table>
+
+## Connection {:#Connection}
+*Defined in [fuchsia.bluetooth.le/peer.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.le/peer.fidl#33)*
+
+ Protocol that represents the connection to a peer. This can be used to interact with GATT
+ services and establish L2CAP channels.
+
+## AdvertisingHandle {:#AdvertisingHandle}
+*Defined in [fuchsia.bluetooth.le/peripheral.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.le/peripheral.fidl#79)*
+
+ Capability that is valid for the duration of advertising. The caller can close the handle to
+ stop advertising. If the system internally stops advertising for any reason, the handle will be
+ closed to communicate this to the client.
+
+## Peripheral {:#Peripheral}
+*Defined in [fuchsia.bluetooth.le/peripheral.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.le/peripheral.fidl#83)*
+
+
+### StartAdvertising {:#StartAdvertising}
+
+ Start advertising as a LE peripheral. An empty response is sent to indicate when advertising
+ has successfully initiated. If advertising cannot be initiated, then the response will
+ contain a <a class='link' href='#PeripheralError'>PeripheralError</a>.
+
+ This method can get called any number of times and successive calls can be made to
+ reconfigure the advertising parameters. However only the most recent
+ <a class='link' href='#AdvertisingHandle'>AdvertisingHandle</a> will remain valid.
+
+ An instance of <a class='link' href='#Peripheral'>Peripheral</a> can only have one active advertisement at
+ a time. Clients must obtain multiple Peripheral instances for multiple simultaneous
+ advertisements.
+
+ If the client closes its end of the <a class='link' href='#AdvertisingHandle'>AdvertisingHandle</a> channel,
+ advertising will be stopped. If the handle is closed before the request is fulfilled,
+ advertising will be briefly enabled before it is terminated.
+
+ + request `parameters` Parameters used while configuring the advertising instance.
+ + request `handle` Handle that remains valid for the duration of this advertising session.
+ * error Returns a <a class='link' href='#PeripheralError'>PeripheralError</a> if advertising cannot be
+         initiated. In this case the `handle` will be closed.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>parameters</code></td>
+            <td>
+                <code><a class='link' href='#AdvertisingParameters'>AdvertisingParameters</a></code>
+            </td>
+        </tr><tr>
+            <td><code>handle</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#AdvertisingHandle'>AdvertisingHandle</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#Peripheral_StartAdvertising_Result'>Peripheral_StartAdvertising_Result</a></code>
+            </td>
+        </tr></table>
+
+### OnPeerConnected {:#OnPeerConnected}
+
+ Event delivered when a remote LE central initiates a connection to this Peripheral when
+ connectable advertising is enabled via
+ <a class='link' href='#Peripheral.StartAdvertising'>Peripheral.StartAdvertising</a>.
+
+ The returned <a class='link' href='#Connection'>Connection</a> handle can be used to interact with the
+ peer. It also represents a peripheral's ownership over the connection: the client can drop
+ the handle to request a disconnection. Similarly, the handle is closed by the system to
+ indicate that the connection to the peer has been lost.
+
+ + request `peer` Information about the central that initiated the connection.
+ + request `handle` Represents the connection.
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>peer</code></td>
+            <td>
+                <code><a class='link' href='#Peer'>Peer</a></code>
+            </td>
+        </tr><tr>
+            <td><code>connection</code></td>
+            <td>
+                <code><a class='link' href='#Connection'>Connection</a></code>
+            </td>
+        </tr></table>
+
+### StartAdvertisingDeprecated {:#StartAdvertisingDeprecated}
+
+ [[DEPRECATED]]
+
+ Starts sending advertisements based on the given parameters.
+   - `advertising_data`: The advertising data that should be included in the payload.
+   - `scan_result`: The scan result that will be returned when the advertisement is
+                    scanned.  Setting this will mark the advertisement set as scannable.
+   - `connectable`: when true, this advertisement will be marked as connectable.
+                 NOTE: connections can be made to a GATT server even if this is not set.
+   - `interval_ms`: The requested interval to advertise this set at in milliseconds.
+                    minimum 20, maximum 10,000,000 (almost 3 hours). A reasonable
+                    default is 1 second (1000).
+   - `anonymous`: if true, the address of this device will not be included
+
+ If the `tx_power_level` is set in either AdvertisingData, it will be replaced with
+ the actual TX Power level reported by the adapter, or included in the extended header
+ of the Advertising PDU to save advertising space.
+
+ If `scan_result` and `advertising_data` are both set, legacy advertising will be used,
+ which limits the size of the advertising data.
+
+ This request will fail if:
+   - The `service_uuids` field of `advertising_data` contains a UUID that does not match
+     a GATT service that was previously registered by this application;
+   - If the provided advertising data cannot fit within the advertising payload MTU that
+     is supported on the current platform and parameters.
+   - If `anonymous` advertising is requested but the controller cannot support it.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>advertising_data</code></td>
+            <td>
+                <code><a class='link' href='#AdvertisingDataDeprecated'>AdvertisingDataDeprecated</a></code>
+            </td>
+        </tr><tr>
+            <td><code>scan_result</code></td>
+            <td>
+                <code><a class='link' href='#AdvertisingDataDeprecated'>AdvertisingDataDeprecated</a>?</code>
+            </td>
+        </tr><tr>
+            <td><code>connectable</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr><tr>
+            <td><code>interval_ms</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>anonymous</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.bluetooth/index.html'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/index.html#Status'>Status</a></code>
+            </td>
+        </tr><tr>
+            <td><code>advertisement_id</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+        </tr></table>
+
+### StopAdvertisingDeprecated {:#StopAdvertisingDeprecated}
+
+ [[DEPRECATED]]
+
+ Stop an advertising session that was previously started by this application.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>advertisement_id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.bluetooth/index.html'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/index.html#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### OnCentralConnected {:#OnCentralConnected}
+
+ [[DEPRECATED]]
+
+ Called when a remote central device has connected to a connectable advertisement.
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>advertisement_id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>central</code></td>
+            <td>
+                <code><a class='link' href='#RemoteDevice'>RemoteDevice</a></code>
+            </td>
+        </tr></table>
+
+### OnCentralDisconnected {:#OnCentralDisconnected}
+
+ [[DEPRECATED]]
+
+ Called when a remote central previously connected to this application is disconnected.
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>device_id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr></table>
+
 
 
 ## **STRUCTS**
@@ -777,6 +1231,319 @@
         </tr>
 </table>
 
+### ServiceData {:#ServiceData}
+*Defined in [fuchsia.bluetooth.le/advertising_data.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.le/advertising_data.fidl#10)*
+
+
+
+ Entry in the `service_data` field of a <a class='link' href='#AdvertisingData'>AdvertisingData</a>.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>uuid</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.bluetooth/index.html'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/index.html#Uuid'>Uuid</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>data</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ManufacturerData {:#ManufacturerData}
+*Defined in [fuchsia.bluetooth.le/advertising_data.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.le/advertising_data.fidl#16)*
+
+
+
+ Entry in the `manufacturer_data` field of a <a class='link' href='#AdvertisingData'>AdvertisingData</a>.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>company_id</code></td>
+            <td>
+                <code>uint16</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>data</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Peripheral_StartAdvertising_Response {:#Peripheral_StartAdvertising_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr>
+</table>
+
+### ServiceDataEntry {:#ServiceDataEntry}
+*Defined in [fuchsia.bluetooth.le/types_deprecated.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.le/types_deprecated.fidl#10)*
+
+
+
+ [[DEPRECATED]]
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>uuid</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>data</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ManufacturerSpecificDataEntry {:#ManufacturerSpecificDataEntry}
+*Defined in [fuchsia.bluetooth.le/types_deprecated.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.le/types_deprecated.fidl#16)*
+
+
+
+ [[DEPRECATED]]
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>company_id</code></td>
+            <td>
+                <code>uint16</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>data</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### AdvertisingDataDeprecated {:#AdvertisingDataDeprecated}
+*Defined in [fuchsia.bluetooth.le/types_deprecated.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.le/types_deprecated.fidl#23)*
+
+
+
+ Represents advertising and scan response data advertised by a broadcaster or peripheral.
+ [[DEPRECATED]]
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>name</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td> Name of the device.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>tx_power_level</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.bluetooth/index.html'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/index.html#Int8'>Int8</a>?</code>
+            </td>
+            <td> The radio transmission power level reported in the advertisement.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>appearance</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.bluetooth/index.html'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/index.html#UInt16'>UInt16</a>?</code>
+            </td>
+            <td> The appearance reported in the advertisemet.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>service_uuids</code></td>
+            <td>
+                <code>vector&lt;string&gt;?</code>
+            </td>
+            <td> List of service UUIDs reported in the advertisement.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>service_data</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#ServiceDataEntry'>ServiceDataEntry</a>&gt;?</code>
+            </td>
+            <td> Service data included in the advertisement.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>manufacturer_specific_data</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#ManufacturerSpecificDataEntry'>ManufacturerSpecificDataEntry</a>&gt;?</code>
+            </td>
+            <td> Manufacturer specific data entries.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>solicited_service_uuids</code></td>
+            <td>
+                <code>vector&lt;string&gt;?</code>
+            </td>
+            <td> Service UUIDs that were solicited in the advertisement. Peripherals can invite centrals that
+ expose certain services to connect to them using service solicitation.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>uris</code></td>
+            <td>
+                <code>vector&lt;string&gt;?</code>
+            </td>
+            <td> URIs included in the advertising packet.
+ These are full URIs (they are encoded/decoded automatically)
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### RemoteDevice {:#RemoteDevice}
+*Defined in [fuchsia.bluetooth.le/types_deprecated.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.le/types_deprecated.fidl#54)*
+
+
+
+ Represents a remote Bluetooth Low Energy device. A RemoteDevice can represent a central,
+ broadcaster, or peripheral based on the API from which it was received.
+ [[DEPRECATED]]
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>identifier</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> Identifier that uniquely identifies this device on the current system.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>connectable</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Whether or not this device is connectable. Non-connectable devices are typically acting in the
+ LE broadcaster role.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>rssi</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.bluetooth/index.html'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/index.html#Int8'>Int8</a>?</code>
+            </td>
+            <td> The last known RSSI of this device, if known.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>advertising_data</code></td>
+            <td>
+                <code><a class='link' href='#AdvertisingDataDeprecated'>AdvertisingDataDeprecated</a>?</code>
+            </td>
+            <td> Advertising data broadcast by this device if this device is a broadcaster or peripheral.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ScanFilter {:#ScanFilter}
+*Defined in [fuchsia.bluetooth.le/types_deprecated.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.le/types_deprecated.fidl#73)*
+
+
+
+ Filter parameters for use during a scan. A discovered peripheral or broadcaster will be reported
+ to applications only if it satisfies all of the provided filter parameters. Null fields will be
+ ignored.
+ [[DEPRECATED]]
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>service_uuids</code></td>
+            <td>
+                <code>vector&lt;string&gt;?</code>
+            </td>
+            <td> Filter based on advertised service UUIDs. A peripheral that advertises at least one of the
+ entries in `service_uuids` will satisfy this filter.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>service_data_uuids</code></td>
+            <td>
+                <code>vector&lt;string&gt;?</code>
+            </td>
+            <td> Filter based on service data containing one of the given UUIDs.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>manufacturer_identifier</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.bluetooth/index.html'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/index.html#UInt16'>UInt16</a>?</code>
+            </td>
+            <td> Filter based on a company identifier present in the manufacturer data. If this filter parameter
+ is set, then the advertising payload must contain manufacturer specific data with the provided
+ company identifier to satisfy this filter.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>connectable</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.bluetooth/index.html'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/index.html#Bool'>Bool</a>?</code>
+            </td>
+            <td> Filter based on whether or not a device is connectable. For example, a client that is only
+ interested in peripherals that it can connect to can set this to true. Similarly a client can
+ scan only for braodcasters by setting this to false.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>name_substring</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td> Filter results based on a portion of the advertised device name.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>max_path_loss</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.bluetooth/index.html'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/index.html#Int8'>Int8</a>?</code>
+            </td>
+            <td> Filter results based on the path loss of the radio wave. A device that matches this filter must
+ satisfy the following:
+   1. Radio transmission power level and received signal strength must be available for the path
+      loss calculation;
+   2. The calculated path loss value must be less than, or equal to, `max_path_loss`.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
 
 
 ## **ENUMS**
@@ -792,34 +1559,27 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>NOT_SUPPORTED</code></td>
             <td><code>1</code></td>
-            <td> The operation or parameters requested are not supported on the current hardware.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>ADVERTISING_DATA_TOO_LONG</code></td>
             <td><code>2</code></td>
-            <td> The provided advertising data exceeds the maximum allowed length when encoded.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>SCAN_RESPONSE_DATA_TOO_LONG</code></td>
             <td><code>3</code></td>
-            <td> The provided scan response data exceeds the maximum allowed length when encoded.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>INVALID_PARAMETERS</code></td>
             <td><code>4</code></td>
-            <td> The requested parameters are invalid.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>ABORTED</code></td>
             <td><code>5</code></td>
-            <td> The request to start advertising was aborted, for example by issuing a new request with new
- parameters.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>FAILED</code></td>
             <td><code>6</code></td>
-            <td> Advertising could not be initiated due to a hardware or system error.
-</td>
+            <td></td>
         </tr></table>
 
 ### AdvertisingModeHint {:#AdvertisingModeHint}
@@ -840,22 +1600,78 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>VERY_FAST</code></td>
             <td><code>1</code></td>
-            <td> Advertise with a very short interval and window for fast discovery at the cost of higher
- power consumption. This corresponds to a 30-60ms interval on the 1M PHYs and 90-180ms on the
- coded PHY.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>FAST</code></td>
             <td><code>2</code></td>
-            <td> Advertise with a short interval and window that uses less power than `VERY_FAST`.
- This corresponds to a 100-150ms interval on the 1M PHYs and 300-450ms on the coded PHY.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>SLOW</code></td>
             <td><code>3</code></td>
-            <td> Advertise with a moderate interval and window. This corresponds to 1-1.2s on the 1M PHYs and 3s
- on the coded PHY.
-</td>
+            <td></td>
+        </tr></table>
+
+### PeripheralError {:#PeripheralError}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.bluetooth.le/peripheral.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.le/peripheral.fidl#9)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>NOT_SUPPORTED</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>ADVERTISING_DATA_TOO_LONG</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>SCAN_RESPONSE_DATA_TOO_LONG</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>INVALID_PARAMETERS</code></td>
+            <td><code>4</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>ABORTED</code></td>
+            <td><code>5</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>FAILED</code></td>
+            <td><code>6</code></td>
+            <td></td>
+        </tr></table>
+
+### AdvertisingModeHint {:#AdvertisingModeHint}
+Type: <code>uint8</code>
+
+*Defined in [fuchsia.bluetooth.le/peripheral.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.le/peripheral.fidl#37)*
+
+ A client can indicate the transmission rate of advertising packets by specifying a mode. The
+ mode provides a hint to the system when configuring the controller with advertising interval and
+ window parameters.
+
+ The mode affects how quickly a scanner or central is able to discover the peripheral; however it
+ can have an adverse effect on power consumption. While the system will try to honor a client's
+ request, it is not guaranteed to do so.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>VERY_FAST</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>FAST</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>SLOW</code></td>
+            <td><code>3</code></td>
+            <td></td>
         </tr></table>
 
 
@@ -1040,6 +1856,184 @@
 </td>
         </tr></table>
 
+### AdvertisingData {:#AdvertisingData}
+
+
+*Defined in [fuchsia.bluetooth.le/advertising_data.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.le/advertising_data.fidl#23)*
+
+ Represents advertising and scan response data that are transmitted by a LE peripheral or
+ broadcaster.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>name</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> Long or short name of the device.
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>appearance</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.bluetooth/index.html'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/index.html#Appearance'>Appearance</a></code>
+            </td>
+            <td> The appearance of the device.
+</td>
+        </tr><tr>
+            <td>3</td>
+            <td><code>tx_power_level</code></td>
+            <td>
+                <code>int8</code>
+            </td>
+            <td> The radio transmit power level reported by an advertising peer. This field is disallowed
+ when used with the Peripheral API.
+</td>
+        </tr><tr>
+            <td>4</td>
+            <td><code>service_uuids</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='../fuchsia.bluetooth/index.html'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/index.html#Uuid'>Uuid</a>&gt;</code>
+            </td>
+            <td> Service UUIDs.
+</td>
+        </tr><tr>
+            <td>5</td>
+            <td><code>service_data</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#ServiceData'>ServiceData</a>&gt;</code>
+            </td>
+            <td> Service data entries.
+</td>
+        </tr><tr>
+            <td>6</td>
+            <td><code>manufacturer_data</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#ManufacturerData'>ManufacturerData</a>&gt;</code>
+            </td>
+            <td> Manufacturer-specific data entries.
+</td>
+        </tr><tr>
+            <td>7</td>
+            <td><code>uris</code></td>
+            <td>
+                <code>vector&lt;string&gt;</code>
+            </td>
+            <td> String representing a URI to be advertised, as defined in [IETF STD 66](https://tools.ietf.org/html/std66).
+ Each entry should be a UTF-8 string including the scheme. For more information, see:
+ - https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml for allowed schemes;
+ - https://www.bluetooth.com/specifications/assigned-numbers/uri-scheme-name-string-mapping
+   for code-points used by the system to compress the scheme to save space in the payload.
+</td>
+        </tr></table>
+
+### Peer {:#Peer}
+
+
+*Defined in [fuchsia.bluetooth.le/peer.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.le/peer.fidl#11)*
+
+ Represents a Bluetooth Low Energy peer that may act in the broadcaster, peripheral, or central
+ role. The peer's role depends on whether it is obtained from the Central or Peripheral protocol.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>id</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.bluetooth/index.html'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/index.html#PeerId'>PeerId</a></code>
+            </td>
+            <td> Uniquely identifies this peer on the current system.
+
+ This field is always present.
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>connectable</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Whether or not this peer is connectable. Non-connectable peers are typically in the LE
+ broadcaster role.
+
+ This field is always present.
+</td>
+        </tr><tr>
+            <td>3</td>
+            <td><code>rssi</code></td>
+            <td>
+                <code>int8</code>
+            </td>
+            <td> The last observed RSSI of this peer.
+</td>
+        </tr><tr>
+            <td>4</td>
+            <td><code>advertising_data</code></td>
+            <td>
+                <code><a class='link' href='#AdvertisingData'>AdvertisingData</a></code>
+            </td>
+            <td> Advertising and scan response data broadcast by this peer. Present in broadcasters and
+ peripherals.
+</td>
+        </tr></table>
+
+### AdvertisingParameters {:#AdvertisingParameters}
+
+
+*Defined in [fuchsia.bluetooth.le/peripheral.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth.le/peripheral.fidl#53)*
+
+ Represents the parameters for configuring advertisements.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>data</code></td>
+            <td>
+                <code><a class='link' href='#AdvertisingData'>AdvertisingData</a></code>
+            </td>
+            <td> The fields that will be encoded in the data section of advertising packets.
+
+ This field is required.
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>scan_response</code></td>
+            <td>
+                <code><a class='link' href='#AdvertisingData'>AdvertisingData</a></code>
+            </td>
+            <td> The fields that are to be sent in a scan response packet. Clients may use this to send
+ additional data that does not fit inside an advertising packet on platforms that do not
+ support the advertising data length extensions.
+
+ If present advertisements will be configured to be scannable.
+</td>
+        </tr><tr>
+            <td>3</td>
+            <td><code>mode_hint</code></td>
+            <td>
+                <code><a class='link' href='#AdvertisingModeHint'>AdvertisingModeHint</a></code>
+            </td>
+            <td> The desired advertising frequency. See <a class='link' href='#AdvertisingModeHint'>AdvertisingModeHint</a>.
+ Defaults to <a class='link' href='#AdvertisingModeHint.SLOW'>AdvertisingModeHint.SLOW</a> if not present.
+</td>
+        </tr><tr>
+            <td>4</td>
+            <td><code>connectable</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> If present and true then the controller will broadcast connectable advertisements which
+ allows remote LE centrals to initiate a connection to the Peripheral. If false or otherwise
+ not present then the advertisements will be non-connectable.
+</td>
+        </tr></table>
+
 
 
 ## **UNIONS**
@@ -1063,6 +2057,25 @@
             <td></td>
         </tr></table>
 
+### Peripheral_StartAdvertising_Result {:#Peripheral_StartAdvertising_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#Peripheral_StartAdvertising_Response'>Peripheral_StartAdvertising_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code><a class='link' href='#PeripheralError'>PeripheralError</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
 
 
 
diff --git a/sdk/fidl/fuchsia.bluetooth.snoop/index.md b/sdk/fidl/fuchsia.bluetooth.snoop/index.md
index e07a889..33df69a 100644
--- a/sdk/fidl/fuchsia.bluetooth.snoop/index.md
+++ b/sdk/fidl/fuchsia.bluetooth.snoop/index.md
@@ -181,18 +181,15 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>CMD</code></td>
             <td><code>0</code></td>
-            <td> Command sent from the host to the controller.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>EVENT</code></td>
             <td><code>1</code></td>
-            <td> Event sent from the controller to the host.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>DATA</code></td>
             <td><code>2</code></td>
-            <td> Data sent from the controller to the host.
-</td>
+            <td></td>
         </tr></table>
 
 
diff --git a/sdk/fidl/fuchsia.bluetooth.sys/index.md b/sdk/fidl/fuchsia.bluetooth.sys/index.md
index 0d3ae9c..3d727db 100644
--- a/sdk/fidl/fuchsia.bluetooth.sys/index.md
+++ b/sdk/fidl/fuchsia.bluetooth.sys/index.md
@@ -763,13 +763,11 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>FAILED</code></td>
             <td><code>1</code></td>
-            <td> Operation could not be performed.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>PEER_NOT_FOUND</code></td>
             <td><code>2</code></td>
-            <td> The peer designated for the operation was not found.
-</td>
+            <td></td>
         </tr></table>
 
 ### BootstrapError {:#BootstrapError}
@@ -841,26 +839,19 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>CONSENT</code></td>
             <td><code>1</code></td>
-            <td> The user is asked to accept or reject pairing.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>PASSKEY_DISPLAY</code></td>
             <td><code>2</code></td>
-            <td> The user is shown a 6-digit numerical passkey which they must enter on the
- peer device.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>PASSKEY_COMPARISON</code></td>
             <td><code>3</code></td>
-            <td> The user is shown a 6-digit numerical passkey which will also shown on the
- peer device. The user must compare the passkeys and accept the pairing if
- the passkeys match.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>PASSKEY_ENTRY</code></td>
             <td><code>4</code></td>
-            <td> The user is asked to enter a 6-digit passkey.
-</td>
+            <td></td>
         </tr></table>
 
 ### PairingKeypress {:#PairingKeypress}
@@ -874,23 +865,19 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>DIGIT_ENTERED</code></td>
             <td><code>1</code></td>
-            <td> The user has entered a single digit.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>DIGIT_ERASED</code></td>
             <td><code>2</code></td>
-            <td> The user has erased a single digit.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>PASSKEY_CLEARED</code></td>
             <td><code>3</code></td>
-            <td> The user has cleared the entire passkey.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>PASSKEY_ENTERED</code></td>
             <td><code>4</code></td>
-            <td> The user has finished entering the passkey.
-</td>
+            <td></td>
         </tr></table>
 
 ### TechnologyType {:#TechnologyType}
diff --git a/sdk/fidl/fuchsia.bluetooth.test/index.md b/sdk/fidl/fuchsia.bluetooth.test/index.md
index 4c8efec..9338b52 100644
--- a/sdk/fidl/fuchsia.bluetooth.test/index.md
+++ b/sdk/fidl/fuchsia.bluetooth.test/index.md
@@ -397,13 +397,11 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>DUAL_MODE</code></td>
             <td><code>1</code></td>
-            <td> Support both BR/EDR and LE in LMP features.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>LE_ONLY</code></td>
             <td><code>2</code></td>
-            <td> Limits supported features and HCI commands to those that are required for LE only.
-</td>
+            <td></td>
         </tr></table>
 
 ### ConnectionState {:#ConnectionState}
@@ -724,28 +722,23 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>ADV_IND</code></td>
             <td><code>0</code></td>
-            <td> Connectable and scannable.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>ADV_DIRECT_IND</code></td>
             <td><code>1</code></td>
-            <td> Connectable, high-duty cycle, directed.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>ADV_SCAN_IND</code></td>
             <td><code>2</code></td>
-            <td> Scannable, undirected.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>ADV_NONCONN_IND</code></td>
             <td><code>3</code></td>
-            <td> Non-connectable, undirected
-</td>
+            <td></td>
         </tr><tr>
             <td><code>SCAN_RSP</code></td>
             <td><code>4</code></td>
-            <td> Scan response
-</td>
+            <td></td>
         </tr></table>
 
 
diff --git a/sdk/fidl/fuchsia.bluetooth/index.md b/sdk/fidl/fuchsia.bluetooth/index.md
index b7bd1b3..bf9949d 100644
--- a/sdk/fidl/fuchsia.bluetooth/index.md
+++ b/sdk/fidl/fuchsia.bluetooth/index.md
@@ -225,6 +225,223 @@
         </tr>
 </table>
 
+### Address {:#Address}
+*Defined in [fuchsia.bluetooth/address.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth/address.fidl#16)*
+
+
+
+ Represents a 48-bit Bluetooth Device Address.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>type</code></td>
+            <td>
+                <code><a class='link' href='#AddressType'>AddressType</a></code>
+            </td>
+            <td> Type of the device address.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>bytes</code></td>
+            <td>
+                <code>uint8[6]</code>
+            </td>
+            <td> The device address bytes in little-endian order.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### DeviceClass {:#DeviceClass}
+*Defined in [fuchsia.bluetooth/device_class.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth/device_class.fidl#14)*
+
+
+
+ The "Class of Device/Service" is a variable-format field that defines the category of a
+ Bluetooth device. The bitfield is divided into segments called "major service class",
+ "major device class", and "minor device class".
+
+ No assumptions about the specific functionality or characteristics of any application should be
+ based solely on its inclusion within a Major or Minor device class. For more information, see
+ https://www.bluetooth.com/specifications/assigned-numbers/baseband.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Id {:#Id}
+*Defined in [fuchsia.bluetooth/id.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth/id.fidl#8)*
+
+
+
+ Generic 64-bit identifier type.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### PeerId {:#PeerId}
+*Defined in [fuchsia.bluetooth/id.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth/id.fidl#13)*
+
+
+
+ 64-bit unique value used by the system to identify peer devices.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Bool {:#Bool}
+*Defined in [fuchsia.bluetooth/nullables.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth/nullables.fidl#10)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Int8 {:#Int8}
+*Defined in [fuchsia.bluetooth/nullables.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth/nullables.fidl#14)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code>int8</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### UInt16 {:#UInt16}
+*Defined in [fuchsia.bluetooth/nullables.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth/nullables.fidl#18)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code>uint16</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Error {:#Error}
+*Defined in [fuchsia.bluetooth/status.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth/status.fidl#26)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>error_code</code></td>
+            <td>
+                <code><a class='link' href='#ErrorCode'>ErrorCode</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>protocol_error_code</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>description</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Status {:#Status}
+*Defined in [fuchsia.bluetooth/status.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth/status.fidl#43)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>error</code></td>
+            <td>
+                <code><a class='link' href='#Error'>Error</a>?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Uuid {:#Uuid}
+*Defined in [fuchsia.bluetooth/uuid.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth/uuid.fidl#10)*
+
+
+
+ Represents a Bluetooth UUID in its 128-bit canonical form. While the Bluetooth standard supports
+ 16- and 32-bit short form UUIDs over the wire, the Fuchsia FIDL libraries require all UUIDs to
+ be represented in their canonical 128-bit form.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code>uint8[16]</code>
+            </td>
+            <td> The UUID bytes in little-endian order.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
 
 
 ## **ENUMS**
@@ -240,13 +457,11 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>PUBLIC</code></td>
             <td><code>1</code></td>
-            <td> LE public device address or `BR/EDR` `BD_ADDR`.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>RANDOM</code></td>
             <td><code>2</code></td>
-            <td> LE private or static random device address.
-</td>
+            <td></td>
         </tr></table>
 
 ### Appearance {:#Appearance}
@@ -489,15 +704,336 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>LEADER</code></td>
             <td><code>1</code></td>
-            <td> The role of the device that defines the piconet physical channel in BR/EDR or the
- "initiating" device in LE.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>FOLLOWER</code></td>
             <td><code>2</code></td>
-            <td> The role of a device that synchronizes to the piconet physical channel in BR/EDR or the
- "advertising" device in LE.
-</td>
+            <td></td>
+        </tr></table>
+
+### ErrorCode {:#ErrorCode}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.bluetooth/status.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth/status.fidl#10)*
+
+ DEPRECATED. Do not use these types in new code. Prefer the "error" syntax, protocol-specific
+ enums and zx.status instead.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>UNKNOWN</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>FAILED</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>CANCELED</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>IN_PROGRESS</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>TIMED_OUT</code></td>
+            <td><code>4</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>NOT_FOUND</code></td>
+            <td><code>5</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>NOT_SUPPORTED</code></td>
+            <td><code>6</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>BLUETOOTH_NOT_AVAILABLE</code></td>
+            <td><code>7</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>BAD_STATE</code></td>
+            <td><code>8</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>INVALID_ARGUMENTS</code></td>
+            <td><code>9</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>ALREADY</code></td>
+            <td><code>10</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PROTOCOL_ERROR</code></td>
+            <td><code>11</code></td>
+            <td></td>
+        </tr></table>
+
+### AddressType {:#AddressType}
+Type: <code>uint8</code>
+
+*Defined in [fuchsia.bluetooth/address.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth/address.fidl#7)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>PUBLIC</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>RANDOM</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr></table>
+
+### Appearance {:#Appearance}
+Type: <code>uint16</code>
+
+*Defined in [fuchsia.bluetooth/appearance.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth/appearance.fidl#11)*
+
+ Possible values for the LE Appearance property which describes the external
+ appearance of a peer at a high level.
+ (See the Bluetooth assigned-numbers document:
+ https://www.bluetooth.com/specifications/gatt/viewer?attributeXmlFile=org.bluetooth.characteristic.gap.appearance.xml)
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>UNKNOWN</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PHONE</code></td>
+            <td><code>64</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>COMPUTER</code></td>
+            <td><code>128</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>WATCH</code></td>
+            <td><code>192</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>WATCH_SPORTS</code></td>
+            <td><code>193</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>CLOCK</code></td>
+            <td><code>256</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>DISPLAY</code></td>
+            <td><code>320</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>REMOTE_CONTROL</code></td>
+            <td><code>384</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>EYE_GLASSES</code></td>
+            <td><code>448</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>TAG</code></td>
+            <td><code>512</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>KEYRING</code></td>
+            <td><code>576</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>MEDIA_PLAYER</code></td>
+            <td><code>640</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>BARCODE_SCANNER</code></td>
+            <td><code>704</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>THERMOMETER</code></td>
+            <td><code>768</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>THERMOMETER_EAR</code></td>
+            <td><code>769</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>HEART_RATE_SENSOR</code></td>
+            <td><code>832</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>HEART_RATE_SENSOR_BELT</code></td>
+            <td><code>833</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>BLOOD_PRESSURE</code></td>
+            <td><code>896</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>BLOOD_PRESSURE_ARM</code></td>
+            <td><code>897</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>BLOOD_PRESSURE_WRIST</code></td>
+            <td><code>898</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>HID</code></td>
+            <td><code>960</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>HID_KEYBOARD</code></td>
+            <td><code>961</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>HID_MOUSE</code></td>
+            <td><code>962</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>HID_JOYSTICK</code></td>
+            <td><code>963</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>HID_GAMEPAD</code></td>
+            <td><code>964</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>HID_DIGITIZER_TABLET</code></td>
+            <td><code>965</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>HID_CARD_READER</code></td>
+            <td><code>966</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>HID_DIGITAL_PEN</code></td>
+            <td><code>967</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>HID_BARCODE_SCANNER</code></td>
+            <td><code>968</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>GLUCOSE_METER</code></td>
+            <td><code>1024</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>RUNNING_WALKING_SENSOR</code></td>
+            <td><code>1088</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>RUNNING_WALKING_SENSOR_IN_SHOE</code></td>
+            <td><code>1089</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>RUNNING_WALKING_SENSOR_ON_SHOE</code></td>
+            <td><code>1090</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>RUNNING_WALKING_SENSOR_ON_HIP</code></td>
+            <td><code>1091</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>CYCLING</code></td>
+            <td><code>1152</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>CYCLING_COMPUTER</code></td>
+            <td><code>1153</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>CYCLING_SPEED_SENSOR</code></td>
+            <td><code>1154</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>CYCLING_CADENCE_SENSOR</code></td>
+            <td><code>1155</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>CYCLING_POWER_SENSOR</code></td>
+            <td><code>1156</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>CYCLING_SPEED_AND_CADENCE_SENSOR</code></td>
+            <td><code>1157</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PULSE_OXIMETER</code></td>
+            <td><code>3136</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PULSE_OXIMETER_FINGERTIP</code></td>
+            <td><code>3137</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PULSE_OXIMETER_WRIST</code></td>
+            <td><code>3138</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>WEIGHT_SCALE</code></td>
+            <td><code>3200</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PERSONAL_MOBILITY</code></td>
+            <td><code>3264</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PERSONAL_MOBILITY_WHEELCHAIR</code></td>
+            <td><code>3265</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PERSONAL_MOBILITY_SCOOTER</code></td>
+            <td><code>3266</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>GLUCOSE_MONITOR</code></td>
+            <td><code>3328</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>SPORTS_ACTIVITY</code></td>
+            <td><code>5184</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>SPORTS_ACTIVITY_LOCATION_DISPLAY</code></td>
+            <td><code>5185</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>SPORTS_ACTIVITY_LOCATION_AND_NAV_DISPLAY</code></td>
+            <td><code>5186</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>SPORTS_ACTIVITY_LOCATION_POD</code></td>
+            <td><code>5187</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>SPORTS_ACTIVITY_LOCATION_AND_NAV_POD</code></td>
+            <td><code>5188</code></td>
+            <td></td>
+        </tr></table>
+
+### ConnectionRole {:#ConnectionRole}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.bluetooth/connection_role.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth/connection_role.fidl#10)*
+
+ Refers to the role of a Bluetooth device (local or peer) in a physical channel piconet. See
+ [Bluetooth Vocabulary Guide](/src/connectivity/bluetooth/docs/vocabulary.md) for more
+ information.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>LEADER</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>FOLLOWER</code></td>
+            <td><code>2</code></td>
+            <td></td>
         </tr></table>
 
 ### ErrorCode {:#ErrorCode}
@@ -670,6 +1206,103 @@
                 <td><code>uint32</code></td>
             <td></td>
         </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth/device_class.fidl#19">MAJOR_DEVICE_CLASS_MASK</a></td>
+            <td>
+                    <code>7936</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Constants for the major device class field. The major device class is defined by bits 12-8.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth/device_class.fidl#21">MAJOR_DEVICE_CLASS_MISCELLANEOUS</a></td>
+            <td>
+                    <code>0</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth/device_class.fidl#22">MAJOR_DEVICE_CLASS_COMPUTER</a></td>
+            <td>
+                    <code>256</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth/device_class.fidl#23">MAJOR_DEVICE_CLASS_PHONE</a></td>
+            <td>
+                    <code>512</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth/device_class.fidl#24">MAJOR_DEVICE_CLASS_LAN</a></td>
+            <td>
+                    <code>768</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth/device_class.fidl#25">MAJOR_DEVICE_CLASS_AUDIO_VIDEO</a></td>
+            <td>
+                    <code>1024</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth/device_class.fidl#26">MAJOR_DEVICE_CLASS_PERIPHERAL</a></td>
+            <td>
+                    <code>1280</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth/device_class.fidl#27">MAJOR_DEVICE_CLASS_IMAGING</a></td>
+            <td>
+                    <code>1536</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth/device_class.fidl#28">MAJOR_DEVICE_CLASS_WEARABLE</a></td>
+            <td>
+                    <code>1792</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth/device_class.fidl#29">MAJOR_DEVICE_CLASS_TOY</a></td>
+            <td>
+                    <code>2048</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth/device_class.fidl#30">MAJOR_DEVICE_CLASS_HEALTH</a></td>
+            <td>
+                    <code>2304</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.bluetooth/device_class.fidl#31">MAJOR_DEVICE_CLASS_UNCATEGORIZED</a></td>
+            <td>
+                    <code>7936</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
     
 </table>
 
diff --git a/sdk/fidl/fuchsia.camera.common/index.md b/sdk/fidl/fuchsia.camera.common/index.md
index 48fbd79..8402092 100644
--- a/sdk/fidl/fuchsia.camera.common/index.md
+++ b/sdk/fidl/fuchsia.camera.common/index.md
@@ -88,6 +88,88 @@
 
 
 
+## Stream {:#Stream}
+*Defined in [fuchsia.camera.common/common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-camera-common/common.fidl#84)*
+
+ Protocol shared between the driver and the consumer.
+
+### Start {:#Start}
+
+ Starts the streaming of frames.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### Stop {:#Stop}
+
+ Stops the streaming of frames.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### ReleaseFrame {:#ReleaseFrame}
+
+ Unlocks the specified frame, allowing the driver to reuse the memory.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>buffer_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr></table>
+
+
+
+### OnFrameAvailable {:#OnFrameAvailable}
+
+ Sent by the driver to the client when a frame is available for processing,
+ or an error occurred.
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>frame</code></td>
+            <td>
+                <code><a class='link' href='#FrameAvailableEvent'>FrameAvailableEvent</a></code>
+            </td>
+        </tr></table>
+
+## VirtualCameraFactory {:#VirtualCameraFactory}
+*Defined in [fuchsia.camera.common/virtual.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-camera-common/virtual.fidl#42)*
+
+ Protocol for managing virtual cameras that need to be added for tests.
+
+### CreateDevice {:#CreateDevice}
+
+ Creates a new VirtualCameraDevice based on the configuration passed in.
+ `config`: a VirtualCameraConfig defining how the new device should behave.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>config</code></td>
+            <td>
+                <code><a class='link' href='#VirtualCameraConfig'>VirtualCameraConfig</a></code>
+            </td>
+        </tr></table>
+
+
+
 
 
 ## **STRUCTS**
@@ -332,6 +414,246 @@
         </tr>
 </table>
 
+### DeviceInfo {:#DeviceInfo}
+*Defined in [fuchsia.camera.common/common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-camera-common/common.fidl#24)*
+
+
+
+ Identifying information about the device.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>camera_id</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> Currently populated by the camera manager
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>vendor_id</code></td>
+            <td>
+                <code>uint16</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>product_id</code></td>
+            <td>
+                <code>uint16</code>
+            </td>
+            <td> string vendor_name;
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>max_stream_count</code></td>
+            <td>
+                <code>uint16</code>
+            </td>
+            <td> string product_name;
+ string serial_number;
+ The maximum number of stream interfaces that the device can support
+ simultaneously.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>output_capabilities</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Metadata {:#Metadata}
+*Defined in [fuchsia.camera.common/common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-camera-common/common.fidl#51)*
+
+
+
+ Extra information associated with the frame.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>timestamp</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### FrameAvailableEvent {:#FrameAvailableEvent}
+*Defined in [fuchsia.camera.common/common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-camera-common/common.fidl#58)*
+
+
+
+ Sent by the driver to the client when a frame is available for processing,
+ or an error occurred.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>frame_status</code></td>
+            <td>
+                <code><a class='link' href='#FrameStatus'>FrameStatus</a></code>
+            </td>
+            <td> Non zero if an error occurred.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>buffer_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> The index of the buffer in the buffer collection.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>metadata</code></td>
+            <td>
+                <code><a class='link' href='#Metadata'>Metadata</a></code>
+            </td>
+            <td> Any associated metadata such as timestamp.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### FrameRate {:#FrameRate}
+*Defined in [fuchsia.camera.common/common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-camera-common/common.fidl#70)*
+
+
+
+ The number of frames being produced every second.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>frames_per_sec_numerator</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> The frame rate is frames_per_sec_numerator / frames_per_sec_denominator.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>frames_per_sec_denominator</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### VideoFormat {:#VideoFormat}
+*Defined in [fuchsia.camera.common/common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-camera-common/common.fidl#77)*
+
+
+
+ Video format includes the image format and frame rate of frames being produced.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>format</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.sysmem/index.html'>fuchsia.sysmem</a>/<a class='link' href='../fuchsia.sysmem/index.html#ImageFormat'>ImageFormat</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>rate</code></td>
+            <td>
+                <code><a class='link' href='#FrameRate'>FrameRate</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ArtificialStreamConfig {:#ArtificialStreamConfig}
+*Defined in [fuchsia.camera.common/virtual.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-camera-common/virtual.fidl#11)*
+
+
+
+ Configuration for an artificial stream.
+ TODO(eweeks): Replace this stand-in with the full design.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>stream_id</code></td>
+            <td>
+                <code>int16</code>
+            </td>
+            <td> Numeric identifier for the stream being configured.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### RealWorldStreamConfig {:#RealWorldStreamConfig}
+*Defined in [fuchsia.camera.common/virtual.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-camera-common/virtual.fidl#18)*
+
+
+
+ Configuration for a stream generated from stored frames.
+ TODO(eweeks): Replace this stand-in with the full design.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>stream_id</code></td>
+            <td>
+                <code>int16</code>
+            </td>
+            <td> Numeric identifier for the stream being configured.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### VirtualCameraConfig {:#VirtualCameraConfig}
+*Defined in [fuchsia.camera.common/virtual.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-camera-common/virtual.fidl#32)*
+
+
+
+ Configuration used by VirtualManager to create a VirtualCameraDevice.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>formats</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#VideoFormat'>VideoFormat</a>&gt;</code>
+            </td>
+            <td> The formats that the controller will support.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>info</code></td>
+            <td>
+                <code><a class='link' href='#DeviceInfo'>DeviceInfo</a></code>
+            </td>
+            <td> Device specific information that can be set by the user.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>stream_config</code></td>
+            <td>
+                <code><a class='link' href='#VirtualStreamConfig'>VirtualStreamConfig</a></code>
+            </td>
+            <td> Either an ArtificialStreamConfig or a RealWorldStreamConfig.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
 
 
 ## **ENUMS**
@@ -352,15 +674,34 @@
         </tr><tr>
             <td><code>ERROR_FRAME</code></td>
             <td><code>2</code></td>
-            <td> An error occurred during the production of a frame.
- No data will be available in the data buffer corresponding to this
- notification.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>ERROR_BUFFER_FULL</code></td>
             <td><code>3</code></td>
-            <td> No space was available in the data buffer, resulting in a dropped frame.
-</td>
+            <td></td>
+        </tr></table>
+
+### FrameStatus {:#FrameStatus}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.camera.common/common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-camera-common/common.fidl#39)*
+
+ Status to be set when a frame is signaled available.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>OK</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>ERROR_FRAME</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>ERROR_BUFFER_FULL</code></td>
+            <td><code>3</code></td>
+            <td></td>
         </tr></table>
 
 
@@ -393,6 +734,28 @@
             <td></td>
         </tr></table>
 
+### VirtualStreamConfig {:#VirtualStreamConfig}
+*Defined in [fuchsia.camera.common/virtual.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-camera-common/virtual.fidl#26)*
+
+ Configuration for the stream.
+ The Configuration must be either artificial or real
+ TODO(eweeks): Replace this stand-in with the full design.
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>artificial_config</code></td>
+            <td>
+                <code><a class='link' href='#ArtificialStreamConfig'>ArtificialStreamConfig</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>real_world_config</code></td>
+            <td>
+                <code><a class='link' href='#RealWorldStreamConfig'>RealWorldStreamConfig</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
 
 
 
@@ -456,6 +819,62 @@
                 <td><code>uint32</code></td>
             <td></td>
         </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-camera-common/common.fidl#13">CAMERA_OUTPUT_UNKNOWN</a></td>
+            <td>
+                    <code>0</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-camera-common/common.fidl#14">CAMERA_OUTPUT_STILL_IMAGE</a></td>
+            <td>
+                    <code>1</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-camera-common/common.fidl#15">CAMERA_OUTPUT_BURST</a></td>
+            <td>
+                    <code>2</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-camera-common/common.fidl#16">CAMERA_OUTPUT_STREAM</a></td>
+            <td>
+                    <code>4</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-camera-common/common.fidl#17">CAMERA_OUTPUT_HDR</a></td>
+            <td>
+                    <code>8</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-camera-common/common.fidl#18">CAMERA_OUTPUT_DEPTH</a></td>
+            <td>
+                    <code>16</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-camera-common/common.fidl#19">CAMERA_OUTPUT_STEREO</a></td>
+            <td>
+                    <code>32</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
     
 </table>
 
diff --git a/sdk/fidl/fuchsia.camera/index.md b/sdk/fidl/fuchsia.camera/index.md
index dbcc63c..a3d592b 100644
--- a/sdk/fidl/fuchsia.camera/index.md
+++ b/sdk/fidl/fuchsia.camera/index.md
@@ -298,6 +298,298 @@
 
 
 
+## Control {:#Control}
+*Defined in [fuchsia.camera/camera.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.camera/camera.fidl#83)*
+
+ These are the original interfaces, which are being used for compatibility.
+ The names are preserved from the ones in camera.h for porting ease.
+
+### GetFormats {:#GetFormats}
+
+ Get the available format types for this device
+ NOTE: The formats are paginated to `MAX_FORMATS_PER_RESPONSE`, multiple
+ GetFormats need to be issued until total_format_count are received
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>index</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>formats</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#VideoFormat'>VideoFormat</a>&gt;</code>
+            </td>
+        </tr><tr>
+            <td><code>total_format_count</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>status</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### CreateStream {:#CreateStream}
+
+ Sent by the client to indicate desired stream characteristics.
+ If setting the format is successful, the stream request will be honored.
+ The stream token is used to provide additional control over the interface from the
+ Camera Manager.  The driver provides the guarantee that:
+     1) If the stream token receives the `PEER_CLOSED` event, the driver will close
+        the stream.
+     2) If the Stream interface is closed, the driver will close the eventpair.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>buffer_collection</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.sysmem/index.html'>fuchsia.sysmem</a>/<a class='link' href='../fuchsia.sysmem/index.html#BufferCollectionInfo'>BufferCollectionInfo</a></code>
+            </td>
+        </tr><tr>
+            <td><code>rate</code></td>
+            <td>
+                <code><a class='link' href='#FrameRate'>FrameRate</a></code>
+            </td>
+        </tr><tr>
+            <td><code>stream</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#Stream'>Stream</a>&gt;</code>
+            </td>
+        </tr><tr>
+            <td><code>stream_token</code></td>
+            <td>
+                <code>handle&lt;eventpair&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### GetDeviceInfo {:#GetDeviceInfo}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>device_info</code></td>
+            <td>
+                <code><a class='link' href='#DeviceInfo'>DeviceInfo</a></code>
+            </td>
+        </tr></table>
+
+## Stream {:#Stream}
+*Defined in [fuchsia.camera/camera.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.camera/camera.fidl#104)*
+
+
+### Start {:#Start}
+
+ Starts the streaming of frames.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### Stop {:#Stop}
+
+ Stops the streaming of frames.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### ReleaseFrame {:#ReleaseFrame}
+
+ Unlocks the specified frame, allowing the driver to reuse the memory.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>buffer_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr></table>
+
+
+
+### OnFrameAvailable {:#OnFrameAvailable}
+
+ Sent by the driver to the client when a frame is available for processing,
+ or an error occurred.
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>frame</code></td>
+            <td>
+                <code><a class='link' href='#FrameAvailableEvent'>FrameAvailableEvent</a></code>
+            </td>
+        </tr></table>
+
+## Manager {:#Manager}
+*Defined in [fuchsia.camera/manager.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.camera/manager.fidl#46)*
+
+ The Camera Manager grants access to individual or sets of cameras
+ 1) You request the list of cameras, which gives you camera descriptions
+ 2) You request the list of formats available for the camera to which you
+    wish to connect.
+ 3) You request a Stream interface using CreateStream.
+
+### GetDevices {:#GetDevices}
+
+ Returns a list of all the video devices that are currently plugged in
+ and enumerated.  The camera_id field of the DeviceInfo is used to specify
+ a device in GetFormats, GetStream and GetStreamAndBufferCollection.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>descriptions</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#DeviceInfo'>DeviceInfo</a>&gt;</code>
+            </td>
+        </tr></table>
+
+### GetFormats {:#GetFormats}
+
+ Get all the available formats for a camera.
+ `camera_id` is obtained from a DeviceInfo returned by GetDevices.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>camera_id</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr><tr>
+            <td><code>index</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>formats</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#VideoFormat'>VideoFormat</a>&gt;</code>
+            </td>
+        </tr><tr>
+            <td><code>total_format_count</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr></table>
+
+### CreateStream {:#CreateStream}
+
+ Create a Stream with the specified access rights.  This may not succeed.
+ If it does succeed, the Stream will have the rights indicated.
+ `buffer_info` contains a set of buffers to be used with the Stream.
+ This is being deprecated - please use CreateStreamV2.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>request</code></td>
+            <td>
+                <code><a class='link' href='#VideoStream'>VideoStream</a></code>
+            </td>
+        </tr><tr>
+            <td><code>buffer_info</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.sysmem/index.html'>fuchsia.sysmem</a>/<a class='link' href='../fuchsia.sysmem/index.html#BufferCollectionInfo'>BufferCollectionInfo</a></code>
+            </td>
+        </tr><tr>
+            <td><code>stream</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#Stream'>Stream</a>&gt;</code>
+            </td>
+        </tr><tr>
+            <td><code>client_token</code></td>
+            <td>
+                <code>handle&lt;eventpair&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### CreateStreamV2 {:#CreateStreamV2}
+
+ Create a Stream with the specified access rights.  This may not succeed.
+ If it does succeed, the Stream will have the rights indicated.
+ `buffer_info` contains a set of buffers to be used with the Stream.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>request</code></td>
+            <td>
+                <code><a class='link' href='#VideoStreamV2'>VideoStreamV2</a></code>
+            </td>
+        </tr><tr>
+            <td><code>buffer_info</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.sysmem/index.html'>fuchsia.sysmem</a>/<a class='link' href='../fuchsia.sysmem/index.html#BufferCollectionInfo'>BufferCollectionInfo</a></code>
+            </td>
+        </tr><tr>
+            <td><code>stream</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='../fuchsia.camera.common/index.html'>fuchsia.camera.common</a>/<a class='link' href='../fuchsia.camera.common/index.html#Stream'>Stream</a>&gt;</code>
+            </td>
+        </tr><tr>
+            <td><code>client_token</code></td>
+            <td>
+                <code>handle&lt;eventpair&gt;</code>
+            </td>
+        </tr></table>
+
+
+
 
 
 ## **STRUCTS**
@@ -547,6 +839,251 @@
         </tr>
 </table>
 
+### DeviceInfo {:#DeviceInfo}
+*Defined in [fuchsia.camera/camera.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.camera/camera.fidl#27)*
+
+
+
+ Identifying information about the device.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>camera_id</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>vendor_id</code></td>
+            <td>
+                <code>uint16</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>vendor_name</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>product_id</code></td>
+            <td>
+                <code>uint16</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>product_name</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>serial_number</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>max_stream_count</code></td>
+            <td>
+                <code>uint16</code>
+            </td>
+            <td> The maximum number of stream interfaces that the device can support
+ simultaneously.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>output_capabilities</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Metadata {:#Metadata}
+*Defined in [fuchsia.camera/camera.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.camera/camera.fidl#53)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>timestamp</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### FrameAvailableEvent {:#FrameAvailableEvent}
+*Defined in [fuchsia.camera/camera.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.camera/camera.fidl#59)*
+
+
+
+ Sent by the driver to the client when a frame is available for processing,
+ or an error occurred.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>frame_status</code></td>
+            <td>
+                <code><a class='link' href='#FrameStatus'>FrameStatus</a></code>
+            </td>
+            <td> Non zero if an error occurred.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>buffer_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> The index of the buffer in the buffer collection.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>metadata</code></td>
+            <td>
+                <code><a class='link' href='#Metadata'>Metadata</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### FrameRate {:#FrameRate}
+*Defined in [fuchsia.camera/camera.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.camera/camera.fidl#69)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>frames_per_sec_numerator</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> The frame rate is frames_per_sec_numerator / frames_per_sec_denominator.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>frames_per_sec_denominator</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### VideoFormat {:#VideoFormat}
+*Defined in [fuchsia.camera/camera.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.camera/camera.fidl#75)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>format</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.sysmem/index.html'>fuchsia.sysmem</a>/<a class='link' href='../fuchsia.sysmem/index.html#ImageFormat'>ImageFormat</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>rate</code></td>
+            <td>
+                <code><a class='link' href='#FrameRate'>FrameRate</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### VideoStream {:#VideoStream}
+*Defined in [fuchsia.camera/manager.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.camera/manager.fidl#14)*
+
+
+
+ A stream that the camera manager can provide.  Video streams reference a
+ a camera, but may have additional hardware and bandwidth restrictions
+ from and ISP or other processing units.
+ This is being deprecated - please use VideoStreamV2 (below).
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>camera_id</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> The camera_id corresponds to the camera_id that is given in the DeviceInfo
+ received from GetDevices.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>format</code></td>
+            <td>
+                <code><a class='link' href='#VideoFormat'>VideoFormat</a></code>
+            </td>
+            <td> The requested video format.  Note that this is field is necessary to
+ set The frame rate, even when calling CreateStream.
+ When calling CreateStream, format.format should match buffer_info.format.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### VideoStreamV2 {:#VideoStreamV2}
+*Defined in [fuchsia.camera/manager.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.camera/manager.fidl#30)*
+
+
+
+ Preferred version of stream.
+ A version of stream that relies on definition of VideoFormat coming out of
+ fuchsia.hardware.camera. Streams reference a camera, but may have additional
+ hardware and bandwidth restrictions from an ISP or other processing units.
+ New code should depend on this as the other version will be deprecated when
+ dependencies are removed.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>camera_id</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> The camera_id corresponds to the camera_id that is given in DeviceInfo
+ received from GetDevices.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>format</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.camera.common/index.html'>fuchsia.camera.common</a>/<a class='link' href='../fuchsia.camera.common/index.html#VideoFormat'>VideoFormat</a></code>
+            </td>
+            <td> The requested video format. Note that this field is necessary to set the
+ frame rate, even when calling CreateStream. When calling CreateStream
+ format.format should match buffer_info.format.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
 
 
 ## **ENUMS**
@@ -567,15 +1104,34 @@
         </tr><tr>
             <td><code>ERROR_FRAME</code></td>
             <td><code>1</code></td>
-            <td> An error occurred during the production of a frame.
- No data will be available in the data buffer corresponding to this
- notification.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>ERROR_BUFFER_FULL</code></td>
             <td><code>2</code></td>
-            <td> No space was available in the data buffer, resulting in a dropped frame.
-</td>
+            <td></td>
+        </tr></table>
+
+### FrameStatus {:#FrameStatus}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.camera/camera.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.camera/camera.fidl#42)*
+
+ Status to be set when a frame is signalled available.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>OK</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>ERROR_FRAME</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>ERROR_BUFFER_FULL</code></td>
+            <td><code>2</code></td>
+            <td></td>
         </tr></table>
 
 
@@ -658,6 +1214,73 @@
                 <td><code>uint32</code></td>
             <td></td>
         </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.camera/camera.fidl#13">MAX_FORMATS_PER_RESPONSE</a></td>
+            <td>
+                    <code>16</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.camera/camera.fidl#18">CAMERA_OUTPUT_UNKNOWN</a></td>
+            <td>
+                    <code>0</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> A coarse set of capabilities.  This struct is used in the camera description
+ to help filter out cameras which will not have the needed capabilities.
+ This set of declarations would be the bitfield: CameraOutputCapabilities.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.camera/camera.fidl#19">CAMERA_OUTPUT_STILL_IMAGE</a></td>
+            <td>
+                    <code>1</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.camera/camera.fidl#20">CAMERA_OUTPUT_BURST</a></td>
+            <td>
+                    <code>2</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.camera/camera.fidl#21">CAMERA_OUTPUT_STREAM</a></td>
+            <td>
+                    <code>4</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.camera/camera.fidl#22">CAMERA_OUTPUT_HDR</a></td>
+            <td>
+                    <code>8</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.camera/camera.fidl#23">CAMERA_OUTPUT_DEPTH</a></td>
+            <td>
+                    <code>16</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.camera/camera.fidl#24">CAMERA_OUTPUT_STEREO</a></td>
+            <td>
+                    <code>32</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
     
 </table>
 
diff --git a/sdk/fidl/fuchsia.camera2.hal/index.md b/sdk/fidl/fuchsia.camera2.hal/index.md
index 0be9c96..4464ead 100644
--- a/sdk/fidl/fuchsia.camera2.hal/index.md
+++ b/sdk/fidl/fuchsia.camera2.hal/index.md
@@ -124,6 +124,124 @@
             </td>
         </tr></table>
 
+## Controller {:#Controller}
+*Defined in [fuchsia.camera2.hal/hal.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.camera2.hal/hal.fidl#46)*
+
+ This is the interface to the camera driver
+ which allows setting up a given configuration
+ and setting up a stream.
+
+### GetConfigs {:#GetConfigs}
+
+ Get a list of all available configurations which the camera driver supports.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>configs</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#Config'>Config</a>&gt;[256]?</code>
+            </td>
+        </tr><tr>
+            <td><code>status</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### CreateStream {:#CreateStream}
+
+ Set a particular configuration and create the requested stream.
+ |config_index| : Configuration index from the vector which needs to be applied.
+ |stream_index| : Stream index from the vector of streams provided within a config.
+ |buffer_collection| : Buffer collections for the stream.
+ |stream| : Stream channel for the stream requested
+ |image_format_index| : Image format index which needs to be set up upon creation.
+ If there is already an active configuration which is different than the one
+ which is requested to be set, then the HAL will be closing all existing streams
+ and honor this new setup call.
+ If the new stream requested is already part of the existing running configuration
+ the HAL will just be creating this new stream while the other stream still exists as is.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>config_index</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>stream_index</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>image_format_index</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>buffer_collection</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.sysmem/index.html'>fuchsia.sysmem</a>/<a class='link' href='../fuchsia.sysmem/index.html#BufferCollectionInfo_2'>BufferCollectionInfo_2</a></code>
+            </td>
+        </tr><tr>
+            <td><code>stream</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='../fuchsia.camera2/index.html'>fuchsia.camera2</a>/<a class='link' href='../fuchsia.camera2/index.html#Stream'>Stream</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### EnableStreaming {:#EnableStreaming}
+
+ Enable/Disable Streaming
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### DisableStreaming {:#DisableStreaming}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### GetDeviceInfo {:#GetDeviceInfo}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>info</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.camera2/index.html'>fuchsia.camera2</a>/<a class='link' href='../fuchsia.camera2/index.html#DeviceInfo'>DeviceInfo</a></code>
+            </td>
+        </tr></table>
+
 
 
 ## **STRUCTS**
@@ -196,6 +314,74 @@
         </tr>
 </table>
 
+### StreamConfig {:#StreamConfig}
+*Defined in [fuchsia.camera2.hal/hal.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.camera2.hal/hal.fidl#18)*
+
+
+
+ Represents one stream within a particular configuration.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>frame_rate</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.camera2/index.html'>fuchsia.camera2</a>/<a class='link' href='../fuchsia.camera2/index.html#FrameRate'>FrameRate</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>constraints</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.sysmem/index.html'>fuchsia.sysmem</a>/<a class='link' href='../fuchsia.sysmem/index.html#BufferCollectionConstraints'>BufferCollectionConstraints</a></code>
+            </td>
+            <td> |constraints| should allow for all the image formats listed in image_formats.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>properties</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.camera2/index.html'>fuchsia.camera2</a>/<a class='link' href='../fuchsia.camera2/index.html#StreamProperties'>StreamProperties</a></code>
+            </td>
+            <td> Properties of the stream:
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>image_formats</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='../fuchsia.sysmem/index.html'>fuchsia.sysmem</a>/<a class='link' href='../fuchsia.sysmem/index.html#ImageFormat_2'>ImageFormat_2</a>&gt;[256]</code>
+            </td>
+            <td> We need to specify both the constraints & the image formats because
+ there are fixed set of resolutions supported by the Camera Controller
+ so a range within the |constraints| won't be sufficient.
+ Some streams support multiple resolutions for same configuration
+ We would need to change the resolution runtime, without stopping the
+ streaming. This provides a list of resolutions a stream would be providing.
+ At least one format must be provided.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Config {:#Config}
+*Defined in [fuchsia.camera2.hal/hal.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.camera2.hal/hal.fidl#37)*
+
+
+
+ Represents one configuration
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>stream_configs</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#StreamConfig'>StreamConfig</a>&gt;[64]</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
 
 
 
@@ -229,6 +415,24 @@
             <td> Maximum number of streams per config.
 </td>
         </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.camera2.hal/hal.fidl#12">MAX_CONFIGURATIONS</a></td>
+            <td>
+                    <code>256</code>
+                </td>
+                <td><code>uint64</code></td>
+            <td> Maximum number of configurations per device.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.camera2.hal/hal.fidl#15">MAX_STREAMS</a></td>
+            <td>
+                    <code>64</code>
+                </td>
+                <td><code>uint64</code></td>
+            <td> Maximum number of streams per config.
+</td>
+        </tr>
     
 </table>
 
diff --git a/sdk/fidl/fuchsia.camera2/index.md b/sdk/fidl/fuchsia.camera2/index.md
index b1da8b0..be72bc8 100644
--- a/sdk/fidl/fuchsia.camera2/index.md
+++ b/sdk/fidl/fuchsia.camera2/index.md
@@ -371,6 +371,371 @@
             </td>
         </tr></table>
 
+## Manager {:#Manager}
+*Defined in [fuchsia.camera2/manager.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.camera2/manager.fidl#11)*
+
+
+### OnDeviceAvailable {:#OnDeviceAvailable}
+
+ Notifies the client when a camera becomes available.  A number of these events will
+ be sent when a client first connects to this protocol.
+ |device_id| is used to identify the camera.  The device_id should not change throughout
+ the lifetime of the camera.
+ |last_known_camera| is set to true when the Camera Manager has notified the client
+ of all the devices it currently knows about.
+ |description| describes the properties of the camera.
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>device_id</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr><tr>
+            <td><code>description</code></td>
+            <td>
+                <code><a class='link' href='#DeviceInfo'>DeviceInfo</a></code>
+            </td>
+        </tr><tr>
+            <td><code>last_known_camera</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr></table>
+
+### OnDeviceUnavailable {:#OnDeviceUnavailable}
+
+ Notifies the client when a camera becomes unavailable.
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>device_id</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### OnDeviceMuteChanged {:#OnDeviceMuteChanged}
+
+ Notifies the client when a camera becomes muted or unmuted.
+ |device_id| refers to the device_id from the description of a previous OnDeviceAvailable
+ call.
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>device_id</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr><tr>
+            <td><code>currently_muted</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr></table>
+
+### AcknowledgeDeviceEvent {:#AcknowledgeDeviceEvent}
+
+ AcknowledgeDeviceEvent must be called after any of the above events before more
+ events will be sent.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### ConnectToStream {:#ConnectToStream}
+
+ Connect to a camera stream:
+ |device_id| Refers to a specific device_id that has been advertised by OnDeviceAvailable.
+ |constraints| contains a set of constraints on the requested stream.  The Camera
+ Manager will attempt to find a stream that meets the constraints.  If multiple
+ streams match, one of the matching streams will be connected.
+ |token| refers to a Sysmem buffer allocation that will be used to pass images using
+ the Stream protocol.  The Camera Manager will apply a BufferCollectionContraints
+ related to the image format(s), so the client does not need to apply any
+ ImageFormatConstraints.
+ Sync is assumed to have been called on |token| before it is passed to
+ ConnectToStream.
+ Since |constraints| may not dictate a specific format, the initial format of images
+ on the stream is indicated on the response.
+ The connection is considered to be successful once a response has been given, unless
+ |stream| is closed.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>device_id</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr><tr>
+            <td><code>constraints</code></td>
+            <td>
+                <code><a class='link' href='#StreamConstraints'>StreamConstraints</a></code>
+            </td>
+        </tr><tr>
+            <td><code>token</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.sysmem/index.html'>fuchsia.sysmem</a>/<a class='link' href='../fuchsia.sysmem/index.html#BufferCollectionToken'>BufferCollectionToken</a></code>
+            </td>
+        </tr><tr>
+            <td><code>stream</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#Stream'>Stream</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>format</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.sysmem/index.html'>fuchsia.sysmem</a>/<a class='link' href='../fuchsia.sysmem/index.html#ImageFormat_2'>ImageFormat_2</a></code>
+            </td>
+        </tr></table>
+
+## MuteControl {:#MuteControl}
+*Defined in [fuchsia.camera2/manager.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.camera2/manager.fidl#54)*
+
+
+### Mute {:#Mute}
+
+ Mutes a camera.  This is independent from stopping or closing a stream.  A muted
+ camera will not produce any more images until
+ unmute is called.  You can still connect to streams from a muted camera, but they
+ will not produce frames until the camera is unmuted.
+ |device_id| refers to the device_id from a previous OnDeviceAvailable call.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>device_id</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### Unmute {:#Unmute}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>device_id</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+## Stream {:#Stream}
+*Defined in [fuchsia.camera2/stream.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.camera2/stream.fidl#72)*
+
+
+### Start {:#Start}
+
+ Control Operations
+ Starts the streaming of frames.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### Stop {:#Stop}
+
+ Stops the streaming of frames.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### ReleaseFrame {:#ReleaseFrame}
+
+ Unlocks the specified frame, allowing the driver to reuse the memory.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>buffer_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr></table>
+
+
+
+### OnFrameAvailable {:#OnFrameAvailable}
+
+ Sent by the driver to the client when a frame is available for processing,
+ or an error occurred.  The frame is considered read-locked by the client
+ after this message.  The client must call ReleaseFrame to release the
+ read-lock for a non-error frame, or the consumer will eventually run out of buffers.
+ If a frame has an error, the client must call AcknowledgeFrameError before
+ another OnFrameAvailable will be called with an error frame.
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>frame</code></td>
+            <td>
+                <code><a class='link' href='#FrameAvailableInfo'>FrameAvailableInfo</a></code>
+            </td>
+        </tr></table>
+
+### AcknowledgeFrameError {:#AcknowledgeFrameError}
+
+ Provides flow control for receiving frame errors. See OnFrameAvailable comment.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### SetRegionOfInterest {:#SetRegionOfInterest}
+
+ Data operations
+ This is used by clients to provide inputs for region of interest
+ selection.
+ Inputs are the x & y coordinates for the new bounding box.
+ For streams which do not support smart framing, this would
+ return an error.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>x_min</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+        </tr><tr>
+            <td><code>y_min</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+        </tr><tr>
+            <td><code>x_max</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+        </tr><tr>
+            <td><code>y_max</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### SetImageFormat {:#SetImageFormat}
+
+ Change the image format of the stream. This is called when clients want
+ to dynamically change the resolution of the stream while the streaming is
+ is going on.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>image_format_index</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### GetImageFormats {:#GetImageFormats}
+
+ Get the image formats that this stream supports.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>image_formats</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='../fuchsia.sysmem/index.html'>fuchsia.sysmem</a>/<a class='link' href='../fuchsia.sysmem/index.html#ImageFormat_2'>ImageFormat_2</a>&gt;[256]</code>
+            </td>
+        </tr></table>
+
 
 
 ## **STRUCTS**
@@ -437,6 +802,68 @@
         </tr>
 </table>
 
+### FrameAvailableInfo {:#FrameAvailableInfo}
+*Defined in [fuchsia.camera2/stream.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.camera2/stream.fidl#34)*
+
+
+
+ Sent by the driver to the client when a frame is available for processing,
+ or an error occurred.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>frame_status</code></td>
+            <td>
+                <code><a class='link' href='#FrameStatus'>FrameStatus</a></code>
+            </td>
+            <td> Non zero if an error occurred.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>buffer_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> The index of the buffer in the buffer collection.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>metadata</code></td>
+            <td>
+                <code><a class='link' href='#FrameMetadata'>FrameMetadata</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### FrameRate {:#FrameRate}
+*Defined in [fuchsia.camera2/stream.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.camera2/stream.fidl#44)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>frames_per_sec_numerator</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> The frame rate is frames_per_sec_numerator / frames_per_sec_denominator.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>frames_per_sec_denominator</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
 
 
 ## **ENUMS**
@@ -475,15 +902,52 @@
         </tr><tr>
             <td><code>ERROR_FRAME</code></td>
             <td><code>1</code></td>
-            <td> An error occurred during the production of a frame.
- No data will be available in the data buffer corresponding to this
- notification.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>ERROR_BUFFER_FULL</code></td>
             <td><code>2</code></td>
-            <td> No space was available in the data buffer, resulting in a dropped frame.
-</td>
+            <td></td>
+        </tr></table>
+
+### DeviceType {:#DeviceType}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.camera2/manager.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.camera2/manager.fidl#72)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>BUILTIN</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>VIRTUAL</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr></table>
+
+### FrameStatus {:#FrameStatus}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.camera2/stream.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.camera2/stream.fidl#14)*
+
+ Status to be set when a frame is signalled available.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>OK</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>ERROR_FRAME</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>ERROR_BUFFER_FULL</code></td>
+            <td><code>2</code></td>
+            <td></td>
         </tr></table>
 
 
@@ -614,6 +1078,130 @@
 </td>
         </tr></table>
 
+### StreamConstraints {:#StreamConstraints}
+
+
+*Defined in [fuchsia.camera2/manager.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.camera2/manager.fidl#66)*
+
+ These constraints are given to the Camera Manager when requesting a stream.  The
+ Camera Manager will use these constraints to match an appropriate stream.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>properties</code></td>
+            <td>
+                <code><a class='link' href='#StreamProperties'>StreamProperties</a></code>
+            </td>
+            <td> A table that describes the properties of the stream. Any properties specified will
+ be considered requirements for matching streams.
+</td>
+        </tr></table>
+
+### DeviceInfo {:#DeviceInfo}
+
+
+*Defined in [fuchsia.camera2/manager.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.camera2/manager.fidl#78)*
+
+ Identifying information about the device.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>vendor_id</code></td>
+            <td>
+                <code>uint16</code>
+            </td>
+            <td> Information from physical device enumeration:
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>vendor_name</code></td>
+            <td>
+                <code>string[255]</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>3</td>
+            <td><code>product_id</code></td>
+            <td>
+                <code>uint16</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>4</td>
+            <td><code>product_name</code></td>
+            <td>
+                <code>string[255]</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>5</td>
+            <td><code>serial_number</code></td>
+            <td>
+                <code>string[255]</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>6</td>
+            <td><code>type</code></td>
+            <td>
+                <code><a class='link' href='#DeviceType'>DeviceType</a></code>
+            </td>
+            <td> Information about the type of device:
+</td>
+        </tr></table>
+
+### FrameMetadata {:#FrameMetadata}
+
+
+*Defined in [fuchsia.camera2/stream.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.camera2/stream.fidl#25)*
+
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>timestamp</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>image_format_index</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> |image_format_index| references the index into the vector of available
+ formats supported by the stream.
+</td>
+        </tr></table>
+
+### StreamProperties {:#StreamProperties}
+
+
+*Defined in [fuchsia.camera2/stream.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.camera2/stream.fidl#67)*
+
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>stream_type</code></td>
+            <td>
+                <code><a class='link' href='#CameraStreamType'>CameraStreamType</a></code>
+            </td>
+            <td> These could be one or more of the above mentioned Stream Types
+</td>
+        </tr></table>
+
 
 
 
@@ -657,6 +1245,41 @@
 </td>
         </tr></table>
 
+### CameraStreamType {:#CameraStreamType}
+Type: <code>uint32</code>
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td>MACHINE_LEARNING</td>
+            <td>1</td>
+            <td> ML request FR(Full Resolution) stream as well as
+ a DS(Down Scaled Resolution) stream for Security Use Case
+ which are of fixed resolutions
+</td>
+        </tr><tr>
+            <td>MONITORING</td>
+            <td>2</td>
+            <td> This is Security Video Stream which could support multiple
+ resolutions at runtime.
+</td>
+        </tr><tr>
+            <td>FULL_RESOLUTION</td>
+            <td>4</td>
+            <td></td>
+        </tr><tr>
+            <td>DOWNSCALED_RESOLUTION</td>
+            <td>8</td>
+            <td> ML request a DS stream for Video Conferencing which is fixed resolution
+</td>
+        </tr><tr>
+            <td>VIDEO_CONFERENCE</td>
+            <td>16</td>
+            <td> This is Video Conferencing Stream which could support
+ multiple resolutions at runtime.
+</td>
+        </tr></table>
+
 
 
 ## **CONSTANTS**
@@ -671,6 +1294,15 @@
             <td> Maximum number of image formats per stream.
 </td>
         </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.camera2/stream.fidl#11">MAX_IMAGE_FORMATS</a></td>
+            <td>
+                    <code>256</code>
+                </td>
+                <td><code>uint64</code></td>
+            <td> Maximum number of image formats per stream.
+</td>
+        </tr>
     
 </table>
 
diff --git a/sdk/fidl/fuchsia.castauth/index.md b/sdk/fidl/fuchsia.castauth/index.md
index b381c06..ea1984a 100644
--- a/sdk/fidl/fuchsia.castauth/index.md
+++ b/sdk/fidl/fuchsia.castauth/index.md
@@ -122,13 +122,11 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>FILE_NOT_FOUND</code></td>
             <td><code>1</code></td>
-            <td> Key/cert not found in storage.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>CRYPTO_ERROR</code></td>
             <td><code>2</code></td>
-            <td> Error occurred during signing operation.
-</td>
+            <td></td>
         </tr></table>
 
 
diff --git a/sdk/fidl/fuchsia.castconfig/index.md b/sdk/fidl/fuchsia.castconfig/index.md
index bb3b70f..67daa81 100644
--- a/sdk/fidl/fuchsia.castconfig/index.md
+++ b/sdk/fidl/fuchsia.castconfig/index.md
@@ -102,13 +102,11 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>NO_CAST_CONFIG</code></td>
             <td><code>1</code></td>
-            <td> Error when there is no cast config available.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>INTERNAL</code></td>
             <td><code>2</code></td>
-            <td> Generic error.
-</td>
+            <td></td>
         </tr></table>
 
 
diff --git a/sdk/fidl/fuchsia.castsetup/index.md b/sdk/fidl/fuchsia.castsetup/index.md
index fcc6d27..94431bb 100644
--- a/sdk/fidl/fuchsia.castsetup/index.md
+++ b/sdk/fidl/fuchsia.castsetup/index.md
@@ -50,23 +50,19 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>UNKNOWN</code></td>
             <td><code>0</code></td>
-            <td> State is not determined.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>IN_PROGRESS</code></td>
             <td><code>1</code></td>
-            <td> Setup is not complete and is in progress.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>OFFLINE</code></td>
             <td><code>2</code></td>
-            <td> Configured once but disconnected for now.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>COMPLETE</code></td>
             <td><code>3</code></td>
-            <td> Setup is complete and device is connected.
-</td>
+            <td></td>
         </tr></table>
 
 
diff --git a/sdk/fidl/fuchsia.castsysteminfo/index.md b/sdk/fidl/fuchsia.castsysteminfo/index.md
index ce5c659..327d49b 100644
--- a/sdk/fidl/fuchsia.castsysteminfo/index.md
+++ b/sdk/fidl/fuchsia.castsysteminfo/index.md
@@ -70,13 +70,11 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>ERR_NO_SYSTEM_INFO</code></td>
             <td><code>1</code></td>
-            <td> Error when there is no system info available.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>ERR_INTERNAL</code></td>
             <td><code>2</code></td>
-            <td> Generic error.
-</td>
+            <td></td>
         </tr></table>
 
 
diff --git a/sdk/fidl/fuchsia.cobalt/index.md b/sdk/fidl/fuchsia.cobalt/index.md
index b572319..f7fc156 100644
--- a/sdk/fidl/fuchsia.cobalt/index.md
+++ b/sdk/fidl/fuchsia.cobalt/index.md
@@ -1396,6 +1396,1396 @@
             </td>
         </tr></table>
 
+## LoggerFactory {:#LoggerFactory}
+*Defined in [fuchsia.cobalt/cobalt.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-cobalt/cobalt.fidl#116)*
+
+
+### CreateLogger {:#CreateLogger}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>profile</code></td>
+            <td>
+                <code><a class='link' href='#ProjectProfile'>ProjectProfile</a></code>
+            </td>
+        </tr><tr>
+            <td><code>logger</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#Logger'>Logger</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### CreateLoggerSimple {:#CreateLoggerSimple}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>profile</code></td>
+            <td>
+                <code><a class='link' href='#ProjectProfile'>ProjectProfile</a></code>
+            </td>
+        </tr><tr>
+            <td><code>logger</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#LoggerSimple'>LoggerSimple</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### CreateLoggerFromProjectName {:#CreateLoggerFromProjectName}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>project_name</code></td>
+            <td>
+                <code>string[64]</code>
+            </td>
+        </tr><tr>
+            <td><code>release_stage</code></td>
+            <td>
+                <code><a class='link' href='#ReleaseStage'>ReleaseStage</a></code>
+            </td>
+        </tr><tr>
+            <td><code>logger</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#Logger'>Logger</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### CreateLoggerSimpleFromProjectName {:#CreateLoggerSimpleFromProjectName}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>project_name</code></td>
+            <td>
+                <code>string[64]</code>
+            </td>
+        </tr><tr>
+            <td><code>release_stage</code></td>
+            <td>
+                <code><a class='link' href='#ReleaseStage'>ReleaseStage</a></code>
+            </td>
+        </tr><tr>
+            <td><code>logger</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#LoggerSimple'>LoggerSimple</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+## LoggerBase {:#LoggerBase}
+*Defined in [fuchsia.cobalt/cobalt.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-cobalt/cobalt.fidl#207)*
+
+ LoggerBase Interface
+
+### LogEvent {:#LogEvent}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>metric_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>event_code</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### LogEventCount {:#LogEventCount}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>metric_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>event_code</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>component</code></td>
+            <td>
+                <code>string[64]</code>
+            </td>
+        </tr><tr>
+            <td><code>period_duration_micros</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+        </tr><tr>
+            <td><code>count</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### LogElapsedTime {:#LogElapsedTime}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>metric_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>event_code</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>component</code></td>
+            <td>
+                <code>string[64]</code>
+            </td>
+        </tr><tr>
+            <td><code>elapsed_micros</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### LogFrameRate {:#LogFrameRate}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>metric_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>event_code</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>component</code></td>
+            <td>
+                <code>string[64]</code>
+            </td>
+        </tr><tr>
+            <td><code>fps</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### LogMemoryUsage {:#LogMemoryUsage}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>metric_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>event_code</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>component</code></td>
+            <td>
+                <code>string[64]</code>
+            </td>
+        </tr><tr>
+            <td><code>bytes</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### LogString {:#LogString}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>metric_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>s</code></td>
+            <td>
+                <code>string[256]</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### StartTimer {:#StartTimer}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>metric_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>event_code</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>component</code></td>
+            <td>
+                <code>string[64]</code>
+            </td>
+        </tr><tr>
+            <td><code>timer_id</code></td>
+            <td>
+                <code>string[64]</code>
+            </td>
+        </tr><tr>
+            <td><code>timestamp</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr><tr>
+            <td><code>timeout_s</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### EndTimer {:#EndTimer}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>timer_id</code></td>
+            <td>
+                <code>string[64]</code>
+            </td>
+        </tr><tr>
+            <td><code>timestamp</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr><tr>
+            <td><code>timeout_s</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+## Logger {:#Logger}
+*Defined in [fuchsia.cobalt/cobalt.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-cobalt/cobalt.fidl#542)*
+
+
+### LogEvent {:#LogEvent}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>metric_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>event_code</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### LogEventCount {:#LogEventCount}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>metric_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>event_code</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>component</code></td>
+            <td>
+                <code>string[64]</code>
+            </td>
+        </tr><tr>
+            <td><code>period_duration_micros</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+        </tr><tr>
+            <td><code>count</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### LogElapsedTime {:#LogElapsedTime}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>metric_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>event_code</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>component</code></td>
+            <td>
+                <code>string[64]</code>
+            </td>
+        </tr><tr>
+            <td><code>elapsed_micros</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### LogFrameRate {:#LogFrameRate}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>metric_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>event_code</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>component</code></td>
+            <td>
+                <code>string[64]</code>
+            </td>
+        </tr><tr>
+            <td><code>fps</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### LogMemoryUsage {:#LogMemoryUsage}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>metric_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>event_code</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>component</code></td>
+            <td>
+                <code>string[64]</code>
+            </td>
+        </tr><tr>
+            <td><code>bytes</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### LogString {:#LogString}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>metric_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>s</code></td>
+            <td>
+                <code>string[256]</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### StartTimer {:#StartTimer}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>metric_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>event_code</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>component</code></td>
+            <td>
+                <code>string[64]</code>
+            </td>
+        </tr><tr>
+            <td><code>timer_id</code></td>
+            <td>
+                <code>string[64]</code>
+            </td>
+        </tr><tr>
+            <td><code>timestamp</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr><tr>
+            <td><code>timeout_s</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### EndTimer {:#EndTimer}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>timer_id</code></td>
+            <td>
+                <code>string[64]</code>
+            </td>
+        </tr><tr>
+            <td><code>timestamp</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr><tr>
+            <td><code>timeout_s</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### LogIntHistogram {:#LogIntHistogram}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>metric_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>event_code</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>component</code></td>
+            <td>
+                <code>string[64]</code>
+            </td>
+        </tr><tr>
+            <td><code>histogram</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#HistogramBucket'>HistogramBucket</a>&gt;[100]</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### LogCustomEvent {:#LogCustomEvent}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>metric_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>event_values</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#CustomEventValue'>CustomEventValue</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### LogCobaltEvent {:#LogCobaltEvent}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>event</code></td>
+            <td>
+                <code><a class='link' href='#CobaltEvent'>CobaltEvent</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### LogCobaltEvents {:#LogCobaltEvents}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>events</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#CobaltEvent'>CobaltEvent</a>&gt;[64]</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+## LoggerSimple {:#LoggerSimple}
+*Defined in [fuchsia.cobalt/cobalt.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-cobalt/cobalt.fidl#612)*
+
+ LoggerSimple Interface
+
+### LogEvent {:#LogEvent}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>metric_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>event_code</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### LogEventCount {:#LogEventCount}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>metric_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>event_code</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>component</code></td>
+            <td>
+                <code>string[64]</code>
+            </td>
+        </tr><tr>
+            <td><code>period_duration_micros</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+        </tr><tr>
+            <td><code>count</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### LogElapsedTime {:#LogElapsedTime}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>metric_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>event_code</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>component</code></td>
+            <td>
+                <code>string[64]</code>
+            </td>
+        </tr><tr>
+            <td><code>elapsed_micros</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### LogFrameRate {:#LogFrameRate}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>metric_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>event_code</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>component</code></td>
+            <td>
+                <code>string[64]</code>
+            </td>
+        </tr><tr>
+            <td><code>fps</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### LogMemoryUsage {:#LogMemoryUsage}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>metric_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>event_code</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>component</code></td>
+            <td>
+                <code>string[64]</code>
+            </td>
+        </tr><tr>
+            <td><code>bytes</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### LogString {:#LogString}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>metric_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>s</code></td>
+            <td>
+                <code>string[256]</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### StartTimer {:#StartTimer}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>metric_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>event_code</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>component</code></td>
+            <td>
+                <code>string[64]</code>
+            </td>
+        </tr><tr>
+            <td><code>timer_id</code></td>
+            <td>
+                <code>string[64]</code>
+            </td>
+        </tr><tr>
+            <td><code>timestamp</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr><tr>
+            <td><code>timeout_s</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### EndTimer {:#EndTimer}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>timer_id</code></td>
+            <td>
+                <code>string[64]</code>
+            </td>
+        </tr><tr>
+            <td><code>timestamp</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr><tr>
+            <td><code>timeout_s</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### LogIntHistogram {:#LogIntHistogram}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>metric_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>event_code</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>component</code></td>
+            <td>
+                <code>string[64]</code>
+            </td>
+        </tr><tr>
+            <td><code>bucket_indices</code></td>
+            <td>
+                <code>vector&lt;uint32&gt;[100]</code>
+            </td>
+        </tr><tr>
+            <td><code>bucket_counts</code></td>
+            <td>
+                <code>vector&lt;uint64&gt;[100]</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+## SystemDataUpdater {:#SystemDataUpdater}
+*Defined in [fuchsia.cobalt/cobalt.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-cobalt/cobalt.fidl#647)*
+
+
+### SetExperimentState {:#SetExperimentState}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>experiments</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#Experiment'>Experiment</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+### SetChannel {:#SetChannel}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>current_channel</code></td>
+            <td>
+                <code>string[256]</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+## Controller {:#Controller}
+*Defined in [fuchsia.cobalt/cobalt_controller.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-cobalt/cobalt_controller.fidl#11)*
+
+
+### RequestSendSoon {:#RequestSendSoon}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>success</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr></table>
+
+### BlockUntilEmpty {:#BlockUntilEmpty}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>max_wait_seconds</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+### GetNumSendAttempts {:#GetNumSendAttempts}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>num</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr></table>
+
+### GetFailedSendAttempts {:#GetFailedSendAttempts}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>num</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr></table>
+
+### GetNumObservationsAdded {:#GetNumObservationsAdded}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>num_obs</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr></table>
+
+### GenerateAggregatedObservations {:#GenerateAggregatedObservations}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>day_index</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>report_ids</code></td>
+            <td>
+                <code>vector&lt;uint32&gt;</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>num_obs</code></td>
+            <td>
+                <code>vector&lt;uint64&gt;</code>
+            </td>
+        </tr></table>
+
 
 
 ## **STRUCTS**
@@ -1577,6 +2967,183 @@
         </tr>
 </table>
 
+### ProjectProfile {:#ProjectProfile}
+*Defined in [fuchsia.cobalt/cobalt.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-cobalt/cobalt.fidl#104)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>config</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.mem/index.html'>fuchsia.mem</a>/<a class='link' href='../fuchsia.mem/index.html#Buffer'>Buffer</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>release_stage</code></td>
+            <td>
+                <code><a class='link' href='#ReleaseStage'>ReleaseStage</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### CustomEventValue {:#CustomEventValue}
+*Defined in [fuchsia.cobalt/cobalt.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-cobalt/cobalt.fidl#448)*
+
+
+
+ Logger Interface
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>dimension_name</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code><a class='link' href='#Value'>Value</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### HistogramBucket {:#HistogramBucket}
+*Defined in [fuchsia.cobalt/cobalt.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-cobalt/cobalt.fidl#465)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>index</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>count</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### CountEvent {:#CountEvent}
+*Defined in [fuchsia.cobalt/cobalt.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-cobalt/cobalt.fidl#476)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>period_duration_micros</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>count</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Event {:#Event}
+*Defined in [fuchsia.cobalt/cobalt.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-cobalt/cobalt.fidl#486)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr>
+</table>
+
+### CobaltEvent {:#CobaltEvent}
+*Defined in [fuchsia.cobalt/cobalt.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-cobalt/cobalt.fidl#518)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>metric_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>event_codes</code></td>
+            <td>
+                <code>vector&lt;uint32&gt;[5]</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>component</code></td>
+            <td>
+                <code>string[64]?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>payload</code></td>
+            <td>
+                <code><a class='link' href='#EventPayload'>EventPayload</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Experiment {:#Experiment}
+*Defined in [fuchsia.cobalt/cobalt.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-cobalt/cobalt.fidl#636)*
+
+
+
+ SystemProfileUpdater Interface
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>experiment_id</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>arm_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
 
 
 ## **ENUMS**
@@ -1637,6 +3204,62 @@
             <td></td>
         </tr></table>
 
+### Status {:#Status}
+Type: <code>int32</code>
+
+*Defined in [fuchsia.cobalt/cobalt.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-cobalt/cobalt.fidl#69)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>OK</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>INVALID_ARGUMENTS</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>EVENT_TOO_BIG</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>BUFFER_FULL</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>INTERNAL_ERROR</code></td>
+            <td><code>-1</code></td>
+            <td></td>
+        </tr></table>
+
+### ReleaseStage {:#ReleaseStage}
+Type: <code>int32</code>
+
+*Defined in [fuchsia.cobalt/cobalt.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-cobalt/cobalt.fidl#89)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>GA</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>DOGFOOD</code></td>
+            <td><code>10</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>FISHFOOD</code></td>
+            <td><code>20</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>DEBUG</code></td>
+            <td><code>99</code></td>
+            <td></td>
+        </tr></table>
+
 
 
 
@@ -1723,6 +3346,86 @@
             <td></td>
         </tr></table>
 
+### Value {:#Value}
+*Defined in [fuchsia.cobalt/cobalt.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-cobalt/cobalt.fidl#457)*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>string_value</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>int_value</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>double_value</code></td>
+            <td>
+                <code>float64</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>index_value</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### EventPayload {:#EventPayload}
+*Defined in [fuchsia.cobalt/cobalt.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-cobalt/cobalt.fidl#490)*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>event</code></td>
+            <td>
+                <code><a class='link' href='#Event'>Event</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>event_count</code></td>
+            <td>
+                <code><a class='link' href='#CountEvent'>CountEvent</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>elapsed_micros</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>fps</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>memory_bytes_used</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>string_event</code></td>
+            <td>
+                <code>string[256]</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>int_histogram</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#HistogramBucket'>HistogramBucket</a>&gt;[100]</code>
+            </td>
+            <td></td>
+        </tr></table>
+
 
 
 
@@ -1804,6 +3507,78 @@
                 <td><code>uint32</code></td>
             <td></td>
         </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-cobalt/cobalt.fidl#41">MAX_BYTES_PER_EVENT</a></td>
+            <td>
+                    <code>102400</code>
+                </td>
+                <td><code>int64</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-cobalt/cobalt.fidl#44">MAX_HISTOGRAM_BUCKETS</a></td>
+            <td>
+                    <code>100</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-cobalt/cobalt.fidl#48">MAX_BATCHED_EVENTS</a></td>
+            <td>
+                    <code>64</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-cobalt/cobalt.fidl#51">MAX_COMPONENT_LENGTH</a></td>
+            <td>
+                    <code>64</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-cobalt/cobalt.fidl#54">MAX_PROJECT_NAME_LENGTH</a></td>
+            <td>
+                    <code>64</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-cobalt/cobalt.fidl#57">MAX_TIMER_ID_LENGTH</a></td>
+            <td>
+                    <code>64</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-cobalt/cobalt.fidl#60">MAX_STRING_EVENT_SIZE</a></td>
+            <td>
+                    <code>256</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-cobalt/cobalt.fidl#63">MAX_EVENT_CODE_COUNT</a></td>
+            <td>
+                    <code>5</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-cobalt/cobalt.fidl#66">MAX_CHANNEL_NAME_LENGTH</a></td>
+            <td>
+                    <code>256</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
     
 </table>
 
diff --git a/sdk/fidl/fuchsia.deprecatedtimezone/index.md b/sdk/fidl/fuchsia.deprecatedtimezone/index.md
index fddbd61..5c98561 100644
--- a/sdk/fidl/fuchsia.deprecatedtimezone/index.md
+++ b/sdk/fidl/fuchsia.deprecatedtimezone/index.md
@@ -153,6 +153,153 @@
 
 
 
+## TimeService {:#TimeService}
+*Defined in [fuchsia.deprecatedtimezone/deprecated_time_service.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.deprecatedtimezone/deprecated_time_service.fidl#9)*
+
+ Interface to allow manual updates of the system time.
+
+### Update {:#Update}
+
+ Requests an immediate update of the time from network.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>num_retries</code></td>
+            <td>
+                <code>uint8</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>successful</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr></table>
+
+## Timezone {:#Timezone}
+*Defined in [fuchsia.deprecatedtimezone/deprecated_time_zone.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.deprecatedtimezone/deprecated_time_zone.fidl#14)*
+
+
+### GetTimezoneOffsetMinutes {:#GetTimezoneOffsetMinutes}
+
+ Returns local timezone offset (in minutes from UTC. Can be negative) for
+ the supplied number of milliseconds since the Unix epoch. Returns a
+ non-zero DST offset when appropriate.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>milliseconds_since_epoch</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>local_offset_minutes</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr><tr>
+            <td><code>dst_offset_minutes</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### SetTimezone {:#SetTimezone}
+
+ Sets the timezone for the machine based on an ICU ID.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>timezone_id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr></table>
+
+### GetTimezoneId {:#GetTimezoneId}
+
+ Gets the timezone ID string.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>timezone_id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr></table>
+
+### Watch {:#Watch}
+
+ Watches for updates to the timezone ID.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>watcher</code></td>
+            <td>
+                <code><a class='link' href='#TimezoneWatcher'>TimezoneWatcher</a></code>
+            </td>
+        </tr></table>
+
+
+
+## TimezoneWatcher {:#TimezoneWatcher}
+*Defined in [fuchsia.deprecatedtimezone/deprecated_time_zone.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.deprecatedtimezone/deprecated_time_zone.fidl#31)*
+
+
+### OnTimezoneOffsetChange {:#OnTimezoneOffsetChange}
+
+ When the timezone changes, returns the new timezone ID.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>timezone_id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr></table>
+
+
+
 
 
 
diff --git a/sdk/fidl/fuchsia.developer.tiles/index.md b/sdk/fidl/fuchsia.developer.tiles/index.md
index bd6d024..98bbd28 100644
--- a/sdk/fidl/fuchsia.developer.tiles/index.md
+++ b/sdk/fidl/fuchsia.developer.tiles/index.md
@@ -139,6 +139,139 @@
 
 
 
+## Controller {:#Controller}
+*Defined in [fuchsia.developer.tiles/tiles.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.developer.tiles/tiles.fidl#11)*
+
+
+### AddTileFromURL {:#AddTileFromURL}
+
+ Instantiates a component by its URL and adds a tile backed by that component's ViewProvider.
+ Returns a key for the tile that can be used for resizing or removing the tile, or 0 on failure.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>url</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>allow_focus</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr><tr>
+            <td><code>args</code></td>
+            <td>
+                <code>vector&lt;string&gt;?</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>key</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr></table>
+
+### AddTileFromViewProvider {:#AddTileFromViewProvider}
+
+ Adds a tile backed by a view from the view provider.
+ Returns a key for the tile that can be used for resizing or removing the tile, or 0 on failure.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>url</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>provider</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.ui.app/index.html'>fuchsia.ui.app</a>/<a class='link' href='../fuchsia.ui.app/index.html#ViewProvider'>ViewProvider</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>key</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr></table>
+
+### RemoveTile {:#RemoveTile}
+
+ Removes the tile with the given key.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>key</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr></table>
+
+
+
+### ListTiles {:#ListTiles}
+
+ Returns a list of tiles.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>keys</code></td>
+            <td>
+                <code>vector&lt;uint32&gt;</code>
+            </td>
+        </tr><tr>
+            <td><code>urls</code></td>
+            <td>
+                <code>vector&lt;string&gt;</code>
+            </td>
+        </tr><tr>
+            <td><code>sizes</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='../fuchsia.ui.gfx/index.html'>fuchsia.ui.gfx</a>/<a class='link' href='../fuchsia.ui.gfx/index.html#vec3'>vec3</a>&gt;</code>
+            </td>
+        </tr><tr>
+            <td><code>focusabilities</code></td>
+            <td>
+                <code>vector&lt;bool&gt;</code>
+            </td>
+        </tr></table>
+
+### Quit {:#Quit}
+
+ Asks the tiles component to quit.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
 
 
 
diff --git a/sdk/fidl/fuchsia.device/index.md b/sdk/fidl/fuchsia.device/index.md
index fe7e956..ca19931 100644
--- a/sdk/fidl/fuchsia.device/index.md
+++ b/sdk/fidl/fuchsia.device/index.md
@@ -612,59 +612,23 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>DEVICE_POWER_STATE_D0</code></td>
             <td><code>0</code></td>
-            <td> Mandatory Working state. Device is fully functional, can take I/O,
- issue interrrupts. This state is mandatory for all devices
- The device enters into this state by default, when powered on.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>DEVICE_POWER_STATE_D1</code></td>
             <td><code>1</code></td>
-            <td> [OPTIONAL] Device is not working when in this state. It cannot process
- I/O nor issue interrupts, unless it is armed for some special interrupts
- that can wake up the system/device. When in this state, the restore time
- of getting back to working state is less than other low-power states
- Power savings in this state are lesser than other low power states.
- Device may retain some hardware context and full initialization
- may not be needed when resuming from this state.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>DEVICE_POWER_STATE_D2</code></td>
             <td><code>2</code></td>
-            <td> [OPTIONAL] Device is not working when in this state. It cannot process
- I/O nor issue interrupts, unless it is armed for some special interrupts
- that can wake up the system/device. When in this state, the restore time
- of getting back to working state is more than DEVICE_POWER_STATE_D1 and
- less than restore time of getting back from DEVICE_POWER_STATE_D3HOT,
- DEVICE_POWER_STATE_D3COLD. Power savings in this state are lesser
- than DEVICE_POWER_STATE_D3COLD, DEVICE_POWER_STATE_D3HOT.
- Device may retain some hardware context and full initialization
- may not be needed when resuming from this state.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>DEVICE_POWER_STATE_D3HOT</code></td>
             <td><code>3</code></td>
-            <td> [OPTIONAL] Device is not working when in this state. It cannot process
- I/O nor issue interrupts, unless it is armed for some special interrupts
- that can wake up the system/device. When in this state, the restore time
- of getting back to working state is more than DEVICE_POWER_STATE_D1,
- DEVICE_POWER_STATE_D3HOT and less than restore time of getting back from
- DEVICE_POWER_STATE_D3COLD. Power savings in this state are lesser
- than DEVICE_POWER_STATE_D3COLD. Device has no context and full initialization
- by the device driver when resuming from this state.
- Although the device is completely off, it is still powered on and is enumerable.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>DEVICE_POWER_STATE_D3COLD</code></td>
             <td><code>4</code></td>
-            <td> [MANDATORY] Device is not working when in this state. It cannot process
- I/O nor issue interrupts, unless it is armed for some special interrupts
- that can wake up the system/device. When in this state, the restore time
- of getting back to working state is more than all other low power states.
- Power savings are more compared to all other low-power states.
- Device has no context and full initialization by the device driver when
- resuming from this state. In this state, the power to this device is turned off.
- Device may be powered by other auxiliary supplies to support wake capability.
-</td>
+            <td></td>
         </tr></table>
 
 
diff --git a/sdk/fidl/fuchsia.factory/index.md b/sdk/fidl/fuchsia.factory/index.md
index f87b07d..1c739e8 100644
--- a/sdk/fidl/fuchsia.factory/index.md
+++ b/sdk/fidl/fuchsia.factory/index.md
@@ -121,6 +121,121 @@
 
 
 
+## FactoryStoreProvider {:#FactoryStoreProvider}
+*Defined in [fuchsia.factory/factory.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.factory/factory.fidl#19)*
+
+ This protocol is a base protocol for all providers of factory store
+ directories. It exposes a single method to allow clients to establish a
+ connection to a directory containing the relevant factory data. All files
+ surfaced by a component that implements FactoryStoreProvider (or any
+ protocol that depends on it) are expected to be validated for consistency
+ before being exposed to clients.
+
+### GetFactoryStore {:#GetFactoryStore}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>dir</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='../fuchsia.io/index.html'>fuchsia.io</a>/<a class='link' href='../fuchsia.io/index.html#Directory'>Directory</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+## CastCredentialsFactoryStoreProvider {:#CastCredentialsFactoryStoreProvider}
+*Defined in [fuchsia.factory/factory.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.factory/factory.fidl#27)*
+
+ This protocol exposes a method to connect to a directory containing
+ Cast-specific factory data: public certificates and keys for
+ authentication with Cast servers.
+
+### GetFactoryStore {:#GetFactoryStore}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>dir</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='../fuchsia.io/index.html'>fuchsia.io</a>/<a class='link' href='../fuchsia.io/index.html#Directory'>Directory</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+## WidevineFactoryStoreProvider {:#WidevineFactoryStoreProvider}
+*Defined in [fuchsia.factory/factory.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.factory/factory.fidl#35)*
+
+ This protocol exposes a method to connect to a directory containing
+ Widevine-specific factory data: public certificates and keys for
+ authentication with Widevine systems.
+
+### GetFactoryStore {:#GetFactoryStore}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>dir</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='../fuchsia.io/index.html'>fuchsia.io</a>/<a class='link' href='../fuchsia.io/index.html#Directory'>Directory</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+## PlayReadyFactoryStoreProvider {:#PlayReadyFactoryStoreProvider}
+*Defined in [fuchsia.factory/factory.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.factory/factory.fidl#43)*
+
+ This protocol exposes a method to connect to a directory containing
+ PlayReady-specific factory data: public certificates and keys for
+ authentication with PlayReady systems.
+
+### GetFactoryStore {:#GetFactoryStore}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>dir</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='../fuchsia.io/index.html'>fuchsia.io</a>/<a class='link' href='../fuchsia.io/index.html#Directory'>Directory</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+## MiscFactoryStoreProvider {:#MiscFactoryStoreProvider}
+*Defined in [fuchsia.factory/factory.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.factory/factory.fidl#53)*
+
+ This protocol exposes a method to connect to a directory containing
+ miscellaneous factory data such as tuning/calibration files, region-specific
+ audio files, factory process metadata files, and more. Any raw files not
+ covered by other FactoryStoreProviders or methods in fuchsia.hwinfo will
+ appear here.
+
+### GetFactoryStore {:#GetFactoryStore}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>dir</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='../fuchsia.io/index.html'>fuchsia.io</a>/<a class='link' href='../fuchsia.io/index.html#Directory'>Directory</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
 
 
 
diff --git a/sdk/fidl/fuchsia.feedback/index.md b/sdk/fidl/fuchsia.feedback/index.md
index bc23058..b9820ae 100644
--- a/sdk/fidl/fuchsia.feedback/index.md
+++ b/sdk/fidl/fuchsia.feedback/index.md
@@ -97,6 +97,97 @@
             </td>
         </tr></table>
 
+## CrashReporter {:#CrashReporter}
+*Defined in [fuchsia.feedback/crash_reporter.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.feedback/crash_reporter.fidl#12)*
+
+ Provides the ability to file crash reports.
+
+### File {:#File}
+
+ Files a crash `report`.
+
+ This could mean generating a crash report in a local crash report database or uploading the
+ crash report to a remote crash server depending on the FIDL server's configuration.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>report</code></td>
+            <td>
+                <code><a class='link' href='#CrashReport'>CrashReport</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#CrashReporter_File_Result'>CrashReporter_File_Result</a></code>
+            </td>
+        </tr></table>
+
+## DataProvider {:#DataProvider}
+*Defined in [fuchsia.feedback/data_provider.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.feedback/data_provider.fidl#13)*
+
+ Provides data useful to attach in feedback reports (crash or user feedback).
+
+### GetData {:#GetData}
+
+ Returns all the feedback data except the screenshot, which is provided
+ separately.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#DataProvider_GetData_Result'>DataProvider_GetData_Result</a></code>
+            </td>
+        </tr></table>
+
+### GetScreenshot {:#GetScreenshot}
+
+ Returns an image of the current view encoded in the provided `encoding`.
+
+ `screenshot` may be null if the encoding is not supported, the device
+ does not have a display, or there is not enough memory to allocate the
+ screenshot image.
+
+ The screenshot is provided separately from the rest of the data as
+ callers might want to block on it before changing the view.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>encoding</code></td>
+            <td>
+                <code><a class='link' href='#ImageEncoding'>ImageEncoding</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>screenshot</code></td>
+            <td>
+                <code><a class='link' href='#Screenshot'>Screenshot</a>?</code>
+            </td>
+        </tr></table>
+
 
 
 ## **STRUCTS**
@@ -210,6 +301,115 @@
         </tr>
 </table>
 
+### Annotation {:#Annotation}
+*Defined in [fuchsia.feedback/annotation.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.feedback/annotation.fidl#9)*
+
+
+
+ An annotation and its plain ASCII string key.
+ Annotations are short strings, e.g., the board name or the build version.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>key</code></td>
+            <td>
+                <code>string[128]</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code>string[1024]</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Attachment {:#Attachment}
+*Defined in [fuchsia.feedback/attachment.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.feedback/attachment.fidl#11)*
+
+
+
+ An attachment and its plain ASCII string key.
+ Attachments are larger objects, e.g., log files. They may be binary or text data.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>key</code></td>
+            <td>
+                <code>string[128]</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.mem/index.html'>fuchsia.mem</a>/<a class='link' href='../fuchsia.mem/index.html#Buffer'>Buffer</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### CrashReporter_File_Response {:#CrashReporter_File_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr>
+</table>
+
+### DataProvider_GetData_Response {:#DataProvider_GetData_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>data</code></td>
+            <td>
+                <code><a class='link' href='#Data'>Data</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Screenshot {:#Screenshot}
+*Defined in [fuchsia.feedback/data_provider.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.feedback/data_provider.fidl#57)*
+
+
+
+ An encoded image of the screen.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>image</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.mem/index.html'>fuchsia.mem</a>/<a class='link' href='../fuchsia.mem/index.html#Buffer'>Buffer</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>dimensions_in_px</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.math/index.html'>fuchsia.math</a>/<a class='link' href='../fuchsia.math/index.html#Size'>Size</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
 
 
 ## **ENUMS**
@@ -232,6 +432,24 @@
             <td></td>
         </tr></table>
 
+### ImageEncoding {:#ImageEncoding}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.feedback/data_provider.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.feedback/data_provider.fidl#52)*
+
+ The encoding used for the image.
+
+ Today, only PNG is supported, but in the future the screenshot could be
+ returned in other encodings if need arises.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>PNG</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr></table>
+
 
 
 ## **TABLES**
@@ -417,6 +635,187 @@
 </td>
         </tr></table>
 
+### CrashReport {:#CrashReport}
+
+
+*Defined in [fuchsia.feedback/crash_reporter.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.feedback/crash_reporter.fidl#21)*
+
+ Represents a crash report.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>program_name</code></td>
+            <td>
+                <code>string[1024]</code>
+            </td>
+            <td> The name of the program that crashed, e.g., the process or component's name.
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>specific_report</code></td>
+            <td>
+                <code><a class='link' href='#SpecificCrashReport'>SpecificCrashReport</a></code>
+            </td>
+            <td> The specific report that depends on the type of crashes.
+</td>
+        </tr><tr>
+            <td>3</td>
+            <td><code>annotations</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#Annotation'>Annotation</a>&gt;[32]</code>
+            </td>
+            <td> A vector of key-value string pairs representing arbitrary data that should be attached to a
+ crash report. Keys should be unique.
+</td>
+        </tr><tr>
+            <td>4</td>
+            <td><code>attachments</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#Attachment'>Attachment</a>&gt;[16]</code>
+            </td>
+            <td> A vector of key-value string-to-VMO pairs representing arbitrary data that should be
+ attached to a crash report. Keys should be unique.
+</td>
+        </tr><tr>
+            <td>5</td>
+            <td><code>event_id</code></td>
+            <td>
+                <code>string[128]</code>
+            </td>
+            <td> A text ID that the crash server can use to group multiple crash reports related to the
+ same event.
+
+ Unlike the crash signature, crash reports sharing the same ID correspond to different
+ crashes, but can be considered as belonging to the same event, e.g., a crash in a low-level
+ server causing a crash in a high-level UI widget.
+</td>
+        </tr></table>
+
+### GenericCrashReport {:#GenericCrashReport}
+
+
+*Defined in [fuchsia.feedback/crash_reporter.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.feedback/crash_reporter.fidl#61)*
+
+ Represents a generic crash report.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>crash_signature</code></td>
+            <td>
+                <code>string[128]</code>
+            </td>
+            <td> A text signature that the crash server can use to track the same crash over time, e.g.,
+ "kernel-panic" or "oom".
+
+ Unlike the event ID, crash reports sharing the same signature correspond to the same crash,
+ but happening over multiple events, e.g., a null pointer exception in a server whenever
+ asked the same request.
+</td>
+        </tr></table>
+
+### NativeCrashReport {:#NativeCrashReport}
+
+
+*Defined in [fuchsia.feedback/crash_reporter.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.feedback/crash_reporter.fidl#72)*
+
+ Represents a crash report for a native exception out of which the client has built a minidump.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>minidump</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.mem/index.html'>fuchsia.mem</a>/<a class='link' href='../fuchsia.mem/index.html#Buffer'>Buffer</a></code>
+            </td>
+            <td> The core dump in the Minidump format.
+</td>
+        </tr></table>
+
+### RuntimeCrashReport {:#RuntimeCrashReport}
+
+
+*Defined in [fuchsia.feedback/crash_reporter.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.feedback/crash_reporter.fidl#78)*
+
+ Represents a crash report for a runtime exception, applicable to most languages.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>exception_type</code></td>
+            <td>
+                <code>string[128]</code>
+            </td>
+            <td> The exception type, e.g., "FileSystemException".
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>exception_message</code></td>
+            <td>
+                <code>string[1024]</code>
+            </td>
+            <td> The exception message, e.g., "cannot open file".
+</td>
+        </tr><tr>
+            <td>3</td>
+            <td><code>exception_stack_trace</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.mem/index.html'>fuchsia.mem</a>/<a class='link' href='../fuchsia.mem/index.html#Buffer'>Buffer</a></code>
+            </td>
+            <td> The text representation of the exception stack trace.
+</td>
+        </tr></table>
+
+### Data {:#Data}
+
+
+*Defined in [fuchsia.feedback/data_provider.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.feedback/data_provider.fidl#34)*
+
+ Data to attach to feedback reports.
+
+ Clients typically upload the data straight to servers without expecting some
+ particular fields. So the data comes in the form of arbitrary key-value pairs
+ that clients can directly forward to the servers.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>annotations</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#Annotation'>Annotation</a>&gt;[32]</code>
+            </td>
+            <td> A vector of key-value string pairs. Keys are guaranteed to be unique.
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>attachments</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#Attachment'>Attachment</a>&gt;[16]</code>
+            </td>
+            <td> A vector of key-value string-to-VMO pairs. Keys are guaranteed to be unique.
+</td>
+        </tr><tr>
+            <td>3</td>
+            <td><code>attachment_bundle</code></td>
+            <td>
+                <code><a class='link' href='#Attachment'>Attachment</a></code>
+            </td>
+            <td> A bundle of Attachments objects stored as an Attachment itself, e.g., it
+ could be a ZIP archive bundling a vector of Attachment objects.
+</td>
+        </tr></table>
+
 
 
 ## **UNIONS**
@@ -459,6 +858,44 @@
             <td></td>
         </tr></table>
 
+### CrashReporter_File_Result {:#CrashReporter_File_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#CrashReporter_File_Response'>CrashReporter_File_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### DataProvider_GetData_Result {:#DataProvider_GetData_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#DataProvider_GetData_Response'>DataProvider_GetData_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td></td>
+        </tr></table>
+
 
 
 ## **XUNIONS**
@@ -495,6 +932,38 @@
 </td>
         </tr></table>
 
+### SpecificCrashReport {:#SpecificCrashReport}
+*Defined in [fuchsia.feedback/crash_reporter.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.feedback/crash_reporter.fidl#49)*
+
+ Represents a specific crash report.
+
+ Add a new member when the server needs to special case how it handles certain annotations and
+ attachments for a given type of crashes, e.g., a `RuntimeCrashReport` for Javascript.
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>generic</code></td>
+            <td>
+                <code><a class='link' href='#GenericCrashReport'>GenericCrashReport</a></code>
+            </td>
+            <td> Intended for arbitrary crashes, e.g., OOM, out-of-disk.
+</td>
+        </tr><tr>
+            <td><code>native</code></td>
+            <td>
+                <code><a class='link' href='#NativeCrashReport'>NativeCrashReport</a></code>
+            </td>
+            <td> Intended for a native exception.
+</td>
+        </tr><tr>
+            <td><code>dart</code></td>
+            <td>
+                <code><a class='link' href='#RuntimeCrashReport'>RuntimeCrashReport</a></code>
+            </td>
+            <td> Intended for a Dart exception.
+</td>
+        </tr></table>
+
 
 
 
diff --git a/sdk/fidl/fuchsia.fonts/index.md b/sdk/fidl/fuchsia.fonts/index.md
index 8ea08be..ec8bc54 100644
--- a/sdk/fidl/fuchsia.fonts/index.md
+++ b/sdk/fidl/fuchsia.fonts/index.md
@@ -445,19 +445,15 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>UPRIGHT</code></td>
             <td><code>1</code></td>
-            <td> The default; upright glyphs.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>ITALIC</code></td>
             <td><code>2</code></td>
-            <td> Specially designed, slanted and slightly calligraphic glyphs.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>OBLIQUE</code></td>
             <td><code>3</code></td>
-            <td> Skewed glyphs. Oblique usually means an geometric transformation of the upright variant,
- rather than a custom-designed variant.
-</td>
+            <td></td>
         </tr></table>
 
 ### Width {:#Width}
@@ -474,48 +470,39 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>ULTRA_CONDENSED</code></td>
             <td><code>1</code></td>
-            <td> 50% of normal width
-</td>
+            <td></td>
         </tr><tr>
             <td><code>EXTRA_CONDENSED</code></td>
             <td><code>2</code></td>
-            <td> 62.5% of normal width
-</td>
+            <td></td>
         </tr><tr>
             <td><code>CONDENSED</code></td>
             <td><code>3</code></td>
-            <td> 75% of normal width
-</td>
+            <td></td>
         </tr><tr>
             <td><code>SEMI_CONDENSED</code></td>
             <td><code>4</code></td>
-            <td> 87.5% of normal width
-</td>
+            <td></td>
         </tr><tr>
             <td><code>NORMAL</code></td>
             <td><code>5</code></td>
-            <td> Normal width
-</td>
+            <td></td>
         </tr><tr>
             <td><code>SEMI_EXPANDED</code></td>
             <td><code>6</code></td>
-            <td> 112.5% of normal width
-</td>
+            <td></td>
         </tr><tr>
             <td><code>EXPANDED</code></td>
             <td><code>7</code></td>
-            <td> 125% of normal width
-</td>
+            <td></td>
         </tr><tr>
             <td><code>EXTRA_EXPANDED</code></td>
             <td><code>8</code></td>
-            <td> 150% of normal width
-</td>
+            <td></td>
         </tr><tr>
             <td><code>ULTRA_EXPANDED</code></td>
             <td><code>9</code></td>
-            <td> 200% of normal width
-</td>
+            <td></td>
         </tr></table>
 
 ### GenericFontFamily {:#GenericFontFamily}
@@ -540,64 +527,39 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>SERIF</code></td>
             <td><code>1</code></td>
-            <td> Glyphs have little "serifs", hooks, or notches at the ends of most strokes.
- Examples: Georgia, Noto Serif, Times New Roman.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>SANS_SERIF</code></td>
             <td><code>2</code></td>
-            <td> Glyphs that have no serifs at the ends of most strokes.
- Examples: Arial, Noto Sans, Roboto, Tahoma.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>MONOSPACE</code></td>
             <td><code>3</code></td>
-            <td> Fixed-width fonts.
- Examples: Consolas, Courier New, Inconsolata.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>CURSIVE</code></td>
             <td><code>4</code></td>
-            <td> Handwritten or cursive fonts.
- Examples: Brush Script, Comic Sans, Lucida Calligraphy.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>FANTASY</code></td>
             <td><code>5</code></td>
-            <td> Decorative fonts.
- Examples: Impact, Papyrus.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>SYSTEM_UI</code></td>
             <td><code>6</code></td>
-            <td> The default user interface font on the target platform.
- This is included for completeness with the CSS specification; font manifests should not
- declare that a font belongs to the `SYSTEM_UI` generic family, but instead should declare a
- more specific option (e.g. `SERIF` for Roboto).
-
- Not commonly used.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>EMOJI</code></td>
             <td><code>7</code></td>
-            <td> Fonts that are used specifically for rendering emoji code points.
- Examples: Noto Color Emoji.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>MATH</code></td>
             <td><code>8</code></td>
-            <td> Fonts that are used primarily for rendering mathematical expressions.
-
- Not commonly used.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>FANGSONG</code></td>
             <td><code>9</code></td>
-            <td> A group of Chinese fonts between serif and cursive, often used for official Chinese
- Government documents.
-
- Not commonly used.
-</td>
+            <td></td>
         </tr></table>
 
 
diff --git a/sdk/fidl/fuchsia.hardware.ethernet/index.md b/sdk/fidl/fuchsia.hardware.ethernet/index.md
index e9c5ab3..a63738b 100644
--- a/sdk/fidl/fuchsia.hardware.ethernet/index.md
+++ b/sdk/fidl/fuchsia.hardware.ethernet/index.md
@@ -342,6 +342,342 @@
             </td>
         </tr></table>
 
+## Device {:#Device}
+*Defined in [fuchsia.hardware.ethernet/ethernet.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-hardware-ethernet/ethernet.fidl#72)*
+
+ Operation
+
+ Packets are transmitted by writing data into the IO buffer and writing
+ a FifoEntry referencing that data (offset + length) into the tx fifo.
+ When the driver is done accessing the data, a FifoEntry with the same
+ cookie value (opaque to the driver) will be readable from the tx fifo.
+
+ Packets are received by writing a FifoEntry referencing an available
+ buffer (offset + length) in the IO buffer.  When a packet is received,
+ a FifoEntry with the same cookie value (opaque to the driver) will be
+ readable from the rx fifo.  The offset field will be the same as was
+ sent.  The length field will reflect the actual size of the received
+ packet.  The flags field will indicate success or a specific failure
+ condition.
+
+ IMPORTANT: The driver *will not* buffer response messages.  It is the
+ client's responsibility to ensure that there is space in the reply side
+ of each fifo for each outstanding tx or rx request.  The fifo sizes
+ are returned along with the fifo handles from GetFifos().
+
+ See //zircon/system/public/zircon/device/ethernet.h for fifo entry layout
+ and request / response message bits.
+
+### GetInfo {:#GetInfo}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>info</code></td>
+            <td>
+                <code><a class='link' href='#Info'>Info</a></code>
+            </td>
+        </tr></table>
+
+### GetFifos {:#GetFifos}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr><tr>
+            <td><code>info</code></td>
+            <td>
+                <code><a class='link' href='#Fifos'>Fifos</a>?</code>
+            </td>
+        </tr></table>
+
+### SetIOBuffer {:#SetIOBuffer}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>h</code></td>
+            <td>
+                <code>handle&lt;vmo&gt;</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### Start {:#Start}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### Stop {:#Stop}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+### ListenStart {:#ListenStart}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### ListenStop {:#ListenStop}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+### SetClientName {:#SetClientName}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>name</code></td>
+            <td>
+                <code>string[16]</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### GetStatus {:#GetStatus}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>device_status</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr></table>
+
+### SetPromiscuousMode {:#SetPromiscuousMode}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>enabled</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### ConfigMulticastAddMac {:#ConfigMulticastAddMac}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>addr</code></td>
+            <td>
+                <code><a class='link' href='#MacAddress'>MacAddress</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### ConfigMulticastDeleteMac {:#ConfigMulticastDeleteMac}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>addr</code></td>
+            <td>
+                <code><a class='link' href='#MacAddress'>MacAddress</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### ConfigMulticastSetPromiscuousMode {:#ConfigMulticastSetPromiscuousMode}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>enabled</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### ConfigMulticastTestFilter {:#ConfigMulticastTestFilter}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### DumpRegisters {:#DumpRegisters}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
 
 
 ## **STRUCTS**
@@ -435,6 +771,95 @@
         </tr>
 </table>
 
+### MacAddress {:#MacAddress}
+*Defined in [fuchsia.hardware.ethernet/ethernet.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-hardware-ethernet/ethernet.fidl#9)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>octets</code></td>
+            <td>
+                <code>uint8[6]</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Info {:#Info}
+*Defined in [fuchsia.hardware.ethernet/ethernet.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-hardware-ethernet/ethernet.fidl#18)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>features</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>mtu</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>mac</code></td>
+            <td>
+                <code><a class='link' href='#MacAddress'>MacAddress</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Fifos {:#Fifos}
+*Defined in [fuchsia.hardware.ethernet/ethernet.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-hardware-ethernet/ethernet.fidl#24)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>rx</code></td>
+            <td>
+                <code>handle&lt;fifo&gt;</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>tx</code></td>
+            <td>
+                <code>handle&lt;fifo&gt;</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>rx_depth</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>tx_depth</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
 
 
 
@@ -506,6 +931,62 @@
                 <td><code>uint32</code></td>
             <td></td>
         </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-hardware-ethernet/ethernet.fidl#14">INFO_FEATURE_WLAN</a></td>
+            <td>
+                    <code>1</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-hardware-ethernet/ethernet.fidl#15">INFO_FEATURE_SYNTH</a></td>
+            <td>
+                    <code>2</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-hardware-ethernet/ethernet.fidl#16">INFO_FEATURE_LOOPBACK</a></td>
+            <td>
+                    <code>4</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-hardware-ethernet/ethernet.fidl#37">SIGNAL_STATUS</a></td>
+            <td>
+                    <code>16777216</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-hardware-ethernet/ethernet.fidl#40">DEVICE_STATUS_ONLINE</a></td>
+            <td>
+                    <code>1</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-hardware-ethernet/ethernet.fidl#43">MAX_CLIENT_NAME_LEN</a></td>
+            <td>
+                    <code>15</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-hardware-ethernet/ethernet.fidl#47">SET_CLIENT_NAME_MAX_LEN</a></td>
+            <td>
+                    <code>16</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
     
 </table>
 
diff --git a/sdk/fidl/fuchsia.identity.account/index.md b/sdk/fidl/fuchsia.identity.account/index.md
index 44e1b9a..5138f59 100644
--- a/sdk/fidl/fuchsia.identity.account/index.md
+++ b/sdk/fidl/fuchsia.identity.account/index.md
@@ -1150,14 +1150,11 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>EPHEMERAL</code></td>
             <td><code>1</code></td>
-            <td> The account lives at the longest to the end of the power cycle it
- was created in.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>PERSISTENT</code></td>
             <td><code>2</code></td>
-            <td> The account lives on the device until it is removed.
-</td>
+            <td></td>
         </tr></table>
 
 ### Error {:#Error}
@@ -1172,60 +1169,39 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>UNKNOWN</code></td>
             <td><code>1</code></td>
-            <td> Some other problem occurred that cannot be classified using one of the
- more specific statuses. Retry is optional.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>INTERNAL</code></td>
             <td><code>2</code></td>
-            <td> An internal error occurred. This usually indicates a bug within the
- account system itself. Retry is optional.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>UNSUPPORTED_OPERATION</code></td>
             <td><code>3</code></td>
-            <td> The requested operation is not supported. This generally indicates that
- implementation of a new feature is not yet complete. The request should
- not be retried.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>INVALID_REQUEST</code></td>
             <td><code>4</code></td>
-            <td> The request was malformed in some way, such as using an empty string for
- auth_provider_type. The request should not be retried.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>RESOURCE</code></td>
             <td><code>5</code></td>
-            <td> A local resource error occurred such as I/O, FIDL, or memory allocation
- failure. Retry, after a delay, is recommended.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>NETWORK</code></td>
             <td><code>6</code></td>
-            <td> A network error occurred while communicating with an auth server.
- Retry, after a delay, is recommended.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>NOT_FOUND</code></td>
             <td><code>7</code></td>
-            <td> The requested account or persona is not present on the current device.
- The request should not be retried.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>REMOVAL_IN_PROGRESS</code></td>
             <td><code>8</code></td>
-            <td> The request cannot be processed due to an ongoing account or persona
- removal. The removal is not guaranteed to suceed and so retry, after
- a delay, is recommended.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>FAILED_PRECONDITION</code></td>
             <td><code>9</code></td>
-            <td> The server is not in the state required to perform the requested
- operation. The request should not be retried unless the server state
- has been corrected before the retry.
-</td>
+            <td></td>
         </tr></table>
 
 
diff --git a/sdk/fidl/fuchsia.images/index.md b/sdk/fidl/fuchsia.images/index.md
index 524d382..7494b8b 100644
--- a/sdk/fidl/fuchsia.images/index.md
+++ b/sdk/fidl/fuchsia.images/index.md
@@ -471,6 +471,471 @@
             </td>
         </tr></table>
 
+## ImagePipe {:#ImagePipe}
+*Defined in [fuchsia.images/image_pipe.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.images/image_pipe.fidl#64)*
+
+ ImagePipe is a mechanism for streaming shared images between a producer
+ and a consumer which may be running in different processes.
+
+ Conceptually, the image pipe maintains a table of image resources supplied
+ by the producer into which graphical content may be stored as well as a
+ presentation queue containing a sequence of images which the producer has
+ asked the consumer to present.
+
+ The presentation queue is initially empty.
+
+ Each entry in the presentation queue consists of an image together with a
+ pair of optional synchronization fences:
+ - Acquire fence: signaled by the producer when the image is ready to be consumed
+ - Release fence: signaled by the consumer when the image is free to be freed or
+   modified by the producer
+
+ The producer performs the following sequence of steps to present content:
+ - Allocate and add some number of images (often 2 or 3) to the image pipe
+   to establish a pool using `AddImage()`.
+ - Obtain the next available image from the pool.
+ - Ask the consumer to enqueue an image for presentation and provide fences
+   using `PresentImage()`.
+ - Start rendering the image.
+ - Signal the image's acquire fence when rendering is complete.
+ - Loop to present more image, listen for signals on release fences to recycle
+   images back into the pool.
+
+ The consumer performs the following sequence of steps for each image which
+ is enqueued in the presentation queue:
+ - Await signals on the image's acquire fence.
+ - If the fence wait cannot be satisfied or if some other error is detected,
+   close the image pipe.
+   Otherwise, begin presenting the image's content.
+ - Retire the previously presented image (if any) from the presentation queue
+   and signal its release fence when no longer needed.
+ - Continue presenting the same image until the next one is ready.  Loop.
+
+ If the producer wants to close the image pipe, it should:
+ - Close its side of the connection.
+ - Wait on all release fences for buffers that it has submitted with
+   `PresentImage()`.
+ - Proceed with resource cleanup.
+
+ When the consumer detects the image pipe has closed, it should:
+ - Stop using/presenting any images from the pipe.
+ - Unmap all VMOs associated with the images in the pipe.
+ - Close all handles to the VMOs.
+ - Signal all release fences for presented and queued buffers.
+ - Close all handles to fences.
+ - Close its side of the connection.
+
+ When either party detects that a fence has been abandoned (remotely closed
+ without being signaled) it should assume that the associated image is in
+ an indeterminate state.  This will typically happen when the other party
+ (or one of its delegates) has crashed.  The safest course of action is to
+ close the image pipe, release all resources which were shared with the
+ other party, and re-establish the connection to recover.
+
+### AddImage {:#AddImage}
+
+ Adds an image resource to image pipe.
+
+ The `memory` is the handle of a memory object which contains the image
+ data.  It is valid to create multiple images backed by the same memory
+ object; they may even overlap.  Consumers must detect this and handle
+ it accordingly.  The `offset_bytes` indicates the offset within the
+ memory object at which the image data begins.  The `size_bytes`
+ indicates the amount of memory from `memory` that should be utilized.
+ The type of memory stored in the VMO is `memory_type` (e.g. GPU memory,
+ host memory).
+
+ The following errors will cause the connection to be closed:
+ - `image_id` is already registered
+ - `image_info` represents a format not supported by the consumer
+ - `memory` is not a handle for a readable VMO
+ - the image data expected at `offset_bytes` according to the `image_info`
+   exceeds the memory object's bounds
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>image_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>image_info</code></td>
+            <td>
+                <code><a class='link' href='#ImageInfo'>ImageInfo</a></code>
+            </td>
+        </tr><tr>
+            <td><code>memory</code></td>
+            <td>
+                <code>handle&lt;vmo&gt;</code>
+            </td>
+        </tr><tr>
+            <td><code>offset_bytes</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr><tr>
+            <td><code>size_bytes</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr><tr>
+            <td><code>memory_type</code></td>
+            <td>
+                <code><a class='link' href='#MemoryType'>MemoryType</a></code>
+            </td>
+        </tr></table>
+
+
+
+### RemoveImage {:#RemoveImage}
+
+ Removes an image resource from the pipe.
+
+ The `image_id` is detached from the image resource and is free to be
+ reused to add a new image resource.
+
+ Removing an image from the image pipe does not affect the presentation
+ queue or the currently presented image.
+
+ The producer must wait for all release fences associated with the image to
+ be signaled before freeing or modifying the underlying memory object since
+ the image may still be in use in the presentation queue.
+
+ The following errors will cause the connection to be closed:
+ - `image_id` does not reference a currently registered image resource
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>image_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr></table>
+
+
+
+### PresentImage {:#PresentImage}
+
+ Enqueues the specified image for presentation by the consumer.
+
+ The `acquire_fences` are a set of fences which must all be signaled by the
+ producer before the consumer presents the image.
+ The `release_fences` are set of fences which must all be signaled by the
+ consumer before it is safe for the producer to free or modify the image.
+ `presentation_time` specifies the time on or after which the
+ client would like the enqueued operations should take visible effect
+ (light up pixels on the screen), expressed in nanoseconds in the
+ `CLOCK_MONOTONIC` timebase.  Desired presentation times must be
+ monotonically non-decreasing.
+
+ `presentation_info` returns timing information about the submitted frame
+ and future frames (see presentation_info.fidl).
+
+ The following errors will cause the connection to be closed:
+ - `image_id` does not reference a currently registered image resource
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>image_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>presentation_time</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr><tr>
+            <td><code>acquire_fences</code></td>
+            <td>
+                <code>vector&lt;event&gt;</code>
+            </td>
+        </tr><tr>
+            <td><code>release_fences</code></td>
+            <td>
+                <code>vector&lt;event&gt;</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>presentation_info</code></td>
+            <td>
+                <code><a class='link' href='#PresentationInfo'>PresentationInfo</a></code>
+            </td>
+        </tr></table>
+
+## ImagePipe2 {:#ImagePipe2}
+*Defined in [fuchsia.images/image_pipe2.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.images/image_pipe2.fidl#71)*
+
+ ImagePipe is a mechanism for streaming shared images between a producer
+ and a consumer which may be running in different processes.
+
+ Conceptually, the image pipe maintains a table of image resources supplied
+ by the producer into which graphical content may be stored as well as a
+ presentation queue containing a sequence of images which the producer has
+ asked the consumer to present.
+
+ The presentation queue is initially empty.
+
+ Each entry in the presentation queue consists of an image together with a
+ pair of optional synchronization fences:
+ - Acquire fence: signaled by the producer when the image is ready to be consumed
+ - Release fence: signaled by the consumer when the image is free to be freed or
+   modified by the producer
+
+ The producer performs the following sequence of steps to present content:
+ - Allocate and add some number of BufferCollections to the image pipe to allow
+ consumer to set constraints.
+ - Allocate and add some number of images (often 2 or 3) to the image pipe
+   to establish a pool using `AddImage()`.
+ - Obtain the next available image from the pool.
+ - Ask the consumer to enqueue an image for presentation and provide fences
+   using `PresentImage()`.
+ - Start rendering the image.
+ - Signal the image's acquire fence when rendering is complete.
+ - Loop to present more image, listen for signals on release fences to recycle
+   images back into the pool.
+
+ The consumer performs the following sequence of steps for each image which
+ is enqueued in the presentation queue:
+ - Await signals on the image's acquire fence.
+ - If the fence wait cannot be satisfied or if some other error is detected,
+   close the image pipe.
+   Otherwise, begin presenting the image's content.
+ - Retire the previously presented image (if any) from the presentation queue
+   and signal its release fence when no longer needed.
+ - Continue presenting the same image until the next one is ready.  Loop.
+
+ If the producer wants to close the image pipe, it should:
+ - Close its side of the connection.
+ - Wait on all release fences for buffers that it has submitted with
+   `PresentImage()`.
+ - Proceed with resource cleanup.
+
+ When the consumer detects the image pipe has closed, it should:
+ - Stop using/presenting any images from the pipe.
+ - Unmap all memory objects associated with the images in the pipe.
+ - Close all BufferCollection resources.
+ - Signal all release fences for presented and queued buffers.
+ - Close all handles to fences.
+ - Close its side of the connection.
+
+ When either party detects that a fence has been abandoned (remotely closed
+ without being signaled) it should assume that the associated image is in
+ an indeterminate state.  This will typically happen when the other party
+ (or one of its delegates) has crashed.  The safest course of action is to
+ close the image pipe, release all resources which were shared with the
+ other party, and re-establish the connection to recover.
+
+### AddBufferCollection {:#AddBufferCollection}
+
+ Adds a BufferCollection resource to the image pipe.
+
+ The producer is expected to set constraints on this resource for images added
+ via `AddImage()`. The consumer can set its constraints on
+ `buffer_collection_token` before or after. Note that the buffers won’t be
+ allocated until all BufferCollectionToken instances are used to set
+ constraints, on both the producer and consumer side. See collection.fidl for
+ details.
+
+ The following errors will cause the connection to be closed:
+ - `buffer_collection_id` is already registered
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>buffer_collection_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>buffer_collection_token</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.sysmem/index.html'>fuchsia.sysmem</a>/<a class='link' href='../fuchsia.sysmem/index.html#BufferCollectionToken'>BufferCollectionToken</a></code>
+            </td>
+        </tr></table>
+
+
+
+### AddImage {:#AddImage}
+
+ Adds an image resource to image pipe.
+
+ `buffer_collection_id` refers to the BufferCollectionToken instance that is
+ registered via `AddBufferCollection()`. The underlying memory objects allocated
+ are used to address to the image data. `buffer_collection_id` refers to the
+ index of the memory object allocated in BufferCollection.
+
+ `image_format` specifiies image properties. `coded_width` and `coded_height` are
+ used to set image dimensions.
+
+ It is valid to create multiple images backed by the same memory object; they
+ may even overlap.  Consumers must detect this and handle it accordingly.
+
+ The following errors will cause the connection to be closed:
+ - `image_id` is already registered
+ - `buffer_collection_id` refers to an unregistered BufferCollection.
+ - `buffer_collection_index` points to a resource index out of the initialized
+     BufferCollection bounds
+ - No resource is allocated in the registered BufferCollection.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>image_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>buffer_collection_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>buffer_collection_index</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>image_format</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.sysmem/index.html'>fuchsia.sysmem</a>/<a class='link' href='../fuchsia.sysmem/index.html#ImageFormat_2'>ImageFormat_2</a></code>
+            </td>
+        </tr></table>
+
+
+
+### RemoveBufferCollection {:#RemoveBufferCollection}
+
+ Removes a BufferCollection resource from the pipe.
+
+ The `buffer_collection_id` resource is detached as well as all Images that are
+ associated with that BufferCollection. Leads to the same results as calling
+ `RemoveImage()` on all Images for `buffer_collection_id`.
+
+ The producer must wait for all release fences associated with the Images to
+ be signaled before freeing or modifying the underlying memory object since
+ the image may still be in use in the presentation queue.
+
+ The following errors will cause the connection to be closed:
+ - `buffer_collection_id` does not reference a currently registered BufferCollection
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>buffer_collection_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr></table>
+
+
+
+### RemoveImage {:#RemoveImage}
+
+ Removes an image resource from the pipe.
+
+ The `image_id` is detached from the image resource and is free to be
+ reused to add a new image resource.
+
+ Removing an image from the image pipe does not affect the presentation
+ queue or the currently presented image.
+
+ The producer must wait for all release fences associated with the image to
+ be signaled before freeing or modifying the underlying memory object since
+ the image may still be in use in the presentation queue.
+
+ The following errors will cause the connection to be closed:
+ - `image_id` does not reference a currently registered image resource
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>image_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr></table>
+
+
+
+### PresentImage {:#PresentImage}
+
+ Enqueues the specified image for presentation by the consumer.
+
+ The `acquire_fences` are a set of fences which must all be signaled by the
+ producer before the consumer presents the image.
+ The `release_fences` are set of fences which must all be signaled by the
+ consumer before it is safe for the producer to free or modify the image.
+ `presentation_time` specifies the time on or after which the
+ client would like the enqueued operations should take visible effect
+ (light up pixels on the screen), expressed in nanoseconds in the
+ `CLOCK_MONOTONIC` timebase.  Desired presentation times must be
+ monotonically non-decreasing.
+
+ `presentation_info` returns timing information about the submitted frame
+ and future frames (see presentation_info.fidl).
+
+ The producer may decide not to signal `acquire_fences` for an image.
+ In that case, if a later image is enqueued and later image’s
+ `presentation_time` is reached, the consumer presents the later image when
+ later image’s `acquire_fences` are signaled. The consumer also signals
+ earlier image’s `release_fences` and removes it from the presentation queue.
+ This sequence works as a cancellation mechanism.
+
+ The following errors will cause the connection to be closed:
+ - `image_id` does not reference a currently registered image resource
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>image_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>presentation_time</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr><tr>
+            <td><code>acquire_fences</code></td>
+            <td>
+                <code>vector&lt;event&gt;[16]</code>
+            </td>
+        </tr><tr>
+            <td><code>release_fences</code></td>
+            <td>
+                <code>vector&lt;event&gt;[16]</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>presentation_info</code></td>
+            <td>
+                <code><a class='link' href='#PresentationInfo'>PresentationInfo</a></code>
+            </td>
+        </tr></table>
+
 
 
 ## **STRUCTS**
@@ -618,6 +1083,149 @@
         </tr>
 </table>
 
+### EncodedImage {:#EncodedImage}
+*Defined in [fuchsia.images/encoded_image.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.images/encoded_image.fidl#7)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>vmo</code></td>
+            <td>
+                <code>handle&lt;vmo&gt;</code>
+            </td>
+            <td> The vmo.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>size</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> The size of the image in the vmo in bytes.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ImageInfo {:#ImageInfo}
+*Defined in [fuchsia.images/image_info.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.images/image_info.fidl#117)*
+
+
+
+ Information about a graphical image (texture) including its format and size.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>transform</code></td>
+            <td>
+                <code><a class='link' href='#Transform'>Transform</a></code>
+            </td>
+            <td> Specifies if the image should be mirrored before displaying.
+</td>
+            <td><a class='link' href='#Transform.NORMAL'>Transform.NORMAL</a></td>
+        </tr><tr>
+            <td><code>width</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> The width and height of the image in pixels.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>height</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>stride</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> The number of bytes per row in the image buffer.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>pixel_format</code></td>
+            <td>
+                <code><a class='link' href='#PixelFormat'>PixelFormat</a></code>
+            </td>
+            <td> The pixel format of the image.
+</td>
+            <td><a class='link' href='#PixelFormat.BGRA_8'>PixelFormat.BGRA_8</a></td>
+        </tr><tr>
+            <td><code>color_space</code></td>
+            <td>
+                <code><a class='link' href='#ColorSpace'>ColorSpace</a></code>
+            </td>
+            <td> The pixel color space.
+</td>
+            <td><a class='link' href='#ColorSpace.SRGB'>ColorSpace.SRGB</a></td>
+        </tr><tr>
+            <td><code>tiling</code></td>
+            <td>
+                <code><a class='link' href='#Tiling'>Tiling</a></code>
+            </td>
+            <td> The pixel arrangement in memory.
+</td>
+            <td><a class='link' href='#Tiling.LINEAR'>Tiling.LINEAR</a></td>
+        </tr><tr>
+            <td><code>alpha_format</code></td>
+            <td>
+                <code><a class='link' href='#AlphaFormat'>AlphaFormat</a></code>
+            </td>
+            <td> Specifies the interpretion of the alpha channel, if one exists.
+</td>
+            <td><a class='link' href='#AlphaFormat.OPAQUE'>AlphaFormat.OPAQUE</a></td>
+        </tr>
+</table>
+
+### PresentationInfo {:#PresentationInfo}
+*Defined in [fuchsia.images/presentation_info.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.images/presentation_info.fidl#10)*
+
+
+
+ Information returned by methods such as `ImagePipe.PresentImage()` and
+ `Session.Present()`, when the consumer begins preparing the first frame
+ which includes the presented content.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>presentation_time</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> The actual time at which the enqueued operations are anticipated to take
+ visible effect, expressed in nanoseconds in the `CLOCK_MONOTONIC`
+ timebase.
+
+ This value increases monotonically with each new frame, typically in
+ increments of the `presentation_interval`.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>presentation_interval</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> The nominal amount of time which is anticipated to elapse between
+ successively presented frames, expressed in nanoseconds.  When rendering
+ to a display, the interval will typically be derived from the display
+ refresh rate.
+
+ This value is non-zero.  It may vary from time to time, such as when
+ changing display modes.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
 
 
 ## **ENUMS**
@@ -634,74 +1242,19 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>BGRA_8</code></td>
             <td><code>0</code></td>
-            <td> BGRA_8
-
- A 32-bit four-component unsigned integer format.
- Byte order: B, G, R, A (little-endian ARGB packed 32-bit word).
- Equivalent to Skia `kBGRA_8888_SkColorType` color type.
- Equivalent to Zircon `ARGB_8888` pixel format on little-endian arch.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>YUY2</code></td>
             <td><code>1</code></td>
-            <td> YUY2
-
- 4:2:2 (2x down-sampled UV horizontally; full res UV vertically)
-
- A 32-bit component that contains information for 2 pixels:
- Byte order: Y1, U, Y2, V
- Unpacks to 2 RGB pixels, where RGB1 = func(Y1, U, V)
- and RGB2 = func(Y2, U, V)
- Equivalent to YUV422
-</td>
+            <td></td>
         </tr><tr>
             <td><code>NV12</code></td>
             <td><code>2</code></td>
-            <td> NV12
-
- 4:2:0 (2x down-sampled UV in both directions)
-
- Offset 0:
- 8 bit per pixel Y plane with bytes YYY.
- Offset height * stride:
- 8 bit UV data interleaved bytes as UVUVUV.
-
- Y plane has line stride >= width.
-
- In this context, both width and height are required to be even.
-
- The UV data is separated into "lines", with each "line" having same byte
- width as a line of Y data, and same "line" stride as Y data's line stride.
- The UV data has height / 2 "lines".
-
- In converting to RGB, the UV data gets up-scaled by 2x in both directions
- overall.  This comment is intentionally silent on exactly how UV up-scaling
- phase/filtering/signal processing works, as it's a complicated topic that
- can vary by implementation, typically trading off speed and quality of the
- up-scaling.  See comments in relevant conversion code for approach taken
- by any given convert path.  The precise relative phase of the UV data is
- not presently conveyed.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>YV12</code></td>
             <td><code>3</code></td>
-            <td> YV12
-
- Like I420, except with V and U swapped.
-
- 4:2:0 (2x down-sampled UV in both directions)
-
- Offset 0:
- 8 bit per pixel Y plane with bytes YYY.
- Offset height * stride:
- 8 bit V data with uv_stride = stride / 2
- Offset height * stride + uv_stride * height / 2:
- 8 bit U data with uv_stride = stride / 2
-
- Y plane has line stride >= width.
-
- Both width and height are required to be even.
-</td>
+            <td></td>
         </tr></table>
 
 ### ColorSpace {:#ColorSpace}
@@ -731,15 +1284,11 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>LINEAR</code></td>
             <td><code>0</code></td>
-            <td> Pixels are packed linearly.
- Equivalent to `VK_IMAGE_TILING_LINEAR`.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>GPU_OPTIMAL</code></td>
             <td><code>1</code></td>
-            <td> Pixels are packed in a GPU-dependent optimal format.
- Equivalent to `VK_IMAGE_TILING_OPTIMAL`.
-</td>
+            <td></td>
         </tr></table>
 
 ### AlphaFormat {:#AlphaFormat}
@@ -754,21 +1303,15 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>OPAQUE</code></td>
             <td><code>0</code></td>
-            <td> Image is considered to be opaque.  Alpha channel is ignored.
- Blend function is: src.RGB
-</td>
+            <td></td>
         </tr><tr>
             <td><code>PREMULTIPLIED</code></td>
             <td><code>1</code></td>
-            <td> Color channels have been premultiplied by alpha.
- Blend function is: src.RGB + (dest.RGB * (1 - src.A))
-</td>
+            <td></td>
         </tr><tr>
             <td><code>NON_PREMULTIPLIED</code></td>
             <td><code>2</code></td>
-            <td> Color channels have not been premultiplied by alpha.
- Blend function is: (src.RGB * src.A) + (dest.RGB * (1 - src.A))
-</td>
+            <td></td>
         </tr></table>
 
 ### Transform {:#Transform}
@@ -782,23 +1325,19 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>NORMAL</code></td>
             <td><code>0</code></td>
-            <td> Pixels are displayed normally.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>FLIP_HORIZONTAL</code></td>
             <td><code>1</code></td>
-            <td> Pixels are mirrored left-right.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>FLIP_VERTICAL</code></td>
             <td><code>2</code></td>
-            <td> Pixels are flipped vertically.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>FLIP_VERTICAL_AND_HORIZONTAL</code></td>
             <td><code>3</code></td>
-            <td> Pixels are flipped vertically and mirrored left-right.
-</td>
+            <td></td>
         </tr></table>
 
 ### MemoryType {:#MemoryType}
@@ -813,14 +1352,140 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>HOST_MEMORY</code></td>
             <td><code>0</code></td>
-            <td> VMO is regular host CPU memory.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>VK_DEVICE_MEMORY</code></td>
             <td><code>1</code></td>
-            <td> VMO can be imported as a VkDeviceMemory by calling VkAllocateMemory with a
- VkImportMemoryFuchsiaHandleInfoKHR wrapped in a VkMemoryAllocateInfo.
-</td>
+            <td></td>
+        </tr></table>
+
+### PixelFormat {:#PixelFormat}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.images/image_info.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.images/image_info.fidl#8)*
+
+ Specifies how pixels are represented in the image buffer.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>BGRA_8</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>YUY2</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>NV12</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>YV12</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr></table>
+
+### ColorSpace {:#ColorSpace}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.images/image_info.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.images/image_info.fidl#74)*
+
+ Specifies how pixel color information should be interpreted.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>SRGB</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr></table>
+
+### Tiling {:#Tiling}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.images/image_info.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.images/image_info.fidl#79)*
+
+ Specifies how pixels are arranged in memory.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>LINEAR</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>GPU_OPTIMAL</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr></table>
+
+### AlphaFormat {:#AlphaFormat}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.images/image_info.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.images/image_info.fidl#90)*
+
+ Specifies how alpha information should be interpreted.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>OPAQUE</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PREMULTIPLIED</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>NON_PREMULTIPLIED</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr></table>
+
+### Transform {:#Transform}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.images/image_info.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.images/image_info.fidl#102)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>NORMAL</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>FLIP_HORIZONTAL</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>FLIP_VERTICAL</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>FLIP_VERTICAL_AND_HORIZONTAL</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr></table>
+
+### MemoryType {:#MemoryType}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.images/memory_type.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.images/memory_type.fidl#8)*
+
+ Specifies the type of VMO's memory.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>HOST_MEMORY</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>VK_DEVICE_MEMORY</code></td>
+            <td><code>1</code></td>
+            <td></td>
         </tr></table>
 
 
@@ -844,6 +1509,14 @@
                 <td><code>int32</code></td>
             <td></td>
         </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.images/image_pipe2.fidl#10">MAX_ACQUIRE_RELEASE_FENCE_COUNT</a></td>
+            <td>
+                    <code>16</code>
+                </td>
+                <td><code>int32</code></td>
+            <td></td>
+        </tr>
     
 </table>
 
diff --git a/sdk/fidl/fuchsia.intl/index.md b/sdk/fidl/fuchsia.intl/index.md
index 4808327..1390174 100644
--- a/sdk/fidl/fuchsia.intl/index.md
+++ b/sdk/fidl/fuchsia.intl/index.md
@@ -49,6 +49,49 @@
     <tr><th>Name</th><th>Type</th></tr>
     </table>
 
+## PropertyProvider {:#PropertyProvider}
+*Defined in [fuchsia.intl/property_provider.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.intl/property_provider.fidl#16)*
+
+ Provides internationalization properties.
+
+ Components that need to change their behavior in response to the user's internationalization
+ profile may request an instance of this service from their namespace, if available. A component
+ may choose to pass along the service that it received from its parent to its own children, or to
+ override it and apply additional customizations.
+
+ See also `fuchsia.ui.views.View`.
+
+### GetProfile {:#GetProfile}
+
+ Gets the user's internationalization profile.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>profile</code></td>
+            <td>
+                <code><a class='link' href='#Profile'>Profile</a></code>
+            </td>
+        </tr></table>
+
+### OnChange {:#OnChange}
+
+ Indicates that the properties may have changed and the client should query them again.
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
 
 
 ## **STRUCTS**
@@ -137,6 +180,90 @@
         </tr>
 </table>
 
+### LocaleId {:#LocaleId}
+*Defined in [fuchsia.intl/intl.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.intl/intl.fidl#18)*
+
+
+
+ Typed identifier for a single Locale, which is a set of internationalization-related properties.
+
+ Most APIs that consume locales will probably want to accept a vector of locales to account for
+ priority.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> Unicode BCP-47 Locale Identifier
+ (http://www.unicode.org/reports/tr35/#BCP_47_Conformance).
+
+ Must be canonicalized and well-formed. This field should not be populated from arbitrary
+ user- or third-party input, but instead generated programmatically.
+
+ Includes language, region, script, and variant, plus Unicode extensions (under the "u"
+ singleton). Other extensions are allowed but ignored.
+
+ Examples:
+   "en-US"
+     American English
+   "fr-u-hc-h12"
+     French, with 12-hour clock
+   "ar-EG-u-fw-mon-nu-latn"
+     Egyptian Arabic with "Latin" numerals and first day of week on Monday
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### CalendarId {:#CalendarId}
+*Defined in [fuchsia.intl/intl.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.intl/intl.fidl#39)*
+
+
+
+ Typed identifier for a single calendar system. Currently consists only of a calendar ID.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> Unicode BCP-47 Locale Identifier with an undefined language tag and a single extension
+ specifying the calendar ID (from
+ https://unicode.org/repos/cldr/trunk/common/bcp47/calendar.xml).
+
+ Examples:
+   "und-u-ca-gregory"
+   "und-u-ca-islamic"
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### TimeZoneId {:#TimeZoneId}
+*Defined in [fuchsia.intl/intl.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.intl/intl.fidl#51)*
+
+
+
+ Typed identifier for a time zone.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> Time zone ID from tzdata, e.g. "America/New_York". See https://www.iana.org/time-zones.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
 
 
 ## **ENUMS**
@@ -160,6 +287,25 @@
             <td></td>
         </tr></table>
 
+### TemperatureUnit {:#TemperatureUnit}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.intl/intl.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.intl/intl.fidl#57)*
+
+ Selection of temperature unit.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>CELSIUS</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>FAHRENHEIT</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr></table>
+
 
 
 ## **TABLES**
@@ -241,6 +387,83 @@
 </td>
         </tr></table>
 
+### RegulatoryDomain {:#RegulatoryDomain}
+
+
+*Defined in [fuchsia.intl/intl.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.intl/intl.fidl#8)*
+
+ Typed identifier for a regulatory domain as specified in the IEEE 802.11 standard.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>country_code</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> ISO 3166-1 alpha-2, a two-letter code representing a domain of operation.
+ (https://www.iso.org/publication/PUB500001.html)
+</td>
+        </tr></table>
+
+### Profile {:#Profile}
+
+
+*Defined in [fuchsia.intl/intl.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.intl/intl.fidl#69)*
+
+ A collection of ranked internationalization properties.
+
+ There is no implied origin for this information; it might come from a user account, device
+ settings, a synthesis of user settings and app-specific overrides, or anywhere else.
+
+ Language-independent properties that are supported by Unicode BCP-47 Locale IDs (e.g.
+ first-day-of-week, time zone) are denormalized into the locale IDs in `locales`.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>locales</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#LocaleId'>LocaleId</a>&gt;</code>
+            </td>
+            <td> Ranked list of locales (in descending order).
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>calendars</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#CalendarId'>CalendarId</a>&gt;</code>
+            </td>
+            <td> Ranked list of calendars (in descending order). The first entry is the primary calendar, and
+ will be equal to the calendar indicated in `locales`.
+ The list is intended for use by applications that can display multiple calendar systems.
+</td>
+        </tr><tr>
+            <td>3</td>
+            <td><code>time_zones</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#TimeZoneId'>TimeZoneId</a>&gt;</code>
+            </td>
+            <td> Ranked list of time zones (in descending order). The first entry is the primary time zone,
+ which should be used by default for formatting dates and times; it will be equal to the
+ calendar indicated in `locales`.
+ The list is intended for use by applications that can display multiple time zones, e.g.
+ a world clock.
+</td>
+        </tr><tr>
+            <td>4</td>
+            <td><code>temperature_unit</code></td>
+            <td>
+                <code><a class='link' href='#TemperatureUnit'>TemperatureUnit</a></code>
+            </td>
+            <td> Selected temperature unit.
+</td>
+        </tr></table>
+
 
 
 
diff --git a/sdk/fidl/fuchsia.io/index.md b/sdk/fidl/fuchsia.io/index.md
index b7ecb63..7d6f306 100644
--- a/sdk/fidl/fuchsia.io/index.md
+++ b/sdk/fidl/fuchsia.io/index.md
@@ -1958,6 +1958,1958 @@
             </td>
         </tr></table>
 
+## Node {:#Node}
+*Defined in [fuchsia.io/io.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#164)*
+
+ Node defines the minimal interface for entities which can be accessed in a filesystem.
+
+### Clone {:#Clone}
+
+ Create another connection to the same remote object.
+
+ `flags` may be any of:
+
+ - `OPEN_RIGHT_*`
+ - `OPEN_FLAG_APPEND`
+ - `OPEN_FLAG_NO_REMOTE`
+ - `OPEN_FLAG_DESCRIBE`
+ - `CLONE_FLAG_SAME_RIGHTS`
+
+ All other flags are ignored.
+
+ The `OPEN_RIGHT_*` bits in `flags` request corresponding rights over the resulting
+ cloned object.
+ The cloned object must have rights less than or equal to the original object.
+ Alternatively, pass `CLONE_FLAG_SAME_RIGHTS` to inherit the rights on the source connection.
+ It is invalid to pass any of the `OPEN_RIGHT_*` flags together with
+ `CLONE_FLAG_SAME_RIGHTS`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>flags</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>object</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#Node'>Node</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### Close {:#Close}
+
+ Terminates connection with object.
+
+ This method does not require any rights.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### Describe {:#Describe}
+
+ Returns extra information about the type of the object.
+ If the `Describe` operation fails, the connection is closed.
+
+ This method does not require any rights.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>info</code></td>
+            <td>
+                <code><a class='link' href='#NodeInfo'>NodeInfo</a></code>
+            </td>
+        </tr></table>
+
+### OnOpen {:#OnOpen}
+
+ An event produced eagerly by a FIDL server if requested by `OPEN_FLAG_DESCRIBE`.
+
+ Indicates the success or failure of the open operation, and optionally describes the
+ object. If the status is `ZX_OK`, `info` contains descriptive information about the object
+ (the same as would be returned by `Describe`).
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr><tr>
+            <td><code>info</code></td>
+            <td>
+                <code><a class='link' href='#NodeInfo'>NodeInfo</a>?</code>
+            </td>
+        </tr></table>
+
+### Sync {:#Sync}
+
+ Synchronizes updates to the node to the underlying media, if it exists.
+
+ This method does not require any rights.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### GetAttr {:#GetAttr}
+
+ Acquires information about the node.
+
+ This method does not require any rights.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr><tr>
+            <td><code>attributes</code></td>
+            <td>
+                <code><a class='link' href='#NodeAttributes'>NodeAttributes</a></code>
+            </td>
+        </tr></table>
+
+### SetAttr {:#SetAttr}
+
+ Updates information about the node.
+ `flags` may be any of `NODE_ATTRIBUTE_FLAG_*`.
+
+ This method requires following rights: `OPEN_RIGHT_WRITABLE`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>flags</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>attributes</code></td>
+            <td>
+                <code><a class='link' href='#NodeAttributes'>NodeAttributes</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+## File {:#File}
+*Defined in [fuchsia.io/io.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#299)*
+
+ File defines the interface of a node which contains a flat layout of data.
+
+### Clone {:#Clone}
+
+ Create another connection to the same remote object.
+
+ `flags` may be any of:
+
+ - `OPEN_RIGHT_*`
+ - `OPEN_FLAG_APPEND`
+ - `OPEN_FLAG_NO_REMOTE`
+ - `OPEN_FLAG_DESCRIBE`
+ - `CLONE_FLAG_SAME_RIGHTS`
+
+ All other flags are ignored.
+
+ The `OPEN_RIGHT_*` bits in `flags` request corresponding rights over the resulting
+ cloned object.
+ The cloned object must have rights less than or equal to the original object.
+ Alternatively, pass `CLONE_FLAG_SAME_RIGHTS` to inherit the rights on the source connection.
+ It is invalid to pass any of the `OPEN_RIGHT_*` flags together with
+ `CLONE_FLAG_SAME_RIGHTS`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>flags</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>object</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#Node'>Node</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### Close {:#Close}
+
+ Terminates connection with object.
+
+ This method does not require any rights.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### Describe {:#Describe}
+
+ Returns extra information about the type of the object.
+ If the `Describe` operation fails, the connection is closed.
+
+ This method does not require any rights.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>info</code></td>
+            <td>
+                <code><a class='link' href='#NodeInfo'>NodeInfo</a></code>
+            </td>
+        </tr></table>
+
+### OnOpen {:#OnOpen}
+
+ An event produced eagerly by a FIDL server if requested by `OPEN_FLAG_DESCRIBE`.
+
+ Indicates the success or failure of the open operation, and optionally describes the
+ object. If the status is `ZX_OK`, `info` contains descriptive information about the object
+ (the same as would be returned by `Describe`).
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr><tr>
+            <td><code>info</code></td>
+            <td>
+                <code><a class='link' href='#NodeInfo'>NodeInfo</a>?</code>
+            </td>
+        </tr></table>
+
+### Sync {:#Sync}
+
+ Synchronizes updates to the node to the underlying media, if it exists.
+
+ This method does not require any rights.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### GetAttr {:#GetAttr}
+
+ Acquires information about the node.
+
+ This method does not require any rights.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr><tr>
+            <td><code>attributes</code></td>
+            <td>
+                <code><a class='link' href='#NodeAttributes'>NodeAttributes</a></code>
+            </td>
+        </tr></table>
+
+### SetAttr {:#SetAttr}
+
+ Updates information about the node.
+ `flags` may be any of `NODE_ATTRIBUTE_FLAG_*`.
+
+ This method requires following rights: `OPEN_RIGHT_WRITABLE`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>flags</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>attributes</code></td>
+            <td>
+                <code><a class='link' href='#NodeAttributes'>NodeAttributes</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### Read {:#Read}
+
+ Reads `count` bytes at the seek offset.
+ The seek offset is moved forward by the number of bytes read.
+
+ This method requires following rights: `OPEN_RIGHT_READABLE`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>count</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr><tr>
+            <td><code>data</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;[8192]</code>
+            </td>
+        </tr></table>
+
+### ReadAt {:#ReadAt}
+
+ Reads `count` bytes at the provided offset.
+ Does not affect the seek offset.
+
+ This method requires following rights: `OPEN_RIGHT_READABLE`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>count</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr><tr>
+            <td><code>offset</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr><tr>
+            <td><code>data</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;[8192]</code>
+            </td>
+        </tr></table>
+
+### Write {:#Write}
+
+ Writes data at the seek offset.
+ The seek offset is moved forward by the number of bytes written.
+
+ This method requires following rights: `OPEN_RIGHT_WRITABLE`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>data</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;[8192]</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr><tr>
+            <td><code>actual</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr></table>
+
+### WriteAt {:#WriteAt}
+
+ Writes data to the provided offset.
+ Does not affect the seek offset.
+
+ This method requires following rights: `OPEN_RIGHT_WRITABLE`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>data</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;[8192]</code>
+            </td>
+        </tr><tr>
+            <td><code>offset</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr><tr>
+            <td><code>actual</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr></table>
+
+### Seek {:#Seek}
+
+ Moves the offset at which the next invocation of `Read()` or `Write()` will
+ occur.
+
+ This method does not require any rights.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>offset</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+        </tr><tr>
+            <td><code>start</code></td>
+            <td>
+                <code><a class='link' href='#SeekOrigin'>SeekOrigin</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr><tr>
+            <td><code>offset</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr></table>
+
+### Truncate {:#Truncate}
+
+ Shrinks the file size to 'length' bytes.
+
+ This method requires following rights: `OPEN_RIGHT_WRITABLE`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>length</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### GetFlags {:#GetFlags}
+
+ Acquires the `Directory.Open` rights and flags used to access this file.
+
+ This method does not require any rights.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr><tr>
+            <td><code>flags</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr></table>
+
+### SetFlags {:#SetFlags}
+
+ Changes the `Directory.Open` flags used to access the file.
+ Supported flags which can be turned on / off:
+ - `OPEN_FLAG_APPEND`
+
+ This method does not require any rights.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>flags</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### GetBuffer {:#GetBuffer}
+
+ Acquires a buffer representing this file, if there is one, with the
+ requested access rights.
+
+ `flags` may be any of `VMO_FLAG_*`.
+
+ This method requires following rights:
+
+ - `OPEN_RIGHT_WRITABLE` if `flags` includes `VMO_FLAG_WRITE`.
+ - `OPEN_RIGHT_READABLE` if `flags` includes `VMO_FLAG_READ` or `VMO_FLAG_EXEC`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>flags</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr><tr>
+            <td><code>buffer</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.mem/index.html'>fuchsia.mem</a>/<a class='link' href='../fuchsia.mem/index.html#Buffer'>Buffer</a>?</code>
+            </td>
+        </tr></table>
+
+## DirectoryWatcher {:#DirectoryWatcher}
+*Defined in [fuchsia.io/io.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#419)*
+
+ DirectoryWatcher transmits messages from a filesystem server
+ about events happening in the filesystem. Clients can register
+ new watchers using the `Directory.Watch` method, where they can
+ filter which events they want to receive notifications for.
+
+### OnEvent {:#OnEvent}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>events</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;[8192]</code>
+            </td>
+        </tr></table>
+
+
+
+## Directory {:#Directory}
+*Defined in [fuchsia.io/io.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#426)*
+
+ Directory defines a node which is capable of containing other Objects.
+
+### Clone {:#Clone}
+
+ Create another connection to the same remote object.
+
+ `flags` may be any of:
+
+ - `OPEN_RIGHT_*`
+ - `OPEN_FLAG_APPEND`
+ - `OPEN_FLAG_NO_REMOTE`
+ - `OPEN_FLAG_DESCRIBE`
+ - `CLONE_FLAG_SAME_RIGHTS`
+
+ All other flags are ignored.
+
+ The `OPEN_RIGHT_*` bits in `flags` request corresponding rights over the resulting
+ cloned object.
+ The cloned object must have rights less than or equal to the original object.
+ Alternatively, pass `CLONE_FLAG_SAME_RIGHTS` to inherit the rights on the source connection.
+ It is invalid to pass any of the `OPEN_RIGHT_*` flags together with
+ `CLONE_FLAG_SAME_RIGHTS`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>flags</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>object</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#Node'>Node</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### Close {:#Close}
+
+ Terminates connection with object.
+
+ This method does not require any rights.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### Describe {:#Describe}
+
+ Returns extra information about the type of the object.
+ If the `Describe` operation fails, the connection is closed.
+
+ This method does not require any rights.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>info</code></td>
+            <td>
+                <code><a class='link' href='#NodeInfo'>NodeInfo</a></code>
+            </td>
+        </tr></table>
+
+### OnOpen {:#OnOpen}
+
+ An event produced eagerly by a FIDL server if requested by `OPEN_FLAG_DESCRIBE`.
+
+ Indicates the success or failure of the open operation, and optionally describes the
+ object. If the status is `ZX_OK`, `info` contains descriptive information about the object
+ (the same as would be returned by `Describe`).
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr><tr>
+            <td><code>info</code></td>
+            <td>
+                <code><a class='link' href='#NodeInfo'>NodeInfo</a>?</code>
+            </td>
+        </tr></table>
+
+### Sync {:#Sync}
+
+ Synchronizes updates to the node to the underlying media, if it exists.
+
+ This method does not require any rights.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### GetAttr {:#GetAttr}
+
+ Acquires information about the node.
+
+ This method does not require any rights.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr><tr>
+            <td><code>attributes</code></td>
+            <td>
+                <code><a class='link' href='#NodeAttributes'>NodeAttributes</a></code>
+            </td>
+        </tr></table>
+
+### SetAttr {:#SetAttr}
+
+ Updates information about the node.
+ `flags` may be any of `NODE_ATTRIBUTE_FLAG_*`.
+
+ This method requires following rights: `OPEN_RIGHT_WRITABLE`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>flags</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>attributes</code></td>
+            <td>
+                <code><a class='link' href='#NodeAttributes'>NodeAttributes</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### Open {:#Open}
+
+ Opens a new object relative to this directory object.
+
+ `path` may contain multiple segments, separated by "/" characters,
+ and should never be empty; i.e., "" is an invalid path.
+
+ `flags` may be any of the `OPEN_FLAG_*` and `OPEN_RIGHT_*` values, bitwise ORed together.
+ The `OPEN_FLAG_DESCRIBE` flag may cause an `OnOpen` event to be transmitted
+ on the `object` handle, indicating the type of object opened.
+
+ If an unknown value is sent for either flags or mode, the connection should
+ be closed.
+
+ `OPEN_RIGHT_*` flags provided in `flags` will restrict access rights on
+ the `object` channel which will be connected to the opened entity.
+
+ Rights are never increased. When you open a nested entity within a directory, you may only
+ request the same rights as what the directory connection already has, or a subset of those.
+ Exceeding those rights causes an access denied error to be transmitted in the
+ `OnOpen` event if applicable, and the `object` connection closed.
+
+ The caller must specify either one or more of the `OPEN_RIGHT_*` flags, or
+ the `OPEN_FLAG_NODE_REFERENCE` flag.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>flags</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>mode</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>path</code></td>
+            <td>
+                <code>string[4096]</code>
+            </td>
+        </tr><tr>
+            <td><code>object</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#Node'>Node</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### Unlink {:#Unlink}
+
+ Detaches an object from this directory object.
+
+ The underlying object may or may not be deleted after this method
+ completes: although the link will be removed from the containing directory,
+ objects with multiple references (such as files which are still open)
+ will not actually be destroyed until all references are removed.
+
+ If a directory is unlinked while it still has an open reference,
+ it must become read-only, preventing new entries from being created
+ until all references close and the directory is destroyed.
+
+ `path` identifies the file which should be detached.
+ If `path` contains multiple segments, separated by "/" characters,
+ then the directory is traversed, one segment at a time, relative to the
+ originally accessed Directory.
+
+ Returns:
+   `ZX_ERR_ACCESS_DENIED` if the connection (or the underlying filesystem) does not
+     allow writable access.
+   `ZX_ERR_INVALID_ARGS` if `path` contains ".." segments.
+   `ZX_ERR_NOT_EMPTY` if `path` refers to a non-empty directory.
+   `ZX_ERR_UNAVAILABLE` if `path` refers to a mount point, containing a remote channel.
+   `ZX_ERR_UNAVAILABLE` if `path` is ".".
+
+ Other errors may be returned for filesystem-specific reasons.
+
+ This method requires following rights: `OPEN_RIGHT_WRITABLE`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>path</code></td>
+            <td>
+                <code>string[4096]</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### ReadDirents {:#ReadDirents}
+
+ Reads a collection of variably sized dirents into a buffer.
+ The number of dirents in a directory may be very large: akin to
+ calling read multiple times on a file, directories have a seek
+ offset which is updated on subsequent calls to ReadDirents.
+
+ These dirents are of the form:
+ ```
+ struct dirent {
+   // Describes the inode of the entry.
+   uint64 ino;
+   // Describes the length of the dirent name in bytes.
+   uint8 size;
+   // Describes the type of the entry. Aligned with the
+   // POSIX d_type values. Use `DIRENT_TYPE_*` constants.
+   uint8 type;
+   // Unterminated name of entry.
+   char name[0];
+ }
+ ```
+
+ This method does not require any rights, since one could always probe for
+ directory contents by triggering name conflicts during file creation.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>max_bytes</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr><tr>
+            <td><code>dirents</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;[8192]</code>
+            </td>
+        </tr></table>
+
+### Rewind {:#Rewind}
+
+ Resets the directory seek offset.
+
+ This method does not require any rights, similar to ReadDirents.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### GetToken {:#GetToken}
+
+ Acquires a token to a Directory which can be used to identify
+ access to it at a later point in time.
+
+ This method requires following rights: `OPEN_RIGHT_WRITABLE`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr><tr>
+            <td><code>token</code></td>
+            <td>
+                <code>handle&lt;handle&gt;?</code>
+            </td>
+        </tr></table>
+
+### Rename {:#Rename}
+
+ Renames an object named src to the name dst, in a directory represented by token.
+
+ `src/dst` must be resolved object names. Including "/" in any position
+ other than the end of the string will return `ZX_ERR_INVALID_ARGS`.
+ Returning "/" at the end of either string implies that it must be a
+ directory, or else `ZX_ERR_NOT_DIR` should be returned.
+
+ This method requires following rights: `OPEN_RIGHT_WRITABLE`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>src</code></td>
+            <td>
+                <code>string[4096]</code>
+            </td>
+        </tr><tr>
+            <td><code>dst_parent_token</code></td>
+            <td>
+                <code>handle&lt;handle&gt;</code>
+            </td>
+        </tr><tr>
+            <td><code>dst</code></td>
+            <td>
+                <code>string[4096]</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### Link {:#Link}
+
+ Creates a link to an object named src by the name dst, within a directory represented by
+ token.
+
+ `src` must be a resolved object name. Including "/" in the string will
+ return `ZX_ERR_INVALID_ARGS`.
+
+ `dst` must be a resolved object name. Including "/" in the string will
+ return `ZX_ERR_INVALID_ARGS`.
+
+ This method requires following rights: `OPEN_RIGHT_WRITABLE`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>src</code></td>
+            <td>
+                <code>string[4096]</code>
+            </td>
+        </tr><tr>
+            <td><code>dst_parent_token</code></td>
+            <td>
+                <code>handle&lt;handle&gt;</code>
+            </td>
+        </tr><tr>
+            <td><code>dst</code></td>
+            <td>
+                <code>string[4096]</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### Watch {:#Watch}
+
+ Watches a directory, receiving events of added messages on the
+ watcher request channel.
+
+ The `watcher` handle will send messages of the form:
+ ```
+ struct {
+   uint8 event;
+   uint8 len;
+   char name[];
+ };
+ ```
+ Where names are NOT null-terminated.
+
+ This API is unstable; in the future, watcher will be a `DirectoryWatcher` client.
+
+ Mask specifies a bitmask of events to observe.
+ Options must be zero; it is reserved.
+
+ This method does not require any rights, similar to ReadDirents.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>mask</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>options</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>watcher</code></td>
+            <td>
+                <code>handle&lt;channel&gt;</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+## DirectoryAdmin {:#DirectoryAdmin}
+*Defined in [fuchsia.io/io.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#602)*
+
+ DirectoryAdmin defines a directory which is capable of handling
+ administrator tasks within the filesystem.
+
+### Clone {:#Clone}
+
+ Create another connection to the same remote object.
+
+ `flags` may be any of:
+
+ - `OPEN_RIGHT_*`
+ - `OPEN_FLAG_APPEND`
+ - `OPEN_FLAG_NO_REMOTE`
+ - `OPEN_FLAG_DESCRIBE`
+ - `CLONE_FLAG_SAME_RIGHTS`
+
+ All other flags are ignored.
+
+ The `OPEN_RIGHT_*` bits in `flags` request corresponding rights over the resulting
+ cloned object.
+ The cloned object must have rights less than or equal to the original object.
+ Alternatively, pass `CLONE_FLAG_SAME_RIGHTS` to inherit the rights on the source connection.
+ It is invalid to pass any of the `OPEN_RIGHT_*` flags together with
+ `CLONE_FLAG_SAME_RIGHTS`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>flags</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>object</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#Node'>Node</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### Close {:#Close}
+
+ Terminates connection with object.
+
+ This method does not require any rights.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### Describe {:#Describe}
+
+ Returns extra information about the type of the object.
+ If the `Describe` operation fails, the connection is closed.
+
+ This method does not require any rights.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>info</code></td>
+            <td>
+                <code><a class='link' href='#NodeInfo'>NodeInfo</a></code>
+            </td>
+        </tr></table>
+
+### OnOpen {:#OnOpen}
+
+ An event produced eagerly by a FIDL server if requested by `OPEN_FLAG_DESCRIBE`.
+
+ Indicates the success or failure of the open operation, and optionally describes the
+ object. If the status is `ZX_OK`, `info` contains descriptive information about the object
+ (the same as would be returned by `Describe`).
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr><tr>
+            <td><code>info</code></td>
+            <td>
+                <code><a class='link' href='#NodeInfo'>NodeInfo</a>?</code>
+            </td>
+        </tr></table>
+
+### Sync {:#Sync}
+
+ Synchronizes updates to the node to the underlying media, if it exists.
+
+ This method does not require any rights.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### GetAttr {:#GetAttr}
+
+ Acquires information about the node.
+
+ This method does not require any rights.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr><tr>
+            <td><code>attributes</code></td>
+            <td>
+                <code><a class='link' href='#NodeAttributes'>NodeAttributes</a></code>
+            </td>
+        </tr></table>
+
+### SetAttr {:#SetAttr}
+
+ Updates information about the node.
+ `flags` may be any of `NODE_ATTRIBUTE_FLAG_*`.
+
+ This method requires following rights: `OPEN_RIGHT_WRITABLE`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>flags</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>attributes</code></td>
+            <td>
+                <code><a class='link' href='#NodeAttributes'>NodeAttributes</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### Open {:#Open}
+
+ Opens a new object relative to this directory object.
+
+ `path` may contain multiple segments, separated by "/" characters,
+ and should never be empty; i.e., "" is an invalid path.
+
+ `flags` may be any of the `OPEN_FLAG_*` and `OPEN_RIGHT_*` values, bitwise ORed together.
+ The `OPEN_FLAG_DESCRIBE` flag may cause an `OnOpen` event to be transmitted
+ on the `object` handle, indicating the type of object opened.
+
+ If an unknown value is sent for either flags or mode, the connection should
+ be closed.
+
+ `OPEN_RIGHT_*` flags provided in `flags` will restrict access rights on
+ the `object` channel which will be connected to the opened entity.
+
+ Rights are never increased. When you open a nested entity within a directory, you may only
+ request the same rights as what the directory connection already has, or a subset of those.
+ Exceeding those rights causes an access denied error to be transmitted in the
+ `OnOpen` event if applicable, and the `object` connection closed.
+
+ The caller must specify either one or more of the `OPEN_RIGHT_*` flags, or
+ the `OPEN_FLAG_NODE_REFERENCE` flag.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>flags</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>mode</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>path</code></td>
+            <td>
+                <code>string[4096]</code>
+            </td>
+        </tr><tr>
+            <td><code>object</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#Node'>Node</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### Unlink {:#Unlink}
+
+ Detaches an object from this directory object.
+
+ The underlying object may or may not be deleted after this method
+ completes: although the link will be removed from the containing directory,
+ objects with multiple references (such as files which are still open)
+ will not actually be destroyed until all references are removed.
+
+ If a directory is unlinked while it still has an open reference,
+ it must become read-only, preventing new entries from being created
+ until all references close and the directory is destroyed.
+
+ `path` identifies the file which should be detached.
+ If `path` contains multiple segments, separated by "/" characters,
+ then the directory is traversed, one segment at a time, relative to the
+ originally accessed Directory.
+
+ Returns:
+   `ZX_ERR_ACCESS_DENIED` if the connection (or the underlying filesystem) does not
+     allow writable access.
+   `ZX_ERR_INVALID_ARGS` if `path` contains ".." segments.
+   `ZX_ERR_NOT_EMPTY` if `path` refers to a non-empty directory.
+   `ZX_ERR_UNAVAILABLE` if `path` refers to a mount point, containing a remote channel.
+   `ZX_ERR_UNAVAILABLE` if `path` is ".".
+
+ Other errors may be returned for filesystem-specific reasons.
+
+ This method requires following rights: `OPEN_RIGHT_WRITABLE`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>path</code></td>
+            <td>
+                <code>string[4096]</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### ReadDirents {:#ReadDirents}
+
+ Reads a collection of variably sized dirents into a buffer.
+ The number of dirents in a directory may be very large: akin to
+ calling read multiple times on a file, directories have a seek
+ offset which is updated on subsequent calls to ReadDirents.
+
+ These dirents are of the form:
+ ```
+ struct dirent {
+   // Describes the inode of the entry.
+   uint64 ino;
+   // Describes the length of the dirent name in bytes.
+   uint8 size;
+   // Describes the type of the entry. Aligned with the
+   // POSIX d_type values. Use `DIRENT_TYPE_*` constants.
+   uint8 type;
+   // Unterminated name of entry.
+   char name[0];
+ }
+ ```
+
+ This method does not require any rights, since one could always probe for
+ directory contents by triggering name conflicts during file creation.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>max_bytes</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr><tr>
+            <td><code>dirents</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;[8192]</code>
+            </td>
+        </tr></table>
+
+### Rewind {:#Rewind}
+
+ Resets the directory seek offset.
+
+ This method does not require any rights, similar to ReadDirents.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### GetToken {:#GetToken}
+
+ Acquires a token to a Directory which can be used to identify
+ access to it at a later point in time.
+
+ This method requires following rights: `OPEN_RIGHT_WRITABLE`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr><tr>
+            <td><code>token</code></td>
+            <td>
+                <code>handle&lt;handle&gt;?</code>
+            </td>
+        </tr></table>
+
+### Rename {:#Rename}
+
+ Renames an object named src to the name dst, in a directory represented by token.
+
+ `src/dst` must be resolved object names. Including "/" in any position
+ other than the end of the string will return `ZX_ERR_INVALID_ARGS`.
+ Returning "/" at the end of either string implies that it must be a
+ directory, or else `ZX_ERR_NOT_DIR` should be returned.
+
+ This method requires following rights: `OPEN_RIGHT_WRITABLE`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>src</code></td>
+            <td>
+                <code>string[4096]</code>
+            </td>
+        </tr><tr>
+            <td><code>dst_parent_token</code></td>
+            <td>
+                <code>handle&lt;handle&gt;</code>
+            </td>
+        </tr><tr>
+            <td><code>dst</code></td>
+            <td>
+                <code>string[4096]</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### Link {:#Link}
+
+ Creates a link to an object named src by the name dst, within a directory represented by
+ token.
+
+ `src` must be a resolved object name. Including "/" in the string will
+ return `ZX_ERR_INVALID_ARGS`.
+
+ `dst` must be a resolved object name. Including "/" in the string will
+ return `ZX_ERR_INVALID_ARGS`.
+
+ This method requires following rights: `OPEN_RIGHT_WRITABLE`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>src</code></td>
+            <td>
+                <code>string[4096]</code>
+            </td>
+        </tr><tr>
+            <td><code>dst_parent_token</code></td>
+            <td>
+                <code>handle&lt;handle&gt;</code>
+            </td>
+        </tr><tr>
+            <td><code>dst</code></td>
+            <td>
+                <code>string[4096]</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### Watch {:#Watch}
+
+ Watches a directory, receiving events of added messages on the
+ watcher request channel.
+
+ The `watcher` handle will send messages of the form:
+ ```
+ struct {
+   uint8 event;
+   uint8 len;
+   char name[];
+ };
+ ```
+ Where names are NOT null-terminated.
+
+ This API is unstable; in the future, watcher will be a `DirectoryWatcher` client.
+
+ Mask specifies a bitmask of events to observe.
+ Options must be zero; it is reserved.
+
+ This method does not require any rights, similar to ReadDirents.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>mask</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>options</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>watcher</code></td>
+            <td>
+                <code>handle&lt;channel&gt;</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### Mount {:#Mount}
+
+ Mount a channel representing a remote filesystem onto this directory.
+ All future requests to this node will be forwarded to the remote filesystem.
+ To re-open a node without forwarding to the remote target, the node
+ should be opened with `OPEN_FLAG_NO_REMOTE`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>remote</code></td>
+            <td>
+                <code><a class='link' href='#Directory'>Directory</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### MountAndCreate {:#MountAndCreate}
+
+ Atomically create a directory with a provided path, and mount the
+ remote handle to the newly created directory.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>remote</code></td>
+            <td>
+                <code><a class='link' href='#Directory'>Directory</a></code>
+            </td>
+        </tr><tr>
+            <td><code>name</code></td>
+            <td>
+                <code>string[255]</code>
+            </td>
+        </tr><tr>
+            <td><code>flags</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### Unmount {:#Unmount}
+
+ Unmount this filesystem. After this function returns successfully,
+ all connections to the filesystem will be terminated.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### UnmountNode {:#UnmountNode}
+
+ Detach a node which was previously attached to this directory
+ with Mount.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr><tr>
+            <td><code>remote</code></td>
+            <td>
+                <code><a class='link' href='#Directory'>Directory</a>?</code>
+            </td>
+        </tr></table>
+
+### QueryFilesystem {:#QueryFilesystem}
+
+ Query the filesystem for filesystem-specific information.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr><tr>
+            <td><code>info</code></td>
+            <td>
+                <code><a class='link' href='#FilesystemInfo'>FilesystemInfo</a>?</code>
+            </td>
+        </tr></table>
+
+### GetDevicePath {:#GetDevicePath}
+
+ Acquire the path to the device backing this filesystem, if there is one.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr><tr>
+            <td><code>path</code></td>
+            <td>
+                <code>string[4096]?</code>
+            </td>
+        </tr></table>
+
 
 
 ## **STRUCTS**
@@ -2330,6 +4282,374 @@
         </tr>
 </table>
 
+### Service {:#Service}
+*Defined in [fuchsia.io/io.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#27)*
+
+
+
+ The default protocol, interface information must be acquired some
+ other way.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr>
+</table>
+
+### FileObject {:#FileObject}
+*Defined in [fuchsia.io/io.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#36)*
+
+
+
+ The object may be cast to interface 'File'.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>event</code></td>
+            <td>
+                <code>handle&lt;event&gt;?</code>
+            </td>
+            <td> An optional event which transmits information about an object's readability
+ or writability. This event relays information about the underlying object, not
+ the capability granted to client: this event may be signalled "readable" on a
+ connection that does not have the capability to read.
+
+ The "`FILE_SIGNAL_`" values may be observed on this event.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### DirectoryObject {:#DirectoryObject}
+*Defined in [fuchsia.io/io.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#47)*
+
+
+
+ The object may be cast to interface 'Directory'.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr>
+</table>
+
+### Pipe {:#Pipe}
+*Defined in [fuchsia.io/io.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#51)*
+
+
+
+ The object is accompanied by a pipe.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>socket</code></td>
+            <td>
+                <code>handle&lt;socket&gt;</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Socket {:#Socket}
+*Defined in [fuchsia.io/io.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#56)*
+
+
+
+ The object is accompanied by a socket.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>socket</code></td>
+            <td>
+                <code>handle&lt;socket&gt;</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Vmofile {:#Vmofile}
+*Defined in [fuchsia.io/io.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#64)*
+
+
+
+ The object is a file which is represented as an immutable VMO.
+ Although a VMO is returned as a part of this structure, this underlying object
+ may represent multiple Vmofiles. To identify the logical portion of the VMO
+ that represents the single file, an offset and length parameter are also supplied.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>vmo</code></td>
+            <td>
+                <code>handle&lt;vmo&gt;</code>
+            </td>
+            <td> The VMO which backs this file.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>offset</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> The index into `vmo` which represents the first byte of the file.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>length</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> The number of bytes, starting at `offset`, which may be used to represent this file.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Device {:#Device}
+*Defined in [fuchsia.io/io.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#85)*
+
+
+
+ The object may be cast to interface 'Device'.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>event</code></td>
+            <td>
+                <code>handle&lt;eventpair&gt;?</code>
+            </td>
+            <td> An optional event which transmits information about a device's state.
+
+ The "`DEVICE_SIGNAL_`" values may be observed on this event.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Tty {:#Tty}
+*Defined in [fuchsia.io/io.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#93)*
+
+
+
+ The object may be cast to interface 'Tty'
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>event</code></td>
+            <td>
+                <code>handle&lt;eventpair&gt;?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### NodeAttributes {:#NodeAttributes}
+*Defined in [fuchsia.io/io.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#236)*
+
+
+
+ NodeAttributes defines generic information about a filesystem node.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>mode</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> Protection bits and node type information describe in 'mode'.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> A filesystem-unique ID.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>content_size</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> Node size, in bytes.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>storage_size</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> Space needed to store node (possibly larger than size), in bytes.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>link_count</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> Hard link count.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>creation_time</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> Time of creation (may be updated manually after creation) in ns since Unix epoch, UTC.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>modification_time</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> Time of last modification in ns since Unix epoch, UTC.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### WatchedEvent {:#WatchedEvent}
+*Defined in [fuchsia.io/io.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#407)*
+
+
+
+ WatchedEvent describes events returned from a DirectoryWatcher.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>event</code></td>
+            <td>
+                <code>uint8</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>len</code></td>
+            <td>
+                <code>uint8</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>name</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;[255]</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### FilesystemInfo {:#FilesystemInfo}
+*Defined in [fuchsia.io/io.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#571)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>total_bytes</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> The number of data bytes which may be stored in a filesystem.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>used_bytes</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> The number of data bytes which are in use by the filesystem.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>total_nodes</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> The number of nodes which may be stored in the filesystem.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>used_nodes</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> The number of nodes used by the filesystem.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>free_shared_pool_bytes</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> The amount of space which may be allocated from the underlying
+ volume manager. If unsupported, this will be zero.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>fs_id</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> A unique identifier for this filesystem instance. Will not be preserved
+ across reboots.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>block_size</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> The size of a single filesystem block.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>max_filename_size</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> The maximum length of a filesystem name.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>fs_type</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> A unique identifier for the type of the underlying filesystem.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>padding</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>name</code></td>
+            <td>
+                <code>int8[32]</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
 
 
 ## **ENUMS**
@@ -2346,18 +4666,38 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>START</code></td>
             <td><code>0</code></td>
-            <td> Seek from the start of the file.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>CURRENT</code></td>
             <td><code>1</code></td>
-            <td> Seek from the current position in the file.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>END</code></td>
             <td><code>2</code></td>
-            <td> Seek from the end of the file.
-</td>
+            <td></td>
+        </tr></table>
+
+### SeekOrigin {:#SeekOrigin}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.io/io.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#269)*
+
+ Update the Seek offset.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>START</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>CURRENT</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>END</code></td>
+            <td><code>2</code></td>
+            <td></td>
         </tr></table>
 
 
@@ -2425,6 +4765,65 @@
             <td></td>
         </tr></table>
 
+### NodeInfo {:#NodeInfo}
+*Defined in [fuchsia.io/io.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#14)*
+
+ Describes how the connection to an should be handled, as well as
+ how to interpret the optional handle.
+
+ Refer to `Node.Describe()` and `Node.OnOpen()` for usage.
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>service</code></td>
+            <td>
+                <code><a class='link' href='#Service'>Service</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>file</code></td>
+            <td>
+                <code><a class='link' href='#FileObject'>FileObject</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>directory</code></td>
+            <td>
+                <code><a class='link' href='#DirectoryObject'>DirectoryObject</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>pipe</code></td>
+            <td>
+                <code><a class='link' href='#Pipe'>Pipe</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>vmofile</code></td>
+            <td>
+                <code><a class='link' href='#Vmofile'>Vmofile</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>device</code></td>
+            <td>
+                <code><a class='link' href='#Device'>Device</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>tty</code></td>
+            <td>
+                <code><a class='link' href='#Tty'>Tty</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>socket</code></td>
+            <td>
+                <code><a class='link' href='#Socket'>Socket</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
 
 
 
@@ -3009,6 +5408,581 @@
                 <td><code>uint64</code></td>
             <td></td>
         </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#31">FILE_SIGNAL_READABLE</a></td>
+            <td>
+                    <code>16777216</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Indicates the file is ready for reading.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#33">FILE_SIGNAL_WRITABLE</a></td>
+            <td>
+                    <code>33554432</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Indicates the file is ready for writing.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#74">DEVICE_SIGNAL_READABLE</a></td>
+            <td>
+                    <code>16777216</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Indicates the device is ready for reading.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#76">DEVICE_SIGNAL_OOB</a></td>
+            <td>
+                    <code>33554432</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Indicates an out-of-band state transition has occurred.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#78">DEVICE_SIGNAL_WRITABLE</a></td>
+            <td>
+                    <code>67108864</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Indicates the device is ready for writing.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#80">DEVICE_SIGNAL_ERROR</a></td>
+            <td>
+                    <code>134217728</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Indicates the device has encountered an error state.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#82">DEVICE_SIGNAL_HANGUP</a></td>
+            <td>
+                    <code>268435456</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Indicates the device has hung up on the current connection.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#98">OPEN_RIGHT_READABLE</a></td>
+            <td>
+                    <code>1</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Can read from target object.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#100">OPEN_RIGHT_WRITABLE</a></td>
+            <td>
+                    <code>2</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Can write to target object.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#102">OPEN_RIGHT_ADMIN</a></td>
+            <td>
+                    <code>4</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Connection can mount/umount filesystem.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#104">OPEN_RIGHT_EXECUTABLE</a></td>
+            <td>
+                    <code>8</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Connection can map target object executable.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#107">OPEN_FLAG_CREATE</a></td>
+            <td>
+                    <code>65536</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Create the object if it doesn't exist.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#109">OPEN_FLAG_CREATE_IF_ABSENT</a></td>
+            <td>
+                    <code>131072</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> (with Create) Fail if the object already exists.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#111">OPEN_FLAG_TRUNCATE</a></td>
+            <td>
+                    <code>262144</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Truncate the object before usage.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#114">OPEN_FLAG_DIRECTORY</a></td>
+            <td>
+                    <code>524288</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Assert that the object to be opened is a directory.
+ Return an error if the target object is not a directory.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#116">OPEN_FLAG_APPEND</a></td>
+            <td>
+                    <code>1048576</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Seek to the end of the object before all writes.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#118">OPEN_FLAG_NO_REMOTE</a></td>
+            <td>
+                    <code>2097152</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> If the object is a mount point, open the local directory.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#129">OPEN_FLAG_NODE_REFERENCE</a></td>
+            <td>
+                    <code>4194304</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Open a reference to the object, not the object itself.
+ It is ONLY valid to pass the following flags together with `OPEN_FLAG_NODE_REFERENCE`:
+ - `OPEN_FLAG_DIRECTORY`
+ - `OPEN_FLAG_NOT_DIRECTORY`
+ - `OPEN_FLAG_DESCRIBE`
+ otherwise an error is returned.
+ If an object is opened or cloned using this method, the resulting connection does not carry
+ any permission flags.
+ The resulting node allows a limited set of operations: `GetAttr`, `Clone`, `Close`, `Describe`,
+ and, if the node is a file, these extra operations: `GetFlags`, `SetFlags`.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#132">OPEN_FLAGS_ALLOWED_WITH_NODE_REFERENCE</a></td>
+            <td>
+                    <code>46661632</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Binary OR of `OPEN_FLAG_DIRECTORY`, OPEN_FLAG_NOT_DIRECTORY, OPEN_FLAG_DESCRIBE, and
+ `OPEN_FLAG_NODE_REFERENCE`. Flags used when opening a node reference must fall within this mask.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#135">OPEN_FLAG_DESCRIBE</a></td>
+            <td>
+                    <code>8388608</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Requests that an "OnOpen" event is sent to the interface request.
+ The event will contain a non-null NodeInfo if the open/clone is successful.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#153">OPEN_FLAG_POSIX</a></td>
+            <td>
+                    <code>16777216</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Specify this flag to request POSIX-compatibility. Currently, it affects permission handling.
+ During Open:
+ - If the target path is a directory, the rights on the new connection expand to include
+   `OPEN_RIGHT_WRITABLE` if and only if the current connection and all intermediate mount points
+   are writable, and to include `OPEN_RIGHT_EXECUTABLE` if and only if the current connection and
+   all intermediate mount points are executable.
+ - Otherwise, this flag is ignored. It is an access denied error to request more rights
+   than those on the current connection, or any intermediate mount points.
+
+ If the posix compatibility flag is not specified, opening always uses the requested rights,
+ failing the operation with access denied error if requested rights exceeds the rights attached
+ to the current connection.
+
+ If the requesting connection is read-only and the requested rights are read-only, the flag
+ may be ignored by the server, and is not forwarded downstream. This is an implementation detail,
+ necessary to enforce hierarchical permissions across mount points, and should have no effect
+ on the expected behavior for clients.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#156">OPEN_FLAG_NOT_DIRECTORY</a></td>
+            <td>
+                    <code>33554432</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Assert that the object to be opened is not a directory.
+ Return an error if the target object is a directory.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#160">CLONE_FLAG_SAME_RIGHTS</a></td>
+            <td>
+                    <code>67108864</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> When used during clone, the new connection inherits the rights on the source connection,
+ regardless if it is a file or directory. Otherwise, clone attempts to use the requested rights.
+ It is invalid to pass any of the `OPEN_RIGHT_*` flags together with `CLONE_FLAG_SAME_RIGHTS`.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#224">MODE_PROTECTION_MASK</a></td>
+            <td>
+                    <code>4095</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Bits reserved for posix protections. Native fuchsia filesystems
+ are not required to set bits contained within `MODE_PROTECTION_MASK`,
+ but filesystems that wish to do so may refer to sys/stat.h for their
+ definitions.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#228">MODE_TYPE_MASK</a></td>
+            <td>
+                    <code>1044480</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Bits indicating node type. The canonical mechanism to check
+ for a node type is to take 'mode', bitwise AND it with the
+ `MODE_TYPE_MASK`, and check exact equality against a mode type.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#229">MODE_TYPE_DIRECTORY</a></td>
+            <td>
+                    <code>16384</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#230">MODE_TYPE_BLOCK_DEVICE</a></td>
+            <td>
+                    <code>24576</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#231">MODE_TYPE_FILE</a></td>
+            <td>
+                    <code>32768</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#232">MODE_TYPE_SOCKET</a></td>
+            <td>
+                    <code>49152</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#233">MODE_TYPE_SERVICE</a></td>
+            <td>
+                    <code>65536</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#255">MAX_BUF</a></td>
+            <td>
+                    <code>8192</code>
+                </td>
+                <td><code>uint64</code></td>
+            <td> The maximal buffer size which can be transmitted for buffered operations.
+ This capacity is currently set somewhat arbitrarily.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#259">MAX_PATH</a></td>
+            <td>
+                    <code>4096</code>
+                </td>
+                <td><code>uint64</code></td>
+            <td> The maximum length, in bytes, of a filesystem string.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#261">MAX_FILENAME</a></td>
+            <td>
+                    <code>255</code>
+                </td>
+                <td><code>uint64</code></td>
+            <td> The maximum length, in bytes, of a single filesystem component.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#265">NODE_ATTRIBUTE_FLAG_CREATION_TIME</a></td>
+            <td>
+                    <code>1</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> The fields of 'attributes' which are used to update the Node are indicated
+ by the 'flags' argument.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#266">NODE_ATTRIBUTE_FLAG_MODIFICATION_TIME</a></td>
+            <td>
+                    <code>2</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#279">VMO_FLAG_READ</a></td>
+            <td>
+                    <code>1</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Requests that the VMO be readable.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#282">VMO_FLAG_WRITE</a></td>
+            <td>
+                    <code>2</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Requests that the VMO be writable.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#285">VMO_FLAG_EXEC</a></td>
+            <td>
+                    <code>4</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Requests that the VMO be executable.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#290">VMO_FLAG_PRIVATE</a></td>
+            <td>
+                    <code>65536</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Require a copy-on-write clone of the underlying VMO.
+ The request should fail if the VMO is not cloned.
+ May not be supplied with fuchsia_io_`VMO_FLAG_EXACT`.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#295">VMO_FLAG_EXACT</a></td>
+            <td>
+                    <code>131072</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Require an exact (non-cloned) handle to the underlying VMO.
+ The request should fail if a handle to the exact VMO is not returned.
+ May not be supplied with `VMO_FLAG_PRIVATE`.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#365">DIRENT_TYPE_UNKNOWN</a></td>
+            <td>
+                    <code>0</code>
+                </td>
+                <td><code>uint8</code></td>
+            <td> A dirent with an unknown type.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#367">DIRENT_TYPE_DIRECTORY</a></td>
+            <td>
+                    <code>4</code>
+                </td>
+                <td><code>uint8</code></td>
+            <td> A dirent representing a directory object.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#369">DIRENT_TYPE_BLOCK_DEVICE</a></td>
+            <td>
+                    <code>6</code>
+                </td>
+                <td><code>uint8</code></td>
+            <td> A dirent representing a block device object.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#371">DIRENT_TYPE_FILE</a></td>
+            <td>
+                    <code>8</code>
+                </td>
+                <td><code>uint8</code></td>
+            <td> A dirent representing a file object.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#373">DIRENT_TYPE_SOCKET</a></td>
+            <td>
+                    <code>12</code>
+                </td>
+                <td><code>uint8</code></td>
+            <td> A dirent representing a socket object.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#375">DIRENT_TYPE_SERVICE</a></td>
+            <td>
+                    <code>16</code>
+                </td>
+                <td><code>uint8</code></td>
+            <td> A dirent representing a service object.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#379">INO_UNKNOWN</a></td>
+            <td>
+                    <code>18446744073709551615</code>
+                </td>
+                <td><code>uint64</code></td>
+            <td> Nodes which do not have ino values should return this value
+ from Readdir and GetAttr.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#382">WATCH_EVENT_DELETED</a></td>
+            <td>
+                    <code>0</code>
+                </td>
+                <td><code>uint8</code></td>
+            <td> Indicates the directory being watched has been deleted.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#384">WATCH_EVENT_ADDED</a></td>
+            <td>
+                    <code>1</code>
+                </td>
+                <td><code>uint8</code></td>
+            <td> Indicates a node has been created (either new or moved) into a directory.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#386">WATCH_EVENT_REMOVED</a></td>
+            <td>
+                    <code>2</code>
+                </td>
+                <td><code>uint8</code></td>
+            <td> Identifies a node has been removed (either deleted or moved) from the directory.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#388">WATCH_EVENT_EXISTING</a></td>
+            <td>
+                    <code>3</code>
+                </td>
+                <td><code>uint8</code></td>
+            <td> Identifies a node already existed in the directory when watching started.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#390">WATCH_EVENT_IDLE</a></td>
+            <td>
+                    <code>4</code>
+                </td>
+                <td><code>uint8</code></td>
+            <td> Identifies that no more `WATCH_EVENT_EXISTING` events will be sent.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#393">WATCH_MASK_DELETED</a></td>
+            <td>
+                    <code>1</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Used by `Directory.Watch`. Requests transmission of `WATCH_EVENT_DELETED`.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#395">WATCH_MASK_ADDED</a></td>
+            <td>
+                    <code>2</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Used by `Directory.Watch`. Requests transmission of `WATCH_EVENT_ADDED`.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#397">WATCH_MASK_REMOVED</a></td>
+            <td>
+                    <code>4</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Used by `Directory.Watch`. Requests transmission of `WATCH_EVENT_REMOVED`.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#399">WATCH_MASK_EXISTING</a></td>
+            <td>
+                    <code>8</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Used by `Directory.Watch`. Requests transmission of `WATCH_EVENT_EXISTING`.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#401">WATCH_MASK_IDLE</a></td>
+            <td>
+                    <code>16</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Used by `Directory.Watch`. Requests transmission of `WATCH_EVENT_IDLE`.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#403">WATCH_MASK_ALL</a></td>
+            <td>
+                    <code>31</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Used by `Directory.Watch`. Requests transmission of all watcher events.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#567">MOUNT_CREATE_FLAG_REPLACE</a></td>
+            <td>
+                    <code>1</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-io/io.fidl#569">MAX_FS_NAME_BUFFER</a></td>
+            <td>
+                    <code>32</code>
+                </td>
+                <td><code>uint64</code></td>
+            <td></td>
+        </tr>
     
 </table>
 
diff --git a/sdk/fidl/fuchsia.ldsvc/index.md b/sdk/fidl/fuchsia.ldsvc/index.md
index 5cd8c7b..6874d41 100644
--- a/sdk/fidl/fuchsia.ldsvc/index.md
+++ b/sdk/fidl/fuchsia.ldsvc/index.md
@@ -97,6 +97,97 @@
             </td>
         </tr></table>
 
+## Loader {:#Loader}
+*Defined in [fuchsia.ldsvc/ldsvc.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-ldsvc/ldsvc.fidl#18)*
+
+
+### Done {:#Done}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### LoadObject {:#LoadObject}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>object_name</code></td>
+            <td>
+                <code>string[1024]</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>rv</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr><tr>
+            <td><code>object</code></td>
+            <td>
+                <code>handle&lt;vmo&gt;?</code>
+            </td>
+        </tr></table>
+
+### Config {:#Config}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>config</code></td>
+            <td>
+                <code>string[1024]</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>rv</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### Clone {:#Clone}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>loader</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#Loader'>Loader</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>rv</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
 
 
 
diff --git a/sdk/fidl/fuchsia.ledger/index.md b/sdk/fidl/fuchsia.ledger/index.md
index dda389a..88cf221 100644
--- a/sdk/fidl/fuchsia.ledger/index.md
+++ b/sdk/fidl/fuchsia.ledger/index.md
@@ -1084,6 +1084,1084 @@
     <tr><th>Name</th><th>Type</th></tr>
     </table>
 
+## Syncable {:#Syncable}
+*Defined in [fuchsia.ledger/ledger.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ledger/ledger.fidl#34)*
+
+ Base interface for all services offered by the Ledger.
+
+ In case of an unexpected error on one of the service offered by the Ledger,
+ the service will close the connected channel, sending a `zx.status` as an epitaph.
+
+ If a client needs to ensure a sequence of operation has been processed by
+ the service, it can issue a `Sync` command. The response will be send once
+ all request started before the `Sync` request has been processed by the
+ service.
+
+### Sync {:#Sync}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+## Ledger {:#Ledger}
+*Defined in [fuchsia.ledger/ledger.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ledger/ledger.fidl#39)*
+
+
+### Sync {:#Sync}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+### GetPage {:#GetPage}
+
+ Retrieves the page with the given identifier, creating it if needed, and binds
+ `page_request` to it. A `null` identifier can be passed to create a new page with a random
+ unique identifier. It is allowed to connect to the same page concurrently multiple times.
+
+ Parameters:
+ `id` the identifier of the page, or `null` to create a new page with a random identifier.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>id</code></td>
+            <td>
+                <code><a class='link' href='#PageId'>PageId</a>?</code>
+            </td>
+        </tr><tr>
+            <td><code>page_request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#Page'>Page</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### GetRootPage {:#GetRootPage}
+
+ Gets the page with identifier
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0].
+ This is a convenience method equivalent to:
+ GetPage([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], page_request).
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>page_request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#Page'>Page</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### SetConflictResolverFactory {:#SetConflictResolverFactory}
+
+ Sets the `ConflictResolverFactory` to use for resolving conflicts on pages.
+ If this method has never been called, a last-one-wins policy will be used
+ for every page. If this method is called multiple times, the factories are
+ kept and conflict resolver requests are sent to one of the connected
+ factories. If all factories are later disconnected, pages that already have
+ a conflict resolution strategy (because they were opened before the factory
+ disconnected) will continue using their current strategy. The pages for
+ which no conflict resolution is set up will not get their conflicts
+ resolved until this method is called again.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>factory</code></td>
+            <td>
+                <code><a class='link' href='#ConflictResolverFactory'>ConflictResolverFactory</a></code>
+            </td>
+        </tr></table>
+
+
+
+## Page {:#Page}
+*Defined in [fuchsia.ledger/ledger.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ledger/ledger.fidl#89)*
+
+ A page is the smallest unit of syncable data.
+
+### Sync {:#Sync}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+### GetId {:#GetId}
+
+ Returns the identifier for the page.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>id</code></td>
+            <td>
+                <code><a class='link' href='#PageId'>PageId</a></code>
+            </td>
+        </tr></table>
+
+### GetSnapshot {:#GetSnapshot}
+
+ Creates a snapshot of the page, allowing the client app to read a
+ consistent view of the content of the page. If `key_prefix` is provided,
+ the resulting snapshot includes only the entries with matching keys.
+
+ If `watcher` is provided, it will receive notifications for changes of the
+ page state on this page connection newer than the resulting snapshot.
+ Change notifications will only contain the entries matching `key_prefix`.
+ To receive all changes, use an empty `key_prefix`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>snapshot_request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#PageSnapshot'>PageSnapshot</a>&gt;</code>
+            </td>
+        </tr><tr>
+            <td><code>key_prefix</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;[256]</code>
+            </td>
+        </tr><tr>
+            <td><code>watcher</code></td>
+            <td>
+                <code><a class='link' href='#PageWatcher'>PageWatcher</a>?</code>
+            </td>
+        </tr></table>
+
+
+
+### Put {:#Put}
+
+ Mutations are bundled together into atomic commits. If a transaction is in
+ progress, the list of mutations bundled together is tied to the current
+ transaction. If no transaction is in progress, mutations will be bundled
+ with the following rules:
+ - A call to either `GetSnapshot()` or `StartTransaction()` will
+   commit any pending mutations.
+ - All pending mutations will regularly be bundled together and committed.
+   They are guaranteed to be persisted as soon as the client receives a
+   successful status.
+ `Put()` and `PutWithPriority()` can be used for small values that
+ fit inside a FIDL message. If the value is bigger, a reference must be
+ first created using `CreateReferenceFromSocket()` or
+ `CreateReferenceFromBuffer()` and then `PutReference()` can be used.
+ `PutWithPriority()` and `PutReference()` have an additional `priority`
+ parameter managing the synchronization policy for this value. `Put()` uses
+ a default priority of `Priority.EAGER`. For the list of available
+ priorities and their definition, see `Priority`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>key</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;[256]</code>
+            </td>
+        </tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### PutWithPriority {:#PutWithPriority}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>key</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;[256]</code>
+            </td>
+        </tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;</code>
+            </td>
+        </tr><tr>
+            <td><code>priority</code></td>
+            <td>
+                <code><a class='link' href='#Priority'>Priority</a></code>
+            </td>
+        </tr></table>
+
+
+
+### PutReference {:#PutReference}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>key</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;[256]</code>
+            </td>
+        </tr><tr>
+            <td><code>reference</code></td>
+            <td>
+                <code><a class='link' href='#Reference'>Reference</a></code>
+            </td>
+        </tr><tr>
+            <td><code>priority</code></td>
+            <td>
+                <code><a class='link' href='#Priority'>Priority</a></code>
+            </td>
+        </tr></table>
+
+
+
+### Delete {:#Delete}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>key</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;[256]</code>
+            </td>
+        </tr></table>
+
+
+
+### Clear {:#Clear}
+
+ Deletes all entries in the page.
+ Outside of a transaction, this operation is equivalent to deleting every
+ key currently present on the page in a single transaction.
+ In a transaction, this operation is equivalent to deleting every key
+ present in the page before the transaction, as well as any new key added
+ since the transaction started.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### CreateReferenceFromSocket {:#CreateReferenceFromSocket}
+
+ Creates a new reference. The object is not part of any commit. It must be
+ associated with a key using `PutReference()`. The content of the reference
+ will be the content of the socket. The content size must be equal to
+ `size`, otherwise the call will fail.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>size</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr><tr>
+            <td><code>data</code></td>
+            <td>
+                <code>handle&lt;socket&gt;</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#Page_CreateReferenceFromSocket_Result'>Page_CreateReferenceFromSocket_Result</a></code>
+            </td>
+        </tr></table>
+
+### CreateReferenceFromBuffer {:#CreateReferenceFromBuffer}
+
+ Creates a new reference. The object is not part of any commit. It must be
+ associated with a key using `PutReference()`. The content of the reference
+ will be the content of the buffer.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>buffer</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.mem/index.html'>fuchsia.mem</a>/<a class='link' href='../fuchsia.mem/index.html#Buffer'>Buffer</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#Page_CreateReferenceFromBuffer_Result'>Page_CreateReferenceFromBuffer_Result</a></code>
+            </td>
+        </tr></table>
+
+### StartTransaction {:#StartTransaction}
+
+ Transactions allow the client to ensures changes are seen atomically by
+ observers of this page. Once a transaction is started with
+ `StartTransaction()`, every call to `Put(...)` and `Delete(...)` will not
+ be visible until either `Commit()` is called, and all changes are applied
+ in a single commit, or `Rollback()` is called and all changes are
+ discarded.
+
+ Parallel transactions on the same *page connection* are not allowed, and
+ calling `StartTransaction()` when a transaction is already in progress
+ returns an error. However, a client is free to connect to the same page
+ multiple times, and run parallel transactions on the same page using
+ separate connections. In this case, committing each transaction creates
+ divergent commits, which are later subject to conflict resolution.
+
+ When a transaction is in progress, the page content visible *on this page
+ connection* is pinned to the state from when `StartTransaction()` was
+ called. In particular, no watch notifications are delivered, and the
+ conflict resolution is not invoked while the transaction is in progress. If
+ conflicting changes are made or synced while the transaction is in
+ progress, conflict resolution is invoked after the transaction is
+ committed.
+
+ Starting a transaction will block until all watchers registered on this
+ page connection have received the current page state, ie. the one that
+ will be used as the base of the transaction. Put (with all its variants)
+ and Delete calls may be pipelined while StartTransaction() is pending and
+ will be taken into account in the transaction while it is pending.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### Commit {:#Commit}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### Rollback {:#Rollback}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### SetSyncStateWatcher {:#SetSyncStateWatcher}
+
+ Sets a watcher to track the synchronisation state of this page. The
+ current state is immediately sent to the watcher when this method is
+ called.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>watcher</code></td>
+            <td>
+                <code><a class='link' href='#SyncWatcher'>SyncWatcher</a></code>
+            </td>
+        </tr></table>
+
+
+
+### WaitForConflictResolution {:#WaitForConflictResolution}
+
+ Waits until all conflicts are resolved before calling the callback.
+ The client can call this method multiple times, even before the previous
+ calls are completed. Callbacks will be executed in the order they were
+ added and indicate whether a merge happened between the callback
+ registration and its execution.
+ If there are no pending conflicts at the time this is called, the callback
+ gets executed right away.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>wait_status</code></td>
+            <td>
+                <code><a class='link' href='#ConflictResolutionWaitStatus'>ConflictResolutionWaitStatus</a></code>
+            </td>
+        </tr></table>
+
+## PageSnapshot {:#PageSnapshot}
+*Defined in [fuchsia.ledger/ledger.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ledger/ledger.fidl#252)*
+
+ The content of a page at a given time. Closing the connection to a `Page`
+ interface closes all `PageSnapshot` interfaces it created. The contents
+ provided by this interface are limited to the prefix provided to the
+ Page.GetSnapshot() call.
+
+### Sync {:#Sync}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+### GetEntries {:#GetEntries}
+
+ Returns the entries in the page with keys greater or equal to `key_start`
+ using the lexicographic order. If `key_start` is empty, all entries are
+ returned. If the result fits in a single fidl message, `next_token` will
+ be equal to NULL. Otherwise, `next_token` will have a non-NULL value. To
+ retrieve the remaining results, another call to `GetEntries` should be
+ made, initializing the optional `token` argument with the value of
+ `next_token` returned in the previous call. `next_token` will not be
+ NULL as long as there are more results and NULL once finished.
+ Only `EAGER` values are guaranteed to be returned inside `entries`.
+ Missing `LAZY` values can be retrieved over the network using Fetch().
+ The returned `entries` are sorted by `key`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>key_start</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;[256]</code>
+            </td>
+        </tr><tr>
+            <td><code>token</code></td>
+            <td>
+                <code><a class='link' href='#Token'>Token</a>?</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>entries</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#Entry'>Entry</a>&gt;</code>
+            </td>
+        </tr><tr>
+            <td><code>next_token</code></td>
+            <td>
+                <code><a class='link' href='#Token'>Token</a>?</code>
+            </td>
+        </tr></table>
+
+### GetEntriesInline {:#GetEntriesInline}
+
+ Same as `GetEntries()`. The connection will be closed with a
+ `ZX_ERR_BAD_STATE` epitaph if a value does not fit in a FIDL message.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>key_start</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;[256]</code>
+            </td>
+        </tr><tr>
+            <td><code>token</code></td>
+            <td>
+                <code><a class='link' href='#Token'>Token</a>?</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>entries</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#InlinedEntry'>InlinedEntry</a>&gt;</code>
+            </td>
+        </tr><tr>
+            <td><code>next_token</code></td>
+            <td>
+                <code><a class='link' href='#Token'>Token</a>?</code>
+            </td>
+        </tr></table>
+
+### GetKeys {:#GetKeys}
+
+ Returns the keys of all entries in the page which are greater or equal to
+ `key_start` using the lexicographic order. If `key_start` is empty, all
+ keys are returned. The returned `keys` are sorted. If the result fits in
+ a single fidl message, `next_token` will be equal to NULL. Otherwise,
+ `next_token` will have a non-NULL value. To retrieve the remaining
+ results, another call to `GetKeys` should be made, initializing the
+ optional `token` argument with the value of `next_token` returned in the
+ previous call. `next_token` will not be NULL as long as there are more
+ results and NULL once finished.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>key_start</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;[256]</code>
+            </td>
+        </tr><tr>
+            <td><code>token</code></td>
+            <td>
+                <code><a class='link' href='#Token'>Token</a>?</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>keys</code></td>
+            <td>
+                <code>vector&lt;vector&gt;</code>
+            </td>
+        </tr><tr>
+            <td><code>next_token</code></td>
+            <td>
+                <code><a class='link' href='#Token'>Token</a>?</code>
+            </td>
+        </tr></table>
+
+### Get {:#Get}
+
+ Returns the value of a given key.
+ Only `EAGER` values are guaranteed to be returned. Calls when the value is
+ `LAZY` and not available will return a `NEEDS_FETCH` status. The value can
+ be retrieved over the network using a Fetch() call.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>key</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;[256]</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#PageSnapshot_Get_Result'>PageSnapshot_Get_Result</a></code>
+            </td>
+        </tr></table>
+
+### GetInline {:#GetInline}
+
+ Returns the value of a given key if it fits in a FIDL message.
+ The connection will be closed with a `ZX_ERR_BAD_STATE` epitaph if the
+ value does not fit in a FIDL message.
+ See `Get()` for additional information.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>key</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;[256]</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#PageSnapshot_GetInline_Result'>PageSnapshot_GetInline_Result</a></code>
+            </td>
+        </tr></table>
+
+### Fetch {:#Fetch}
+
+ Fetches the value of a given key, over the network if not already present
+ locally. `NETWORK_ERROR` is returned if the download fails (e.g.: network
+ is not available).
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>key</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;[256]</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#PageSnapshot_Fetch_Result'>PageSnapshot_Fetch_Result</a></code>
+            </td>
+        </tr></table>
+
+### FetchPartial {:#FetchPartial}
+
+ Fetches the value of a given key, over the network if not already present
+ locally, and returns a shared handle of a part of the value of a given
+ key, starting at the position that is specified by `offset`. If `offset`
+ is less than 0, starts at `-offset` from the end of the value.
+ Returns at most `max_size` bytes. If `max_size` is less than 0, returns
+ everything.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>key</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;[256]</code>
+            </td>
+        </tr><tr>
+            <td><code>offset</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+        </tr><tr>
+            <td><code>max_size</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#PageSnapshot_FetchPartial_Result'>PageSnapshot_FetchPartial_Result</a></code>
+            </td>
+        </tr></table>
+
+## PageWatcher {:#PageWatcher}
+*Defined in [fuchsia.ledger/ledger.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ledger/ledger.fidl#338)*
+
+ Interface to watch changes to a page. The client will receive changes made by
+ itself, as well as other clients or synced from other devices. The contents
+ of a transaction will never be split across multiple OnChange() calls, but
+ the contents of multiple transactions may be merged into one OnChange() call.
+
+### OnChange {:#OnChange}
+
+ Called for changes made on the page. If the result fits in a single fidl
+ message, `result_state` will be `COMPLETED`. Otherwise, OnChange will be
+ called multiple times and `result_state` will be `PARTIAL_STARTED` the
+ first time, `PARTIAL_CONTINUED` the following ones and finally
+ `PARTIAL_COMPLETED` on the last call. No new OnChange() call will be made
+ while the previous one is still active. If clients are interested in the
+ full content of the page at the time of the change, they can request a
+ PageSnapshot in the callback. This request is optional and can be requested
+ in any partial (started, continued or completed) and/or COMPLETED OnChange
+ call. In any case, all requests made on a sequence of OnChange calls for
+ the same page change, will always return the same snapshot: the one
+ including all changes.
+
+ Note that calls to Page.StartTransaction() on the page connection on which
+ the watcher was registered will block until all OnChange() calls have
+ finished.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>page_change</code></td>
+            <td>
+                <code><a class='link' href='#PageChange'>PageChange</a></code>
+            </td>
+        </tr><tr>
+            <td><code>result_state</code></td>
+            <td>
+                <code><a class='link' href='#ResultState'>ResultState</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>snapshot</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#PageSnapshot'>PageSnapshot</a>&gt;?</code>
+            </td>
+        </tr></table>
+
+## ConflictResolverFactory {:#ConflictResolverFactory}
+*Defined in [fuchsia.ledger/ledger.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ledger/ledger.fidl#362)*
+
+ This interface lets clients control the conflict resolution policy of the
+ ledger. It allows them to either use pre-defined policies, or provide their
+ own implementation. This can be decided on a page-by-page basis.
+
+### GetPolicy {:#GetPolicy}
+
+ Returns the conflict resolution policy for the given page.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>page_id</code></td>
+            <td>
+                <code><a class='link' href='#PageId'>PageId</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>policy</code></td>
+            <td>
+                <code><a class='link' href='#MergePolicy'>MergePolicy</a></code>
+            </td>
+        </tr></table>
+
+### NewConflictResolver {:#NewConflictResolver}
+
+ Returns a `ConflictResolver` to use for the given page. This will only be
+ called if `GetPolicy` for the same page returned `AUTOMATIC_WITH_FALLBACK`
+ or `CUSTOM`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>page_id</code></td>
+            <td>
+                <code><a class='link' href='#PageId'>PageId</a></code>
+            </td>
+        </tr><tr>
+            <td><code>resolver</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#ConflictResolver'>ConflictResolver</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+## MergeResultProvider {:#MergeResultProvider}
+*Defined in [fuchsia.ledger/ledger.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ledger/ledger.fidl#445)*
+
+ A merge result provider, obtained from `ConflictResolver.Resolve()`. Can be
+ used to retrieve data about the conflict, and provide the merge result. When
+ all changes have been sent, `Done()` should be called to mark the end of
+ incoming merge changes.
+
+### Sync {:#Sync}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+### GetFullDiff {:#GetFullDiff}
+
+ `GetFullDiff` returns the set of all key/value pairs (entries) that
+ have been modified between the common ancestor (see
+ `ConflictResolver.Resolve()`) and the left and right branches.
+
+ Values of `LAZY` keys may not be present on the device. In that case, the
+ corresponding Value objects within DiffEntry will have a NULL `value`
+ field. If needed, `left` and `right`, provided by the
+ `ConflictResolver.Resolve()` method can be used by clients to Fetch these
+ values. If a key is not present at all in one of the branches, its
+ corresponding Value object will be NULL.
+
+ The first call to get the `DiffEntry`s should be done using a NULL
+ token. If the result does not fit in a single fidl message, `next_token`
+ will have a non-NULL value, which can be used to retrieve the rest of
+ the results by calling `GetFullDiff()` with that token.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>token</code></td>
+            <td>
+                <code><a class='link' href='#Token'>Token</a>?</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>changes</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#DiffEntry'>DiffEntry</a>&gt;</code>
+            </td>
+        </tr><tr>
+            <td><code>next_token</code></td>
+            <td>
+                <code><a class='link' href='#Token'>Token</a>?</code>
+            </td>
+        </tr></table>
+
+### GetConflictingDiff {:#GetConflictingDiff}
+
+ `GetConflictingDiff` returns the set of all key/value pairs that were
+ modified on both sides to different values, or deleted on one side and
+ modified on the other.
+
+ It behaves like `GetFullDiff` otherwise.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>token</code></td>
+            <td>
+                <code><a class='link' href='#Token'>Token</a>?</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>changes</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#DiffEntry'>DiffEntry</a>&gt;</code>
+            </td>
+        </tr><tr>
+            <td><code>next_token</code></td>
+            <td>
+                <code><a class='link' href='#Token'>Token</a>?</code>
+            </td>
+        </tr></table>
+
+### Merge {:#Merge}
+
+ Once the result of the merge has been computed `Merge()` can be called with
+ all changes that resolve this conflict. If the result does not fit in a
+ single fidl message, `Merge()` can be called multiple times. If any of the
+ `Merge()` calls fails, i.e. `status` is not `OK`, all following calls will
+ fail with the same error.
+
+ If a key/value pair is sent multiple times in one or several `Merge()`
+ call, only the last pair is taken into account.
+
+ For all keys for which no merged value has been set (either here or
+ through `MergeNonConflictingEntries()` below), the left value will be
+ used. It is thus not necessary to send a MergedValue with a `LEFT` value
+ source, unless to overwrite a previous MergedValue.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>merge_changes</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#MergedValue'>MergedValue</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### MergeNonConflictingEntries {:#MergeNonConflictingEntries}
+
+ Automatically merges all non conflicting entries (entries that are
+ modified on one side only or identical on both sides). This is equivalent
+ to sending, through `Merge()`, a MergedValue with a `RIGHT` ValueSource
+ for all non-conflicting keys modified on the right side. Conflicting
+ entries can still be merged using the `Merge()` method.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### Done {:#Done}
+
+ Marks the end of merge changes to resolve this conflict. After `Done()` is
+ called `MergeResultProvider` interface cannot be used any more.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+## ConflictResolver {:#ConflictResolver}
+*Defined in [fuchsia.ledger/ledger.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ledger/ledger.fidl#510)*
+
+ Custom conflict resolver. If a `ConflictResolverFactory` is registered, and
+ `ConflictResolverFactory.GetPolicy()` returns `AUTOMATIC_WITH_FALLBACK` or
+ `CUSTOM` when called for a given page, the `NewConflictResolver` method will
+ be called and will provide a `ConflictResolver`. Each time a custom conflict
+ resolution is needed according to the chosen policy, the method
+ `ConflictResolver.Resolve()` will be called, and the client will resolve the
+ conflict by returning the final value for all conflicting keys as well as
+ values for any other key that the client wants to change.
+
+### Resolve {:#Resolve}
+
+ Method called when a conflict needs to be resolved. `left` and `right`
+ contain the snapshots of the two branches and `common_version` that of the
+ lowest common ancestor. `common_version` can be NULL if this version is no
+ longer available. The result of the merge can be given through the
+ `result_provider`, using the left branch as the base of the merge commit,
+ i.e. only key/value pairs that are different from the left version of the
+ page should be sent. `result_provider` can also be used to retrieve the set
+ of differences, i.e. conflicting keys, between the two versions.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>left</code></td>
+            <td>
+                <code><a class='link' href='#PageSnapshot'>PageSnapshot</a></code>
+            </td>
+        </tr><tr>
+            <td><code>right</code></td>
+            <td>
+                <code><a class='link' href='#PageSnapshot'>PageSnapshot</a></code>
+            </td>
+        </tr><tr>
+            <td><code>common_version</code></td>
+            <td>
+                <code><a class='link' href='#PageSnapshot'>PageSnapshot</a>?</code>
+            </td>
+        </tr><tr>
+            <td><code>new_result_provider</code></td>
+            <td>
+                <code><a class='link' href='#MergeResultProvider'>MergeResultProvider</a></code>
+            </td>
+        </tr></table>
+
+
+
+## SyncWatcher {:#SyncWatcher}
+*Defined in [fuchsia.ledger/ledger.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ledger/ledger.fidl#544)*
+
+ Watcher interface to be implemented by clients who wish to follow the
+ synchronization status of their ledger. SyncStateChanged callback must be
+ called for new state change calls to be sent.
+
+### SyncStateChanged {:#SyncStateChanged}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>download_status</code></td>
+            <td>
+                <code><a class='link' href='#SyncState'>SyncState</a></code>
+            </td>
+        </tr><tr>
+            <td><code>upload_status</code></td>
+            <td>
+                <code><a class='link' href='#SyncState'>SyncState</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
 
 
 ## **STRUCTS**
@@ -1498,6 +2576,416 @@
         </tr>
 </table>
 
+### Page_CreateReferenceFromSocket_Response {:#Page_CreateReferenceFromSocket_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>reference</code></td>
+            <td>
+                <code><a class='link' href='#Reference'>Reference</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Page_CreateReferenceFromBuffer_Response {:#Page_CreateReferenceFromBuffer_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>reference</code></td>
+            <td>
+                <code><a class='link' href='#Reference'>Reference</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### PageSnapshot_Get_Response {:#PageSnapshot_Get_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>buffer</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.mem/index.html'>fuchsia.mem</a>/<a class='link' href='../fuchsia.mem/index.html#Buffer'>Buffer</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### PageSnapshot_GetInline_Response {:#PageSnapshot_GetInline_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code><a class='link' href='#InlinedValue'>InlinedValue</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### PageSnapshot_Fetch_Response {:#PageSnapshot_Fetch_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>buffer</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.mem/index.html'>fuchsia.mem</a>/<a class='link' href='../fuchsia.mem/index.html#Buffer'>Buffer</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### PageSnapshot_FetchPartial_Response {:#PageSnapshot_FetchPartial_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>buffer</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.mem/index.html'>fuchsia.mem</a>/<a class='link' href='../fuchsia.mem/index.html#Buffer'>Buffer</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### PageId {:#PageId}
+*Defined in [fuchsia.ledger/ledger.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ledger/ledger.fidl#20)*
+
+
+
+ Type of the identifier of a ledger Page.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint8[16]</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Reference {:#Reference}
+*Defined in [fuchsia.ledger/ledger.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ledger/ledger.fidl#69)*
+
+
+
+ A reference to a value.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>opaque_id</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Token {:#Token}
+*Defined in [fuchsia.ledger/ledger.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ledger/ledger.fidl#74)*
+
+
+
+ A continuation token for paginated requests.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>opaque_id</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Entry {:#Entry}
+*Defined in [fuchsia.ledger/ledger.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ledger/ledger.fidl#217)*
+
+
+
+ A pair of key and value.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>key</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;[256]</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.mem/index.html'>fuchsia.mem</a>/<a class='link' href='../fuchsia.mem/index.html#Buffer'>Buffer</a>?</code>
+            </td>
+            <td> `value` is null if the value requested has the LAZY priority and is not
+ present on the device. Clients must use a Fetch call to retrieve the
+ contents.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>priority</code></td>
+            <td>
+                <code><a class='link' href='#Priority'>Priority</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### InlinedValue {:#InlinedValue}
+*Defined in [fuchsia.ledger/ledger.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ledger/ledger.fidl#227)*
+
+
+
+ A value inlined in a message.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### InlinedEntry {:#InlinedEntry}
+*Defined in [fuchsia.ledger/ledger.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ledger/ledger.fidl#232)*
+
+
+
+ A pair of key and an inlined value.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>key</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;[256]</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>inlined_value</code></td>
+            <td>
+                <code><a class='link' href='#InlinedValue'>InlinedValue</a>?</code>
+            </td>
+            <td> `value` is null if the value requested has the LAZY priority and is not
+ present on the device. Clients must use a Fetch call to retrieve the
+ contents.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>priority</code></td>
+            <td>
+                <code><a class='link' href='#Priority'>Priority</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### PageChange {:#PageChange}
+*Defined in [fuchsia.ledger/ledger.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ledger/ledger.fidl#321)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>timestamp</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+            <td> The timestamp of this change. This represents the number of nanoseconds
+ since Unix epoch (i.e., since "1970-01-01 00:00 UTC", ignoring leap
+ seconds). This value is set by the device that created the change and is
+ not synchronized across devices. In particular, there is no guarantee that
+ the `timestamp` of a follow up change is greater than this one's.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>changed_entries</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#Entry'>Entry</a>&gt;</code>
+            </td>
+            <td> List of new and modified entries. `changed_entries` are sorted by `key`.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>deleted_keys</code></td>
+            <td>
+                <code>vector&lt;vector&gt;</code>
+            </td>
+            <td> List of deleted keys, in sorted order.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### MergedValue {:#MergedValue}
+*Defined in [fuchsia.ledger/ledger.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ledger/ledger.fidl#412)*
+
+
+
+ A change in the page. If `source` is set to `NEW`, `new_value` must be set
+ to the new value. If `source` is not `NEW`, `new_value` and `priority` are
+ ignored.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>key</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;[256]</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>source</code></td>
+            <td>
+                <code><a class='link' href='#ValueSource'>ValueSource</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>new_value</code></td>
+            <td>
+                <code><a class='link' href='#BytesOrReference'>BytesOrReference</a>?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>priority</code></td>
+            <td>
+                <code><a class='link' href='#Priority'>Priority</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### DiffEntry {:#DiffEntry}
+*Defined in [fuchsia.ledger/ledger.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ledger/ledger.fidl#424)*
+
+
+
+ An entry in a diff, as returned by `MergeResultProvider`.
+
+ If `base`, `left` or `right` are NULL, this means that the corresponding key
+ was not present in the base, left or right (respectively) branch of the
+ page.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>key</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;[256]</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>base</code></td>
+            <td>
+                <code><a class='link' href='#Value'>Value</a>?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>left</code></td>
+            <td>
+                <code><a class='link' href='#Value'>Value</a>?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>right</code></td>
+            <td>
+                <code><a class='link' href='#Value'>Value</a>?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Value {:#Value}
+*Defined in [fuchsia.ledger/ledger.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ledger/ledger.fidl#436)*
+
+
+
+ A value in a DiffEntry.
+
+ If the value is LAZY and is not present locally, `value` will be NULL. The
+ value can be retrieved using a `Fetch()` call on a corresponding snapshot.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.mem/index.html'>fuchsia.mem</a>/<a class='link' href='../fuchsia.mem/index.html#Buffer'>Buffer</a>?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>priority</code></td>
+            <td>
+                <code><a class='link' href='#Priority'>Priority</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
 
 
 ## **ENUMS**
@@ -1515,14 +3003,11 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>NO_CONFLICTS</code></td>
             <td><code>0</code></td>
-            <td> No conflict was observed when the callback was registered.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>CONFLICTS_RESOLVED</code></td>
             <td><code>1</code></td>
-            <td> Some conflicts were observed when the callback was registered, and all
- have been resolved.
-</td>
+            <td></td>
         </tr></table>
 
 ### Priority {:#Priority}
@@ -1537,16 +3022,11 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>EAGER</code></td>
             <td><code>0</code></td>
-            <td> EAGER values will be downloaded with the commit and have the same
- availability.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>LAZY</code></td>
             <td><code>1</code></td>
-            <td> LAZY values will not be downloaded with their commit, but only on demand.
- A LAZY value thus may not be available when requested, for example if the
- device has no internet connection at request time.
-</td>
+            <td></td>
         </tr></table>
 
 ### Error {:#Error}
@@ -1610,27 +3090,15 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>LAST_ONE_WINS</code></td>
             <td><code>0</code></td>
-            <td> Last one wins. When 2 commits are merged, the resulting commit contains:
-  - all keys/values that do not conflict
-  - all keys/values of the commit with the biggest timestamp (or biggest
-    id, if the timestamps are the same)
-</td>
+            <td></td>
         </tr><tr>
             <td><code>AUTOMATIC_WITH_FALLBACK</code></td>
             <td><code>1</code></td>
-            <td> Commits are automatically merged when no key has been modified on both
- sides. When a key has been modified by both commits, conflict resolution is
- delegated to a user-provided `ConflictResolver` that is created by calling
- `ConflictResolverFactory.NewConflictResolver`. A single `ConflictResolver`
- is created for each page. When the `ConflictResolver` is disconnected, a
- new one is requested.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>CUSTOM</code></td>
             <td><code>2</code></td>
-            <td> All merges are resolved by a user-provided `ConflictResolver` as described
- above, even when commits to be merged change a disjoined set of keys.
-</td>
+            <td></td>
         </tr></table>
 
 ### ValueSource {:#ValueSource}
@@ -1673,29 +3141,185 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>IDLE</code></td>
             <td><code>0</code></td>
-            <td> There are no pending operations.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>PENDING</code></td>
             <td><code>1</code></td>
-            <td> There are pending operations, but there is no syncing in progress. This
- could be because of (possibly a combination of):
-  - waiting for better connectivity
-  - waiting due to internal policies (e.g. batching network requests,
-      waiting for a merge to happen before uploading)
-  - waiting to determine if synchronization is needed (e.g. during initial
-      setup)
-</td>
+            <td></td>
         </tr><tr>
             <td><code>IN_PROGRESS</code></td>
             <td><code>2</code></td>
-            <td> Synchronization is in progress.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>ERROR</code></td>
             <td><code>3</code></td>
-            <td> An internal error occurred while trying to sync.
-</td>
+            <td></td>
+        </tr></table>
+
+### ConflictResolutionWaitStatus {:#ConflictResolutionWaitStatus}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.ledger/ledger.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ledger/ledger.fidl#80)*
+
+ The result of a wait for conflict resolution. See
+ `Page.WaitForConflictResolution` for details.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>NO_CONFLICTS</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>CONFLICTS_RESOLVED</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr></table>
+
+### Priority {:#Priority}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.ledger/ledger.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ledger/ledger.fidl#206)*
+
+ The synchronization priority of a reference.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>EAGER</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>LAZY</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr></table>
+
+### Error {:#Error}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.ledger/ledger.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ledger/ledger.fidl#242)*
+
+ Error returned by the different PageSnapshot methods.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>KEY_NOT_FOUND</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>NEEDS_FETCH</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>NETWORK_ERROR</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr></table>
+
+### ResultState {:#ResultState}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.ledger/ledger.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ledger/ledger.fidl#314)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>COMPLETED</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PARTIAL_STARTED</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PARTIAL_CONTINUED</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PARTIAL_COMPLETED</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr></table>
+
+### MergePolicy {:#MergePolicy}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.ledger/ledger.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ledger/ledger.fidl#372)*
+
+ Strategy to be used when resolving conflicts.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>LAST_ONE_WINS</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>AUTOMATIC_WITH_FALLBACK</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>CUSTOM</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr></table>
+
+### ValueSource {:#ValueSource}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.ledger/ledger.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ledger/ledger.fidl#403)*
+
+ Source of the value used to resolve a conflict.
+
+ `DELETE` deletes the key; `NEW` creates a new value; `RIGHT`
+ selects the value from the right branch. If no value is sent, the left
+ branch is selected.
+ Used by `MergedValue`.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>RIGHT</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>NEW</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>DELETE</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr></table>
+
+### SyncState {:#SyncState}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.ledger/ledger.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ledger/ledger.fidl#524)*
+
+ Synchronization state.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>IDLE</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PENDING</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>IN_PROGRESS</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>ERROR</code></td>
+            <td><code>3</code></td>
+            <td></td>
         </tr></table>
 
 
@@ -1839,6 +3463,141 @@
             <td></td>
         </tr></table>
 
+### Page_CreateReferenceFromSocket_Result {:#Page_CreateReferenceFromSocket_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#Page_CreateReferenceFromSocket_Response'>Page_CreateReferenceFromSocket_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### Page_CreateReferenceFromBuffer_Result {:#Page_CreateReferenceFromBuffer_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#Page_CreateReferenceFromBuffer_Response'>Page_CreateReferenceFromBuffer_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### PageSnapshot_Get_Result {:#PageSnapshot_Get_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#PageSnapshot_Get_Response'>PageSnapshot_Get_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code><a class='link' href='#Error'>Error</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### PageSnapshot_GetInline_Result {:#PageSnapshot_GetInline_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#PageSnapshot_GetInline_Response'>PageSnapshot_GetInline_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code><a class='link' href='#Error'>Error</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### PageSnapshot_Fetch_Result {:#PageSnapshot_Fetch_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#PageSnapshot_Fetch_Response'>PageSnapshot_Fetch_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code><a class='link' href='#Error'>Error</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### PageSnapshot_FetchPartial_Result {:#PageSnapshot_FetchPartial_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#PageSnapshot_FetchPartial_Response'>PageSnapshot_FetchPartial_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code><a class='link' href='#Error'>Error</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### BytesOrReference {:#BytesOrReference}
+*Defined in [fuchsia.ledger/ledger.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ledger/ledger.fidl#392)*
+
+ A value that is either small enough to be directly embedded in `bytes` or
+ that is referenced by `reference`.
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>bytes</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>reference</code></td>
+            <td>
+                <code><a class='link' href='#Reference'>Reference</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
 
 
 
@@ -1857,6 +3616,15 @@
             <td> Size in bytes of Page IDs.
 </td>
         </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ledger/ledger.fidl#17">PAGE_ID_SIZE</a></td>
+            <td>
+                    <code>16</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Size in bytes of Page IDs.
+</td>
+        </tr>
     
 </table>
 
diff --git a/sdk/fidl/fuchsia.logger/index.md b/sdk/fidl/fuchsia.logger/index.md
index bb21d87..bb7343b 100644
--- a/sdk/fidl/fuchsia.logger/index.md
+++ b/sdk/fidl/fuchsia.logger/index.md
@@ -113,6 +113,113 @@
 
 
 
+## Log {:#Log}
+*Defined in [fuchsia.logger/logger.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-logger/logger.fidl#70)*
+
+
+### Listen {:#Listen}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>log_listener</code></td>
+            <td>
+                <code><a class='link' href='#LogListener'>LogListener</a></code>
+            </td>
+        </tr><tr>
+            <td><code>options</code></td>
+            <td>
+                <code><a class='link' href='#LogFilterOptions'>LogFilterOptions</a>?</code>
+            </td>
+        </tr></table>
+
+
+
+### DumpLogs {:#DumpLogs}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>log_listener</code></td>
+            <td>
+                <code><a class='link' href='#LogListener'>LogListener</a></code>
+            </td>
+        </tr><tr>
+            <td><code>options</code></td>
+            <td>
+                <code><a class='link' href='#LogFilterOptions'>LogFilterOptions</a>?</code>
+            </td>
+        </tr></table>
+
+
+
+## LogSink {:#LogSink}
+*Defined in [fuchsia.logger/logger.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-logger/logger.fidl#83)*
+
+
+### Connect {:#Connect}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>socket</code></td>
+            <td>
+                <code>handle&lt;socket&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+## LogListener {:#LogListener}
+*Defined in [fuchsia.logger/logger.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-logger/logger.fidl#91)*
+
+
+### Log {:#Log}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>log</code></td>
+            <td>
+                <code><a class='link' href='#LogMessage'>LogMessage</a></code>
+            </td>
+        </tr></table>
+
+
+
+### LogMany {:#LogMany}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>log</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#LogMessage'>LogMessage</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### Done {:#Done}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
 
 
 ## **STRUCTS**
@@ -237,6 +344,126 @@
         </tr>
 </table>
 
+### LogFilterOptions {:#LogFilterOptions}
+*Defined in [fuchsia.logger/logger.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-logger/logger.fidl#23)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>filter_by_pid</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>pid</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>filter_by_tid</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>tid</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>verbosity</code></td>
+            <td>
+                <code>uint8</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>min_severity</code></td>
+            <td>
+                <code><a class='link' href='#LogLevelFilter'>LogLevelFilter</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>tags</code></td>
+            <td>
+                <code>vector&lt;string&gt;[5]</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### LogMessage {:#LogMessage}
+*Defined in [fuchsia.logger/logger.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-logger/logger.fidl#52)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>pid</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>tid</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>time</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>severity</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>dropped_logs</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>tags</code></td>
+            <td>
+                <code>vector&lt;string&gt;[5]</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>msg</code></td>
+            <td>
+                <code>string[2032]</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
 
 
 ## **ENUMS**
@@ -271,6 +498,36 @@
             <td></td>
         </tr></table>
 
+### LogLevelFilter {:#LogLevelFilter}
+Type: <code>int8</code>
+
+*Defined in [fuchsia.logger/logger.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-logger/logger.fidl#9)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>NONE</code></td>
+            <td><code>-1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>INFO</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>WARN</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>ERROR</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>FATAL</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr></table>
+
 
 
 
@@ -325,6 +582,47 @@
             <td> Max log bytes per call to a listener
 </td>
         </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-logger/logger.fidl#18">MAX_TAGS</a></td>
+            <td>
+                    <code>5</code>
+                </td>
+                <td><code>uint8</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-logger/logger.fidl#21">MAX_TAG_LEN_BYTES</a></td>
+            <td>
+                    <code>63</code>
+                </td>
+                <td><code>uint8</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-logger/logger.fidl#45">MAX_TAGS_PER_LOG_MESSAGE</a></td>
+            <td>
+                    <code>5</code>
+                </td>
+                <td><code>uint8</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-logger/logger.fidl#50">MAX_DATAGRAM_LEN_BYTES</a></td>
+            <td>
+                    <code>2032</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-logger/logger.fidl#89">MAX_LOG_MANY_SIZE_BYTES</a></td>
+            <td>
+                    <code>16384</code>
+                </td>
+                <td><code>uint64</code></td>
+            <td> Max log bytes per call to a listener
+</td>
+        </tr>
     
 </table>
 
diff --git a/sdk/fidl/fuchsia.math/index.md b/sdk/fidl/fuchsia.math/index.md
index 2917f92..424a822 100644
--- a/sdk/fidl/fuchsia.math/index.md
+++ b/sdk/fidl/fuchsia.math/index.md
@@ -591,6 +591,589 @@
         </tr>
 </table>
 
+### Point {:#Point}
+*Defined in [fuchsia.math/math.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.math/math.fidl#12)*
+
+
+
+ An integer position in a 2D cartesian space.
+
+ This type does not specify units. Protocols that use this type should
+ specify the characteristics of the vector space, including orientation and
+ units.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>x</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td> The number of units along the x-axis.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>y</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td> The number of units along the y-axis.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### PointF {:#PointF}
+*Defined in [fuchsia.math/math.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.math/math.fidl#25)*
+
+
+
+ A floating point position in a 2D cartesian space.
+
+ This type does not specify units. Protocols that use this type should
+ specify the characteristics of the vector space, including orientation and
+ units.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>x</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td> The number of units along the x-axis.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>y</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td> The number of units along the y-axis.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Point3F {:#Point3F}
+*Defined in [fuchsia.math/math.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.math/math.fidl#38)*
+
+
+
+ A floating point position in a 3D cartesian space.
+
+ This type does not specify units. Protocols that use this type should
+ specify the characteristics of the vector space, including orientation and
+ units.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>x</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td> The number of units along the x-axis.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>y</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td> The number of units along the y-axis.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>z</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td> The number of units along the z-axis.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Size {:#Size}
+*Defined in [fuchsia.math/math.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.math/math.fidl#58)*
+
+
+
+ The integer dimensions of a rectangular region in a 2D cartesian space.
+
+ This type does not specify units. Protocols that use this type should
+ specify the characteristics of the vector space, including orientation and
+ units.
+
+ This type allows for negative dimensions, to which protocols can give
+ semantics. Protocols that use this type should specify whether negative
+ dimensions are meaningful, and, if they are meaningful, what they mean.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>width</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td> The distance along the x-axis.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>height</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td> The distance along the y-axis.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SizeF {:#SizeF}
+*Defined in [fuchsia.math/math.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.math/math.fidl#76)*
+
+
+
+ The floating point dimensions of a rectangular region in a 2D cartesian
+ space.
+
+ This type does not specify units. Protocols that use this type should
+ specify the characteristics of the vector space, including orientation and
+ units.
+
+ This type allows for negative dimensions, to which protocols can give
+ semantics. Protocols that use this type should specify whether negative
+ dimensions are meaningful, and, if they are meaningful, what they mean.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>width</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td> The distance along the x-axis.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>height</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td> The distance along the y-axis.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Rect {:#Rect}
+*Defined in [fuchsia.math/math.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.math/math.fidl#90)*
+
+
+
+ An integral, rectangular, axis-aligned region in a 2D cartesian
+ space.
+
+ This type does not specify units. Protocols that use this type should
+ specify the characteristics of the vector space, including orientation and
+ units.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>x</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td> The location of the origin of the rectangle in the x-axis.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>y</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td> The location of the origin of the rectangle in the y-axis.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>width</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td> The distance along the x-axis.
+
+ If `width` is positive, the region includes x values starting at `x` and
+ increasing along the x-axis. If `width` is negative, the region includes
+ x values starting at `x` and decreasing along the x-axis.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>height</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td> The distance along the y-axis.
+
+ If `height` is positive, the region includes y values starting at `y`
+ and increasing along the y-axis. If `height` is negative, the region
+ includes y values starting at `y` and decreasing along the y-axis.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### RectF {:#RectF}
+*Defined in [fuchsia.math/math.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.math/math.fidl#118)*
+
+
+
+ A floating point, rectangular, axis-aligned region in a 2D cartesian
+ space.
+
+ This type does not specify units. Protocols that use this type should
+ specify the characteristics of the vector space, including orientation and
+ units.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>x</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td> The location of the origin of the rectangle in the x-axis.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>y</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td> The location of the origin of the rectangle in the y-axis.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>width</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td> The distance along the x-axis.
+
+ If `width` is positive, the region includes x values starting at `x` and
+ increasing along the x-axis. If `width` is negative, the region includes
+ x values starting at `x` and decreasing along the x-axis.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>height</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td> The distance along the y-axis.
+
+ If `height` is positive, the region includes y values starting at `y`
+ and increasing along the y-axis. If `height` is negative, the region
+ includes y values starting at `y` and decreasing along the y-axis.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### RRectF {:#RRectF}
+*Defined in [fuchsia.math/math.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.math/math.fidl#152)*
+
+
+
+ A floating point rounded rectangle with the custom radii for all four
+ corners.
+
+ A region in a 2D cartesian space consisting of linear, axis-aligned sides
+ with corners rounded into a quarter ellipse.
+
+ If the quarter ellipses in two corners would overlap, their radii are
+ clamped such that the ellipses meet with an axis-aligned tangent.
+
+ This type does not specify units. Protocols that use this type should
+ specify the characteristics of the vector space, including orientation and
+ units.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>x</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td> The location of the origin of the region in the x-axis.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>y</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td> The location of the origin of the region in the y-axis.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>width</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td> The distance along the x-axis.
+
+ If `width` is positive, the region includes x values starting at `x` and
+ increasing along the x-axis. If `width` is negative, the region includes
+ x values starting at `x` and decreasing along the x-axis.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>height</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td> The distance along the y-axis.
+
+ If `height` is positive, the region includes y values starting at `y`
+ and increasing along the y-axis. If `height` is negative, the region
+ includes y values starting at `y` and decreasing along the y-axis.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>top_left_radius_x</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td> The radius of the quarter ellipse in the top-left corner along the
+ x-axis.
+
+ Must not be negative.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>top_left_radius_y</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td> The radius of the quarter ellipse in the top-left corner along the
+ y-axis.
+
+ Must not be negative.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>top_right_radius_x</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td> The radius of the quarter ellipse in the top-right corner along the
+ x-axis.
+
+ Must not be negative.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>top_right_radius_y</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td> The radius of the quarter ellipse in the top-right corner along the
+ y-axis.
+
+ Must not be negative.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>bottom_left_radius_x</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td> The radius of the quarter ellipse in the bottom-left corner along the
+ x-axis.
+
+ Must not be negative.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>bottom_left_radius_y</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td> The radius of the quarter ellipse in the bottom-left corner along the
+ y-axis.
+
+ Must not be negative.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>bottom_right_radius_x</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td> The radius of the quarter ellipse in the bottom-right corner along the
+ x-axis.
+
+ Must not be negative.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>bottom_right_radius_y</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td> The radius of the quarter ellipse in the bottom-right corner along the
+ y-axis.
+
+ Must not be negative.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Transform {:#Transform}
+*Defined in [fuchsia.math/math.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.math/math.fidl#228)*
+
+
+
+ A projective transformation of a 3D cartesian space.
+
+ A transform consists of a 4x4 matrix that operates in homogeneous
+ coordinates. For example, a point located at (x, y, z) in the cartesian
+ space is transformed by `M` to a point located at (x'/w', y'/w', z'/w'),
+ where `(x', y', z', w') = M (x, y, z, 1)`.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>matrix</code></td>
+            <td>
+                <code>float32[16]</code>
+            </td>
+            <td> The entries in the transformation matrix in row major order.
+
+ Specifically, if the matrix is as follows:
+
+ ```
+ a b c d
+ e f g h
+ i j k l
+ m n o p
+ ```
+
+ then the entries in this array are
+ `(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p)`.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Inset {:#Inset}
+*Defined in [fuchsia.math/math.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.math/math.fidl#250)*
+
+
+
+ An integer offset to apply to each edge of a rectangle.
+
+ This type does not specify units. Protocols that use this type should
+ specify the characteristics of the vector space, including orientation and
+ units.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>top</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td> The amount to move the top edge of the rectangle towards the center of
+ the rectangle.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>right</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td> The amount to move the right edge of the rectangle towards the center of
+ the rectangle.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>bottom</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td> The amount to move the bottom edge of the rectangle towards the center
+ of the rectangle.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>left</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td> The amount to move the left edge of the rectangle towards the center of
+ the rectangle.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### InsetF {:#InsetF}
+*Defined in [fuchsia.math/math.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.math/math.fidl#273)*
+
+
+
+ A floating point offset to apply to each edge of a rectangle.
+
+ This type does not specify units. Protocols that use this type should
+ specify the characteristics of the vector space, including orientation and
+ units.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>top</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td> The amount to move the top edge of the rectangle towards the center of
+ the rectangle.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>right</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td> The amount to move the right edge of the rectangle towards the center of
+ the rectangle.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>bottom</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td> The amount to move the bottom edge of the rectangle towards the center
+ of the rectangle.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>left</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td> The amount to move the left edge of the rectangle towards the center of
+ the rectangle.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
 
 
 
diff --git a/sdk/fidl/fuchsia.media.audio/index.md b/sdk/fidl/fuchsia.media.audio/index.md
index 6e914c3..ee2c935 100644
--- a/sdk/fidl/fuchsia.media.audio/index.md
+++ b/sdk/fidl/fuchsia.media.audio/index.md
@@ -205,6 +205,205 @@
 
 
 
+## GainControl {:#GainControl}
+*Defined in [fuchsia.media.audio/gain_control.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media.audio/gain_control.fidl#17)*
+
+ Enables control and monitoring of audio gain. This interface is typically
+ a tear-off of other interfaces. For example, `fuchsia.media.audio.Renderer`
+ has a `BindGainControl` method that binds to a gain control that controls
+ gain for the renderer.
+
+### SetGain {:#SetGain}
+
+ Sets the gain in decibels.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>gain_db</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+        </tr></table>
+
+
+
+### SetGainWithRamp {:#SetGainWithRamp}
+
+ Smoothly changes gain from its current value to specified value, over the
+ specified duration (in milliseconds). If 'duration_ns' is 0, gain changes
+ immediately. Otherwise, gain changes only while the stream is running.
+
+ Any active or pending ramp is cancelled by subsequent call to SetGain.
+
+ There can be at most 1 active ramp at any time. Any active or pending
+ ramp is replaced by a later call to SetGainWithRamp (even if duration is
+ 0). In this case gain would ramps directly from its most recent
+ (mid-ramp) value to the newly-specified one, over the new duration,
+ using the new easing.
+
+ Usage example (using time in seconds):
+  Time 0
+      SetGainWithRamp(`MUTED_GAIN_DB`, 0, SCALE_LINEAR)         // Ramp 1
+      SetGainWithRamp(0.0f, `ZX_SEC`(4), SCALE_LINEAR)          // Ramp 2
+  Time 3
+      PlayNoReply(kNoTimestamp, any_media_time)
+  Time 4
+      PauseNoReply()
+  Time 7
+      PlayNoReply(kNoTimestamp, any_media_time)
+  Time 8
+      SetGainWithRamp(`MUTED_GAIN_DB`, ZX_SEC(1), SCALE_LINEAR) // Ramp 3
+
+
+ Time 0: Ramp 1 completes immediately, changing the gain to `MUTED_GAIN_DB`.
+         Ramp 2 is pending, since we are not in playback.
+ Time 3, Ramp 2 begins ramping from `MUTED_GAIN_DB` to 0 dB
+         (scale 0.0=>1.0).
+ Time 4: Ramp 2 pauses (3s remain). Per `SCALE_LINEAR`, scale is approx.
+         0.25.
+ Time 7: Ramp 2 resumes from most recent value toward the target.
+ Time 8: Ramp 3 replaces Ramp 2 and starts from current scale
+         (approx 0.5).
+ Time 9: Ramp 3 completes; current scale value is now 0.0 (`MUTED_GAIN_DB`).
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>gain_db</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+        </tr><tr>
+            <td><code>duration</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+        </tr><tr>
+            <td><code>rampType</code></td>
+            <td>
+                <code><a class='link' href='#RampType'>RampType</a></code>
+            </td>
+        </tr></table>
+
+
+
+### SetMute {:#SetMute}
+
+ Sets the mute value. Ramping and mute are fully independent, although
+ they both affect the scaling that is applied.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>muted</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr></table>
+
+
+
+### OnGainMuteChanged {:#OnGainMuteChanged}
+
+ Notifies the client of changes in the current gain/mute values.
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>gain_db</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+        </tr><tr>
+            <td><code>muted</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr></table>
+
+## VolumeControl {:#VolumeControl}
+*Defined in [fuchsia.media.audio/volume_control.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media.audio/volume_control.fidl#14)*
+
+ A protocol for controlling volume.
+
+### SetVolume {:#SetVolume}
+
+ Sets the volume of the audio element to the given value in
+ [0.0, 1.0]. If the value is provided is outside of [0.0, 1.0],
+ the value is clamped before application.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>volume</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+        </tr></table>
+
+
+
+### SetMute {:#SetMute}
+
+ Sets whether the controlled element is muted. Mute is not the same
+ as setting volume to 0.0; volume will persist for the duration of
+ a mute. If volume was 0.5 before mute, volume will resume at 0.5
+ following unmute.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>mute</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr></table>
+
+
+
+### OnVolumeMuteChanged {:#OnVolumeMuteChanged}
+
+ Emitted when the volume or mute state of the audio element changes.
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>new_volume</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+        </tr><tr>
+            <td><code>new_muted</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr></table>
+
+### NotifyVolumeMuteChangedHandled {:#NotifyVolumeMuteChangedHandled}
+
+ Acknowledges receipt of a volume or mute change event. Clients must
+ acknowledge receipt to continue receiving events.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
 
 
 
@@ -223,8 +422,22 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>SCALE_LINEAR</code></td>
             <td><code>1</code></td>
-            <td> Amplitude scale changes at a fixed rate across the ramp duration.
-</td>
+            <td></td>
+        </tr></table>
+
+### RampType {:#RampType}
+Type: <code>uint16</code>
+
+*Defined in [fuchsia.media.audio/gain_control.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media.audio/gain_control.fidl#83)*
+
+ Enumerates gain control ramp types.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>SCALE_LINEAR</code></td>
+            <td><code>1</code></td>
+            <td></td>
         </tr></table>
 
 
@@ -277,6 +490,43 @@
             <td> The volume value representing silence.
 </td>
         </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media.audio/gain_control.fidl#77">MUTED_GAIN_DB</a></td>
+            <td>
+                    <code>-160</code>
+                </td>
+                <td><code>float32</code></td>
+            <td> Gain value producing silence. Gain values less than this value are permitted,
+ but produce the same effect as this value.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media.audio/gain_control.fidl#80">MAX_GAIN_DB</a></td>
+            <td>
+                    <code>24</code>
+                </td>
+                <td><code>float32</code></td>
+            <td> Maximum permitted gain value.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media.audio/volume_control.fidl#8">MAX_VOLUME</a></td>
+            <td>
+                    <code>1</code>
+                </td>
+                <td><code>float32</code></td>
+            <td> The volume value representing the maximum loudness.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media.audio/volume_control.fidl#11">MIN_VOLUME</a></td>
+            <td>
+                    <code>0</code>
+                </td>
+                <td><code>float32</code></td>
+            <td> The volume value representing silence.
+</td>
+        </tr>
     
 </table>
 
diff --git a/sdk/fidl/fuchsia.media.drm/index.md b/sdk/fidl/fuchsia.media.drm/index.md
index fe40c34..af2899b 100644
--- a/sdk/fidl/fuchsia.media.drm/index.md
+++ b/sdk/fidl/fuchsia.media.drm/index.md
@@ -923,41 +923,27 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>TYPE</code></td>
             <td><code>1</code></td>
-            <td> An error that occurs when the client provides invalid parameter data to
- the server, such as an invalid license response message.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>NOT_SUPPORTED</code></td>
             <td><code>2</code></td>
-            <td> An error that occurs when a requested operation is not supported by the
- CDM, such as a license generation request with an unknown initialization
- data type.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>INVALID_STATE</code></td>
             <td><code>3</code></td>
-            <td> An error that occurs when the CDM is not in a proper state to perform
- the requested operation, such as calling
- <a class='link' href='#LicenseSession.GenerateLicenseRequest'>LicenseSession.GenerateLicenseRequest</a> when the <a class='link' href='#LicenseSession'>LicenseSession</a>
- has already started the license release process.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>QUOTA_EXCEEDED</code></td>
             <td><code>4</code></td>
-            <td> An error that occurs when a requested action would exceed allowable
- limits, such as attempting to load an already opened session. 
-</td>
+            <td></td>
         </tr><tr>
             <td><code>INTERNAL</code></td>
             <td><code>100</code></td>
-            <td> An internal, unexpected error that is not actionable by the client.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>NOT_PROVISIONED</code></td>
             <td><code>101</code></td>
-            <td> An error that occurs when the CDM is not usable because it requires
- additional provisioning.
-</td>
+            <td></td>
         </tr></table>
 
 ### LicenseSessionType {:#LicenseSessionType}
@@ -971,22 +957,15 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>TEMPORARY</code></td>
             <td><code>1</code></td>
-            <td> A session for which the license, keys, and record of the session are not
- persisted.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>PERSISTENT_LICENSE</code></td>
             <td><code>2</code></td>
-            <td> A session for which the license, keys, and record of the session will be
- persisted for offline use and can subsequently be loaded using
- LoadSession().
-</td>
+            <td></td>
         </tr><tr>
             <td><code>PERSISTENT_USAGE_RECORD</code></td>
             <td><code>3</code></td>
-            <td> A session for which the the record of the session will be persisted, but
- the keys and license will not be.
-</td>
+            <td></td>
         </tr></table>
 
 ### LicenseMessageType {:#LicenseMessageType}
diff --git a/sdk/fidl/fuchsia.media.playback/index.md b/sdk/fidl/fuchsia.media.playback/index.md
index 28ef907..5f9c7f9 100644
--- a/sdk/fidl/fuchsia.media.playback/index.md
+++ b/sdk/fidl/fuchsia.media.playback/index.md
@@ -658,6 +658,658 @@
 
 
 
+## Player {:#Player}
+*Defined in [fuchsia.media.playback/player.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media.playback/player.fidl#16)*
+
+ Plays media.
+
+### CreateHttpSource {:#CreateHttpSource}
+
+ Creates a source that reads from a URL.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>http_url</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>headers</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='../fuchsia.net.oldhttp/index.html'>fuchsia.net.oldhttp</a>/<a class='link' href='../fuchsia.net.oldhttp/index.html#HttpHeader'>HttpHeader</a>&gt;?</code>
+            </td>
+        </tr><tr>
+            <td><code>source_request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#Source'>Source</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### CreateFileSource {:#CreateFileSource}
+
+ Creates a source that reads from a file.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>file_channel</code></td>
+            <td>
+                <code>handle&lt;channel&gt;</code>
+            </td>
+        </tr><tr>
+            <td><code>source_request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#Source'>Source</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### CreateReaderSource {:#CreateReaderSource}
+
+ Creates a source that reads from a `SeekingReader`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>seeking_reader</code></td>
+            <td>
+                <code><a class='link' href='#SeekingReader'>SeekingReader</a></code>
+            </td>
+        </tr><tr>
+            <td><code>source_request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#Source'>Source</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### CreateElementarySource {:#CreateElementarySource}
+
+ Creates a source that allows the client to provide independent elementary
+ streams to the player. duration_ns, can_pause, can_seek and metadata are
+ all included in the SourceStatus and, when the `ElementarySource` is used by
+ the player, in the `PlayerStatus` as well. `can_pause` and `can_seek`, when
+ false, constrain the capabilities of the player.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>duration_ns</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+        </tr><tr>
+            <td><code>can_pause</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr><tr>
+            <td><code>can_seek</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr><tr>
+            <td><code>metadata</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.media/index.html'>fuchsia.media</a>/<a class='link' href='../fuchsia.media/index.html#Metadata'>Metadata</a>?</code>
+            </td>
+        </tr><tr>
+            <td><code>source_request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#ElementarySource'>ElementarySource</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### SetSource {:#SetSource}
+
+ Sets the source for this player to use. If source is null, the player
+ becomes idle.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>source</code></td>
+            <td>
+                <code><a class='link' href='#Source'>Source</a>?</code>
+            </td>
+        </tr></table>
+
+
+
+### TransitionToSource {:#TransitionToSource}
+
+ Transitions to the specified source when playback of the current source
+ reaches transition_pts. The new source starts playback at start_pts. If
+ a transition is already pending, it will be discarded in favor of the new
+ transition.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>source</code></td>
+            <td>
+                <code><a class='link' href='#Source'>Source</a></code>
+            </td>
+        </tr><tr>
+            <td><code>transition_pts</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+        </tr><tr>
+            <td><code>start_pts</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+        </tr></table>
+
+
+
+### CancelSourceTransition {:#CancelSourceTransition}
+
+ Cancels a pending transition, returning the source. If no transition is
+ pending, the request channel is closed.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>returned_source_request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#Source'>Source</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### SetHttpSource {:#SetHttpSource}
+
+ Sets an HTTP URL to read from. The provided headers are added to each
+ HTTP request issued to the URL.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>http_url</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>headers</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='../fuchsia.net.oldhttp/index.html'>fuchsia.net.oldhttp</a>/<a class='link' href='../fuchsia.net.oldhttp/index.html#HttpHeader'>HttpHeader</a>&gt;?</code>
+            </td>
+        </tr></table>
+
+
+
+### SetFileSource {:#SetFileSource}
+
+ Sets a file channel to read from.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>file_channel</code></td>
+            <td>
+                <code>handle&lt;channel&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### Play {:#Play}
+
+ Starts playback.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### Pause {:#Pause}
+
+ Pauses playback.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### OnStatusChanged {:#OnStatusChanged}
+
+ Provides current status immediately after binding and whenever status
+ changes thereafter.
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>player_status</code></td>
+            <td>
+                <code><a class='link' href='#PlayerStatus'>PlayerStatus</a></code>
+            </td>
+        </tr></table>
+
+### Seek {:#Seek}
+
+ Seeks to the specified position, specified in nanoseconds.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>position</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+        </tr></table>
+
+
+
+### CreateView {:#CreateView}
+
+ Creates a video view.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>view_token</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.ui.views/index.html'>fuchsia.ui.views</a>/<a class='link' href='../fuchsia.ui.views/index.html#ViewToken'>ViewToken</a></code>
+            </td>
+        </tr></table>
+
+
+
+### BindGainControl {:#BindGainControl}
+
+ Binds to the gain control for this player.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>gain_control_request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='../fuchsia.media.audio/index.html'>fuchsia.media.audio</a>/<a class='link' href='../fuchsia.media.audio/index.html#GainControl'>GainControl</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### AddBinding {:#AddBinding}
+
+ Adds a new binding to this player.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>player_request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#Player'>Player</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+## SeekingReader {:#SeekingReader}
+*Defined in [fuchsia.media.playback/seeking_reader.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media.playback/seeking_reader.fidl#11)*
+
+
+### Describe {:#Describe}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr><tr>
+            <td><code>size</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr><tr>
+            <td><code>can_seek</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr></table>
+
+### ReadAt {:#ReadAt}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>position</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr><tr>
+            <td><code>socket</code></td>
+            <td>
+                <code>handle&lt;socket&gt;?</code>
+            </td>
+        </tr></table>
+
+## SourceManager {:#SourceManager}
+*Defined in [fuchsia.media.playback/source_manager.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media.playback/source_manager.fidl#13)*
+
+ Manages sources on behalf of a Player.
+
+### CreateHttpSource {:#CreateHttpSource}
+
+ Creates a source that reads from a URL.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>http_url</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>headers</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='../fuchsia.net.oldhttp/index.html'>fuchsia.net.oldhttp</a>/<a class='link' href='../fuchsia.net.oldhttp/index.html#HttpHeader'>HttpHeader</a>&gt;?</code>
+            </td>
+        </tr><tr>
+            <td><code>source_request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#Source'>Source</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### CreateFileSource {:#CreateFileSource}
+
+ Creates a source that reads from a file.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>file_channel</code></td>
+            <td>
+                <code>handle&lt;channel&gt;</code>
+            </td>
+        </tr><tr>
+            <td><code>source_request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#Source'>Source</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### CreateReaderSource {:#CreateReaderSource}
+
+ Creates a source that reads from a `SeekingReader`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>seeking_reader</code></td>
+            <td>
+                <code><a class='link' href='#SeekingReader'>SeekingReader</a></code>
+            </td>
+        </tr><tr>
+            <td><code>source_request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#Source'>Source</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### CreateElementarySource {:#CreateElementarySource}
+
+ Creates a source that allows the client to provide independent elementary
+ streams to the player. duration_ns, can_pause, can_seek and metadata are
+ all included in the SourceStatus and, when the `ElementarySource` is used by
+ the player, in the `PlayerStatus` as well. `can_pause` and `can_seek`, when
+ false, constrain the capabilities of the player.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>duration_ns</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+        </tr><tr>
+            <td><code>can_pause</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr><tr>
+            <td><code>can_seek</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr><tr>
+            <td><code>metadata</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.media/index.html'>fuchsia.media</a>/<a class='link' href='../fuchsia.media/index.html#Metadata'>Metadata</a>?</code>
+            </td>
+        </tr><tr>
+            <td><code>source_request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#ElementarySource'>ElementarySource</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### SetSource {:#SetSource}
+
+ Sets the source for this player to use. If source is null, the player
+ becomes idle.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>source</code></td>
+            <td>
+                <code><a class='link' href='#Source'>Source</a>?</code>
+            </td>
+        </tr></table>
+
+
+
+### TransitionToSource {:#TransitionToSource}
+
+ Transitions to the specified source when playback of the current source
+ reaches transition_pts. The new source starts playback at start_pts. If
+ a transition is already pending, it will be discarded in favor of the new
+ transition.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>source</code></td>
+            <td>
+                <code><a class='link' href='#Source'>Source</a></code>
+            </td>
+        </tr><tr>
+            <td><code>transition_pts</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+        </tr><tr>
+            <td><code>start_pts</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+        </tr></table>
+
+
+
+### CancelSourceTransition {:#CancelSourceTransition}
+
+ Cancels a pending transition, returning the source. If no transition is
+ pending, the request channel is closed.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>returned_source_request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#Source'>Source</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+## Source {:#Source}
+*Defined in [fuchsia.media.playback/source_manager.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media.playback/source_manager.fidl#54)*
+
+ A source of content that may be used by a player.
+
+### OnStatusChanged {:#OnStatusChanged}
+
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>source_status</code></td>
+            <td>
+                <code><a class='link' href='#SourceStatus'>SourceStatus</a></code>
+            </td>
+        </tr></table>
+
+## ElementarySource {:#ElementarySource}
+*Defined in [fuchsia.media.playback/source_manager.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media.playback/source_manager.fidl#61)*
+
+ `Source` variant for providing elementary streams directly to the player.
+
+### OnStatusChanged {:#OnStatusChanged}
+
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>source_status</code></td>
+            <td>
+                <code><a class='link' href='#SourceStatus'>SourceStatus</a></code>
+            </td>
+        </tr></table>
+
+### AddStream {:#AddStream}
+
+ Adds an elementary stream. The elementary stream can be removed by
+ closing the `SimpleStreamSink`. `ticks_per_second_numerator` and
+ `ticks_per_second_denominator` indicate the units that will be used for
+ `Streampacket` timestamp values. For nanoseconds units, for example,
+ `ticks_per_second_numerator` should be 1000000000 and
+ `ticks_per_second_denominator` should be 1. To use units of frames for
+ 48k audio, `ticks_per_second_numerator` should be 48000 and
+ `ticks_per_second_denominator` should be 1.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>type</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.media/index.html'>fuchsia.media</a>/<a class='link' href='../fuchsia.media/index.html#StreamType'>StreamType</a></code>
+            </td>
+        </tr><tr>
+            <td><code>ticks_per_second_numerator</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>ticks_per_second_denominator</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>sink_request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='../fuchsia.media/index.html'>fuchsia.media</a>/<a class='link' href='../fuchsia.media/index.html#SimpleStreamSink'>SimpleStreamSink</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### AddBinding {:#AddBinding}
+
+ Adds a new binding to this `ElementarySource`. By using this method,
+ the client can obtain an additional channel through which to communicate
+ to this `ElementarySource` even after a channel is consumed by a call to
+ `SourceManager.SetSource`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>source_request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#ElementarySource'>ElementarySource</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
 
 
 ## **STRUCTS**
@@ -910,6 +1562,254 @@
         </tr>
 </table>
 
+### PlayerStatus {:#PlayerStatus}
+*Defined in [fuchsia.media.playback/player.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media.playback/player.fidl#52)*
+
+
+
+ Player status information.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>duration</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+            <td> Duration of the content.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>can_pause</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Whether the player can pause.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>can_seek</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Whether the player can seek.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>has_audio</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Whether the source has an audio stream.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>has_video</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Whether the source has a video stream.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>ready</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Indicates whether the player is ready to play. After `SetHttpSource`,
+ `SetFileSource` or `SourceManager.SetSource` is called, this value is
+ false until the player is fully prepared to play the content from the
+ source.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>metadata</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.media/index.html'>fuchsia.media</a>/<a class='link' href='../fuchsia.media/index.html#Metadata'>Metadata</a>?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>problem</code></td>
+            <td>
+                <code><a class='link' href='#Problem'>Problem</a>?</code>
+            </td>
+            <td> Indicates a problem preventing intended operation.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>audio_connected</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Indicates whether an audio stream is currently connected for rendering.
+ This value will be false if `has_audio` is false or if the audio stream
+ type isn't supported.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>video_connected</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Indicates whether a video stream is currently connected for rendering.
+ This value will be false if `has_video` is false or if the video stream
+ type isn't supported.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>video_size</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.math/index.html'>fuchsia.math</a>/<a class='link' href='../fuchsia.math/index.html#Size'>Size</a>?</code>
+            </td>
+            <td> Size of the video currently being produced. This value will be null if
+ the video size is currently unknown.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>pixel_aspect_ratio</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.math/index.html'>fuchsia.math</a>/<a class='link' href='../fuchsia.math/index.html#Size'>Size</a>?</code>
+            </td>
+            <td> Relative dimensions of a video pixel. This value will be null if the
+ pixel aspect ratio is currently unknown.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>timeline_function</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.media/index.html'>fuchsia.media</a>/<a class='link' href='../fuchsia.media/index.html#TimelineFunction'>TimelineFunction</a>?</code>
+            </td>
+            <td> Function translating local time to presentation time. This value will be
+ null if the timeline function is currently undefined.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>end_of_stream</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Indicates whether presentation for all streams has reached end-of-stream.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Problem {:#Problem}
+*Defined in [fuchsia.media.playback/problem.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media.playback/problem.fidl#17)*
+
+
+
+ Models a problem preventing intended operation.
+
+ A `Problem` is generally surfaced as part of a component's status, probably
+ as an optional field. Absence of a `Problem` means that nothing is preventing
+ intended operation. When a problem is exposed, the client can take action
+ automatically or present relevant UI. If a problem can be resolved by some
+ action, the client may take that action automatically or enlist the user
+ somehow in the resolution. In either case, the problem goes away when the
+ issue that caused it to be exposed is resolved. By design, there is no
+ general means of dismissing a problem.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>type</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> The type of problem. This is a string for extensibility.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>details</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td> Type-dependent details.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SourceStatus {:#SourceStatus}
+*Defined in [fuchsia.media.playback/source_manager.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media.playback/source_manager.fidl#97)*
+
+
+
+ Source status information.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>duration</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+            <td> Duration of the content.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>can_pause</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Whether the source can pause.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>can_seek</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Whether the source can seek.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>has_audio</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Whether the source has an audio stream.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>has_video</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Whether the source has a video stream.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>ready</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Indicates whether the source is ready. A true value signals that the
+ content has been probed and there are no known problems with it.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>metadata</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.media/index.html'>fuchsia.media</a>/<a class='link' href='../fuchsia.media/index.html#Metadata'>Metadata</a>?</code>
+            </td>
+            <td> Describes the media.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>problem</code></td>
+            <td>
+                <code><a class='link' href='#Problem'>Problem</a>?</code>
+            </td>
+            <td> Indicates a problem preventing intended operation. A null value
+ indicates that the source is functioning as intended.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
 
 
 
@@ -971,6 +1871,52 @@
  Indicating that the size isn't known.
 </td>
         </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media.playback/problem.fidl#25">PROBLEM_INTERNAL</a></td>
+            <td><code>fuchsia.media.playback.Internal</code></td>
+                    <td><code>String</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media.playback/problem.fidl#27">PROBLEM_ASSET_NOT_FOUND</a></td>
+            <td><code>fuchsia.media.playback.AssetNotFound</code></td>
+                    <td><code>String</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media.playback/problem.fidl#29">PROBLEM_CONTAINER_NOT_SUPPORTED</a></td>
+            <td><code>fuchsia.media.playback.ContainerNotSupported</code></td>
+                    <td><code>String</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media.playback/problem.fidl#31">PROBLEM_AUDIO_ENCODING_NOT_SUPPORTED</a></td>
+            <td><code>fuchsia.media.playback.AudioEncodingNotSupported</code></td>
+                    <td><code>String</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media.playback/problem.fidl#33">PROBLEM_VIDEO_ENCODING_NOT_SUPPORTED</a></td>
+            <td><code>fuchsia.media.playback.VideoEncodingNotSupported</code></td>
+                    <td><code>String</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media.playback/problem.fidl#35">PROBLEM_CONNECTION_FAILED</a></td>
+            <td><code>fuchsia.media.playback.ConnectionFailed</code></td>
+                    <td><code>String</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media.playback/seeking_reader.fidl#25">UNKNOWN_SIZE</a></td>
+            <td>
+                    <code>18446744073709551615</code>
+                </td>
+                <td><code>uint64</code></td>
+            <td> Distinguished value for the `size` value returned by `SeekingReader.Describe`
+ Indicating that the size isn't known.
+</td>
+        </tr>
     
 </table>
 
diff --git a/sdk/fidl/fuchsia.media.sessions2/index.md b/sdk/fidl/fuchsia.media.sessions2/index.md
index 04b8956..282cd61 100644
--- a/sdk/fidl/fuchsia.media.sessions2/index.md
+++ b/sdk/fidl/fuchsia.media.sessions2/index.md
@@ -706,6 +706,706 @@
 
 
 
+## SessionControl {:#SessionControl}
+*Defined in [fuchsia.media.sessions2/discovery.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media.sessions2/discovery.fidl#39)*
+
+ A protocol for clients to control sessions and view their status.
+
+### Play {:#Play}
+
+ Plays media.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### Pause {:#Pause}
+
+ Pauses playback and retains position in media
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### Stop {:#Stop}
+
+ Stops playback. The session should close.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### Seek {:#Seek}
+
+ Seeks to a specific position in media. Implementations are free to
+ enter an error state if the position is out of bounds. `position`
+ is an offset from the beginning of the media.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>position</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+        </tr></table>
+
+
+
+### SkipForward {:#SkipForward}
+
+ Skips forward in media by the player's default skip amount.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### SkipReverse {:#SkipReverse}
+
+ Skips in reverse in media by the player's default skip amount.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### NextItem {:#NextItem}
+
+ Changes media to the next item (e.g. next song in playlist).
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### PrevItem {:#PrevItem}
+
+ Changes media to the previous item.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### SetPlaybackRate {:#SetPlaybackRate}
+
+ Sets the playback rate of the media. This will not change the
+ playback mode.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>playback_rate</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+        </tr></table>
+
+
+
+### SetRepeatMode {:#SetRepeatMode}
+
+ Sets repeat mode to any of the supported repeat modes.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>repeat_mode</code></td>
+            <td>
+                <code><a class='link' href='#RepeatMode'>RepeatMode</a></code>
+            </td>
+        </tr></table>
+
+
+
+### SetShuffleMode {:#SetShuffleMode}
+
+ Sets shuffle mode.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>shuffle_on</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr></table>
+
+
+
+### BindGainControl {:#BindGainControl}
+
+ Binds to the session's gain control for control and notifications.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>gain_control_request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='../fuchsia.media.audio/index.html'>fuchsia.media.audio</a>/<a class='link' href='../fuchsia.media.audio/index.html#GainControl'>GainControl</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### BindVolumeControl {:#BindVolumeControl}
+
+ Binds to the session's volume control for control and notifications.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>volume_control_request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='../fuchsia.media.audio/index.html'>fuchsia.media.audio</a>/<a class='link' href='../fuchsia.media.audio/index.html#VolumeControl'>VolumeControl</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+## SessionsWatcher {:#SessionsWatcher}
+*Defined in [fuchsia.media.sessions2/discovery.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media.sessions2/discovery.fidl#80)*
+
+ `SessionsWatcher` watches the collection of published sessions.
+
+### SessionUpdated {:#SessionUpdated}
+
+ Called by the registry service when a session is updated. On first connection,
+ this will be called as many times as needed to communicate the state of the
+ world.
+
+ `SessionsWatchers` must reply to acknlowledge receipt of the session info delta.
+ Delinquent watchers who do not reply will eventually be disconnected.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>session_id</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr><tr>
+            <td><code>session_info_delta</code></td>
+            <td>
+                <code><a class='link' href='#SessionInfoDelta'>SessionInfoDelta</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+### SessionRemoved {:#SessionRemoved}
+
+ Called by the registry service when a session is removed from the registered
+ collection.
+
+ `SessionsWatchers` must reply to acknlowledge receipt of the session removal.
+ Delinquent watchers who do not reply will eventually be disconnected.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>session_id</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+## Discovery {:#Discovery}
+*Defined in [fuchsia.media.sessions2/discovery.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media.sessions2/discovery.fidl#100)*
+
+ `Discovery` observes the collection of published media sessions
+ and connects clients to them.
+
+### WatchSessions {:#WatchSessions}
+
+ Connects a session watcher configured with the given options.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>watch_options</code></td>
+            <td>
+                <code><a class='link' href='#WatchOptions'>WatchOptions</a></code>
+            </td>
+        </tr><tr>
+            <td><code>session_watcher</code></td>
+            <td>
+                <code><a class='link' href='#SessionsWatcher'>SessionsWatcher</a></code>
+            </td>
+        </tr></table>
+
+
+
+### ConnectToSession {:#ConnectToSession}
+
+ Connects to a `SessionControl` for `session_id` if present. Drops the
+ given channel otherwise.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>session_id</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr><tr>
+            <td><code>session_control_request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#SessionControl'>SessionControl</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+## PlayerControl {:#PlayerControl}
+*Defined in [fuchsia.media.sessions2/player.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media.sessions2/player.fidl#22)*
+
+ Controls for a media player.
+
+### Play {:#Play}
+
+ Plays media.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### Pause {:#Pause}
+
+ Pauses playback and retains position in media
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### Stop {:#Stop}
+
+ Stops playback. The session should close.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### Seek {:#Seek}
+
+ Seeks to a specific position in media. Implementations are free to
+ enter an error state if the position is out of bounds. `position`
+ is an offset from the beginning of the media.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>position</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+        </tr></table>
+
+
+
+### SkipForward {:#SkipForward}
+
+ Skips forward in media by the player's default skip amount.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### SkipReverse {:#SkipReverse}
+
+ Skips in reverse in media by the player's default skip amount.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### NextItem {:#NextItem}
+
+ Changes media to the next item (e.g. next song in playlist).
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### PrevItem {:#PrevItem}
+
+ Changes media to the previous item.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### SetPlaybackRate {:#SetPlaybackRate}
+
+ Sets the playback rate of the media. This will not change the
+ playback mode.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>playback_rate</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+        </tr></table>
+
+
+
+### SetRepeatMode {:#SetRepeatMode}
+
+ Sets repeat mode to any of the supported repeat modes.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>repeat_mode</code></td>
+            <td>
+                <code><a class='link' href='#RepeatMode'>RepeatMode</a></code>
+            </td>
+        </tr></table>
+
+
+
+### SetShuffleMode {:#SetShuffleMode}
+
+ Sets shuffle mode.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>shuffle_on</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr></table>
+
+
+
+### BindGainControl {:#BindGainControl}
+
+ Binds to the session's gain control for control and notifications.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>gain_control_request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='../fuchsia.media.audio/index.html'>fuchsia.media.audio</a>/<a class='link' href='../fuchsia.media.audio/index.html#GainControl'>GainControl</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### BindVolumeControl {:#BindVolumeControl}
+
+ Binds to the session's volume control for control and notifications.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>volume_control_request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='../fuchsia.media.audio/index.html'>fuchsia.media.audio</a>/<a class='link' href='../fuchsia.media.audio/index.html#VolumeControl'>VolumeControl</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+## Player {:#Player}
+*Defined in [fuchsia.media.sessions2/player.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media.sessions2/player.fidl#160)*
+
+ `Player` is a handle for a media player. Unsupported commands are
+ no-ops.  Consult `PlaybackCapabilities`, sent by to learn which
+ commands are supported.
+
+### Play {:#Play}
+
+ Plays media.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### Pause {:#Pause}
+
+ Pauses playback and retains position in media
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### Stop {:#Stop}
+
+ Stops playback. The session should close.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### Seek {:#Seek}
+
+ Seeks to a specific position in media. Implementations are free to
+ enter an error state if the position is out of bounds. `position`
+ is an offset from the beginning of the media.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>position</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+        </tr></table>
+
+
+
+### SkipForward {:#SkipForward}
+
+ Skips forward in media by the player's default skip amount.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### SkipReverse {:#SkipReverse}
+
+ Skips in reverse in media by the player's default skip amount.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### NextItem {:#NextItem}
+
+ Changes media to the next item (e.g. next song in playlist).
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### PrevItem {:#PrevItem}
+
+ Changes media to the previous item.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### SetPlaybackRate {:#SetPlaybackRate}
+
+ Sets the playback rate of the media. This will not change the
+ playback mode.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>playback_rate</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+        </tr></table>
+
+
+
+### SetRepeatMode {:#SetRepeatMode}
+
+ Sets repeat mode to any of the supported repeat modes.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>repeat_mode</code></td>
+            <td>
+                <code><a class='link' href='#RepeatMode'>RepeatMode</a></code>
+            </td>
+        </tr></table>
+
+
+
+### SetShuffleMode {:#SetShuffleMode}
+
+ Sets shuffle mode.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>shuffle_on</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr></table>
+
+
+
+### BindGainControl {:#BindGainControl}
+
+ Binds to the session's gain control for control and notifications.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>gain_control_request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='../fuchsia.media.audio/index.html'>fuchsia.media.audio</a>/<a class='link' href='../fuchsia.media.audio/index.html#GainControl'>GainControl</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### BindVolumeControl {:#BindVolumeControl}
+
+ Binds to the session's volume control for control and notifications.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>volume_control_request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='../fuchsia.media.audio/index.html'>fuchsia.media.audio</a>/<a class='link' href='../fuchsia.media.audio/index.html#VolumeControl'>VolumeControl</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### WatchInfoChange {:#WatchInfoChange}
+
+ Leave hanging to receive a response when the player's
+ status changes.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>player_info_delta</code></td>
+            <td>
+                <code><a class='link' href='#PlayerInfoDelta'>PlayerInfoDelta</a></code>
+            </td>
+        </tr></table>
+
+## Publisher {:#Publisher}
+*Defined in [fuchsia.media.sessions2/publisher.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media.sessions2/publisher.fidl#19)*
+
+ `Publisher` publishes media players so they may be discovered and
+ controlled by clients who have permission to do so.
+
+### PublishPlayer {:#PublishPlayer}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>player</code></td>
+            <td>
+                <code><a class='link' href='#Player'>Player</a></code>
+            </td>
+        </tr><tr>
+            <td><code>registration</code></td>
+            <td>
+                <code><a class='link' href='#PlayerRegistration'>PlayerRegistration</a></code>
+            </td>
+        </tr></table>
+
+
+
 
 
 ## **STRUCTS**
@@ -743,6 +1443,39 @@
         </tr>
 </table>
 
+### ImageSizeVariant {:#ImageSizeVariant}
+*Defined in [fuchsia.media.sessions2/images.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media.sessions2/images.fidl#18)*
+
+
+
+ A variant of an image at a specific size.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>url</code></td>
+            <td>
+                <code>string[1000]</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>width</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>height</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
 
 
 ## **ENUMS**
@@ -758,14 +1491,11 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>ARTWORK</code></td>
             <td><code>0</code></td>
-            <td> Artwork for the playing media.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>SOURCE_ICON</code></td>
             <td><code>1</code></td>
-            <td> An icon for the source of the playing media (e.g. the player or
- streaming service).
-</td>
+            <td></td>
         </tr></table>
 
 ### ContentType {:#ContentType}
@@ -816,8 +1546,7 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>IDLE</code></td>
             <td><code>0</code></td>
-            <td> The initial state of a session if there is no associated media.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>PLAYING</code></td>
             <td><code>1</code></td>
@@ -833,8 +1562,7 @@
         </tr><tr>
             <td><code>ERROR</code></td>
             <td><code>4</code></td>
-            <td> The player cannot recover from this state and will close.
-</td>
+            <td></td>
         </tr></table>
 
 ### Error {:#Error}
@@ -863,18 +1591,137 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>OFF</code></td>
             <td><code>0</code></td>
-            <td> No repeat.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>GROUP</code></td>
             <td><code>1</code></td>
-            <td> Repeat the relevant group of media (e.g. playlist).
-</td>
+            <td></td>
         </tr><tr>
             <td><code>SINGLE</code></td>
             <td><code>2</code></td>
-            <td> Repeat the currently playing media.
-</td>
+            <td></td>
+        </tr></table>
+
+### MediaImageType {:#MediaImageType}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.media.sessions2/images.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media.sessions2/images.fidl#9)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>ARTWORK</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>SOURCE_ICON</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr></table>
+
+### ContentType {:#ContentType}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.media.sessions2/player.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media.sessions2/player.fidl#60)*
+
+ The type of content playing back, which should be set to the largest
+ applicable value.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>OTHER</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>AUDIO</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>VIDEO</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>MUSIC</code></td>
+            <td><code>4</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>TV_SHOW</code></td>
+            <td><code>5</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>MOVIE</code></td>
+            <td><code>6</code></td>
+            <td></td>
+        </tr></table>
+
+### PlayerState {:#PlayerState}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.media.sessions2/player.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media.sessions2/player.fidl#86)*
+
+ State of a media player.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>IDLE</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PLAYING</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PAUSED</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>BUFFERING</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>ERROR</code></td>
+            <td><code>4</code></td>
+            <td></td>
+        </tr></table>
+
+### Error {:#Error}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.media.sessions2/player.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media.sessions2/player.fidl#98)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>OTHER</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr></table>
+
+### RepeatMode {:#RepeatMode}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.media.sessions2/player.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media.sessions2/player.fidl#103)*
+
+ Modes of repeating playback of the current media.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>OFF</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>GROUP</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>SINGLE</code></td>
+            <td><code>2</code></td>
+            <td></td>
         </tr></table>
 
 
@@ -1163,6 +2010,288 @@
 </td>
         </tr></table>
 
+### SessionInfoDelta {:#SessionInfoDelta}
+
+
+*Defined in [fuchsia.media.sessions2/discovery.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media.sessions2/discovery.fidl#17)*
+
+ SessionInfoDelta holds a description of a given session. The first
+ time a client receives this, it is a state of the world. On successive
+ receipts of this table, only the changed fields will be present (this
+ property is not recursive; top-level fields if set are snapshots).
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>domain</code></td>
+            <td>
+                <code>string[1000]</code>
+            </td>
+            <td> The domain on which the session takes place. A domain identifies a set of
+ mutually compatable media targets and sessions; sessions on a domain may
+ be played back on targets of the same domain.
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>is_local</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Whether the entry point for the media into our device network is the local
+ machine; this should be true if this is the device streaming from
+ a music service, but false if this machine is just receiving an audio stream
+ to act as a speaker.
+</td>
+        </tr><tr>
+            <td>3</td>
+            <td><code>is_locally_active</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> If this is set, the playback is taking place local to the device.
+ Playing on the device speaker is local, playing on a remote speaker
+ is not. This is only set when the session is playing back; a paused
+ session is not active.
+</td>
+        </tr><tr>
+            <td>4</td>
+            <td><code>player_status</code></td>
+            <td>
+                <code><a class='link' href='#PlayerStatus'>PlayerStatus</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>5</td>
+            <td><code>metadata</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.media/index.html'>fuchsia.media</a>/<a class='link' href='../fuchsia.media/index.html#Metadata'>Metadata</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>6</td>
+            <td><code>media_images</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#MediaImage'>MediaImage</a>&gt;</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>7</td>
+            <td><code>player_capabilities</code></td>
+            <td>
+                <code><a class='link' href='#PlayerCapabilities'>PlayerCapabilities</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### WatchOptions {:#WatchOptions}
+
+
+*Defined in [fuchsia.media.sessions2/discovery.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media.sessions2/discovery.fidl#74)*
+
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>only_active</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Watch only the active session. Watches all if not set.
+</td>
+        </tr></table>
+
+### MediaImage {:#MediaImage}
+
+
+*Defined in [fuchsia.media.sessions2/images.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media.sessions2/images.fidl#25)*
+
+ An image for playing media.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>image_type</code></td>
+            <td>
+                <code><a class='link' href='#MediaImageType'>MediaImageType</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>sizes</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#ImageSizeVariant'>ImageSizeVariant</a>&gt;[16]</code>
+            </td>
+            <td> Available variants of the image.
+</td>
+        </tr></table>
+
+### PlayerStatus {:#PlayerStatus}
+
+
+*Defined in [fuchsia.media.sessions2/player.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media.sessions2/player.fidl#70)*
+
+ Status of a media player.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>duration</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+            <td> Total duration of playing media. Omitted if not known or not applicable.
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>player_state</code></td>
+            <td>
+                <code><a class='link' href='#PlayerState'>PlayerState</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>3</td>
+            <td><code>timeline_function</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.media/index.html'>fuchsia.media</a>/<a class='link' href='../fuchsia.media/index.html#TimelineFunction'>TimelineFunction</a></code>
+            </td>
+            <td> A playback function that describes the position and rate of
+ play through the media as a function of `CLOCK_MONOTONIC`.
+</td>
+        </tr><tr>
+            <td>4</td>
+            <td><code>repeat_mode</code></td>
+            <td>
+                <code><a class='link' href='#RepeatMode'>RepeatMode</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>5</td>
+            <td><code>shuffle_on</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>6</td>
+            <td><code>content_type</code></td>
+            <td>
+                <code><a class='link' href='#ContentType'>ContentType</a></code>
+            </td>
+            <td> The type of content playing back. Omitted if it is not a first class
+ category.
+</td>
+        </tr><tr>
+            <td>7</td>
+            <td><code>error</code></td>
+            <td>
+                <code><a class='link' href='#Error'>Error</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### PlayerCapabilities {:#PlayerCapabilities}
+
+
+*Defined in [fuchsia.media.sessions2/player.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media.sessions2/player.fidl#139)*
+
+ `PlaybackCapabilities` enumerates the capabilities of a media player, and
+ corresponds to the control commands it can execute.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>flags</code></td>
+            <td>
+                <code><a class='link' href='#PlayerCapabilityFlags'>PlayerCapabilityFlags</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### PlayerInfoDelta {:#PlayerInfoDelta}
+
+
+*Defined in [fuchsia.media.sessions2/player.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media.sessions2/player.fidl#145)*
+
+ When emitted, fields that have changed should be set.
+ The first emission to a new client should be a snapshot.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>local</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Whether the entry point for the media into our device network is the
+ local machine; this should be true if this is the device streaming
+ from a music service, but false or omitted if this machine is just
+ receiving an audio stream to act as a speaker.
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>player_status</code></td>
+            <td>
+                <code><a class='link' href='#PlayerStatus'>PlayerStatus</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>3</td>
+            <td><code>metadata</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.media/index.html'>fuchsia.media</a>/<a class='link' href='../fuchsia.media/index.html#Metadata'>Metadata</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>4</td>
+            <td><code>media_images</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#MediaImage'>MediaImage</a>&gt;[16]</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>5</td>
+            <td><code>player_capabilities</code></td>
+            <td>
+                <code><a class='link' href='#PlayerCapabilities'>PlayerCapabilities</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### PlayerRegistration {:#PlayerRegistration}
+
+
+*Defined in [fuchsia.media.sessions2/publisher.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media.sessions2/publisher.fidl#10)*
+
+ All information required by the media session registry service to
+ register a player so that clients may observe its status and control
+ it.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>domain</code></td>
+            <td>
+                <code>string[1000]</code>
+            </td>
+            <td> The domain on which the player exists. Unset if it is the native
+ Fuchsia domain.
+</td>
+        </tr></table>
+
 
 
 
@@ -1231,5 +2360,65 @@
 </td>
         </tr></table>
 
+### PlayerCapabilityFlags {:#PlayerCapabilityFlags}
+Type: <code>uint32</code>
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td>PLAY</td>
+            <td>1</td>
+            <td> If set, the player can `Play()`.
+</td>
+        </tr><tr>
+            <td>PAUSE</td>
+            <td>4</td>
+            <td> If set, the player can `Pause()`.
+</td>
+        </tr><tr>
+            <td>SEEK</td>
+            <td>8</td>
+            <td> If set, the player can `Seek()`.
+</td>
+        </tr><tr>
+            <td>SKIP_FORWARD</td>
+            <td>16</td>
+            <td> If set, the player can `SkipForward()`.
+</td>
+        </tr><tr>
+            <td>SKIP_REVERSE</td>
+            <td>32</td>
+            <td> If set, the player can `SkipReverse()`.
+</td>
+        </tr><tr>
+            <td>SHUFFLE</td>
+            <td>64</td>
+            <td> If set, the player can shuffle media.
+</td>
+        </tr><tr>
+            <td>CHANGE_TO_NEXT_ITEM</td>
+            <td>128</td>
+            <td></td>
+        </tr><tr>
+            <td>CHANGE_TO_PREV_ITEM</td>
+            <td>256</td>
+            <td></td>
+        </tr><tr>
+            <td>HAS_GAIN_CONTROL</td>
+            <td>512</td>
+            <td> If set, the player can `BindGainControl()`.
+</td>
+        </tr><tr>
+            <td>REPEAT_GROUPS</td>
+            <td>1024</td>
+            <td> If set, the player can repeat groups.
+</td>
+        </tr><tr>
+            <td>REPEAT_SINGLE</td>
+            <td>2048</td>
+            <td> If set, the player can repeat single media items.
+</td>
+        </tr></table>
+
 
 
diff --git a/sdk/fidl/fuchsia.media/index.md b/sdk/fidl/fuchsia.media/index.md
index b7564dc..cc00af7 100644
--- a/sdk/fidl/fuchsia.media/index.md
+++ b/sdk/fidl/fuchsia.media/index.md
@@ -2483,6 +2483,2483 @@
 
 
 
+## Audio {:#Audio}
+*Defined in [fuchsia.media/audio.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/audio.fidl#8)*
+
+
+### CreateAudioRenderer {:#CreateAudioRenderer}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>audio_renderer_request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#AudioRenderer'>AudioRenderer</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### CreateAudioCapturer {:#CreateAudioCapturer}
+
+ Create an AudioCapturer which either captures from the current default
+ audio input device, or loops-back from the current default audio output
+ device based on value passed for the loopback flag.
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>audio_capturer_request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#AudioCapturer'>AudioCapturer</a>&gt;</code>
+            </td>
+        </tr><tr>
+            <td><code>loopback</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr></table>
+
+
+
+### SetSystemMute {:#SetSystemMute}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>muted</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr></table>
+
+
+
+### SetSystemGain {:#SetSystemGain}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>gain_db</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+        </tr></table>
+
+
+
+### SystemGainMuteChanged {:#SystemGainMuteChanged}
+
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>gain_db</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+        </tr><tr>
+            <td><code>muted</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr></table>
+
+### SetRoutingPolicy {:#SetRoutingPolicy}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>policy</code></td>
+            <td>
+                <code><a class='link' href='#AudioOutputRoutingPolicy'>AudioOutputRoutingPolicy</a></code>
+            </td>
+        </tr></table>
+
+
+
+## AudioCapturer {:#AudioCapturer}
+*Defined in [fuchsia.media/audio_capturer.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/audio_capturer.fidl#256)*
+
+ AudioCapturer
+
+ An AudioCapturer is an interface returned from an fuchsia.media.Audio's
+ CreateAudioCapturer method, which may be used by clients to capture audio
+ from either the current default audio input device, or the current default
+ audio output device depending on the flags passed during creation.
+
+ ** Format support **
+
+ See (Get|Set)StreamType below. By default, the captured stream type will be
+ initially determined by the currently configured stream type of the source
+ that the AudioCapturer was bound to at creation time. Users may either fetch
+ this type using GetStreamType, or they may choose to have the media
+ resampled or converted to a type of their choosing by calling SetStreamType.
+ Note: the stream type may only be set while the system is not running,
+ meaning that there are no pending capture regions (specified using CaptureAt)
+ and that the system is not currently running in 'async' capture mode.
+
+ ** Buffers and memory management **
+
+ Audio data is captured into a shared memory buffer (a VMO) supplied by the
+ user to the AudioCapturer during the AddPayloadBuffer call.  Please note the
+ following requirements related to the management of the payload buffer.
+
+ ++ The payload buffer must be supplied before any capture operation may
+    start.  Any attempt to start capture (via either CaptureAt or
+    StartAsyncCapture) before a payload buffer has been established is an
+    error.
+ ++ The payload buffer may not be changed while there are any capture
+    operations pending.
+ ++ The stream type may not be changed after the payload buffer has been set.
+ ++ The payload buffer must be an integral number of audio frame sizes (in
+    bytes)
+ ++ When running in 'async' mode (see below), the payload buffer must be at
+    least as large as twice the frames_per_packet size specified during
+    StartAsyncCapture.
+ ++ The handle to the payload buffer supplied by the user must be readable,
+    writable, and mappable.
+ ++ Users should always treat the payload buffer as read-only.
+
+ ** Synchronous vs. Asynchronous capture mode **
+
+ The AudioCapturer interface can be used in one of two mutually exclusive
+ modes: Synchronous and Asynchronous.  A description of each mode and their
+ tradeoffs is given below.
+
+ ** Synchronous mode **
+
+ By default, AudioCapturer instances are running in 'sync' mode.  They will
+ only capture data when a user supplies at least one region to capture into
+ using the CaptureAt method.  Regions supplied in this way will be filled in
+ the order that they are received and returned to the client as StreamPackets
+ via the return value of the CaptureAt method.  If an AudioCapturer instance
+ has data to capture, but no place to put it (because there are no more
+ pending regions to fill), the next payload generated will indicate that their
+ has been an overflow by setting the Discontinuity flag on the next produced
+ StreamPacket.  Synchronous mode may not be used in conjunction with
+ Asynchronous mode.  It is an error to attempt to call StartAsyncCapture while
+ the system still regions supplied by CaptureAt waiting to be filled.
+
+ If a user has supplied regions to be filled by the AudioCapturer instance in
+ the past, but wishes to reclaim those regions, they may do so using the
+ DiscardAllPackets method.  Calling the DiscardAllPackets method will cause
+ all pending regions to be returned, but with `NO_TIMESTAMP` as their
+ StreamPacket's PTS.  See "Timing and Overflows", below, for a discussion of
+ timestamps and discontinuity flags. After a DiscardAllPackets operation,
+ an OnEndOfStream event will be produced.  While an AudioCapturer will never
+ overwrite any region of the payload buffer after a completed region is
+ returned, it may overwrite the unfilled portions of a partially filled
+ buffer which has been returned as a result of a DiscardAllPackets operation.
+
+ ** Asynchronous mode **
+
+ While running in 'async' mode, clients do not need to explicitly supply
+ shared buffer regions to be filled by the AudioCapturer instance. Instead, a
+ client enters into 'async' mode by calling StartAsyncCapture and supplying a
+ callback interface and the number of frames to capture per-callback. Once
+ running in async mode, the AudioCapturer instance will identify which
+ payload buffer regions to capture into, capture the specified number of
+ frames, then deliver those frames as StreamPackets using the OnPacketCapture
+ FIDL event. Users may stop capturing and return the AudioCapturer instance to
+ 'sync' mode using the StopAsyncCapture method.
+
+ It is considered an error to attempt any of the following operations.
+
+ ++ To attempt to enter 'async' capture mode when no payload buffer has been
+    established.
+ ++ To specify a number of frames to capture per payload which does not permit
+    at least two contiguous capture payloads to exist in the established
+    shared payload buffer simultaneously.
+ ++ To send a region to capture into using the CaptureAt method while the
+    AudioCapturer instance is running in 'async' mode.
+ ++ To attempt to call DiscardAllPackets while the AudioCapturer instance is
+    running in 'async' mode.
+ ++ To attempt to re-start 'async' mode capturing without having first
+    stopped.
+ ++ To attempt any operation except for SetGain while in the process of
+    stopping.
+
+ ** Synchronizing with a StopAsyncCapture operation **
+
+ Stopping asynchronous capture mode and returning to synchronous capture mode
+ is an operation which takes time.  Aside from SetGain, users may not call any
+ other methods on the AudioCapturer interface after calling StopAsyncCapture
+ (including calling StopAsyncCapture again) until after the stop operation has
+ completed.  Because of this, it is important for users to be able to
+ synchronize with the stop operation.  Two mechanisms are provided for doing
+ so.
+
+ The first is to use the StopAsyncCaptureWithCallback method.  When the user's
+ callback has been called, they can be certain that stop operation is complete
+ and that the AudioCapturer instance has returned to synchronous operation
+ mode.
+
+ The second way to determine that a stop operation has completed is to use the
+ flags on the packets which get delivered via the user-supplied
+ AudioCapturerCallback interface after calling StopAsyncCapture.  When
+ asked to stop, any partially filled packet will be returned to the user, and
+ the final packet returned will always have the end-of-stream flag (kFlagsEos)
+ set on it to indicate that this is the final frame in the sequence.  If
+ there is no partially filled packet to return, the AudioCapturer will
+ synthesize an empty packet with no timestamp, and offset/length set to zero,
+ in order to deliver a packet with the end-of-stream flag set on it.  Once
+ users have seen the end-of-stream flag after calling stop, the AudioCapturer
+ has finished the stop operation and returned to synchronous operating mode.
+
+ ** Timing and Overflows **
+
+ All media packets produced by an AudioCapturer instance will have their PTS
+ field filled out with the capture time of the audio expressed as a timestamp
+ given by the `CLOCK_MONOTONIC` timeline.  Note: this timestamp is actually a
+ capture timestamp, not a presentation timestamp (it is more of a CTS than a
+ PTS) and is meant to represent the underlying system's best estimate of the
+ capture time of the first frame of audio, including all outboard and hardware
+ introduced buffering delay.  As a result, all timestamps produced by an
+ AudioCapturer should be expected to be in the past relative to 'now' on the
+ `CLOCK_MONOTONIC` timeline.
+
+ The one exception to the "everything has an explicit timestamp" rule is when
+ discarding submitted regions while operating in synchronous mode. Discarded
+ packets have no data in them, but FIDL demands that all pending
+ method-return-value callbacks be executed.  Because of this, the regions will
+ be returned to the user, but their timestamps will be set to
+ `NO_TIMESTAMP`, and their payload sizes will be set to zero.  Any
+ partially filled payload will have a valid timestamp, but a payload size
+ smaller than originally requested.  The final discarded payload (if there
+ were any to discard) will be followed by an OnEndOfStream event.
+
+ Two StreamPackets delivered by an AudioCapturer instance are 'continuous' if
+ the first frame of audio contained in the second packet was capture exactly
+ one nominal frame time after the final frame of audio in the first packet.
+ If this relationship does not hold, the second StreamPacket will have the
+ 'kFlagDiscontinuous' flag set in it's flags field.
+
+ Even though explicit timestamps are provided on every StreamPacket produced,
+ users who have very precise timing requirements are encouraged to always
+ reason about time by counting frames delivered since the last discontinuity
+ instead of simply using the raw capture timestamps.  This is because the
+ explicit timestamps written on continuous packets may have a small amount of
+ rounding error based on whether or not the units of the capture timeline
+ (`CLOCK_MONOTONIC`) are divisible by the chosen audio frame rate.
+
+ Users should always expect the first StreamPacket produced by an
+ AudioCapturer to have the discontinuous flag set on it (as there is no
+ previous packet to be continuous with). Similarly, the first StreamPacket
+ after a DiscardAllPackets or a Stop/Start cycle will always be
+ discontinuous. After that, there are only two reasons that a StreamPacket
+ will ever be discontinuous:
+
+ 1) The user is operating an synchronous mode and does not supply regions to
+    be filled quickly enough.  If the next continuous frame of data has not
+    been captured by the time it needs to be purged from the source buffers,
+    an overflow has occurred and the AudioCapturer will flag the next captured
+    region as discontinuous.
+ 2) The user is operating in asynchronous mode and some internal error
+    prevents the AudioCapturer instance from capturing the next frame of audio
+    in a continuous fashion.  This might be high system load or a hardware
+    error, but in general it is something which should never normally happen.
+    In practice, however, if it does, the next produced packet will be flagged
+    as being discontinuous.
+
+ ** Synchronous vs. Asynchronous Trade-offs **
+
+ The choice of operating in synchronous vs. asynchronous mode is up to the
+ user, and depending on the user's requirements, there are some advantages and
+ disadvantages to each choice.
+
+ Synchronous mode requires only a single Zircon channel under the hood and can
+ achieve some small savings because of this.  In addition, the user has
+ complete control over the buffer management.  Users specify exactly where
+ audio will be captured to and in what order.  Because of this, if users do
+ not need to always be capturing, it is simple to stop and restart the capture
+ later (just by ceasing to supply packets, then resuming later on).  Payloads
+ do not need to be uniform in size either, clients may specify payloads of
+ whatever granularity is appropriate.
+
+ The primary downside of operating in synchronous mode is that two messages
+ will need to be sent for every packet to be captured.  One to inform the
+ AudioCapturer of the instance to capture into, and one to inform the user
+ that the packet has been captured.  This may end up increasing overhead and
+ potentially complicating client designs.
+
+ Asynchronous mode has the advantage requiring only 1/2 of the messages,
+ however, when operating in 'async' mode, AudioCapturer instances have no way
+ of knowing if a user is processing the StreamPackets being sent in a timely
+ fashion, and no way of automatically detecting an overflow condition.  Users
+ of 'async' mode should be careful to use a buffer large enough to ensure that
+ they will be able to process their data before an AudioCapturer will be
+ forced to overwrite it.
+
+
+### AddPayloadBuffer {:#AddPayloadBuffer}
+
+ Adds a payload buffer to the current buffer set associated with the
+ connection. A `StreamPacket` struct reference a payload buffer in the
+ current set by ID using the `StreamPacket.payload_buffer_id` field.
+
+ A buffer with ID `id` must not be in the current set when this method is
+ invoked, otherwise the service will close the connection.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>payload_buffer</code></td>
+            <td>
+                <code>handle&lt;vmo&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### RemovePayloadBuffer {:#RemovePayloadBuffer}
+
+ Removes a payload buffer from the current buffer set associated with the
+ connection.
+
+ A buffer with ID `id` must exist in the current set when this method is
+ invoked, otherwise the service will will close the connection.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr></table>
+
+
+
+### OnPacketProduced {:#OnPacketProduced}
+
+ Delivers a packet produced by the service. When the client is done with
+ the payload memory, the client must call `ReleasePacket` to release the
+ payload memory.
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>packet</code></td>
+            <td>
+                <code><a class='link' href='#StreamPacket'>StreamPacket</a></code>
+            </td>
+        </tr></table>
+
+### OnEndOfStream {:#OnEndOfStream}
+
+ Indicates that the stream has ended.
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+### ReleasePacket {:#ReleasePacket}
+
+ Releases payload memory associated with a packet previously delivered
+ via `OnPacketProduced`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>packet</code></td>
+            <td>
+                <code><a class='link' href='#StreamPacket'>StreamPacket</a></code>
+            </td>
+        </tr></table>
+
+
+
+### DiscardAllPackets {:#DiscardAllPackets}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+### DiscardAllPacketsNoReply {:#DiscardAllPacketsNoReply}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### SetPcmStreamType {:#SetPcmStreamType}
+
+ Sets the stream type of the stream to be delivered.  Causes the source
+ material to be reformatted/resampled if needed in order to produce the
+ requested stream type. Note that the stream type may not be changed
+ after the payload buffer has been established.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>stream_type</code></td>
+            <td>
+                <code><a class='link' href='#AudioStreamType'>AudioStreamType</a></code>
+            </td>
+        </tr></table>
+
+
+
+### CaptureAt {:#CaptureAt}
+
+ Explicitly specify a region of the shared payload buffer for the audio
+ input to capture into.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>payload_buffer_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>payload_offset</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>frames</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>captured_packet</code></td>
+            <td>
+                <code><a class='link' href='#StreamPacket'>StreamPacket</a></code>
+            </td>
+        </tr></table>
+
+### StartAsyncCapture {:#StartAsyncCapture}
+
+ Place the AudioCapturer into 'async' capture mode and begin to produce
+ packets of exactly 'frames_per_packet' number of frames each. The
+ OnPacketProduced event (of StreamSink) will be used to inform the client
+ of produced packets.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>frames_per_packet</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr></table>
+
+
+
+### StopAsyncCapture {:#StopAsyncCapture}
+
+ Stop capturing in 'async' capture mode and (optionally) deliver a
+ callback that may be used by the client if explicit synchronization
+ is needed.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+### StopAsyncCaptureNoReply {:#StopAsyncCaptureNoReply}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### BindGainControl {:#BindGainControl}
+
+ Binds to the gain control for this AudioCapturer.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>gain_control_request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='../fuchsia.media.audio/index.html'>fuchsia.media.audio</a>/<a class='link' href='../fuchsia.media.audio/index.html#GainControl'>GainControl</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### SetUsage {:#SetUsage}
+
+ Sets the usage of the capture stream.  This may be changed on the fly, but
+ packets in flight may be affected by the new usage.  By default the
+ Capturer is created with the FOREGROUND usage.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>usage</code></td>
+            <td>
+                <code><a class='link' href='#AudioCaptureUsage'>AudioCaptureUsage</a></code>
+            </td>
+        </tr></table>
+
+
+
+### GetStreamType {:#GetStreamType}
+
+ Gets the currently configured stream type. Note: for an AudioCapturer
+ which was just created and has not yet had its stream type explicitly
+ set, this will retrieve the stream type -- at the time the AudioCapturer
+ was created -- of the source (input or looped-back output) to which the
+ AudioCapturer is bound.
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>stream_type</code></td>
+            <td>
+                <code><a class='link' href='#StreamType'>StreamType</a></code>
+            </td>
+        </tr></table>
+
+## AudioCore {:#AudioCore}
+*Defined in [fuchsia.media/audio_core.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/audio_core.fidl#82)*
+
+
+### CreateAudioRenderer {:#CreateAudioRenderer}
+
+ Create an AudioRenderer which outputs audio to the default device.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>audio_out_request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#AudioRenderer'>AudioRenderer</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### CreateAudioCapturer {:#CreateAudioCapturer}
+
+ Create an AudioCapturer which either captures from the current default
+ audio input device, or loops-back from the current default audio output
+ device based on value passed for the loopback flag.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>loopback</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr><tr>
+            <td><code>audio_in_request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#AudioCapturer'>AudioCapturer</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### SetSystemGain {:#SetSystemGain}
+
+ System Gain and Mute
+
+ Fuchsia clients control the volume of individual audio streams via the
+ fuchsia.media.audio.GainControl protocol. System Gain and Mute affect
+ all audio output, and are controlled with methods that use the same
+ concepts as GainControl, namely: independent gain and mute, with change
+ notifications. Setting System Mute to true leads to the same outcome as
+ setting System Gain to MUTED_GAIN_DB: all audio output across the system
+ is silenced.
+
+ Sets the systemwide gain in decibels. `gain_db` values are clamped to
+ the range -160 db to 0 db, inclusive. This setting is applied to all
+ audio output devices. Audio input devices are unaffected.
+ Does not affect System Mute.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>gain_db</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+        </tr></table>
+
+
+
+### SetSystemMute {:#SetSystemMute}
+
+ Sets/clears the systemwide 'Mute' state for audio output devices.
+ Audio input devices are unaffected. Changes to the System Mute state do
+ not affect the value of System Gain.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>muted</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr></table>
+
+
+
+### SystemGainMuteChanged {:#SystemGainMuteChanged}
+
+ Provides current values for systemwide Gain and Mute. When a client
+ connects to AudioCore, the system immediately sends that client a
+ SystemGainMuteChanged event with the current system Gain|Mute settings.
+ Subsequent events will be sent when these Gain|Mute values change.
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>gain_db</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+        </tr><tr>
+            <td><code>muted</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr></table>
+
+### SetRoutingPolicy {:#SetRoutingPolicy}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>policy</code></td>
+            <td>
+                <code><a class='link' href='#AudioOutputRoutingPolicy'>AudioOutputRoutingPolicy</a></code>
+            </td>
+        </tr></table>
+
+
+
+### EnableDeviceSettings {:#EnableDeviceSettings}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>enabled</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr></table>
+
+
+
+### SetRenderUsageGain {:#SetRenderUsageGain}
+
+ Set the Usage gain applied to Renderers. By default, the gain for all
+ render usages is set to Unity (0 db).
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>usage</code></td>
+            <td>
+                <code><a class='link' href='#AudioRenderUsage'>AudioRenderUsage</a></code>
+            </td>
+        </tr><tr>
+            <td><code>gain_db</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+        </tr></table>
+
+
+
+### SetCaptureUsageGain {:#SetCaptureUsageGain}
+
+ Set the Usage gain applied to Capturers. By default, the gain for all
+ capture usages is set to Unity (0 db).
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>usage</code></td>
+            <td>
+                <code><a class='link' href='#AudioCaptureUsage'>AudioCaptureUsage</a></code>
+            </td>
+        </tr><tr>
+            <td><code>gain_db</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+        </tr></table>
+
+
+
+### BindUsageVolumeControl {:#BindUsageVolumeControl}
+
+ Binds to a volume control protocol for the given usage.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>usage</code></td>
+            <td>
+                <code><a class='link' href='#Usage'>Usage</a></code>
+            </td>
+        </tr><tr>
+            <td><code>volume_control</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='../fuchsia.media.audio/index.html'>fuchsia.media.audio</a>/<a class='link' href='../fuchsia.media.audio/index.html#VolumeControl'>VolumeControl</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### SetInteraction {:#SetInteraction}
+
+ SetInteraction allows changing how audio_core handles interactions of multiple active
+ streams simultaneously.  If streams of Usage `active` are processing audio, and streams of
+ Usage `affected` are as well, the Behavior specified will be applied to the streams of Usage
+ `affected`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>active</code></td>
+            <td>
+                <code><a class='link' href='#Usage'>Usage</a></code>
+            </td>
+        </tr><tr>
+            <td><code>affected</code></td>
+            <td>
+                <code><a class='link' href='#Usage'>Usage</a></code>
+            </td>
+        </tr><tr>
+            <td><code>behavior</code></td>
+            <td>
+                <code><a class='link' href='#Behavior'>Behavior</a></code>
+            </td>
+        </tr></table>
+
+
+
+### ResetInteractions {:#ResetInteractions}
+
+ Re-initializes the set of rules that are currently governing the interaction of streams in
+ audio_core.  The default behavior is 'NONE'.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### LoadDefaults {:#LoadDefaults}
+
+ Re-loads the platform policy configuration.  Falls back to a default config if the platform
+ does not provide a config.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+## AudioDeviceEnumerator {:#AudioDeviceEnumerator}
+*Defined in [fuchsia.media/audio_device_enumerator.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/audio_device_enumerator.fidl#34)*
+
+
+### GetDevices {:#GetDevices}
+
+ Obtain the list of currently active audio devices.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>devices</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#AudioDeviceInfo'>AudioDeviceInfo</a>&gt;</code>
+            </td>
+        </tr></table>
+
+### OnDeviceAdded {:#OnDeviceAdded}
+
+ Events sent when devices are added or removed, or when properties of a
+ device change.
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>device</code></td>
+            <td>
+                <code><a class='link' href='#AudioDeviceInfo'>AudioDeviceInfo</a></code>
+            </td>
+        </tr></table>
+
+### OnDeviceRemoved {:#OnDeviceRemoved}
+
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>device_token</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr></table>
+
+### OnDeviceGainChanged {:#OnDeviceGainChanged}
+
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>device_token</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr><tr>
+            <td><code>gain_info</code></td>
+            <td>
+                <code><a class='link' href='#AudioGainInfo'>AudioGainInfo</a></code>
+            </td>
+        </tr></table>
+
+### OnDefaultDeviceChanged {:#OnDefaultDeviceChanged}
+
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>old_default_token</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr><tr>
+            <td><code>new_default_token</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr></table>
+
+### GetDeviceGain {:#GetDeviceGain}
+
+ Gain/Mute/AGC control
+
+ Note that each of these operations requires a device_token in order to
+ target the proper input/output.
+
+ The Get command returns the device_token of the device whose gain is
+ being reported, or `ZX_KOID_INVALID` in the case that the requested
+ device_token was invalid or the device had been removed from the system
+ before the Get command could be processed.
+
+ Set commands which are given an invalid device token are ignored and
+ have no effect on the system. In addition, users do not need to control
+ all of the gain settings for an audio device with each call. Only the
+ settings with a corresponding flag set in the set_flags parameter will
+ be affected. For example, passing SetAudioGainFlag_MuteValid will cause
+ a SetDeviceGain call to care only about the mute setting in the
+ gain_info structure, while passing (SetAudioGainFlag_GainValid |
+ SetAudioGainFlag_MuteValid) will cause both the mute and the gain
+ status to be changed simultaneously.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>device_token</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>device_token</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr><tr>
+            <td><code>gain_info</code></td>
+            <td>
+                <code><a class='link' href='#AudioGainInfo'>AudioGainInfo</a></code>
+            </td>
+        </tr></table>
+
+### SetDeviceGain {:#SetDeviceGain}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>device_token</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr><tr>
+            <td><code>gain_info</code></td>
+            <td>
+                <code><a class='link' href='#AudioGainInfo'>AudioGainInfo</a></code>
+            </td>
+        </tr><tr>
+            <td><code>set_flags</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr></table>
+
+
+
+### GetDefaultInputDevice {:#GetDefaultInputDevice}
+
+ Default Device
+
+ Fetch the device ID of the current default input or output device, or
+ `ZX_KOID_INVALID` if no such device exists.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>device_token</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr></table>
+
+### GetDefaultOutputDevice {:#GetDefaultOutputDevice}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>device_token</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr></table>
+
+### AddDeviceByChannel {:#AddDeviceByChannel}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>device_channel</code></td>
+            <td>
+                <code>handle&lt;channel&gt;</code>
+            </td>
+        </tr><tr>
+            <td><code>device_name</code></td>
+            <td>
+                <code>string[256]</code>
+            </td>
+        </tr><tr>
+            <td><code>is_input</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr></table>
+
+
+
+## AudioRenderer {:#AudioRenderer}
+*Defined in [fuchsia.media/audio_renderer.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/audio_renderer.fidl#23)*
+
+
+ AudioRenderers can be in one of two states at any point in time, either
+ the configurable state or the operational state. A renderer is considered
+ to be operational any time it has packets queued and waiting to be
+ rendered; otherwise it is considered to be in the configurable state. When an
+ AudioRenderer has entered the operational state of its life, any attempt to
+ call a config method in the interface is considered to be illegal and will
+ result in termination of the interface's connection to the audio service.
+
+ If an AudioRenderer must be reconfigured, it is best practice to always call
+ `DiscardAllPackets` on the AudioRenderer, before starting to reconfigure it.
+
+
+### AddPayloadBuffer {:#AddPayloadBuffer}
+
+ Adds a payload buffer to the current buffer set associated with the
+ connection. A `StreamPacket` struct reference a payload buffer in the
+ current set by ID using the `StreamPacket.payload_buffer_id` field.
+
+ A buffer with ID `id` must not be in the current set when this method is
+ invoked, otherwise the service will close the connection.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>payload_buffer</code></td>
+            <td>
+                <code>handle&lt;vmo&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### RemovePayloadBuffer {:#RemovePayloadBuffer}
+
+ Removes a payload buffer from the current buffer set associated with the
+ connection.
+
+ A buffer with ID `id` must exist in the current set when this method is
+ invoked, otherwise the service will will close the connection.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr></table>
+
+
+
+### SendPacket {:#SendPacket}
+
+ Sends a packet to the service. The response is sent when the service is
+ done with the associated payload memory.
+
+ `packet` must be valid for the current buffer set, otherwise the service
+ will close the connection.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>packet</code></td>
+            <td>
+                <code><a class='link' href='#StreamPacket'>StreamPacket</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+### SendPacketNoReply {:#SendPacketNoReply}
+
+ Sends a packet to the service. This interface doesn't define how the
+ client knows when the sink is done with the associated payload memory.
+ The inheriting interface must define that.
+
+ `packet` must be valid for the current buffer set, otherwise the service
+ will close the connection.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>packet</code></td>
+            <td>
+                <code><a class='link' href='#StreamPacket'>StreamPacket</a></code>
+            </td>
+        </tr></table>
+
+
+
+### EndOfStream {:#EndOfStream}
+
+ Indicates the stream has ended. The precise semantics of this method are
+ determined by the inheriting interface.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### DiscardAllPackets {:#DiscardAllPackets}
+
+ Discards packets previously sent via `SendPacket` or `SendPacketNoReply`
+ and not yet released. The response is sent after all packets have been
+ released.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+### DiscardAllPacketsNoReply {:#DiscardAllPacketsNoReply}
+
+ Discards packets previously sent via `SendPacket` or `SendPacketNoReply`
+ and not yet released.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### SetPcmStreamType {:#SetPcmStreamType}
+
+ Sets the type of the stream to be delivered by the client. Using this
+ method implies that the stream encoding is `AUDIO_ENCODING_LPCM`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>type</code></td>
+            <td>
+                <code><a class='link' href='#AudioStreamType'>AudioStreamType</a></code>
+            </td>
+        </tr></table>
+
+
+
+### SetStreamType {:#SetStreamType}
+
+ Sets the stream type to be delivered by the client. This method is used
+ for compressed pass-through. The media_specific field must be of type
+ audio.
+ NOTE: Not currently implemented.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>type</code></td>
+            <td>
+                <code><a class='link' href='#StreamType'>StreamType</a></code>
+            </td>
+        </tr></table>
+
+
+
+### SetPtsUnits {:#SetPtsUnits}
+
+ Sets the units used by the presentation (media) timeline. By default, PTS
+ units are nanoseconds (as if this were called with values of 1e9 and 1).
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>tick_per_second_numerator</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>tick_per_second_denominator</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr></table>
+
+
+
+### SetPtsContinuityThreshold {:#SetPtsContinuityThreshold}
+
+ Sets the maximum threshold (in frames) between an explicit PTS (user-
+ provided) and an expected PTS (determined using interpolation). Beyond
+ this threshold, a stream is no longer considered 'continuous' by the
+ renderer.
+
+ Defaults to RoundUp((AudioFPS/PTSTicksPerSec) / 2.0) / AudioFPS
+ Most users should not need to change this value from its default.
+
+ Example:
+ A user is playing back 48KHz audio from a container, which also contains
+ video and needs to be synchronized with the audio. The timestamps are
+ provided explicitly per packet by the container, and expressed in mSec
+ units. This means that a single tick of the media timeline (1 mSec)
+ represents exactly 48 frames of audio. The application in this scenario
+ delivers packets of audio to the AudioRenderer, each with exactly 470
+ frames of audio, and each with an explicit timestamp set to the best
+ possible representation of the presentation time (given this media
+ clock's resolution). So, starting from zero, the timestamps would be..
+
+ [ 0, 10, 20, 29, 39, 49, 59, 69, 78, 88, ... ]
+
+ In this example, attempting to use the presentation time to compute the
+ starting frame number of the audio in the packet would be wrong the
+ majority of the time. The first timestamp is correct (by definition), but
+ it will be 24 packets before the timestamps and frame numbers come back
+ into alignment (the 24th packet would start with the 11280th audio frame
+ and have a PTS of exactly 235).
+
+ One way to fix this situation is to set the PTS continuity threshold
+ (henceforth, CT) for the stream to be equal to 1/2 of the time taken by
+ the number of frames contained within a single tick of the media clock,
+ rounded up. In this scenario, that would be 24.0 frames of audio, or 500
+ uSec. Any packets whose expected PTS was within +/-CT frames of the
+ explicitly provided PTS would be considered to be a continuation of the
+ previous frame of audio.
+
+ Other possible uses:
+ Users who are scheduling audio explicitly, relative to a clock which has
+ not been configured as the reference clock, can use this value to control
+ the maximum acceptable synchronization error before a discontinuity is
+ introduced. E.g., if a user is scheduling audio based on a recovered
+ common media clock, and has not published that clock as the reference
+ clock, and they set the CT to 20mSec, then up to 20mSec of drift error
+ can accumulate before the AudioRenderer deliberately inserts a
+ presentation discontinuity to account for the error.
+
+ Users whose need to deal with a container where their timestamps may be
+ even less correct than +/- 1/2 of a PTS tick may set this value to
+ something larger. This should be the maximum level of inaccuracy present
+ in the container timestamps, if known. Failing that, it could be set to
+ the maximum tolerable level of drift error before absolute timestamps are
+ explicitly obeyed. Finally, a user could set this number to a very large
+ value (86400.0 seconds, for example) to effectively cause *all*
+ timestamps to be ignored after the first, thus treating all audio as
+ continuous with previously delivered packets. Conversely, users who wish
+ to *always* explicitly schedule their audio packets exactly may specify
+ a CT of 0.
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>threshold_seconds</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+        </tr></table>
+
+
+
+### SetReferenceClock {:#SetReferenceClock}
+
+ Set the reference clock used to control playback rate.
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>reference_clock</code></td>
+            <td>
+                <code>handle&lt;handle&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### Play {:#Play}
+
+ Immediately put the AudioRenderer into a playing state. Start the advance
+ of the media timeline, using specific values provided by the caller (or
+ default values if not specified). In an optional callback, return the
+ timestamp values ultimately used -- these set the ongoing relationship
+ between the media and reference timelines (i.e., how to translate between
+ the domain of presentation timestamps, and the realm of local system
+ time).
+
+ Local system time is specified in units of nanoseconds; media_time is
+ specified in the units defined by the user in the `SetPtsUnits` function,
+ or nanoseconds if `SetPtsUnits` is not called.
+
+ The act of placing an AudioRenderer into the playback state establishes a
+ relationship between 1) the user-defined media (or presentation) timeline
+ for this particular AudioRenderer, and 2) the real-world system reference
+ timeline. To communicate how to translate between timelines, the Play()
+ callback provides an equivalent timestamp in each time domain. The first
+ value ('reference_time') is given in terms of the local system clock; the
+ second value ('media_time') is what media instant exactly corresponds to
+ that local time. Restated, the frame at 'media_time' in the audio stream
+ should be presented at system local time 'reference_time'.
+
+ Note: on calling this API, media_time immediately starts advancing. It is
+ possible (if uncommon) for a caller to specify a system time that is
+ far in the past, or far into the future. This, along with the specified
+ media time, is simply used to determine what media time corresponds to
+ 'now', and THAT media time is then intersected with presentation
+ timestamps of packets already submitted, to determine which media frames
+ should be presented next.
+
+ With the corresponding reference_time and media_time values, a user can
+ translate arbitrary time values from one timeline into the other. After
+ calling `SetPtsUnits(pts_per_sec_numerator, pts_per_sec_denominator)` and
+ given the 'ref_start' and 'media_start' values from `Play()`, then for
+ any 'ref_time':
+
+ media_time = ( (ref_time - ref_start) / 1e9
+                * (pts_per_sec_numerator / pts_per_sec_denominator) )
+              + media_start
+
+ Conversely, for any presentation timestamp 'media_time':
+
+ ref_time = ( (media_time - media_start)
+              * (pts_per_sec_denominator / pts_per_sec_numerator)
+              * 1e9 )
+            + ref_start
+
+ Users, depending on their use case, may optionally choose not to specify
+ one or both of these timestamps. A timestamp may be omitted by supplying
+ the special value '`NO_TIMESTAMP`'. The AudioRenderer automatically deduces
+ any omitted timestamp value using the following rules:
+
+ Reference Time
+ If 'reference_time' is omitted, the AudioRenderer will select a "safe"
+ reference time to begin presentation, based on the minimum lead times for
+ the output devices that are currently bound to this AudioRenderer. For
+ example, if an AudioRenderer is bound to an internal audio output
+ requiring at least 3 mSec of lead time, and an HDMI output requiring at
+ least 75 mSec of lead time, the AudioRenderer might (if 'reference_time'
+ is omitted) select a reference time 80 mSec from now.
+
+ Media Time
+ If media_time is omitted, the AudioRenderer will select one of two
+ values.
+ - If the AudioRenderer is resuming from the paused state, and packets
+ have not been discarded since being paused, then the AudioRenderer will
+ use a media_time corresponding to the instant at which the presentation
+ became paused.
+ - If the AudioRenderer is being placed into a playing state for the first
+ time following startup or a 'discard packets' operation, the initial
+ media_time will be set to the PTS of the first payload in the pending
+ packet queue. If the pending queue is empty, initial media_time will be
+ set to zero.
+
+ Return Value
+ When requested, the AudioRenderer will return the 'reference_time' and
+ 'media_time' which were selected and used (whether they were explicitly
+ specified or not) in the return value of the play call.
+
+ Examples
+ 1. A user has queued some audio using `SendPacket` and simply wishes them
+ to start playing as soon as possible. The user may call Play without
+ providing explicit timestamps -- `Play(NO_TIMESTAMP, NO_TIMESTAMP)`.
+
+ 2. A user has queued some audio using `SendPacket`, and wishes to start
+ playback at a specified 'reference_time', in sync with some other media
+ stream, either initially or after discarding packets. The user would call
+ `Play(reference_time, NO_TIMESTAMP)`.
+
+ 3. A user has queued some audio using `SendPacket`. The first of these
+ packets has a PTS of zero, and the user wishes playback to begin as soon
+ as possible, but wishes to skip all of the audio content between PTS 0
+ and PTS 'media_time'. The user would call
+ `Play(NO_TIMESTAMP, media_time)`.
+
+ 4. A user has queued some audio using `SendPacket` and want to present
+ this media in synch with another player in a different device. The
+ coordinator of the group of distributed players sends an explicit
+ message to each player telling them to begin presentation of audio at
+ PTS 'media_time', at the time (based on the group's shared reference
+ clock) 'reference_time'. Here the user would call
+ `Play(reference_time, media_time)`.
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>reference_time</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+        </tr><tr>
+            <td><code>media_time</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>reference_time</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+        </tr><tr>
+            <td><code>media_time</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+        </tr></table>
+
+### PlayNoReply {:#PlayNoReply}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>reference_time</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+        </tr><tr>
+            <td><code>media_time</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+        </tr></table>
+
+
+
+### Pause {:#Pause}
+
+ Immediately put the AudioRenderer into the paused state and then report
+ the relationship between the media and reference timelines which was
+ established (if requested).
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>reference_time</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+        </tr><tr>
+            <td><code>media_time</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+        </tr></table>
+
+### PauseNoReply {:#PauseNoReply}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### EnableMinLeadTimeEvents {:#EnableMinLeadTimeEvents}
+
+ Enable or disable notifications about changes to the minimum clock lead
+ time (in nanoseconds) for this AudioRenderer. Calling this method with
+ 'enabled' set to true will trigger an immediate `OnMinLeadTimeChanged`
+ event with the current minimum lead time for the AudioRenderer. If the
+ value changes, an `OnMinLeadTimeChanged` event will be raised with the
+ new value. This behavior will continue until the user calls
+ `EnableMinLeadTimeEvents(false)`.
+
+ The minimum clock lead time is the amount of time ahead of the reference
+ clock's understanding of "now" that packets needs to arrive (relative to
+ the playback clock transformation) in order for the mixer to be able to
+ mix packet. For example...
+
+ ++ Let the PTS of packet X be P(X)
+ ++ Let the function which transforms PTS -> RefClock be R(p) (this
+    function is determined by the call to Play(...)
+ ++ Let the minimum lead time be MLT
+
+ If R(P(X)) < RefClock.Now() + MLT
+ Then the packet is late, and some (or all) of the packet's payload will
+ need to be skipped in order to present the packet at the scheduled time.
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>enabled</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr></table>
+
+
+
+### OnMinLeadTimeChanged {:#OnMinLeadTimeChanged}
+
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>min_lead_time_nsec</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+        </tr></table>
+
+### GetMinLeadTime {:#GetMinLeadTime}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>min_lead_time_nsec</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+        </tr></table>
+
+### BindGainControl {:#BindGainControl}
+
+ Binds to the gain control for this AudioRenderer.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>gain_control_request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='../fuchsia.media.audio/index.html'>fuchsia.media.audio</a>/<a class='link' href='../fuchsia.media.audio/index.html#GainControl'>GainControl</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### SetUsage {:#SetUsage}
+
+ Sets the usage of the render stream.  This may be changed on the fly, but
+ packets in flight may be affected by the new usage.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>usage</code></td>
+            <td>
+                <code><a class='link' href='#AudioRenderUsage'>AudioRenderUsage</a></code>
+            </td>
+        </tr></table>
+
+
+
+## StreamBufferSet {:#StreamBufferSet}
+*Defined in [fuchsia.media/stream.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream.fidl#15)*
+
+ Manages a set of payload buffers for a stream. This interface is typically
+ inherited along with `StreamSink` or `StreamSource` to enable the transport
+ of elementary streams between clients and services.
+
+### AddPayloadBuffer {:#AddPayloadBuffer}
+
+ Adds a payload buffer to the current buffer set associated with the
+ connection. A `StreamPacket` struct reference a payload buffer in the
+ current set by ID using the `StreamPacket.payload_buffer_id` field.
+
+ A buffer with ID `id` must not be in the current set when this method is
+ invoked, otherwise the service will close the connection.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>payload_buffer</code></td>
+            <td>
+                <code>handle&lt;vmo&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### RemovePayloadBuffer {:#RemovePayloadBuffer}
+
+ Removes a payload buffer from the current buffer set associated with the
+ connection.
+
+ A buffer with ID `id` must exist in the current set when this method is
+ invoked, otherwise the service will will close the connection.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr></table>
+
+
+
+## StreamSink {:#StreamSink}
+*Defined in [fuchsia.media/stream.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream.fidl#36)*
+
+ Consumes a stream of packets. This interface is typically inherited along
+ with `StreamBufferSet` to enable the transport of elementary streams from
+ clients to services.
+
+### SendPacket {:#SendPacket}
+
+ Sends a packet to the service. The response is sent when the service is
+ done with the associated payload memory.
+
+ `packet` must be valid for the current buffer set, otherwise the service
+ will close the connection.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>packet</code></td>
+            <td>
+                <code><a class='link' href='#StreamPacket'>StreamPacket</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+### SendPacketNoReply {:#SendPacketNoReply}
+
+ Sends a packet to the service. This interface doesn't define how the
+ client knows when the sink is done with the associated payload memory.
+ The inheriting interface must define that.
+
+ `packet` must be valid for the current buffer set, otherwise the service
+ will close the connection.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>packet</code></td>
+            <td>
+                <code><a class='link' href='#StreamPacket'>StreamPacket</a></code>
+            </td>
+        </tr></table>
+
+
+
+### EndOfStream {:#EndOfStream}
+
+ Indicates the stream has ended. The precise semantics of this method are
+ determined by the inheriting interface.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### DiscardAllPackets {:#DiscardAllPackets}
+
+ Discards packets previously sent via `SendPacket` or `SendPacketNoReply`
+ and not yet released. The response is sent after all packets have been
+ released.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+### DiscardAllPacketsNoReply {:#DiscardAllPacketsNoReply}
+
+ Discards packets previously sent via `SendPacket` or `SendPacketNoReply`
+ and not yet released.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+## StreamSource {:#StreamSource}
+*Defined in [fuchsia.media/stream.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream.fidl#70)*
+
+ Produces a stream of packets. This interface is typically inherited along
+ with `StreamBufferSet` to enable the transport of elementary streams from
+ services to clients.
+
+### OnPacketProduced {:#OnPacketProduced}
+
+ Delivers a packet produced by the service. When the client is done with
+ the payload memory, the client must call `ReleasePacket` to release the
+ payload memory.
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>packet</code></td>
+            <td>
+                <code><a class='link' href='#StreamPacket'>StreamPacket</a></code>
+            </td>
+        </tr></table>
+
+### OnEndOfStream {:#OnEndOfStream}
+
+ Indicates that the stream has ended.
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+### ReleasePacket {:#ReleasePacket}
+
+ Releases payload memory associated with a packet previously delivered
+ via `OnPacketProduced`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>packet</code></td>
+            <td>
+                <code><a class='link' href='#StreamPacket'>StreamPacket</a></code>
+            </td>
+        </tr></table>
+
+
+
+### DiscardAllPackets {:#DiscardAllPackets}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+### DiscardAllPacketsNoReply {:#DiscardAllPacketsNoReply}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+## SimpleStreamSink {:#SimpleStreamSink}
+*Defined in [fuchsia.media/stream.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream.fidl#97)*
+
+ A StreamSink that uses StreamBufferSet for buffer management.
+
+### AddPayloadBuffer {:#AddPayloadBuffer}
+
+ Adds a payload buffer to the current buffer set associated with the
+ connection. A `StreamPacket` struct reference a payload buffer in the
+ current set by ID using the `StreamPacket.payload_buffer_id` field.
+
+ A buffer with ID `id` must not be in the current set when this method is
+ invoked, otherwise the service will close the connection.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>payload_buffer</code></td>
+            <td>
+                <code>handle&lt;vmo&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### RemovePayloadBuffer {:#RemovePayloadBuffer}
+
+ Removes a payload buffer from the current buffer set associated with the
+ connection.
+
+ A buffer with ID `id` must exist in the current set when this method is
+ invoked, otherwise the service will will close the connection.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr></table>
+
+
+
+### SendPacket {:#SendPacket}
+
+ Sends a packet to the service. The response is sent when the service is
+ done with the associated payload memory.
+
+ `packet` must be valid for the current buffer set, otherwise the service
+ will close the connection.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>packet</code></td>
+            <td>
+                <code><a class='link' href='#StreamPacket'>StreamPacket</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+### SendPacketNoReply {:#SendPacketNoReply}
+
+ Sends a packet to the service. This interface doesn't define how the
+ client knows when the sink is done with the associated payload memory.
+ The inheriting interface must define that.
+
+ `packet` must be valid for the current buffer set, otherwise the service
+ will close the connection.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>packet</code></td>
+            <td>
+                <code><a class='link' href='#StreamPacket'>StreamPacket</a></code>
+            </td>
+        </tr></table>
+
+
+
+### EndOfStream {:#EndOfStream}
+
+ Indicates the stream has ended. The precise semantics of this method are
+ determined by the inheriting interface.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### DiscardAllPackets {:#DiscardAllPackets}
+
+ Discards packets previously sent via `SendPacket` or `SendPacketNoReply`
+ and not yet released. The response is sent after all packets have been
+ released.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+### DiscardAllPacketsNoReply {:#DiscardAllPacketsNoReply}
+
+ Discards packets previously sent via `SendPacket` or `SendPacketNoReply`
+ and not yet released.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+## StreamProcessor {:#StreamProcessor}
+*Defined in [fuchsia.media/stream_processor.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_processor.fidl#1019)*
+
+
+### EnableOnStreamFailed {:#EnableOnStreamFailed}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### OnStreamFailed {:#OnStreamFailed}
+
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>stream_lifetime_ordinal</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr><tr>
+            <td><code>error</code></td>
+            <td>
+                <code><a class='link' href='#StreamError'>StreamError</a></code>
+            </td>
+        </tr></table>
+
+### OnInputConstraints {:#OnInputConstraints}
+
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>input_constraints</code></td>
+            <td>
+                <code><a class='link' href='#StreamBufferConstraints'>StreamBufferConstraints</a></code>
+            </td>
+        </tr></table>
+
+### SetInputBufferSettings {:#SetInputBufferSettings}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>input_settings</code></td>
+            <td>
+                <code><a class='link' href='#StreamBufferSettings'>StreamBufferSettings</a></code>
+            </td>
+        </tr></table>
+
+
+
+### AddInputBuffer {:#AddInputBuffer}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>buffer</code></td>
+            <td>
+                <code><a class='link' href='#StreamBuffer'>StreamBuffer</a></code>
+            </td>
+        </tr></table>
+
+
+
+### SetInputBufferPartialSettings {:#SetInputBufferPartialSettings}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>input_settings</code></td>
+            <td>
+                <code><a class='link' href='#StreamBufferPartialSettings'>StreamBufferPartialSettings</a></code>
+            </td>
+        </tr></table>
+
+
+
+### OnOutputConstraints {:#OnOutputConstraints}
+
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>output_config</code></td>
+            <td>
+                <code><a class='link' href='#StreamOutputConstraints'>StreamOutputConstraints</a></code>
+            </td>
+        </tr></table>
+
+### OnOutputFormat {:#OnOutputFormat}
+
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>output_format</code></td>
+            <td>
+                <code><a class='link' href='#StreamOutputFormat'>StreamOutputFormat</a></code>
+            </td>
+        </tr></table>
+
+### SetOutputBufferSettings {:#SetOutputBufferSettings}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>output_settings</code></td>
+            <td>
+                <code><a class='link' href='#StreamBufferSettings'>StreamBufferSettings</a></code>
+            </td>
+        </tr></table>
+
+
+
+### AddOutputBuffer {:#AddOutputBuffer}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>buffer</code></td>
+            <td>
+                <code><a class='link' href='#StreamBuffer'>StreamBuffer</a></code>
+            </td>
+        </tr></table>
+
+
+
+### SetOutputBufferPartialSettings {:#SetOutputBufferPartialSettings}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>output_settings</code></td>
+            <td>
+                <code><a class='link' href='#StreamBufferPartialSettings'>StreamBufferPartialSettings</a></code>
+            </td>
+        </tr></table>
+
+
+
+### CompleteOutputBufferPartialSettings {:#CompleteOutputBufferPartialSettings}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>buffer_lifetime_ordinal</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr></table>
+
+
+
+### FlushEndOfStreamAndCloseStream {:#FlushEndOfStreamAndCloseStream}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>stream_lifetime_ordinal</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr></table>
+
+
+
+### CloseCurrentStream {:#CloseCurrentStream}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>stream_lifetime_ordinal</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr><tr>
+            <td><code>release_input_buffers</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr><tr>
+            <td><code>release_output_buffers</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr></table>
+
+
+
+### Sync {:#Sync}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+### OnOutputPacket {:#OnOutputPacket}
+
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>output_packet</code></td>
+            <td>
+                <code><a class='link' href='#Packet'>Packet</a></code>
+            </td>
+        </tr><tr>
+            <td><code>error_detected_before</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr><tr>
+            <td><code>error_detected_during</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr></table>
+
+### RecycleOutputPacket {:#RecycleOutputPacket}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>available_output_packet</code></td>
+            <td>
+                <code><a class='link' href='#PacketHeader'>PacketHeader</a></code>
+            </td>
+        </tr></table>
+
+
+
+### OnOutputEndOfStream {:#OnOutputEndOfStream}
+
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>stream_lifetime_ordinal</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr><tr>
+            <td><code>error_detected_before</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr></table>
+
+### QueueInputFormatDetails {:#QueueInputFormatDetails}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>stream_lifetime_ordinal</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr><tr>
+            <td><code>format_details</code></td>
+            <td>
+                <code><a class='link' href='#FormatDetails'>FormatDetails</a></code>
+            </td>
+        </tr></table>
+
+
+
+### QueueInputPacket {:#QueueInputPacket}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>packet</code></td>
+            <td>
+                <code><a class='link' href='#Packet'>Packet</a></code>
+            </td>
+        </tr></table>
+
+
+
+### OnFreeInputPacket {:#OnFreeInputPacket}
+
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>free_input_packet</code></td>
+            <td>
+                <code><a class='link' href='#PacketHeader'>PacketHeader</a></code>
+            </td>
+        </tr></table>
+
+### QueueInputEndOfStream {:#QueueInputEndOfStream}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>stream_lifetime_ordinal</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr></table>
+
+
+
+## UsageWatcher {:#UsageWatcher}
+*Defined in [fuchsia.media/usage_reporter.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/usage_reporter.fidl#34)*
+
+ A protocol for listening to changes to the policy state of an audio usage.
+
+ User actions, such as lowering the volume or muting a stream, are not reflected in this
+ API.
+
+### OnStateChanged {:#OnStateChanged}
+
+ Called on first connection and whenever the watched usage changes. The provided
+ usage will always be the bound usage; it is provided so that an implementation of
+ this protocol may be bound to more than one usage.
+
+ Clients must respond to acknowledge the event. Clients that do not acknowledge their
+ events will eventually be disconnected.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>usage</code></td>
+            <td>
+                <code><a class='link' href='#Usage'>Usage</a></code>
+            </td>
+        </tr><tr>
+            <td><code>state</code></td>
+            <td>
+                <code><a class='link' href='#UsageState'>UsageState</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+## UsageReporter {:#UsageReporter}
+*Defined in [fuchsia.media/usage_reporter.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/usage_reporter.fidl#46)*
+
+ A protocol for setting up watchers of audio usages.
+
+### Watch {:#Watch}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>usage</code></td>
+            <td>
+                <code><a class='link' href='#Usage'>Usage</a></code>
+            </td>
+        </tr><tr>
+            <td><code>usage_watcher</code></td>
+            <td>
+                <code><a class='link' href='#UsageWatcher'>UsageWatcher</a></code>
+            </td>
+        </tr></table>
+
+
+
 
 
 ## **STRUCTS**
@@ -3422,6 +5899,941 @@
         </tr>
 </table>
 
+### AudioGainInfo {:#AudioGainInfo}
+*Defined in [fuchsia.media/audio_device_enumerator.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/audio_device_enumerator.fidl#11)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>gain_db</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>flags</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### AudioDeviceInfo {:#AudioDeviceInfo}
+*Defined in [fuchsia.media/audio_device_enumerator.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/audio_device_enumerator.fidl#16)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>name</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>unique_id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>token_id</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>is_input</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>gain_info</code></td>
+            <td>
+                <code><a class='link' href='#AudioGainInfo'>AudioGainInfo</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>is_default</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Metadata {:#Metadata}
+*Defined in [fuchsia.media/metadata.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/metadata.fidl#8)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>properties</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#Property'>Property</a>&gt;</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Property {:#Property}
+*Defined in [fuchsia.media/metadata.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/metadata.fidl#12)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>label</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### StreamPacket {:#StreamPacket}
+*Defined in [fuchsia.media/stream.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream.fidl#103)*
+
+
+
+ Describes a packet consumed by `StreamSink` or produced by `StreamSource`.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>pts</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+            <td> Time at which the packet is to be presented, according to the
+ presentation clock.
+</td>
+            <td><a class='link' href='#NO_TIMESTAMP'>NO_TIMESTAMP</a></td>
+        </tr><tr>
+            <td><code>payload_buffer_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> ID of the payload buffer used for this packet.
+
+ When this struct is used with `StreamBufferSet`, this field is the ID of
+ a payload buffer provided via `StreamBufferSet.AddPayloadBuffer`. In
+ that case, this value must identify a payload buffer in the current set.
+ Other interfaces may define different semantics for this field.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>payload_offset</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> Offset of the packet payload in the payload buffer.
+
+ This value plus the `payload_size` value must be less than or equal to
+ the size of the referenced payload buffer.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>payload_size</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> Size in bytes of the payload.
+
+ This value plus the `payload_offest` value must be less than or equal to
+ the size of the referenced payload buffer.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>flags</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> An bitwise-or'ed set of flags (see constants below) describing
+ properties of this packet.
+</td>
+            <td>0</td>
+        </tr><tr>
+            <td><code>buffer_config</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> The buffer configuration associated with this packet. The semantics of
+ this field depend on the interface with which this struct is used.
+ In many contexts, this field is not used. This field is intended for
+ situations in which buffer configurations (i.e. sets of payload buffers)
+ are explicitly identified. In such cases, the `payload_buffer_id` refers
+ to a payload buffer in the buffer configuration identified by this
+ field.
+</td>
+            <td>0</td>
+        </tr><tr>
+            <td><code>stream_segment_id</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> The stream segment associated with this packet. The semantics of this
+ field depend on the interface with which this struct is used. In many
+ contexts, this field is not used. This field is intended to distinguish
+ contiguous segments of the stream where stream properties (e.g.
+ encoding) may differ from segment to segment.
+</td>
+            <td>0</td>
+        </tr>
+</table>
+
+### Parameter {:#Parameter}
+*Defined in [fuchsia.media/stream_common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_common.fidl#33)*
+
+
+
+ Parameter
+
+ Generic parameter.
+
+ We want to minimize use of this generic "Parameter" structure by natively
+ defining as many stream-specific parameter semantics as we can.
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>scope</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>name</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code><a class='link' href='#Value'>Value</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### AudioCompressedFormatAac {:#AudioCompressedFormatAac}
+*Defined in [fuchsia.media/stream_common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_common.fidl#89)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr>
+</table>
+
+### AudioCompressedFormatSbc {:#AudioCompressedFormatSbc}
+*Defined in [fuchsia.media/stream_common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_common.fidl#92)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr>
+</table>
+
+### PcmFormat {:#PcmFormat}
+*Defined in [fuchsia.media/stream_common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_common.fidl#151)*
+
+
+
+ PcmFormat
+
+ PCM audio format details.
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>pcm_mode</code></td>
+            <td>
+                <code><a class='link' href='#AudioPcmMode'>AudioPcmMode</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>bits_per_sample</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>frames_per_second</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>channel_map</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#AudioChannelId'>AudioChannelId</a>&gt;[16]</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### VideoUncompressedFormat {:#VideoUncompressedFormat}
+*Defined in [fuchsia.media/stream_common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_common.fidl#232)*
+
+
+
+ VideoUncompressedFormat
+
+ Uncompressed video format details.
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>image_format</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.sysmem/index.html'>fuchsia.sysmem</a>/<a class='link' href='../fuchsia.sysmem/index.html#ImageFormat_2'>ImageFormat_2</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>fourcc</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>primary_width_pixels</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>primary_height_pixels</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>secondary_width_pixels</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>secondary_height_pixels</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>planar</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>swizzled</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>primary_line_stride_bytes</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>secondary_line_stride_bytes</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>primary_start_offset</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>secondary_start_offset</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>tertiary_start_offset</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>primary_pixel_stride</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>secondary_pixel_stride</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>primary_display_width_pixels</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>primary_display_height_pixels</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>has_pixel_aspect_ratio</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+            <td>false</td>
+        </tr><tr>
+            <td><code>pixel_aspect_ratio_width</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>1</td>
+        </tr><tr>
+            <td><code>pixel_aspect_ratio_height</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>1</td>
+        </tr>
+</table>
+
+### KeyId {:#KeyId}
+*Defined in [fuchsia.media/stream_common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_common.fidl#338)*
+
+
+
+ KeyId
+
+ An encryption key identifier.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>data</code></td>
+            <td>
+                <code>uint8[16]</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SubsampleEntry {:#SubsampleEntry}
+*Defined in [fuchsia.media/stream_common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_common.fidl#347)*
+
+
+
+ SubsampleEntry
+
+ A subsample is a byte range within a sample consisting of a clear byte range
+ followed by an encrypted byte range. This structure specifies the size of
+ each range in the subsample.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>clear_bytes</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>encrypted_bytes</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### EncryptionPattern {:#EncryptionPattern}
+*Defined in [fuchsia.media/stream_common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_common.fidl#358)*
+
+
+
+ EncryptionPattern
+
+ Pattern encryption utilizes a pattern of encrypted and clear 16 byte blocks
+ over the protected range of a subsample (the encrypted_bytes of a
+ `SubsampleEntry`). This structure specifies the number of encrypted data
+ blocks followed by the number of clear data blocks.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>clear_blocks</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>encrypted_blocks</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SbcEncoderSettings {:#SbcEncoderSettings}
+*Defined in [fuchsia.media/stream_common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_common.fidl#472)*
+
+
+
+ Settings for an SBC Encoder.
+
+ SBC Encoders take signed little endian 16 bit linear PCM samples and
+ return encoded SBC frames. SBC encoder PCM data in batches of
+ `sub_bands * block_count` PCM frames. This encoder will accept PCM data on
+ arbitrary frame boundaries, but the output flushed when EOS is queued may be
+ zero-padded to make a full batch for encoding.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>sub_bands</code></td>
+            <td>
+                <code><a class='link' href='#SbcSubBands'>SbcSubBands</a></code>
+            </td>
+            <td></td>
+            <td><a class='link' href='#SbcSubBands.SUB_BANDS_8'>SbcSubBands.SUB_BANDS_8</a></td>
+        </tr><tr>
+            <td><code>allocation</code></td>
+            <td>
+                <code><a class='link' href='#SbcAllocation'>SbcAllocation</a></code>
+            </td>
+            <td></td>
+            <td><a class='link' href='#SbcAllocation.ALLOC_LOUDNESS'>SbcAllocation.ALLOC_LOUDNESS</a></td>
+        </tr><tr>
+            <td><code>block_count</code></td>
+            <td>
+                <code><a class='link' href='#SbcBlockCount'>SbcBlockCount</a></code>
+            </td>
+            <td></td>
+            <td><a class='link' href='#SbcBlockCount.BLOCK_COUNT_4'>SbcBlockCount.BLOCK_COUNT_4</a></td>
+        </tr><tr>
+            <td><code>channel_mode</code></td>
+            <td>
+                <code><a class='link' href='#SbcChannelMode'>SbcChannelMode</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>bit_pool</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> SBC bit pool value.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### AacTransportRaw {:#AacTransportRaw}
+*Defined in [fuchsia.media/stream_common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_common.fidl#482)*
+
+
+
+ Raw AAC access units.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr>
+</table>
+
+### AacConstantBitRate {:#AacConstantBitRate}
+*Defined in [fuchsia.media/stream_common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_common.fidl#494)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>bit_rate</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> Bits per second
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### AacEncoderSettings {:#AacEncoderSettings}
+*Defined in [fuchsia.media/stream_common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_common.fidl#521)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>transport</code></td>
+            <td>
+                <code><a class='link' href='#AacTransport'>AacTransport</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>channel_mode</code></td>
+            <td>
+                <code><a class='link' href='#AacChannelMode'>AacChannelMode</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>bit_rate</code></td>
+            <td>
+                <code><a class='link' href='#AacBitRate'>AacBitRate</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>aot</code></td>
+            <td>
+                <code><a class='link' href='#AacAudioObjectType'>AacAudioObjectType</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### StreamType {:#StreamType}
+*Defined in [fuchsia.media/stream_type.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_type.fidl#14)*
+
+
+
+ Describes the type of an elementary stream.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>medium_specific</code></td>
+            <td>
+                <code><a class='link' href='#MediumSpecificStreamType'>MediumSpecificStreamType</a></code>
+            </td>
+            <td> Medium-specific type information.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>encoding</code></td>
+            <td>
+                <code>string[255]</code>
+            </td>
+            <td> Encoding (see constants below). This value is represented as a string
+ so that new encodings can be introduced without modifying this file.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>encoding_parameters</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;?</code>
+            </td>
+            <td> Encoding-specific parameters, sometimes referred to as 'out-of-band
+ data'. Typically, this data is associated with a compressed stream and
+ provides parameters required to decompress the stream. This data is
+ generally opaque to all parties except the producer and consumer of the
+ stream.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### AudioStreamType {:#AudioStreamType}
+*Defined in [fuchsia.media/stream_type.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_type.fidl#66)*
+
+
+
+ Describes the type of an audio elementary stream.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>sample_format</code></td>
+            <td>
+                <code><a class='link' href='#AudioSampleFormat'>AudioSampleFormat</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>channels</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>frames_per_second</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### VideoStreamType {:#VideoStreamType}
+*Defined in [fuchsia.media/stream_type.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_type.fidl#92)*
+
+
+
+ Describes the type of a video elementary stream.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>pixel_format</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.images/index.html'>fuchsia.images</a>/<a class='link' href='../fuchsia.images/index.html#PixelFormat'>PixelFormat</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>color_space</code></td>
+            <td>
+                <code><a class='link' href='#ColorSpace'>ColorSpace</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>width</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> Dimensions of the video frames as displayed in pixels.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>height</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>coded_width</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> Dimensions of the video frames as encoded in pixels. These values must
+ be equal to or greater than the respective width/height values.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>coded_height</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>pixel_aspect_ratio_width</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> The aspect ratio of a single pixel as frames are intended to be
+ displayed.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>pixel_aspect_ratio_height</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>stride</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> The number of bytes per 'coded' row in the primary video plane.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### TextStreamType {:#TextStreamType}
+*Defined in [fuchsia.media/stream_type.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_type.fidl#128)*
+
+
+
+ Describes the type of a text elementary stream.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr>
+</table>
+
+### SubpictureStreamType {:#SubpictureStreamType}
+*Defined in [fuchsia.media/stream_type.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_type.fidl#136)*
+
+
+
+ Describes the type of a subpicture elementary stream.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr>
+</table>
+
+### TimelineFunction {:#TimelineFunction}
+*Defined in [fuchsia.media/timeline_function.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/timeline_function.fidl#42)*
+
+
+
+ A TimelineFunction represents a relationship between a subject timeline and a
+ reference timeline with a linear relation.
+
+ For example, consider a common use case in which reference time is the
+ monotonic clock of a system and subject time is intended presentation time
+ for some media such as a video.
+
+ `reference_time` is the value of the monotonic clock at the beginning of
+ playback. `subject_time` is 0 assuming playback starts at the beginning of
+ the media. We then choose a `reference_delta` and `subject_delta` so that
+ `subject_delta` / `reference_delta` represents the desired playback rate,
+ e.g. 0/1 for paused and 1/1 for normal playback.
+
+ ## Formulas
+
+ With a function we can determine the subject timeline value `s` in terms of
+ reference timeline value `r` with this formula (where `reference_delta` > 0):
+
+   s = (r - reference_time) * (subject_delta / reference_delta) + subject_time
+
+ And similarly we can find the reference timeline value `r` in terms of
+ subject timeline value `s` with this formula (where `subject_delta` > 0):
+
+   r = (s - subject_time) * (reference_delta / subject_delta) + referenc_time
+
+ ## Choosing time values
+
+ Time values can be arbitrary and our linear relation will of course be the
+ same, but we can use them to represent the bounds of pieces in a piecewise
+ linear relation.
+
+ For example, if a user performs skip-chapter, we might want to describe
+ this with a TimelineFunction whose `subject_time` is the time to skip to,
+ `reference_time` is now plus some epsilon, and delta ratio is 1/1 for normal
+ playback rate.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>subject_time</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+            <td> A value from the subject timeline that correlates to reference_time.
+</td>
+            <td>0</td>
+        </tr><tr>
+            <td><code>reference_time</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+            <td> A value from the reference timeline that correlates to subject_time.
+</td>
+            <td>0</td>
+        </tr><tr>
+            <td><code>subject_delta</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> The change in the subject timeline corresponding to reference_delta.
+</td>
+            <td>0</td>
+        </tr><tr>
+            <td><code>reference_delta</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> The change in the reference timeline corresponding to subject_delta.
+ Cannot be zero.
+</td>
+            <td>1</td>
+        </tr>
+</table>
+
 
 
 ## **ENUMS**
@@ -3441,34 +6853,23 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>BACKGROUND</code></td>
             <td><code>0</code></td>
-            <td> Stream is intended to be used for ambient or background sound. Streams
- that can be interrupted without consequence should use this.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>MEDIA</code></td>
             <td><code>1</code></td>
-            <td> Stream is intended to be used for normal functionality. Streams that
- are part of normal functionality should use this.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>INTERRUPTION</code></td>
             <td><code>2</code></td>
-            <td> Stream is intended to interrupt any ongoing function of the device.
- Streams that are used for interruptions like notifications should use
- this.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>SYSTEM_AGENT</code></td>
             <td><code>3</code></td>
-            <td> Stream is for interaction with a system agent.  This should be used
- in response to a user initiated trigger.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>COMMUNICATION</code></td>
             <td><code>4</code></td>
-            <td> Stream is intended to be used for some form of real time user to user
- communication. Voice/Video chat should use this.
-</td>
+            <td></td>
         </tr></table>
 
 ### AudioCaptureUsage {:#AudioCaptureUsage}
@@ -3485,32 +6886,19 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>BACKGROUND</code></td>
             <td><code>0</code></td>
-            <td> Stream is used to capture audio while in the background.  These streams
- may be active at any the time and are considered privileged.
- Example: Listening for Hotwords
-</td>
+            <td></td>
         </tr><tr>
             <td><code>FOREGROUND</code></td>
             <td><code>1</code></td>
-            <td> Stream is intended to be used for normal capture functionality. Streams
- that are used for audio capture while the stream creator is in the
- foreground should use this.
- Example: Voice Recorder
-</td>
+            <td></td>
         </tr><tr>
             <td><code>SYSTEM_AGENT</code></td>
             <td><code>2</code></td>
-            <td> Stream is for interaction with a system agent.  This should only be used
- once a user has signalled their intent to have the interaction with an
- interested party.
- Examples: Assistant, Siri, Alexa
-</td>
+            <td></td>
         </tr><tr>
             <td><code>COMMUNICATION</code></td>
             <td><code>3</code></td>
-            <td> Stream is intended to be used for some form of real time user to user
- communication. Voice/Video chat should use this.
-</td>
+            <td></td>
         </tr></table>
 
 ### Behavior {:#Behavior}
@@ -3525,18 +6913,15 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>NONE</code></td>
             <td><code>0</code></td>
-            <td> Mix the streams.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>DUCK</code></td>
             <td><code>1</code></td>
-            <td> Apply a gain to duck the volume of one of the streams. (-14.0db)
-</td>
+            <td></td>
         </tr><tr>
             <td><code>MUTE</code></td>
             <td><code>2</code></td>
-            <td> Apply a gain to mute one of the streams. (-160.0db)
-</td>
+            <td></td>
         </tr></table>
 
 ### AudioOutputRoutingPolicy {:#AudioOutputRoutingPolicy}
@@ -3573,41 +6958,31 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>UNKNOWN</code></td>
             <td><code>1</code></td>
-            <td> An internal error with an unspecified reason.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>INVALID_INPUT_FORMAT_DETAILS</code></td>
             <td><code>2</code></td>
-            <td> The client provided invalid input format details.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>INCOMPATIBLE_BUFFERS_PROVIDED</code></td>
             <td><code>3</code></td>
-            <td> The server received buffers that are not suitable for the operation to
- be performed. An example of this would be if a Decoder received output
- buffers that are too small to decode a frame into.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>DECODER_UNKNOWN</code></td>
             <td><code>16777217</code></td>
-            <td> An internal decoder error with an unspecified reason.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>ENCODER_UNKNOWN</code></td>
             <td><code>33554433</code></td>
-            <td> An internal encoder error with an unspecified reason.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>DECRYPTOR_UNKNOWN</code></td>
             <td><code>50331649</code></td>
-            <td> An internal decryptor error with an unspecified reason.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>DECRYPTOR_NO_KEY</code></td>
             <td><code>50331650</code></td>
-            <td> The requested KeyId is not available for use by the Decryptor. The
- client may try again later if that key becomes available.
-</td>
+            <td></td>
         </tr></table>
 
 ### AudioBitrateMode {:#AudioBitrateMode}
@@ -3889,8 +7264,7 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>MPEG2_AAC_LC</code></td>
             <td><code>0</code></td>
-            <td> MPEG-2 Low Complexity
-</td>
+            <td></td>
         </tr></table>
 
 ### AudioSampleFormat {:#AudioSampleFormat}
@@ -3905,23 +7279,505 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>UNSIGNED_8</code></td>
             <td><code>1</code></td>
-            <td> 8-bit unsigned samples, sample size 1 byte.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>SIGNED_16</code></td>
             <td><code>2</code></td>
-            <td> 16-bit signed samples, host-endian, sample size 2 bytes.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>SIGNED_24_IN_32</code></td>
             <td><code>3</code></td>
-            <td> 24-bit signed samples in 32 bits, host-endian, sample size 4 bytes.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>FLOAT</code></td>
             <td><code>4</code></td>
-            <td> 32-bit floating-point samples, sample size 4 bytes.
-</td>
+            <td></td>
+        </tr></table>
+
+### ColorSpace {:#ColorSpace}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.media/stream_type.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_type.fidl#116)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>UNKNOWN</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>NOT_APPLICABLE</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>JPEG</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>HD_REC709</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>SD_REC601</code></td>
+            <td><code>4</code></td>
+            <td></td>
+        </tr></table>
+
+### AudioRenderUsage {:#AudioRenderUsage}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.media/audio_core.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/audio_core.fidl#13)*
+
+ Usage annotating the purpose of the stream being used to render audio.
+ An AudioRenderer's usage cannot be changed after creation.  The
+ AudioRenderUsage is used by audio policy to dictate how audio streams
+ interact with each other.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>BACKGROUND</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>MEDIA</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>INTERRUPTION</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>SYSTEM_AGENT</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>COMMUNICATION</code></td>
+            <td><code>4</code></td>
+            <td></td>
+        </tr></table>
+
+### AudioCaptureUsage {:#AudioCaptureUsage}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.media/audio_core.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/audio_core.fidl#40)*
+
+ Usages annotating the purpose of the stream being used to capture audio. The
+ AudioCaptureUsage is used by audio policy to dictate how audio streams
+ interact with each other.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>BACKGROUND</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>FOREGROUND</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>SYSTEM_AGENT</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>COMMUNICATION</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr></table>
+
+### Behavior {:#Behavior}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.media/audio_core.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/audio_core.fidl#65)*
+
+ The behaviors applied to streams when multiple are active.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>NONE</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>DUCK</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>MUTE</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr></table>
+
+### AudioOutputRoutingPolicy {:#AudioOutputRoutingPolicy}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.media/audio_core.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/audio_core.fidl#170)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>ALL_PLUGGED_OUTPUTS</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>LAST_PLUGGED_OUTPUT</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr></table>
+
+### StreamError {:#StreamError}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.media/stream_common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_common.fidl#47)*
+
+ StreamError
+
+ This error code encapsulates various errors that might emanate from a
+ StreamProcessor server. It can be sent either as an OnStreamFailed event or
+ as an epitaph for the channel.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>UNKNOWN</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>INVALID_INPUT_FORMAT_DETAILS</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>INCOMPATIBLE_BUFFERS_PROVIDED</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>DECODER_UNKNOWN</code></td>
+            <td><code>16777217</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>ENCODER_UNKNOWN</code></td>
+            <td><code>33554433</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>DECRYPTOR_UNKNOWN</code></td>
+            <td><code>50331649</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>DECRYPTOR_NO_KEY</code></td>
+            <td><code>50331650</code></td>
+            <td></td>
+        </tr></table>
+
+### AudioBitrateMode {:#AudioBitrateMode}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.media/stream_common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_common.fidl#79)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>UNSPECIFIED</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>CBR</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>VBR</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr></table>
+
+### AudioPcmMode {:#AudioPcmMode}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.media/stream_common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_common.fidl#99)*
+
+ AudioPcmMode
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>LINEAR</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>ALAW</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>MULAW</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr></table>
+
+### AudioChannelId {:#AudioChannelId}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.media/stream_common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_common.fidl#123)*
+
+ AudioChannelId
+
+ Used in specifying which audio channel is for which speaker location / type.
+
+ TODO(dustingreen): Do we need more channel IDs than this?
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>SKIP</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>LF</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>RF</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>CF</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>LS</code></td>
+            <td><code>4</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>RS</code></td>
+            <td><code>5</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>LFE</code></td>
+            <td><code>6</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>CS</code></td>
+            <td><code>7</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>LR</code></td>
+            <td><code>8</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>RR</code></td>
+            <td><code>9</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>END_DEFINED</code></td>
+            <td><code>10</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>EXTENDED_CHANNEL_ID_BASE</code></td>
+            <td><code>1862270976</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>MAX</code></td>
+            <td><code>2147483647</code></td>
+            <td></td>
+        </tr></table>
+
+### VideoColorSpace {:#VideoColorSpace}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.media/stream_common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_common.fidl#220)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>INVALID</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr></table>
+
+### SbcSubBands {:#SbcSubBands}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.media/stream_common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_common.fidl#441)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>SUB_BANDS_4</code></td>
+            <td><code>4</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>SUB_BANDS_8</code></td>
+            <td><code>8</code></td>
+            <td></td>
+        </tr></table>
+
+### SbcBlockCount {:#SbcBlockCount}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.media/stream_common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_common.fidl#446)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>BLOCK_COUNT_4</code></td>
+            <td><code>4</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>BLOCK_COUNT_8</code></td>
+            <td><code>8</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>BLOCK_COUNT_12</code></td>
+            <td><code>12</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>BLOCK_COUNT_16</code></td>
+            <td><code>16</code></td>
+            <td></td>
+        </tr></table>
+
+### SbcAllocation {:#SbcAllocation}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.media/stream_common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_common.fidl#453)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>ALLOC_LOUDNESS</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>ALLOC_SNR</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr></table>
+
+### SbcChannelMode {:#SbcChannelMode}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.media/stream_common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_common.fidl#458)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>MONO</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>DUAL</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>STEREO</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>JOINT_STEREO</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr></table>
+
+### AacChannelMode {:#AacChannelMode}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.media/stream_common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_common.fidl#489)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>MONO</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>STEREO</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr></table>
+
+### AacVariableBitRate {:#AacVariableBitRate}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.media/stream_common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_common.fidl#503)*
+
+ Variable bit rate modes. The actual resulting bitrate
+ varies based on input signal and other encoding settings.
+
+ See https://wiki.hydrogenaud.io/index.php?title=Fraunhofer_FDK_AAC#Bitrate_Modes
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>V1</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>V2</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>V3</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>V4</code></td>
+            <td><code>4</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>V5</code></td>
+            <td><code>5</code></td>
+            <td></td>
+        </tr></table>
+
+### AacAudioObjectType {:#AacAudioObjectType}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.media/stream_common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_common.fidl#516)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>MPEG2_AAC_LC</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr></table>
+
+### AudioSampleFormat {:#AudioSampleFormat}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.media/stream_type.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_type.fidl#74)*
+
+ Enumerates the supported audio sample formats.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>UNSIGNED_8</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>SIGNED_16</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>SIGNED_24_IN_32</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>FLOAT</code></td>
+            <td><code>4</code></td>
+            <td></td>
         </tr></table>
 
 ### ColorSpace {:#ColorSpace}
@@ -4691,6 +8547,739 @@
     <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
     </table>
 
+### EncryptedFormat {:#EncryptedFormat}
+
+
+*Defined in [fuchsia.media/stream_common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_common.fidl#369)*
+
+ EncryptedFormat
+
+ The stream format details payload of a decrypting stream processor. This is
+ a sparsely populated table to specify parameters necessary for decryption
+ other than the data stream. It is only necessary to update fields if they
+ changed, but not an error if the same value is repeated.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>mode</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> `mode` specifies which encryption scheme to use, such as
+ `fuchsia.media.ENCRYPTION_MODE_CENC`.
+ Usage:
+  - It is required to be set prior to delivery of input packets.
+  - This should only be changed at the beginning of a data stream.
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>key_id</code></td>
+            <td>
+                <code><a class='link' href='#KeyId'>KeyId</a></code>
+            </td>
+            <td> `key_id` identifies the key that should be used for decrypting
+ subsequent data.
+ Usage:
+  - It is required to be set prior to delivery of input packets to a
+    decryptor.
+  - This may be changed multiple times during a data stream.
+</td>
+        </tr><tr>
+            <td>3</td>
+            <td><code>init_vector</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;[16]</code>
+            </td>
+            <td> `init_vector` is used in combination with a key and a block of content
+ to create the first cipher block in a chain and derive subsequent cipher
+ blocks in a cipher block chain.
+ Usage:
+  - It is required to be set prior to the delivery of input packets to a
+    decryptor.
+  - This may be changed multiple times during a data stream.
+</td>
+        </tr><tr>
+            <td>4</td>
+            <td><code>subsamples</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#SubsampleEntry'>SubsampleEntry</a>&gt;</code>
+            </td>
+            <td> `subsamples` is used to identify the clear and encrypted portions of a
+ subsample.
+ Usage:
+  - For whole sample encryption, this parameter should not be sent.
+  - This may be changed multiple times during a data stream.
+</td>
+        </tr><tr>
+            <td>5</td>
+            <td><code>pattern</code></td>
+            <td>
+                <code><a class='link' href='#EncryptionPattern'>EncryptionPattern</a></code>
+            </td>
+            <td> `pattern` is used to identify the clear and encrypted blocks for pattern
+ based encryption.
+ Usage:
+ - This is not allowed for CENC and CBC1 and required for CENS and CBCS.
+ - If required, it must be set prior to the delivery of input packets to
+   a decryptor.
+ - This may be changed multiple times during a data stream.
+</td>
+        </tr></table>
+
+### DecryptedFormat {:#DecryptedFormat}
+
+
+*Defined in [fuchsia.media/stream_common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_common.fidl#416)*
+
+ DecryptedFormat
+
+ This describes the format of the decrypted content. It is required to be
+ sent by the StreamProcessor server prior to the delivery of output packets.
+ Currently, there is no additional format details for decrypted output.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>ignore_this_field</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### FormatDetails {:#FormatDetails}
+
+
+*Defined in [fuchsia.media/stream_common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_common.fidl#560)*
+
+ FormatDetails
+
+ This describes/details the format on input or output of a StreamProcessor
+ (separate instances for input vs. output).
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>format_details_version_ordinal</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>mime_type</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>3</td>
+            <td><code>oob_bytes</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>4</td>
+            <td><code>domain</code></td>
+            <td>
+                <code><a class='link' href='#DomainFormat'>DomainFormat</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>5</td>
+            <td><code>pass_through_parameters</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#Parameter'>Parameter</a>&gt;</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>6</td>
+            <td><code>encoder_settings</code></td>
+            <td>
+                <code><a class='link' href='#EncoderSettings'>EncoderSettings</a></code>
+            </td>
+            <td> Instructs an encoder on how to encode raw data.
+
+ Decoders may ignore this field but are entitled to rejected requests with
+ this field set because it doesn't make sense.
+</td>
+        </tr><tr>
+            <td>7</td>
+            <td><code>timebase</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> The number of ticks of the timebase of input packet timestamp_ish values
+ per second.
+
+ The timebase is only used used for optional extrapolation of timestamp_ish
+ values when an input timestamp which applies to byte 0 of the valid portion
+ of the input packet does not correspond directly to byte 0 of the valid
+ portion of any output packet.
+
+ Leave unset if timestamp extrapolation is not needed, either due to lack of
+ timestamps on input, or due to input being provided in increments of the
+ encoder's input chunk size (based on the encoder settings and calculated
+ independently by the client).  Set if timestamp extrapolation is known to be
+ needed or known to be acceptable to the client.
+</td>
+        </tr></table>
+
+### StreamBufferConstraints {:#StreamBufferConstraints}
+
+
+*Defined in [fuchsia.media/stream_processor.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_processor.fidl#73)*
+
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>buffer_constraints_version_ordinal</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>default_settings</code></td>
+            <td>
+                <code><a class='link' href='#StreamBufferSettings'>StreamBufferSettings</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>3</td>
+            <td><code>per_packet_buffer_bytes_min</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>4</td>
+            <td><code>per_packet_buffer_bytes_recommended</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>5</td>
+            <td><code>per_packet_buffer_bytes_max</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>6</td>
+            <td><code>packet_count_for_server_min</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>7</td>
+            <td><code>packet_count_for_server_recommended</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>8</td>
+            <td><code>packet_count_for_server_recommended_max</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>9</td>
+            <td><code>packet_count_for_server_max</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>10</td>
+            <td><code>packet_count_for_client_min</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>11</td>
+            <td><code>packet_count_for_client_max</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>12</td>
+            <td><code>single_buffer_mode_allowed</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>13</td>
+            <td><code>is_physically_contiguous_required</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>14</td>
+            <td><code>very_temp_kludge_bti_handle</code></td>
+            <td>
+                <code>handle&lt;handle&gt;</code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### StreamOutputConstraints {:#StreamOutputConstraints}
+
+
+*Defined in [fuchsia.media/stream_processor.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_processor.fidl#282)*
+
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>stream_lifetime_ordinal</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>buffer_constraints_action_required</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>3</td>
+            <td><code>buffer_constraints</code></td>
+            <td>
+                <code><a class='link' href='#StreamBufferConstraints'>StreamBufferConstraints</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### StreamOutputFormat {:#StreamOutputFormat}
+
+
+*Defined in [fuchsia.media/stream_processor.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_processor.fidl#334)*
+
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>stream_lifetime_ordinal</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>format_details</code></td>
+            <td>
+                <code><a class='link' href='#FormatDetails'>FormatDetails</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### StreamOutputConfig {:#StreamOutputConfig}
+
+
+*Defined in [fuchsia.media/stream_processor.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_processor.fidl#413)*
+
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>stream_lifetime_ordinal</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>buffer_constraints_action_required</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>3</td>
+            <td><code>buffer_constraints</code></td>
+            <td>
+                <code><a class='link' href='#StreamBufferConstraints'>StreamBufferConstraints</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>4</td>
+            <td><code>format_details</code></td>
+            <td>
+                <code><a class='link' href='#FormatDetails'>FormatDetails</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### StreamBufferSettings {:#StreamBufferSettings}
+
+
+*Defined in [fuchsia.media/stream_processor.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_processor.fidl#469)*
+
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>buffer_lifetime_ordinal</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>buffer_constraints_version_ordinal</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>3</td>
+            <td><code>packet_count_for_server</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>4</td>
+            <td><code>packet_count_for_client</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>5</td>
+            <td><code>per_packet_buffer_bytes</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>6</td>
+            <td><code>single_buffer_mode</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### StreamBufferPartialSettings {:#StreamBufferPartialSettings}
+
+
+*Defined in [fuchsia.media/stream_processor.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_processor.fidl#598)*
+
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>buffer_lifetime_ordinal</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>buffer_constraints_version_ordinal</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>3</td>
+            <td><code>single_buffer_mode</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>4</td>
+            <td><code>packet_count_for_server</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> When single_buffer_mode is false:
+
+ The actual packet count will be
+ max(packet_count_for_server + packet_count_for_client, sysmem_buffers).
+ The sysmem_buffers is BufferCollectionInfo.buffer_count from sysmem if
+ using sysmem, or 0 if not using sysmem.
+
+ When single_buffer_mode is true:
+
+ The actual packet count is packet_count_for_server +
+ packet_count_for_client.
+
+ If not using sysmem, or if using single_buffer_mode, these fields must be
+ set and consistent with correpsonding fields in StreamBufferConstraints.
+
+ If single_buffer_mode false and using sysmem, these fields can both be
+ non-set, or can both be set and consistent with correpsonding fields in
+ StreamBufferConstraints.  If not set, the value used for the fields in
+ the "max" expression above is 0, so buffer_count.
+</td>
+        </tr><tr>
+            <td>5</td>
+            <td><code>packet_count_for_client</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>6</td>
+            <td><code>sysmem_token</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.sysmem/index.html'>fuchsia.sysmem</a>/<a class='link' href='../fuchsia.sysmem/index.html#BufferCollectionToken'>BufferCollectionToken</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### StreamBuffer {:#StreamBuffer}
+
+
+*Defined in [fuchsia.media/stream_processor.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_processor.fidl#701)*
+
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>buffer_lifetime_ordinal</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>buffer_index</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>3</td>
+            <td><code>data</code></td>
+            <td>
+                <code><a class='link' href='#StreamBufferData'>StreamBufferData</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### StreamBufferDataVmo {:#StreamBufferDataVmo}
+
+
+*Defined in [fuchsia.media/stream_processor.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_processor.fidl#751)*
+
+ StreamBufferDataVmo
+
+ Details for a buffer backed by a VMO.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>vmo_handle</code></td>
+            <td>
+                <code>handle&lt;vmo&gt;</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>vmo_usable_start</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>3</td>
+            <td><code>vmo_usable_size</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### PacketHeader {:#PacketHeader}
+
+
+*Defined in [fuchsia.media/stream_processor.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_processor.fidl#775)*
+
+ PacketHeader
+
+ When referring to a free packet, we use PacketHeader alone instead of
+ Packet, since while a packet is free it doesn't really have meaningful
+ offset or length etc.
+
+ A populated Packet also has a PacketHeader.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>buffer_lifetime_ordinal</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>packet_index</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### Packet {:#Packet}
+
+
+*Defined in [fuchsia.media/stream_processor.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_processor.fidl#831)*
+
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>header</code></td>
+            <td>
+                <code><a class='link' href='#PacketHeader'>PacketHeader</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>buffer_index</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> Which buffer this packet refers to.  For single-buffer mode this will
+ always be 0, but for multi-buffer mode, a given in-flight interval of a
+ packet can refer to any buffer.  The packet has an associated buffer only
+ while the packet is in-flight, not while the packet is free.
+
+ The default value makes accidental inappropriate use of index 0 less
+ likely (will tend to complain in an obvious way if not filled out
+ instead of a non-obvious data corruption when decoding buffer 0
+ repeatedly instead of the correct buffers).
+
+ TODO(dustingreen): Try to make FIDL table defaults have meaning, and not
+ complain about !has when accessing the field.  For now the default
+ specified here does nothing.
+</td>
+        </tr><tr>
+            <td>3</td>
+            <td><code>stream_lifetime_ordinal</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>4</td>
+            <td><code>start_offset</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>5</td>
+            <td><code>valid_length_bytes</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>6</td>
+            <td><code>timestamp_ish</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>7</td>
+            <td><code>start_access_unit</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>8</td>
+            <td><code>known_end_access_unit</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### UsageStateUnadjusted {:#UsageStateUnadjusted}
+
+
+*Defined in [fuchsia.media/usage_reporter.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/usage_reporter.fidl#10)*
+
+ A state of audio usages in which no policy actions are taken on any streams with the usage.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    </table>
+
+### UsageStateDucked {:#UsageStateDucked}
+
+
+*Defined in [fuchsia.media/usage_reporter.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/usage_reporter.fidl#15)*
+
+ A state of audio usages in which a policy decision has been made to temporarily
+ lower the volume of all streams with this usage.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    </table>
+
+### UsageStateMuted {:#UsageStateMuted}
+
+
+*Defined in [fuchsia.media/usage_reporter.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/usage_reporter.fidl#20)*
+
+ A state of audio usages in which a policy decision has been made to temporarily
+ mute the volume of all streams with this usage.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    </table>
+
 
 
 ## **UNIONS**
@@ -4930,6 +9519,241 @@
             <td></td>
         </tr></table>
 
+### Usage {:#Usage}
+*Defined in [fuchsia.media/audio_core.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/audio_core.fidl#76)*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>render_usage</code></td>
+            <td>
+                <code><a class='link' href='#AudioRenderUsage'>AudioRenderUsage</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>capture_usage</code></td>
+            <td>
+                <code><a class='link' href='#AudioCaptureUsage'>AudioCaptureUsage</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### Value {:#Value}
+*Defined in [fuchsia.media/stream_common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_common.fidl#15)*
+
+ Value
+
+ Generic "value" for use within generic "Parameter" struct.
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>bool_value</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>uint64_value</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>int64_value</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>string_value</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>bytes_value</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;</code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### AudioUncompressedFormat {:#AudioUncompressedFormat}
+*Defined in [fuchsia.media/stream_common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_common.fidl#192)*
+
+ AudioUncompressedFormat
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>pcm</code></td>
+            <td>
+                <code><a class='link' href='#PcmFormat'>PcmFormat</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### AudioFormat {:#AudioFormat}
+*Defined in [fuchsia.media/stream_common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_common.fidl#199)*
+
+ AudioFormat
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>compressed</code></td>
+            <td>
+                <code><a class='link' href='#AudioCompressedFormat'>AudioCompressedFormat</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>uncompressed</code></td>
+            <td>
+                <code><a class='link' href='#AudioUncompressedFormat'>AudioUncompressedFormat</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### VideoCompressedFormat {:#VideoCompressedFormat}
+*Defined in [fuchsia.media/stream_common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_common.fidl#211)*
+
+ VideoCompressedFormat
+
+ Compressed video format details.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>temp_field_todo_remove</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### VideoFormat {:#VideoFormat}
+*Defined in [fuchsia.media/stream_common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_common.fidl#330)*
+
+ VideoFormat
+
+ Video (compress or uncompressed) format details.  In this context,
+ "uncompressed" can include block-based image compression formats that still
+ permit fairly fast random access to image data.
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>compressed</code></td>
+            <td>
+                <code><a class='link' href='#VideoCompressedFormat'>VideoCompressedFormat</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>uncompressed</code></td>
+            <td>
+                <code><a class='link' href='#VideoUncompressedFormat'>VideoUncompressedFormat</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### DomainFormat {:#DomainFormat}
+*Defined in [fuchsia.media/stream_common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_common.fidl#433)*
+
+ DomainFormat
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>audio</code></td>
+            <td>
+                <code><a class='link' href='#AudioFormat'>AudioFormat</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>video</code></td>
+            <td>
+                <code><a class='link' href='#VideoFormat'>VideoFormat</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>crypto</code></td>
+            <td>
+                <code><a class='link' href='#CryptoFormat'>CryptoFormat</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### AacBitRate {:#AacBitRate}
+*Defined in [fuchsia.media/stream_common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_common.fidl#511)*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>constant</code></td>
+            <td>
+                <code><a class='link' href='#AacConstantBitRate'>AacConstantBitRate</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>variable</code></td>
+            <td>
+                <code><a class='link' href='#AacVariableBitRate'>AacVariableBitRate</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### StreamBufferData {:#StreamBufferData}
+*Defined in [fuchsia.media/stream_processor.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_processor.fidl#742)*
+
+ StreamBufferData
+
+ For the moment, a VMO per buffer is the only type of buffer.
+
+ This is extremely likely to change significantly when adding gralloc stuff,
+ but the idea with this union is to have a struct per logical way of storing
+ the data.  Any multi-domain storage within a gralloc buffer will likely be
+ only indirectly represented here.
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>vmo</code></td>
+            <td>
+                <code><a class='link' href='#StreamBufferDataVmo'>StreamBufferDataVmo</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### MediumSpecificStreamType {:#MediumSpecificStreamType}
+*Defined in [fuchsia.media/stream_type.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_type.fidl#31)*
+
+ A union of all medium-specific stream type structs.
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>audio</code></td>
+            <td>
+                <code><a class='link' href='#AudioStreamType'>AudioStreamType</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>video</code></td>
+            <td>
+                <code><a class='link' href='#VideoStreamType'>VideoStreamType</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>text</code></td>
+            <td>
+                <code><a class='link' href='#TextStreamType'>TextStreamType</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>subpicture</code></td>
+            <td>
+                <code><a class='link' href='#SubpictureStreamType'>SubpictureStreamType</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
 
 
 ## **XUNIONS**
@@ -5035,6 +9859,107 @@
             <td></td>
         </tr></table>
 
+### AudioCompressedFormat {:#AudioCompressedFormat}
+*Defined in [fuchsia.media/stream_common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_common.fidl#74)*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>aac</code></td>
+            <td>
+                <code><a class='link' href='#AudioCompressedFormatAac'>AudioCompressedFormatAac</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>sbc</code></td>
+            <td>
+                <code><a class='link' href='#AudioCompressedFormatSbc'>AudioCompressedFormatSbc</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### CryptoFormat {:#CryptoFormat}
+*Defined in [fuchsia.media/stream_common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_common.fidl#425)*
+
+ CryptoFormat
+
+ Crypto (encrypted or decrypted) format details.
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>encrypted</code></td>
+            <td>
+                <code><a class='link' href='#EncryptedFormat'>EncryptedFormat</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>decrypted</code></td>
+            <td>
+                <code><a class='link' href='#DecryptedFormat'>DecryptedFormat</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### AacTransport {:#AacTransport}
+*Defined in [fuchsia.media/stream_common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_common.fidl#485)*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>raw</code></td>
+            <td>
+                <code><a class='link' href='#AacTransportRaw'>AacTransportRaw</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### EncoderSettings {:#EncoderSettings}
+*Defined in [fuchsia.media/stream_common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_common.fidl#530)*
+
+ Settings for encoders that tell them how to encode raw
+ formats.
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>sbc</code></td>
+            <td>
+                <code><a class='link' href='#SbcEncoderSettings'>SbcEncoderSettings</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>aac</code></td>
+            <td>
+                <code><a class='link' href='#AacEncoderSettings'>AacEncoderSettings</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### UsageState {:#UsageState}
+*Defined in [fuchsia.media/usage_reporter.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/usage_reporter.fidl#24)*
+
+ The state of audio policy enforcement on a stream or set of streams.
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>unadjusted</code></td>
+            <td>
+                <code><a class='link' href='#UsageStateUnadjusted'>UsageStateUnadjusted</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>ducked</code></td>
+            <td>
+                <code><a class='link' href='#UsageStateDucked'>UsageStateDucked</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>muted</code></td>
+            <td>
+                <code><a class='link' href='#UsageStateMuted'>UsageStateMuted</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
 
 
 
@@ -5442,6 +10367,406 @@
                     <td><code>String</code></td>
             <td></td>
         </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/audio.fidl#32">MIN_PCM_CHANNEL_COUNT</a></td>
+            <td>
+                    <code>1</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Permitted ranges for AudioRenderer and AudioCapturer
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/audio.fidl#33">MAX_PCM_CHANNEL_COUNT</a></td>
+            <td>
+                    <code>8</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/audio.fidl#34">MIN_PCM_FRAMES_PER_SECOND</a></td>
+            <td>
+                    <code>1000</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/audio.fidl#35">MAX_PCM_FRAMES_PER_SECOND</a></td>
+            <td>
+                    <code>192000</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/audio_core.fidl#35">RENDER_USAGE_COUNT</a></td>
+            <td>
+                    <code>5</code>
+                </td>
+                <td><code>uint8</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/audio_core.fidl#62">CAPTURE_USAGE_COUNT</a></td>
+            <td>
+                    <code>4</code>
+                </td>
+                <td><code>uint8</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/audio_device_enumerator.fidl#7">AudioGainInfoFlag_Mute</a></td>
+            <td>
+                    <code>1</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/audio_device_enumerator.fidl#8">AudioGainInfoFlag_AgcSupported</a></td>
+            <td>
+                    <code>2</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/audio_device_enumerator.fidl#9">AudioGainInfoFlag_AgcEnabled</a></td>
+            <td>
+                    <code>4</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/audio_device_enumerator.fidl#29">SetAudioGainFlag_GainValid</a></td>
+            <td>
+                    <code>1</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/audio_device_enumerator.fidl#30">SetAudioGainFlag_MuteValid</a></td>
+            <td>
+                    <code>2</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/audio_device_enumerator.fidl#31">SetAudioGainFlag_AgcValid</a></td>
+            <td>
+                    <code>4</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/metadata.fidl#17">METADATA_LABEL_TITLE</a></td>
+            <td><code>fuchsia.media.title</code></td>
+                    <td><code>String</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/metadata.fidl#18">METADATA_LABEL_ARTIST</a></td>
+            <td><code>fuchsia.media.artist</code></td>
+                    <td><code>String</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/metadata.fidl#19">METADATA_LABEL_ALBUM</a></td>
+            <td><code>fuchsia.media.album</code></td>
+                    <td><code>String</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/metadata.fidl#20">METADATA_LABEL_TRACK_NUMBER</a></td>
+            <td><code>fuchsia.media.track_number</code></td>
+                    <td><code>String</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/metadata.fidl#21">METADATA_LABEL_PUBLISHER</a></td>
+            <td><code>fuchsia.media.publisher</code></td>
+                    <td><code>String</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/metadata.fidl#22">METADATA_LABEL_GENRE</a></td>
+            <td><code>fuchsia.media.genre</code></td>
+                    <td><code>String</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/metadata.fidl#23">METADATA_LABEL_COMPOSER</a></td>
+            <td><code>fuchsia.media.composer</code></td>
+                    <td><code>String</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/metadata.fidl#24">METADATA_LABEL_SUBTITLE</a></td>
+            <td><code>fuchsia.media.subtitle</code></td>
+                    <td><code>String</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/metadata.fidl#25">METADATA_LABEL_RELEASE_DATE</a></td>
+            <td><code>fuchsia.media.release_date</code></td>
+                    <td><code>String</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/metadata.fidl#26">METADATA_LABEL_EPISODE</a></td>
+            <td><code>fuchsia.media.episode</code></td>
+                    <td><code>String</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/metadata.fidl#27">METADATA_LABEL_SEASON</a></td>
+            <td><code>fuchsia.media.season</code></td>
+                    <td><code>String</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/metadata.fidl#28">METADATA_LABEL_STUDIO</a></td>
+            <td><code>fuchsia.media.studio</code></td>
+                    <td><code>String</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/metadata.fidl#32">METADATA_SOURCE_TITLE</a></td>
+            <td><code>fuchsia.media.source_title</code></td>
+                    <td><code>String</code></td>
+            <td> The title of the source of the media, e.g. a player, streaming service, or
+ website.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream.fidl#154">NO_TIMESTAMP</a></td>
+            <td>
+                    <code>9223372036854775807</code>
+                </td>
+                <td><code>int64</code></td>
+            <td> When used as a `StreamPacket.pts` value, indicates that the packet has no
+ specific presentation timestamp. The effective presentation time of such a
+ packet depends on the context in which the `StreamPacket` is used.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream.fidl#159">STREAM_PACKET_FLAG_KEY_FRAME</a></td>
+            <td>
+                    <code>1</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Indicates that the packet can be understood without reference to other
+ packets in the stream. This is typically used in compressed streams to
+ identify packets that contain key frames.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream.fidl#165">STREAM_PACKET_FLAG_DROPPABLE</a></td>
+            <td>
+                    <code>2</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Indicates that all other packets in the stream can be understood without
+ reference to this packet. This is typically used in compressed streams to
+ identify packets containing frames that may be discarded without affecting
+ other frames.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream.fidl#170">STREAM_PACKET_FLAG_DISCONTINUITY</a></td>
+            <td>
+                    <code>4</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Indicates a discontinuity in an otherwise continuous-in-time sequence of
+ packets. The precise semantics of this flag depend on the context in which
+ the `StreamPacket` is used.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_common.fidl#9">KEY_ID_SIZE</a></td>
+            <td>
+                    <code>16</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_common.fidl#10">MAX_INIT_VECTOR_SIZE</a></td>
+            <td>
+                    <code>16</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_common.fidl#439">kMaxOobBytesSize</a></td>
+            <td>
+                    <code>8192</code>
+                </td>
+                <td><code>uint64</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_processor.fidl#449">kDefaultInputPacketCountForClient</a></td>
+            <td>
+                    <code>2</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_processor.fidl#451">kDefaultOutputPacketCountForClient</a></td>
+            <td>
+                    <code>2</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_processor.fidl#458">kDefaultInputIsSingleBufferMode</a></td>
+            <td>
+                    <code>false</code>
+                </td>
+                <td><code>bool</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_processor.fidl#459">kDefaultOutputIsSingleBufferMode</a></td>
+            <td>
+                    <code>false</code>
+                </td>
+                <td><code>bool</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_type.fidl#39">AUDIO_ENCODING_AAC</a></td>
+            <td><code>fuchsia.media.aac</code></td>
+                    <td><code>String</code></td>
+            <td> Audio encodings.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_type.fidl#40">AUDIO_ENCODING_AMRNB</a></td>
+            <td><code>fuchsia.media.amrnb</code></td>
+                    <td><code>String</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_type.fidl#41">AUDIO_ENCODING_AMRWB</a></td>
+            <td><code>fuchsia.media.amrwb</code></td>
+                    <td><code>String</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_type.fidl#42">AUDIO_ENCODING_APTX</a></td>
+            <td><code>fuchsia.media.aptx</code></td>
+                    <td><code>String</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_type.fidl#43">AUDIO_ENCODING_FLAC</a></td>
+            <td><code>fuchsia.media.flac</code></td>
+                    <td><code>String</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_type.fidl#44">AUDIO_ENCODING_GSMMS</a></td>
+            <td><code>fuchsia.media.gsmms</code></td>
+                    <td><code>String</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_type.fidl#45">AUDIO_ENCODING_LPCM</a></td>
+            <td><code>fuchsia.media.lpcm</code></td>
+                    <td><code>String</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_type.fidl#46">AUDIO_ENCODING_MP3</a></td>
+            <td><code>fuchsia.media.mp3</code></td>
+                    <td><code>String</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_type.fidl#47">AUDIO_ENCODING_PCMALAW</a></td>
+            <td><code>fuchsia.media.pcmalaw</code></td>
+                    <td><code>String</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_type.fidl#48">AUDIO_ENCODING_PCMMULAW</a></td>
+            <td><code>fuchsia.media.pcmmulaw</code></td>
+                    <td><code>String</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_type.fidl#49">AUDIO_ENCODING_SBC</a></td>
+            <td><code>fuchsia.media.sbc</code></td>
+                    <td><code>String</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_type.fidl#50">AUDIO_ENCODING_VORBIS</a></td>
+            <td><code>fuchsia.media.vorbis</code></td>
+                    <td><code>String</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_type.fidl#53">VIDEO_ENCODING_H263</a></td>
+            <td><code>fuchsia.media.h263</code></td>
+                    <td><code>String</code></td>
+            <td> Video encodings.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_type.fidl#54">VIDEO_ENCODING_H264</a></td>
+            <td><code>fuchsia.media.h264</code></td>
+                    <td><code>String</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_type.fidl#55">VIDEO_ENCODING_MPEG4</a></td>
+            <td><code>fuchsia.media.mpeg4</code></td>
+                    <td><code>String</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_type.fidl#56">VIDEO_ENCODING_THEORA</a></td>
+            <td><code>fuchsia.media.theora</code></td>
+                    <td><code>String</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_type.fidl#57">VIDEO_ENCODING_UNCOMPRESSED</a></td>
+            <td><code>fuchsia.media.uncompressed_video</code></td>
+                    <td><code>String</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_type.fidl#58">VIDEO_ENCODING_VP3</a></td>
+            <td><code>fuchsia.media.vp3</code></td>
+                    <td><code>String</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_type.fidl#59">VIDEO_ENCODING_VP8</a></td>
+            <td><code>fuchsia.media.vp8</code></td>
+                    <td><code>String</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.media/stream_type.fidl#60">VIDEO_ENCODING_VP9</a></td>
+            <td><code>fuchsia.media.vp9</code></td>
+                    <td><code>String</code></td>
+            <td></td>
+        </tr>
     
 </table>
 
diff --git a/sdk/fidl/fuchsia.mem/index.md b/sdk/fidl/fuchsia.mem/index.md
index 0e22531..cc4ef5f 100644
--- a/sdk/fidl/fuchsia.mem/index.md
+++ b/sdk/fidl/fuchsia.mem/index.md
@@ -94,6 +94,92 @@
         </tr>
 </table>
 
+### Buffer {:#Buffer}
+*Defined in [fuchsia.mem/buffer.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-mem/buffer.fidl#14)*
+
+
+
+ A buffer for data whose size is not necessarily a multiple of the page
+ size.
+
+ VMO objects have a physical size that is always a multiple of the page
+ size. As such, VMO alone cannot serve as a buffer for arbitrarly sized
+ data. `fuchsia.mem.Buffer` is a standard struct that aggregate the VMO
+ and its size.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>vmo</code></td>
+            <td>
+                <code>handle&lt;vmo&gt;</code>
+            </td>
+            <td> The vmo that contains the buffer.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>size</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> The number of bytes in the buffer.
+
+ The content of the buffer begin at the start of the VMO and continue
+ for `size` bytes. To specify a range of bytes that do not start at
+ the beginning of the VMO, use `Range` rather than buffer.
+
+ This size must not be greater than the physical size of the VMO.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Range {:#Range}
+*Defined in [fuchsia.mem/range.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-mem/range.fidl#8)*
+
+
+
+ A range of bytes within a VMO.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>vmo</code></td>
+            <td>
+                <code>handle&lt;vmo&gt;</code>
+            </td>
+            <td> The vmo that contains the bytes.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>offset</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> The offset of the first byte within the range relative to the start of
+ the VMO.
+
+ For example, if `offset` is zero, then the first byte in the range is
+ the first byte in the VMO.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>size</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> The number of bytes in the range.
+
+ For example, if the offset is 3 and the size is 2, and the VMO starts
+ with "abcdefg...", then the range contains "de".
+
+ The sum of the offset and the size must not be greater than the
+ physical size of the VMO.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
 
 
 
@@ -131,6 +217,33 @@
 </td>
         </tr></table>
 
+### Data {:#Data}
+*Defined in [fuchsia.mem/buffer.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-mem/buffer.fidl#34)*
+
+ Binary data that might be stored inline or in a VMO.
+
+ Useful for performance-sensitive protocols that sometimes receive small
+ amounts of binary data (i.e., which is more efficient to provide using
+ `bytes`) but also need to support arbitrary amounts of data (i.e., which
+ need to be provided out-of-line in a `Buffer`).
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>bytes</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;</code>
+            </td>
+            <td> The binary data provided inline in the message.
+</td>
+        </tr><tr>
+            <td><code>buffer</code></td>
+            <td>
+                <code><a class='link' href='#Buffer'>Buffer</a></code>
+            </td>
+            <td> The binary data provided out-of-line in a `Buffer`.
+</td>
+        </tr></table>
+
 
 
 
diff --git a/sdk/fidl/fuchsia.modular.auth/index.md b/sdk/fidl/fuchsia.modular.auth/index.md
index 6278f31..6c2ba54 100644
--- a/sdk/fidl/fuchsia.modular.auth/index.md
+++ b/sdk/fidl/fuchsia.modular.auth/index.md
@@ -82,6 +82,80 @@
         </tr>
 </table>
 
+### Account {:#Account}
+*Defined in [fuchsia.modular.auth/account.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular.auth/account/account.fidl#11)*
+
+
+
+ Stores attributes related to an account that is exposed to base shell.
+ A list of existing account(s) can be obtained via
+ UserProvider.PreviousUsers() and a new account can be added via
+ UserProvider.AddAccount().
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> A randomly generated identifier that is used to identify this
+ account on this device. This is meant to be used by base shell when it
+ wants to login as a user who has previously logged in.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>identity_provider</code></td>
+            <td>
+                <code><a class='link' href='#IdentityProvider'>IdentityProvider</a></code>
+            </td>
+            <td> The identity provider that was used to authenticate the user on this
+ device.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>profile_id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> Unique identifier configured for the given user at the Identity provider.
+ Profile id is fetched from user profile attributes as configured by the
+ user at the given identity provider.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>display_name</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> The name that is displayed on the base shell while logging in. Display
+ name is fetched from user profile attributes as configured by the user at
+ the given identity provider.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>url</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> User's profile url that is used by the base shell while logging in.
+ Profile url is fetched from user profile attributes as configured by the
+ user at the given identity provider.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>image_url</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> User's profile image url that is used by the base shell while logging in.
+ Profile image url is fetched from user profile attributes as configured by
+ the user at the given identity provider.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
 
 
 ## **ENUMS**
@@ -100,17 +174,32 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>DEV</code></td>
             <td><code>0</code></td>
-            <td> An identity provider that's used for development and testing. If this
- identity provider is chosen, the Framework will continue as if it has
- identified the user. Note that the users that use this id provider would
- not get cloud ledger access (unless done via a side channel).
-</td>
+            <td></td>
         </tr><tr>
             <td><code>GOOGLE</code></td>
             <td><code>1</code></td>
-            <td> Uses Google as the identity provider. Doing this requires a working network
- connection and a web view.
-</td>
+            <td></td>
+        </tr></table>
+
+### IdentityProvider {:#IdentityProvider}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.modular.auth/account.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular.auth/account/account.fidl#45)*
+
+ The currently supported identity providers. An identity provider provides
+ identifiers for users to interact with the system and may provide information
+ about the user that is known to the provider.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>DEV</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>GOOGLE</code></td>
+            <td><code>1</code></td>
+            <td></td>
         </tr></table>
 
 
diff --git a/sdk/fidl/fuchsia.modular.session/index.md b/sdk/fidl/fuchsia.modular.session/index.md
index 2fda4d8..06c8c8e 100644
--- a/sdk/fidl/fuchsia.modular.session/index.md
+++ b/sdk/fidl/fuchsia.modular.session/index.md
@@ -21,15 +21,33 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>LET_LEDGER_DECIDE</code></td>
             <td><code>1</code></td>
-            <td> Use a cloud provider configured by Ledger.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>FROM_ENVIRONMENT</code></td>
             <td><code>2</code></td>
-            <td> Use a cloud provider available in the incoming namespace, rather than
- initializing and instance within sessionmgr. This can be used by Voila to
- inject a custom cloud provider.
-</td>
+            <td></td>
+        </tr><tr>
+            <td><code>NONE</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr></table>
+
+### CloudProvider {:#CloudProvider}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.modular.session/modular_config.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular.session/modular_config.fidl#158)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>LET_LEDGER_DECIDE</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>FROM_ENVIRONMENT</code></td>
+            <td><code>2</code></td>
+            <td></td>
         </tr><tr>
             <td><code>NONE</code></td>
             <td><code>3</code></td>
@@ -424,6 +442,390 @@
 </td>
         </tr></table>
 
+### BasemgrConfig {:#BasemgrConfig}
+
+
+*Defined in [fuchsia.modular.session/modular_config.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular.session/modular_config.fidl#13)*
+
+ Descriptions and defaults for these configurations are echoed in
+ peridot/docs/modular/guide/config.md.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>enable_cobalt</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> When set to false, Cobalt statistics are disabled.
+ Default: true
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>enable_presenter</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> When set to true, the Presenter service controls management of views.
+ Default: false
+</td>
+        </tr><tr>
+            <td>3</td>
+            <td><code>use_minfs</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> When set to true, wait for persistent data to initialize.
+ Default: true
+</td>
+        </tr><tr>
+            <td>4</td>
+            <td><code>use_session_shell_for_story_shell_factory</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Create story shells through StoryShellFactory exposed by the session
+ shell instead of creating separate story shell components. When set,
+ `story_shell_url` and any story shell args are ignored.
+ Default: false
+</td>
+        </tr><tr>
+            <td>5</td>
+            <td><code>test</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Tells basemgr whether it is running as a part of an integration test.
+ Default: false
+</td>
+        </tr><tr>
+            <td>6</td>
+            <td><code>test_name</code></td>
+            <td>
+                <code>string[4096]</code>
+            </td>
+            <td> The name of the test
+</td>
+        </tr><tr>
+            <td>7</td>
+            <td><code>base_shell</code></td>
+            <td>
+                <code><a class='link' href='#BaseShellConfig'>BaseShellConfig</a></code>
+            </td>
+            <td> Launch configurations specific to base shell.
+</td>
+        </tr><tr>
+            <td>8</td>
+            <td><code>session_shell_map</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#SessionShellMapEntry'>SessionShellMapEntry</a>&gt;</code>
+            </td>
+            <td> A map of launch configurations specific to session shells.
+</td>
+        </tr><tr>
+            <td>9</td>
+            <td><code>story_shell</code></td>
+            <td>
+                <code><a class='link' href='#StoryShellConfig'>StoryShellConfig</a></code>
+            </td>
+            <td> Launch configurations specific to story shell.
+</td>
+        </tr><tr>
+            <td>10</td>
+            <td><code>sessionmgr</code></td>
+            <td>
+                <code><a class='link' href='#AppConfig'>AppConfig</a></code>
+            </td>
+            <td> Temporary placeholder to pass configurations to sessionmgr. Will be
+ removed with the completion of MF-10.
+</td>
+        </tr></table>
+
+### BaseShellConfig {:#BaseShellConfig}
+
+
+*Defined in [fuchsia.modular.session/modular_config.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular.session/modular_config.fidl#53)*
+
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>app_config</code></td>
+            <td>
+                <code><a class='link' href='#AppConfig'>AppConfig</a></code>
+            </td>
+            <td> Contains the fuchsia package url and arguments to pass to the shell.
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>keep_alive_after_login</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> When set to true, the base shell is kept alive after a log in. This is
+ used for testing because current integration tests expect base shell
+ to always be running.
+ Default: false
+</td>
+        </tr></table>
+
+### SessionShellMapEntry {:#SessionShellMapEntry}
+
+
+*Defined in [fuchsia.modular.session/modular_config.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular.session/modular_config.fidl#64)*
+
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>name</code></td>
+            <td>
+                <code>string[4096]</code>
+            </td>
+            <td> The name of the session shell represented by its url.
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>config</code></td>
+            <td>
+                <code><a class='link' href='#SessionShellConfig'>SessionShellConfig</a></code>
+            </td>
+            <td> The launch configurations for the session shell.
+</td>
+        </tr></table>
+
+### SessionShellConfig {:#SessionShellConfig}
+
+
+*Defined in [fuchsia.modular.session/modular_config.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular.session/modular_config.fidl#72)*
+
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>app_config</code></td>
+            <td>
+                <code><a class='link' href='#AppConfig'>AppConfig</a></code>
+            </td>
+            <td> Contains the fuchsia package url and arguments to pass to the shell.
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>display_usage</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.ui.policy/index.html'>fuchsia.ui.policy</a>/<a class='link' href='../fuchsia.ui.policy/index.html#DisplayUsage'>DisplayUsage</a></code>
+            </td>
+            <td> The display usage policy for this session shell.
+
+ Optional: defaults to DisplayUsage::kUnknown.
+</td>
+        </tr><tr>
+            <td>3</td>
+            <td><code>screen_height</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td> The screen height in millimeters for the session shell's display.
+
+ Optional: defaults to full screen.
+</td>
+        </tr><tr>
+            <td>4</td>
+            <td><code>screen_width</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td> The screen width in millimeters for the session shell's display.
+
+ Optional: defaults to full screen.
+</td>
+        </tr></table>
+
+### StoryShellConfig {:#StoryShellConfig}
+
+
+*Defined in [fuchsia.modular.session/modular_config.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular.session/modular_config.fidl#92)*
+
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>app_config</code></td>
+            <td>
+                <code><a class='link' href='#AppConfig'>AppConfig</a></code>
+            </td>
+            <td> Contains the fuchsia package url and arguments to pass to the shell.
+</td>
+        </tr></table>
+
+### SessionmgrConfig {:#SessionmgrConfig}
+
+
+*Defined in [fuchsia.modular.session/modular_config.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular.session/modular_config.fidl#97)*
+
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>cloud_provider</code></td>
+            <td>
+                <code><a class='link' href='#CloudProvider'>CloudProvider</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>enable_cobalt</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> When set to false, Cobalt statistics are disabled. This is used for
+ testing.
+ Default: true
+</td>
+        </tr><tr>
+            <td>3</td>
+            <td><code>enable_story_shell_preload</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> When set to false, StoryShell instances are not warmed up as a startup
+ latency optimization. This is used for testing.
+ Default: true
+</td>
+        </tr><tr>
+            <td>4</td>
+            <td><code>use_memfs_for_ledger</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Tells the sessionmgr whether it should host+pass a memfs-backed
+ directory to the ledger for the user's repository, or to use
+ /data/LEDGER.
+ Default: false
+</td>
+        </tr><tr>
+            <td>5</td>
+            <td><code>startup_agents</code></td>
+            <td>
+                <code>vector&lt;string&gt;</code>
+            </td>
+            <td> A list of fuchsia package urls that specify which agents to launch at
+ startup.
+</td>
+        </tr><tr>
+            <td>6</td>
+            <td><code>session_agents</code></td>
+            <td>
+                <code>vector&lt;string&gt;</code>
+            </td>
+            <td> A list of fuchsia package urls that specify which agents to launch at
+ startup with PuppetMaster and FocusProvider services.
+</td>
+        </tr><tr>
+            <td>7</td>
+            <td><code>story_shell_url</code></td>
+            <td>
+                <code>string[4096]</code>
+            </td>
+            <td> The fuchsia package url for which story shell to use.
+</td>
+        </tr><tr>
+            <td>8</td>
+            <td><code>component_args</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#AppConfig'>AppConfig</a>&gt;</code>
+            </td>
+            <td> A map of agents to the arguments they should be started with.
+</td>
+        </tr><tr>
+            <td>9</td>
+            <td><code>use_parent_runner_for_story_realm</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Deprecated
+</td>
+        </tr><tr>
+            <td>10</td>
+            <td><code>agent_service_index</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#AgentServiceIndexEntry'>AgentServiceIndexEntry</a>&gt;</code>
+            </td>
+            <td> A list of supported services and the URL of the agent known to provide
+ that service. Used by the Session Manager to implement
+ `ComponentContext` method ConnectToAgentService().
+</td>
+        </tr></table>
+
+### AppConfig {:#AppConfig}
+
+
+*Defined in [fuchsia.modular.session/modular_config.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular.session/modular_config.fidl#141)*
+
+ Used to pass around configuration references to apps such as base shell,
+ session shell, story shell, and agents.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>url</code></td>
+            <td>
+                <code>string[4096]</code>
+            </td>
+            <td> The fuchsia package url for app.
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>args</code></td>
+            <td>
+                <code>vector&lt;string&gt;</code>
+            </td>
+            <td> The arguments for the app.
+</td>
+        </tr></table>
+
+### AgentServiceIndexEntry {:#AgentServiceIndexEntry}
+
+
+*Defined in [fuchsia.modular.session/modular_config.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular.session/modular_config.fidl#150)*
+
+ A service and the URL of the agent known to provide that service.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>service_name</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> The service name.
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>agent_url</code></td>
+            <td>
+                <code>string[2083]</code>
+            </td>
+            <td> The fuchsia component url for agent.
+</td>
+        </tr></table>
+
 
 
 
diff --git a/sdk/fidl/fuchsia.modular.testing/index.md b/sdk/fidl/fuchsia.modular.testing/index.md
index a939c82..5726928 100644
--- a/sdk/fidl/fuchsia.modular.testing/index.md
+++ b/sdk/fidl/fuchsia.modular.testing/index.md
@@ -203,6 +203,203 @@
     <tr><th>Name</th><th>Type</th></tr>
     </table>
 
+## TestHarness {:#TestHarness}
+*Defined in [fuchsia.modular.testing/test_harness.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular.testing/test_harness.fidl#29)*
+
+ The `TestHarness` service is used to run the modular runtime under a
+ hermetic environment and drive integration tests under it. Tests may use
+ this service to intercept components and assume their role. Additionally,
+ tests may use `TestHarness/ConnectToModularService()` to get capabilities
+ for controlling stories (using PuppetMaster) and connecting to agents
+ (using ComponentContext).
+
+ Closing the `TestHarness` connection will kill the `TestHarness` environment
+ including the modular runtime running under it.
+
+ On error, this connection is closed with the following epitaphs:
+ * `ZX_ERR_INVALID_ARGS`: Run() failed to execute succesfully.
+ * `ZX_ERR_BAD_STATE`: Other methods are called before Run() is called.
+ * `ZX_ERR_ALREADY_BOUND`: Run() was already called.
+ * `ZX_ERR_ALREADY_EXISTS`: The same environment service is being provided
+   twice.
+
+### Run {:#Run}
+
+ Initializes an instance of the modular runtime in an enclosed
+ environment, configured with parameters provided in `spec`. Closing the
+ `TestHarness` connection will kill the enclosed environment.
+
+ This protocol connection is closed if Run() fails, with the following
+ epitaphs:
+  * `ZX_ERR_INVALID_ARGS`: `spec` is mal-formed.
+  * `ZX_ERR_ALREADY_EXISTS`: The same environment service is being provided
+    twice in `spec.env_services`
+  * `ZX_ERR_ALREADY_BOUND`: Run() was already called.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>spec</code></td>
+            <td>
+                <code><a class='link' href='#TestHarnessSpec'>TestHarnessSpec</a></code>
+            </td>
+        </tr></table>
+
+
+
+### OnNewComponent {:#OnNewComponent}
+
+ This event is sent when a component specified in
+ `TestHarnessSpec.components_to_intercept` is created.
+ `startup_info.launch_info.url` contains the component URL.
+
+ Closing `intercepted_component` will signal to the component manager
+ that this component has exited unexpectedly. Prefer to use
+ InterceptedComponent/Exit to provide exit code and reason.
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>startup_info</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.sys/index.html'>fuchsia.sys</a>/<a class='link' href='../fuchsia.sys/index.html#StartupInfo'>StartupInfo</a></code>
+            </td>
+        </tr><tr>
+            <td><code>intercepted_component</code></td>
+            <td>
+                <code><a class='link' href='#InterceptedComponent'>InterceptedComponent</a></code>
+            </td>
+        </tr></table>
+
+### ConnectToModularService {:#ConnectToModularService}
+
+ Tests may use this method to connect to services provided by the modular
+ runtime. These services share the same component namespace for any
+ resources they create (e.g., entities, message queues, and module
+ names).
+
+ This protocol connection is closed with the following epitaphs:
+  * `ZX_ERR_BAD_STATE`: if `ConnectToModularService()` is called before
+   `Run()`.
+  * `ZX_ERR_INVALID_ARGS`: if `service` is not set to a value.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>service</code></td>
+            <td>
+                <code><a class='link' href='#ModularService'>ModularService</a></code>
+            </td>
+        </tr></table>
+
+
+
+### ConnectToEnvironmentService {:#ConnectToEnvironmentService}
+
+ Connects to environment services injected into the TestHarness
+ environment.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>service_name</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>request</code></td>
+            <td>
+                <code>handle&lt;channel&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### ParseConfig {:#ParseConfig}
+
+ Parses a modular configuration from string into BasemgrConfig and
+ SessionmgrConfig
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>config</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>config_path</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>basemgr_config</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.modular.session/index.html'>fuchsia.modular.session</a>/<a class='link' href='../fuchsia.modular.session/index.html#BasemgrConfig'>BasemgrConfig</a></code>
+            </td>
+        </tr><tr>
+            <td><code>sessionmgr_config</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.modular.session/index.html'>fuchsia.modular.session</a>/<a class='link' href='../fuchsia.modular.session/index.html#SessionmgrConfig'>SessionmgrConfig</a></code>
+            </td>
+        </tr></table>
+
+## InterceptedComponent {:#InterceptedComponent}
+*Defined in [fuchsia.modular.testing/test_harness.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular.testing/test_harness.fidl#84)*
+
+ InterceptedComponent represents an intercepted component's lifecycle.
+ Closing this connection causes the component to be killed, and is
+ equivalent in behaviour to the `ComponentController` being closed.
+
+### Exit {:#Exit}
+
+ Signals that component has exit'd with the specified exit code. The
+ values here are bubbled up to the
+ `fuchsia.sys.ComponentController.OnTerminated` event. The `OnKill` event
+ is sent, and this InterceptedComponent handle is closed.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>exit_code</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+        </tr><tr>
+            <td><code>reason</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.sys/index.html'>fuchsia.sys</a>/<a class='link' href='../fuchsia.sys/index.html#TerminationReason'>TerminationReason</a></code>
+            </td>
+        </tr></table>
+
+
+
+### OnKill {:#OnKill}
+
+ The event is sent when the component is killed by the associated
+ `fuchsia.sys.ComponentController`, or when `Exit()` is called.
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
 
 
 ## **STRUCTS**
@@ -236,6 +433,35 @@
         </tr>
 </table>
 
+### ComponentService {:#ComponentService}
+*Defined in [fuchsia.modular.testing/test_harness.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular.testing/test_harness.fidl#183)*
+
+
+
+ Describes a service to be provided by a component instance.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>name</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> Name of the service.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>url</code></td>
+            <td>
+                <code>string[2083]</code>
+            </td>
+            <td> URL of the component which will provide the service.
+ The service is retrieved from this component's /out/svc namespace.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
 
 
 
@@ -434,6 +660,198 @@
 </td>
         </tr></table>
 
+### TestHarnessSpec {:#TestHarnessSpec}
+
+
+*Defined in [fuchsia.modular.testing/test_harness.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular.testing/test_harness.fidl#110)*
+
+ Defines the setup of an environment running an instance of the modular
+ framework used for testing purposes. This table is supplied to
+ `TestHarness.Run()`. A malformed `TestHarnessSpec` will cause `TestHarness`
+ connection to close with an epitaph of `ZX_ERR_INVALID_ARGS`.
+
+ By default, the following services are made available to the hermetic
+ environment:
+  * fuchsia.auth.account.AccountManager
+  * fuchsia.devicesettings.DeviceSettingsManager
+
+ Additional services may be supplied using using
+ `TestHarnessSpec.env_services_to_inherit` and
+ `TestHarnessSpec.injected_services`. Additional services override the
+ default services listed above.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>basemgr_config</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.modular.session/index.html'>fuchsia.modular.session</a>/<a class='link' href='../fuchsia.modular.session/index.html#BasemgrConfig'>BasemgrConfig</a></code>
+            </td>
+            <td> Configuration for basemgr. See `fuchsia.modular.session.BasemgrConfig`
+ for a description of the defaults.
+
+ The test harness will amend `basemgr_config` before passing it off to
+ the modular runtime in the following way:
+ * If `basemgr_config.base_shell.app_config.url` is not set, the test
+   harness will use a base shell which automatically logs into the
+   session.
+ * If `basemgr_config.session_shell_map[0].config.app_config.url` is not
+   set, the test harness will use a shell which automatically starts new
+   stories.
+ * If `basemgr_config.story_shell.app_config.url` is not set, the test
+   harness use a minimally functioning story shell which displays all
+   mods in a story.
+
+ To intercept and mock the shells, users may provide fake URLs for the
+ shells and specify that the fake URL be intercepted using
+ `components_to_intercept`.
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>sessionmgr_config</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.modular.session/index.html'>fuchsia.modular.session</a>/<a class='link' href='../fuchsia.modular.session/index.html#SessionmgrConfig'>SessionmgrConfig</a></code>
+            </td>
+            <td> Configuration for sessionmgr. See
+ `fuchsia.modular.session.SessionmgrConfig` for a description of the
+ defaults.
+</td>
+        </tr><tr>
+            <td>4</td>
+            <td><code>components_to_intercept</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#InterceptSpec'>InterceptSpec</a>&gt;</code>
+            </td>
+            <td> List of component URLs (and additional .cmx contents) to intercept.
+</td>
+        </tr><tr>
+            <td>6</td>
+            <td><code>env_services</code></td>
+            <td>
+                <code><a class='link' href='#EnvironmentServicesSpec'>EnvironmentServicesSpec</a></code>
+            </td>
+            <td> Options to configure the test harness environment. Use this to inject
+ services into the environment.
+
+ Optional.
+</td>
+        </tr><tr>
+            <td>7</td>
+            <td><code>environment_suffix</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> Suffix to the environment name.
+ The default environment name is 'mth_{random number from 0 to 99999}'.
+ When provided, the environment_suffix additionally appends a '_' and
+ the string to the end of the environment name. The overall name gets
+ truncated at 32 characters.
+
+ Optional.
+</td>
+        </tr><tr>
+            <td>3</td>
+            <td><code>env_services_to_inherit</code></td>
+            <td>
+                <code>vector&lt;string&gt;</code>
+            </td>
+            <td> DEPRECATED. Use |env_services.service_dir| to pass through services from
+ parent environment.
+</td>
+        </tr><tr>
+            <td>5</td>
+            <td><code></code></td>
+            <td>
+                <code></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### EnvironmentServicesSpec {:#EnvironmentServicesSpec}
+
+
+*Defined in [fuchsia.modular.testing/test_harness.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular.testing/test_harness.fidl#165)*
+
+ Options for configuring the test harness environment with services.
+
+ If the same service is provided in more than one place, `TestHarness`
+ connection is closed with a `ZX_ERR_ALREADY_EXISTS` epitaph.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>service_dir</code></td>
+            <td>
+                <code>handle&lt;channel&gt;</code>
+            </td>
+            <td> A directory of services to be provided to the test harness environment.
+
+ Optional.
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>services_from_components</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#ComponentService'>ComponentService</a>&gt;</code>
+            </td>
+            <td> A list of services provided by components to inject into the test
+ harness environment. Multiple services may be provided by the same
+ component, but only one instance of the component is launched to serve
+ its services. Components are started when one of their services is
+ requested, and are kept alive for the duration of the test harness
+ environment's life.
+
+ Optional.
+</td>
+        </tr></table>
+
+### InterceptSpec {:#InterceptSpec}
+
+
+*Defined in [fuchsia.modular.testing/test_harness.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular.testing/test_harness.fidl#194)*
+
+ Describes a component to intercept. Malformed parameters result in closing
+ `TestHarness` with a `ZX_ERR_INVALID_ARGS` epitaph.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>component_url</code></td>
+            <td>
+                <code>string[2083]</code>
+            </td>
+            <td> Required. Must be a valid component URL (e.g., fuchsia-pkg://..), or is
+ considered malformed.
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>extra_cmx_contents</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.mem/index.html'>fuchsia.mem</a>/<a class='link' href='../fuchsia.mem/index.html#Buffer'>Buffer</a></code>
+            </td>
+            <td> The .cmx contents of this component's manifest. A minimal manifest is
+ constructed by default. If set, the contents of `extra_cmx_contents`
+ override the default constructed manifest, which only has the required
+ "program.binary" field defined.
+
+ `extra_cmx_contents` must be a valid .cmx JSON. Example:
+
+ {
+   "sandbox": {
+     "services": [
+       "fuchsia.sys.Launcher",
+     ]
+   }
+ }
+</td>
+        </tr></table>
+
 
 
 
@@ -466,6 +884,32 @@
             <td></td>
         </tr></table>
 
+### ModularService {:#ModularService}
+*Defined in [fuchsia.modular.testing/test_harness.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular.testing/test_harness.fidl#75)*
+
+ Describes which service to connect to using `ConnectToModularService()`.
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>puppet_master</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='../fuchsia.modular/index.html'>fuchsia.modular</a>/<a class='link' href='../fuchsia.modular/index.html#PuppetMaster'>PuppetMaster</a>&gt;</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>component_context</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='../fuchsia.modular/index.html'>fuchsia.modular</a>/<a class='link' href='../fuchsia.modular/index.html#ComponentContext'>ComponentContext</a>&gt;</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>agent_context</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='../fuchsia.modular/index.html'>fuchsia.modular</a>/<a class='link' href='../fuchsia.modular/index.html#AgentContext'>AgentContext</a>&gt;</code>
+            </td>
+            <td></td>
+        </tr></table>
+
 
 
 
diff --git a/sdk/fidl/fuchsia.modular/index.md b/sdk/fidl/fuchsia.modular/index.md
index b1deac4..9c32090 100644
--- a/sdk/fidl/fuchsia.modular/index.md
+++ b/sdk/fidl/fuchsia.modular/index.md
@@ -2733,6 +2733,2733 @@
             </td>
         </tr></table>
 
+## Agent {:#Agent}
+*Defined in [fuchsia.modular/agent.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/agent/agent.fidl#38)*
+
+ An agent is a component whose lifecycle is not tied to any Story.
+
+ - An agent is a singleton instance.
+ - Components can connect to an Agent using the
+   fuchsia.modular.ComponentContext capability.
+ - An agent vends services to components that connect to it over a
+   ServiceProvider.
+ - An agent is started when someone wants to connect to it, or when a task it
+   has scheduled has triggered.
+
+ This FIDL interface should be implemented by a component that is meant to be
+ run as an Agent.
+
+ When an agent application implements the `Lifecycle` interface, it can
+ receive a signal for when it should stop. An agent may be stopped for the
+ following reasons:
+
+ (1) All `AgentController` connections associated with this agent are closed.
+
+ (2) The system wants to optimize for resources.
+
+ Once the framework delivers a `Lifecycle.Terminate()`, the agent application
+ may exit itself, or is killed by framework after a timeout.
+
+ For more info see:
+ - fuchsia.modular.AgentContext and fuchsia.modular.ComponentContext for
+   capabilities an agent has.
+ - fuchsia.modular.Lifecycle for how Components get lifecycle events.
+
+### Connect {:#Connect}
+
+ Called when some component tries to connect to this agent. `requestor_url`
+ identifies the requesting client. Different client roles are identified differently:
+    * For Module clients in the general case, `requestor_url` will be the name provided at
+      Module create time (ie, in calls to StoryPuppetMaster's StoryCommand.AddMod/mod_name)
+      with :'s escaped (see below for a complete explanation).
+    * For all other clients (Agents and Shells), `requestor_url` is set to the requesting
+      component's URL.
+
+ `services` must be connected to an implementation of fuchsia.sys.ServiceProvider offering
+ services specific to the requesting client.
+
+ Details on module naming: modules are named hierarchically based on what client created
+ them. This is called a module path. If created by 1) an agent or 2) an existing module, the
+ path is constructed differently.
+
+ In the case of (2), the module path is the concatenation of the existing module's path with
+ the new module's name, as provided by the parent module. In the case of (1), the module
+ path is the concatenation of StoryCommand.AddMod/mod_name and
+ StoryCommand.AddMod/surface_relation_parent.
+
+ The full path is encoded into `requestor_url` as escape_colons(module_path).join(':').
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>requestor_url</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>services</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='../fuchsia.sys/index.html'>fuchsia.sys</a>/<a class='link' href='../fuchsia.sys/index.html#ServiceProvider'>ServiceProvider</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### RunTask {:#RunTask}
+
+ Called when some task identified by `task_id` is scheduled to run. The task
+ was first posted by this Agent using `AgentContext.ScheduleTask()`. The
+ return callback is called by this Agent when all work related to this task
+ is completed. Note that the framework may call `Lifecycle.Terminate()`
+ before RunTask returns.
+
+ TODO(alhaad): The current implementation allows the Agent to run a task
+ until its callback returns. If the task takes a long time to finish, the
+ framework has no way to signal a request for termination other than to shut
+ down the entire Agent instance. Instead, we should cap task length with
+ strategies like budgets. Also, the Task should likely have its own
+ connection that allows for more signalling.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>task_id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+## AgentContext {:#AgentContext}
+*Defined in [fuchsia.modular/agent_context.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/agent/agent_context.fidl#11)*
+
+ An instance of this service is exposed to agents in their namespace.
+
+### GetComponentContext {:#GetComponentContext}
+
+ DEPRECATED: ComponentContext is now available in the
+ namespace/environment for Modules.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#ComponentContext'>ComponentContext</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### GetEntityReferenceFactory {:#GetEntityReferenceFactory}
+
+ Connects to an EntityReferenceFactory for this Agent. Entity references
+ obtained from this EntityReferenceFactory will be resolved back to this
+ Agent.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#EntityReferenceFactory'>EntityReferenceFactory</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### GetTokenManager {:#GetTokenManager}
+
+ The auth token manager this Agent may use for accessing external services.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='../fuchsia.auth/index.html'>fuchsia.auth</a>/<a class='link' href='../fuchsia.auth/index.html#TokenManager'>TokenManager</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+## AgentController {:#AgentController}
+*Defined in [fuchsia.modular/agent_controller.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/agent/agent_controller/agent_controller.fidl#12)*
+
+ This interface is used by the caller of ComponentContext::ConnectToAgent() to
+ tell the framework that it is still interested in keeping this Agent running.
+
+ The system counts AgentController connections and terminates this Agent if
+ the count goes to zero.
+
+## BaseShell {:#BaseShell}
+*Defined in [fuchsia.modular/base_shell.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/basemgr/base_shell.fidl#18)*
+
+ This interface is implemented by a base shell. Dependencies are passed to it
+ in Initialize() on startup. The base shell is also expected to implement
+ Lifecycle in order to receive a Terminate() call on teardown.
+
+ In one component instance there can only be one BaseShell service instance.
+ The ViewOwner request is sent to the separate ViewProvider service. This way,
+ the base shell may be implemented as a flutter component.
+
+### Initialize {:#Initialize}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>base_shell_context</code></td>
+            <td>
+                <code><a class='link' href='#BaseShellContext'>BaseShellContext</a></code>
+            </td>
+        </tr><tr>
+            <td><code>base_shell_params</code></td>
+            <td>
+                <code><a class='link' href='#BaseShellParams'>BaseShellParams</a></code>
+            </td>
+        </tr></table>
+
+
+
+### GetAuthenticationUIContext {:#GetAuthenticationUIContext}
+
+ This method may be invoked by the basemgr to request an
+ AuthenticationUIContext. `request` will then be used to request the base
+ shell to show login screen during a UserProvider.AddUser() or if a token
+ needs to be refreshed.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='../fuchsia.auth/index.html'>fuchsia.auth</a>/<a class='link' href='../fuchsia.auth/index.html#AuthenticationUIContext'>AuthenticationUIContext</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+## BaseShellContext {:#BaseShellContext}
+*Defined in [fuchsia.modular/base_shell.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/basemgr/base_shell.fidl#32)*
+
+ This interface allows the `BaseShell` to request capabilities from the
+ `Basemgr` in a way that is more explicit about the services that are
+ offered than a generic `ServiceProvider`.
+
+### GetUserProvider {:#GetUserProvider}
+
+ Acquires the user provider service, which is used to add/remove/list and
+ authenticate users.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#UserProvider'>UserProvider</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### GetPresentation {:#GetPresentation}
+
+ Acquires the presentation service, which is assumed to already be
+ connected to the presenter.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>presentation</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='../fuchsia.ui.policy/index.html'>fuchsia.ui.policy</a>/<a class='link' href='../fuchsia.ui.policy/index.html#Presentation'>Presentation</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+## UserProvider {:#UserProvider}
+*Defined in [fuchsia.modular/user_provider.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/basemgr/user_provider.fidl#13)*
+
+ Given by the `Basemgr` to the `BaseShell` at Initialize() so the
+ `BaseShell` can get information about the users of this device from the
+ `Basemgr`, and act on the provided information (including extending the
+ user database).
+
+### AddUser {:#AddUser}
+
+ Adds information of a user that can be used to authenticate her/him to this
+ device. Once successfully added, the user can login to the same device via
+ Login().
+
+ `identity_provider` is the identity provider to use for identification.
+
+ `device_name` is what the user wants to name the device. If null or empty
+ the device's current hostname will be used.
+
+ `account` is NULL if there was an error during identification and
+ `error_code` is set.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>identity_provider</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.modular.auth/index.html'>fuchsia.modular.auth</a>/<a class='link' href='../fuchsia.modular.auth/index.html#IdentityProvider'>IdentityProvider</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>account</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.modular.auth/index.html'>fuchsia.modular.auth</a>/<a class='link' href='../fuchsia.modular.auth/index.html#Account'>Account</a>?</code>
+            </td>
+        </tr><tr>
+            <td><code>error_code</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+        </tr></table>
+
+### RemoveUser {:#RemoveUser}
+
+ Removes information of a user from the local user database.
+
+ `account_id` is received from either AddUser() or PreviousUsers().
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>account_id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>error_code</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+        </tr></table>
+
+### Login {:#Login}
+
+ Uses the credentials provided in AddUser() to start a user session. This
+ would mean syncing with the user's ledger instance and displaying a user
+ shell with all of the user's stories.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>user_login_params</code></td>
+            <td>
+                <code><a class='link' href='#UserLoginParams'>UserLoginParams</a></code>
+            </td>
+        </tr></table>
+
+
+
+### Login2 {:#Login2}
+
+ DEPRECATED: For transitional purposes only.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>user_login_params</code></td>
+            <td>
+                <code><a class='link' href='#UserLoginParams2'>UserLoginParams2</a></code>
+            </td>
+        </tr></table>
+
+
+
+### PreviousUsers {:#PreviousUsers}
+
+ List of all users who have authenticated to this device in the past.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>accounts</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='../fuchsia.modular.auth/index.html'>fuchsia.modular.auth</a>/<a class='link' href='../fuchsia.modular.auth/index.html#Account'>Account</a>&gt;</code>
+            </td>
+        </tr></table>
+
+## Clipboard {:#Clipboard}
+*Defined in [fuchsia.modular/clipboard.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/clipboard/clipboard.fidl#10)*
+
+ An interface that provides clients with the ability to store and
+ retrieve text.
+
+### Push {:#Push}
+
+ Pushes `text` onto the clipboard.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>text</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr></table>
+
+
+
+### Peek {:#Peek}
+
+ Peeks at the current topmost item on the clipboard and returns
+ it, or null if no such item exists.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>text</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+        </tr></table>
+
+## ComponentContext {:#ComponentContext}
+*Defined in [fuchsia.modular/component_context.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/component/component_context.fidl#14)*
+
+ Provided to all component instances in their respective initialization
+ information by the framework. For example, a Module gets it from its
+ ModuleContext and an Agent gets it from its AgentContext.
+
+### GetLedger {:#GetLedger}
+
+ Gets the Ledger associated with this component. This ledger instance is
+ unique to this component (nb. not the component instance) under this user.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='../fuchsia.ledger/index.html'>fuchsia.ledger</a>/<a class='link' href='../fuchsia.ledger/index.html#Ledger'>Ledger</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### ConnectToAgent {:#ConnectToAgent}
+
+ Used to start an agent in the user scope if it isn't already running, and
+ connect to it.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>url</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>incoming_services</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='../fuchsia.sys/index.html'>fuchsia.sys</a>/<a class='link' href='../fuchsia.sys/index.html#ServiceProvider'>ServiceProvider</a>&gt;</code>
+            </td>
+        </tr><tr>
+            <td><code>controller</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#AgentController'>AgentController</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### ConnectToAgentService {:#ConnectToAgentService}
+
+ Connects to an agent that provides the given `request.service_name`, and
+ then connects the given `request.channel` to that service.
+ `request.agent_controller` must be kept alive until the service is no
+ longer required.
+
+ If an error is encountered, the `request.channel` will be closed with
+ a status code, such as:
+   * `ZX_ERR_NOT_FOUND` -- if a `request.handler` agent URL is not
+     specified, and an agent for the `request.service_name` is not found
+   * `ZX_ERR_PEER_CLOSED` -- if `request.service_name` is not available from
+     the agent (either specified or discovered)
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>request</code></td>
+            <td>
+                <code><a class='link' href='#AgentServiceRequest'>AgentServiceRequest</a></code>
+            </td>
+        </tr></table>
+
+
+
+### GetEntityResolver {:#GetEntityResolver}
+
+ Gets the EntityResolver service, which can be used to resolve an entity
+ reference to an Entity interface.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#EntityResolver'>EntityResolver</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+## Entity {:#Entity}
+*Defined in [fuchsia.modular/entity.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/entity/entity.fidl#10)*
+
+ A multi-typed data entity.
+
+### GetTypes {:#GetTypes}
+
+ Returns the types associated with this entity. Each entry in `types`
+ references a well-known content type.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>types</code></td>
+            <td>
+                <code>vector&lt;string&gt;</code>
+            </td>
+        </tr></table>
+
+### GetData {:#GetData}
+
+ Given one of the types returned from `GetTypes()` above, returns
+ associated short-form data, or null if the type is absent from
+ `GetTypes()`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>type</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>data</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.mem/index.html'>fuchsia.mem</a>/<a class='link' href='../fuchsia.mem/index.html#Buffer'>Buffer</a>?</code>
+            </td>
+        </tr></table>
+
+### WriteData {:#WriteData}
+
+ Sets the data for a particular type. This will precipitate an `OnUpdated`
+ event with the associated type.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>type</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>data</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.mem/index.html'>fuchsia.mem</a>/<a class='link' href='../fuchsia.mem/index.html#Buffer'>Buffer</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#EntityWriteStatus'>EntityWriteStatus</a></code>
+            </td>
+        </tr></table>
+
+### GetReference {:#GetReference}
+
+ Gets the entity reference for this entity, which can be persisted and
+ then later used to locate this entity. These references are weak
+ references and are not sufficient to keep the entity alive.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>entity_reference</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr></table>
+
+### Watch {:#Watch}
+
+ Begins watching for data changes on a particular type. The watcher
+ immediately fires `OnUpdated` with the current value for the requested
+ type (or null if the type is not present). Closing the `Entity` interface
+ does not close the watcher.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>type</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>watcher</code></td>
+            <td>
+                <code><a class='link' href='#EntityWatcher'>EntityWatcher</a></code>
+            </td>
+        </tr></table>
+
+
+
+## EntityWatcher {:#EntityWatcher}
+*Defined in [fuchsia.modular/entity.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/entity/entity.fidl#37)*
+
+
+### OnUpdated {:#OnUpdated}
+
+ Fires on data updates for a particular type. If the type is initially not
+ present, a null `data` pointer is produced. The type may only transition
+ from absent to present at most once, as there is no deletion.
+
+ No deduplication is performed.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>data</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.mem/index.html'>fuchsia.mem</a>/<a class='link' href='../fuchsia.mem/index.html#Buffer'>Buffer</a>?</code>
+            </td>
+        </tr></table>
+
+
+
+## EntityProvider {:#EntityProvider}
+*Defined in [fuchsia.modular/entity_provider.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/entity/entity_provider.fidl#21)*
+
+ EntityProviders (agents) must implement and provide the `EntityProvider`
+ service if they create entity references (using `EntityReferenceFactory`).
+ This service is used by the framework to provide data for an `Entity`
+ interface for an entity. This interface is requested by the framework in
+ the agent's *application* outgoing services, and is closed by the framework
+ when there are no more `Entity`s that need to be provided.
+
+ In the below methods, `cookie` will have been previously passed to
+ `EntityReferenceFactory.CreateReference()`, though this may have been in an
+ earlier or remote app instance. Entity providers should attempt to resolve
+ unfamiliar cookies or else treat the entities as empty and read-only.
+
+### GetTypes {:#GetTypes}
+
+ Returns the types associated with the requested entity. Each entry in
+ `type` references a well-known content type.
+
+ If the cookie cannot be resolved, the provider should produce an empty
+ vector.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>cookie</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>types</code></td>
+            <td>
+                <code>vector&lt;string&gt;</code>
+            </td>
+        </tr></table>
+
+### GetData {:#GetData}
+
+ Given one of the types returned from `GetTypes()` above, returns
+ associated short-form data, or null if the type is absent from
+ `GetTypes()`.
+
+ If the cookie cannot be resolved, the provider should return null.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>cookie</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>type</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>data</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.mem/index.html'>fuchsia.mem</a>/<a class='link' href='../fuchsia.mem/index.html#Buffer'>Buffer</a>?</code>
+            </td>
+        </tr></table>
+
+### WriteData {:#WriteData}
+
+ Sets the data for a particular type. This must precipitate an `OnUpdate`
+ event with the associated type.
+
+ If the cookie cannot be resolved, the provider should no-op with
+ `EntityWriteStatus::READ_ONLY`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>cookie</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>type</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>data</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.mem/index.html'>fuchsia.mem</a>/<a class='link' href='../fuchsia.mem/index.html#Buffer'>Buffer</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#EntityWriteStatus'>EntityWriteStatus</a></code>
+            </td>
+        </tr></table>
+
+### Watch {:#Watch}
+
+ Begins watching for data changes on a particular type. The watcher must
+ immediately fire `OnUpdated` with the current value for the requested
+ type (or null if the type is not present).
+
+ No deduplication of events should be performed.
+
+ At most one update may be in-flight at a time on a particular watcher;
+ once a client is ready for another update, it will call the callback. At
+ most one update should be queued for dispatch for a particular watcher;
+ older updates should be dropped.
+
+ If the cookie cannot be resolved, the provider should emit a single event
+ with null data.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>cookie</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>type</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>watcher</code></td>
+            <td>
+                <code><a class='link' href='#EntityWatcher'>EntityWatcher</a></code>
+            </td>
+        </tr></table>
+
+
+
+## EntityReferenceFactory {:#EntityReferenceFactory}
+*Defined in [fuchsia.modular/entity_reference_factory.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/entity/entity_reference_factory.fidl#13)*
+
+ Agents use this interface to create Entity references that can subsequently
+ be dereferenced into an `Entity` interface using `EntityResolver`.
+ Agents that create entity references must also expose an `EntityProvider`
+ service in their application's outgoing services, so that agents can provide
+ data for `Entity`s that they create. This interface is available through an
+ agent's `AgentContext`.
+
+### CreateReference {:#CreateReference}
+
+ Agents call this to manufacture a reference for an Entity they will
+ provide. Returns an opaque, persistable `entity_reference` that components
+ can resolve into an `Entity` interface using `EntityResolver`. When data is
+ requested from an `Entity` interface resolved from this `entity_reference`,
+ the `cookie` associated with this `entity_reference` will be passed back to
+ the `EntityProvider` of the Agent that originally created this reference.
+
+ `cookie` should uniquely identify the `Entity` within the scope of the
+ calling entity provider. For example, it may be used as the primary key
+ value for a database.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>cookie</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>entity_reference</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr></table>
+
+## EntityResolver {:#EntityResolver}
+*Defined in [fuchsia.modular/entity_resolver.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/entity/entity_resolver.fidl#10)*
+
+ This interface is given to all components in their `ComponentContext`. Any
+ component can resolve an entity reference into an `Entity`.
+
+### ResolveEntity {:#ResolveEntity}
+
+ Finds and binds `entity_request` to an Entity handle for the Entity
+ referenced by `entity_reference`. If an error occurs, `entity_request`
+ will be closed.
+
+ This method is called by any component who wants to use an Entity using an
+ entity reference. A component has to get an entity reference (directly or
+ indirectly) from an agent, for example through some fidl interface. The
+ agent will create an entity reference using EntityReferenceFactory. During
+ entity resolution, that agent then provides data for the Entity
+ through an EntityProvider service it exposes. Thus, any Agent that wishes
+ to use EntityReferenceFactory to dispense entity references through its
+ agent services MUST also implement the EntityProvider service.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>entity_reference</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>entity_request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#Entity'>Entity</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+## IntentHandler {:#IntentHandler}
+*Defined in [fuchsia.modular/intent_handler.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/intent/intent_handler.fidl#17)*
+
+ The IntentHandler interface is exposed by modules which wish to handle
+ intents on the behalf of other modules or agents.
+
+ The modular framework expects any module which declares support for intent
+ handling in its module manifest to expose IntentHandler in its outgoing
+ services.
+
+ Any time the framework receives an intent which is to be handled by a specific
+ module its `IntentHandler` will be called with the intent it is meant to handle.
+
+### HandleIntent {:#HandleIntent}
+
+ Handles the provided intent. Any links referenced in the intent parameters
+ will be in the namespace of the handling component, and can be retrieved via
+ `ModuleContext.GetLink`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>intent</code></td>
+            <td>
+                <code><a class='link' href='#Intent'>Intent</a></code>
+            </td>
+        </tr></table>
+
+
+
+## Lifecycle {:#Lifecycle}
+*Defined in [fuchsia.modular/lifecycle.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/lifecycle/lifecycle.fidl#9)*
+
+ An interface implemented by applications that wish to terminate gracefully.
+
+### Terminate {:#Terminate}
+
+ The client of this application has requested that this application
+ terminate gracefully.
+
+ If the application does not terminate itself in a timely manner, the client
+ may forcibly terminate the application.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+## ModuleContext {:#ModuleContext}
+*Defined in [fuchsia.modular/module_context.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/module/module_context.fidl#13)*
+
+ This interface is exposed to all Module instances in a story. It allows to
+ create Link instances and run more Module instances.
+
+### AddModuleToStory {:#AddModuleToStory}
+
+ Starts a new Module instance and adds it to the story. The Module to
+ execute is identified by the contents of [intent] and the Module instance
+ is given a [name] in the scope of the starting Module instance. The view
+ for the Module is given to the story shell for display.
+
+ Providing a [surface_relation] advises the StoryShell how to layout
+ surfaces that the new module creates. If [surface_relation] is null then
+ a default relation is used.
+
+ If the method is called again with the same [name] by the same Module
+ instance, but with different arguments, the existing Module instance is
+ restarted with the changed arguments. If the other arguments don't
+ change, just an additional ModuleController connection is made.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>name</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>intent</code></td>
+            <td>
+                <code><a class='link' href='#Intent'>Intent</a></code>
+            </td>
+        </tr><tr>
+            <td><code>module_controller</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#ModuleController'>ModuleController</a>&gt;</code>
+            </td>
+        </tr><tr>
+            <td><code>surface_relation</code></td>
+            <td>
+                <code><a class='link' href='#SurfaceRelation'>SurfaceRelation</a>?</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#StartModuleStatus'>StartModuleStatus</a></code>
+            </td>
+        </tr></table>
+
+### EmbedModule {:#EmbedModule}
+
+ Like AddModuleToStory(), but passes a [view_token] explicitly to embed
+ the view of the requested Module instance in the view of the requesting
+ Module instance, instead of relying on the story shell for display. If a
+ Module instance with the same [name] and [intent] is already running,
+ [view_token] is destroyed.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>name</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>intent</code></td>
+            <td>
+                <code><a class='link' href='#Intent'>Intent</a></code>
+            </td>
+        </tr><tr>
+            <td><code>module_controller</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#ModuleController'>ModuleController</a>&gt;</code>
+            </td>
+        </tr><tr>
+            <td><code>view_token</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.ui.views/index.html'>fuchsia.ui.views</a>/<a class='link' href='../fuchsia.ui.views/index.html#ViewToken'>ViewToken</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#StartModuleStatus'>StartModuleStatus</a></code>
+            </td>
+        </tr></table>
+
+### RemoveSelfFromStory {:#RemoveSelfFromStory}
+
+ When a module calls [RemoveSelfFromStory()] the framework will stop the
+ module and remove it from the story. If there are no more running modules
+ in the story the story will be deleted.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### CreateEntity {:#CreateEntity}
+
+ Creates a [fuchsia.modular.Entity] with the given [type] and [data]. The
+ lifetime of the created entity is tied to the lifetime of the current story,
+ but can be dereferenced by modules and agents outside the scope of the story.
+
+ [entity_request] will be connected to the created entity, or closed if the
+ creation fails.
+
+ The returned [reference] is the entity reference for the created entity, or
+ null if the entity creation failed.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>type</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>data</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.mem/index.html'>fuchsia.mem</a>/<a class='link' href='../fuchsia.mem/index.html#Buffer'>Buffer</a></code>
+            </td>
+        </tr><tr>
+            <td><code>entity_request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#Entity'>Entity</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>entity_reference</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+        </tr></table>
+
+## OngoingActivity {:#OngoingActivity}
+*Defined in [fuchsia.modular/module_context.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/module/module_context.fidl#70)*
+
+ This interface defines the protocol over which a Module can communicate about
+ an ongoing activity to the framework. It is provided to Modules via
+ ModuleContext.StartOngoingActivity().
+
+## ModuleController {:#ModuleController}
+*Defined in [fuchsia.modular/module_controller.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/module/module_controller.fidl#12)*
+
+ This interface is used by the caller of ModuleContext.StartModule() to
+ control the started Module instance.
+
+ Closing this connection doesn't affect its Module instance; it just
+ relinquishes the ability of the caller to control the Module instance.
+
+### Focus {:#Focus}
+
+ Requests that this module become the focused module in the story.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### Defocus {:#Defocus}
+
+ Requests that this module be hidden in the story.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### Stop {:#Stop}
+
+ Requests the Module instance to stop. The running Module component's
+ Lifecycle::Terminate() method is called, the instance is shut down and
+ state within the framework is cleaned up.
+
+ The result callback is called once the Module's runtime has been torn down.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+### OnStateChange {:#OnStateChange}
+
+ Called with the current state when it changes.
+ DEPRECATED: Do not use this. ModuleState is a framework-internal concept
+ and should not be exposed outside.
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>new_state</code></td>
+            <td>
+                <code><a class='link' href='#ModuleState'>ModuleState</a></code>
+            </td>
+        </tr></table>
+
+## ModuleResolver {:#ModuleResolver}
+*Defined in [fuchsia.modular/module_resolver.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/module_resolver/module_resolver.fidl#8)*
+
+
+### FindModules {:#FindModules}
+
+ Finds Modules (contained in Fuchsia packages) that satisfy the constraints
+ specified in `query`. Module resolution is done by matching the requested
+ `query.action` and `query.parameter_constraints` (with both names and
+ types) against actions and constraints specified in module manifests.
+
+ If no results could be found, `response.results` will be empty.
+
+ For detailed information on the resolution process, see
+ docs/modular/module_resolution.md.
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>query</code></td>
+            <td>
+                <code><a class='link' href='#FindModulesQuery'>FindModulesQuery</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#FindModulesResponse'>FindModulesResponse</a></code>
+            </td>
+        </tr></table>
+
+## FocusController {:#FocusController}
+*Defined in [fuchsia.modular/focus.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/session/focus.fidl#21)*
+
+ This file has interfaces for 2 pieces of information: (1) The story
+ that is currently in focus and (2) stories that are visible to the
+ user. Names of interfaces follow the usual patterns:
+
+ {Focus,VisibleStories}Controller is used by session shell to update
+ information whenever changes take place.
+
+ FocusProvider is used by maxwell and session shell to
+ query and get updates on which story is in focus on which device
+ and visible stories on this device.
+
+ Implemented by sessionmgr. Given to session shell through its namespace.
+
+### Set {:#Set}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>focused_story_id</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+        </tr></table>
+
+
+
+### WatchRequest {:#WatchRequest}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>watcher</code></td>
+            <td>
+                <code><a class='link' href='#FocusRequestWatcher'>FocusRequestWatcher</a></code>
+            </td>
+        </tr></table>
+
+
+
+## FocusRequestWatcher {:#FocusRequestWatcher}
+*Defined in [fuchsia.modular/focus.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/session/focus.fidl#30)*
+
+ Implemented by session shell. OnFocusRequest() gets called whenever there
+ is a new request to change focus on this device. Requests can be
+ made via FocusProvider.Request().
+
+### OnFocusRequest {:#OnFocusRequest}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>story_id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr></table>
+
+
+
+## FocusProvider {:#FocusProvider}
+*Defined in [fuchsia.modular/focus.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/session/focus.fidl#37)*
+
+ Implemented by sessionmgr. Given to session shell and session agents through
+ their namespace. Focus is persisted on the ledger.
+
+### Query {:#Query}
+
+ Returns the stories that are focused across all devices.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>focused_stories</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#FocusInfo'>FocusInfo</a>&gt;</code>
+            </td>
+        </tr></table>
+
+### Watch {:#Watch}
+
+ Watches for change in focus on any of the user's devices.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>watcher</code></td>
+            <td>
+                <code><a class='link' href='#FocusWatcher'>FocusWatcher</a></code>
+            </td>
+        </tr></table>
+
+
+
+### Request {:#Request}
+
+ Requests session shell to change focus on this device. If session shell
+ responds to this request, focus shall be taken away from
+ previously focused story and an update will be sent on
+ FocusWatcher.OnFocusChange(). If `story_id` is NULL, the timeline
+ is brought back into focus.
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>story_id</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+        </tr></table>
+
+
+
+## FocusWatcher {:#FocusWatcher}
+*Defined in [fuchsia.modular/focus.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/session/focus.fidl#57)*
+
+ Implemented by anyone who is interested in getting updates when focus
+ changes.
+
+### OnFocusChange {:#OnFocusChange}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>focus_info</code></td>
+            <td>
+                <code><a class='link' href='#FocusInfo'>FocusInfo</a>?</code>
+            </td>
+        </tr></table>
+
+
+
+## SessionShell {:#SessionShell}
+*Defined in [fuchsia.modular/session_shell.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/session/session_shell.fidl#15)*
+
+ This interface is implemented by a session shell and is used by the
+ sessionmgr to hand to the session shell views of stories, or to notify that
+ the view of a story is about to be closed.
+
+### AttachView {:#AttachView}
+
+ Displays the given story view. The story this view belongs to is
+ identified by `view_id.story_id`.
+ DEPRECATED.  For transitional purposes only.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>view_id</code></td>
+            <td>
+                <code><a class='link' href='#ViewIdentifier'>ViewIdentifier</a></code>
+            </td>
+        </tr><tr>
+            <td><code>view_holder_token</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.ui.views/index.html'>fuchsia.ui.views</a>/<a class='link' href='../fuchsia.ui.views/index.html#ViewHolderToken'>ViewHolderToken</a></code>
+            </td>
+        </tr></table>
+
+
+
+### AttachView2 {:#AttachView2}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>view_id</code></td>
+            <td>
+                <code><a class='link' href='#ViewIdentifier'>ViewIdentifier</a></code>
+            </td>
+        </tr><tr>
+            <td><code>view_holder_token</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.ui.views/index.html'>fuchsia.ui.views</a>/<a class='link' href='../fuchsia.ui.views/index.html#ViewHolderToken'>ViewHolderToken</a></code>
+            </td>
+        </tr></table>
+
+
+
+### DetachView {:#DetachView}
+
+ Instructs the session shell to detach the view identified by `view_id`
+ that was previously provided by AttachView() from the UI of the session
+ shell. The view will be closed soon after DetachView() returns, or when a
+ timeout is reached.
+
+ It is customary for the session shell to display a placeholder before a
+ view is attached for a given view identifier, or after it was detached.
+
+ If the story identified by `view_id.story_id` is about to be deleted, the
+ Shell will observe a call to StoryProviderWatcher.OnDelete() sometime
+ after DetachView() returns.
+
+ If the session for which this session shell is responsible for is being
+ terminated, or the session shell is stopped because it's replaced by
+ another session shell, DetachView() will *not* be called at all, and the
+ shell will rather observe a call to Lifecycle.Terminate().
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>view_id</code></td>
+            <td>
+                <code><a class='link' href='#ViewIdentifier'>ViewIdentifier</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+## SessionShellContext {:#SessionShellContext}
+*Defined in [fuchsia.modular/session_shell.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/session/session_shell.fidl#57)*
+
+ This interface allows a `SessionShell` to request capabilities from its
+ creator in a way that is more explicit about the services that are
+ offered than a generic `ServiceProvider`.
+
+### GetAccount {:#GetAccount}
+
+ The account associated with the currently logged-in user. It's NULL if
+ logged into GUEST mode.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>account</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.modular.auth/index.html'>fuchsia.modular.auth</a>/<a class='link' href='../fuchsia.modular.auth/index.html#Account'>Account</a>?</code>
+            </td>
+        </tr></table>
+
+### GetComponentContext {:#GetComponentContext}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#ComponentContext'>ComponentContext</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### GetFocusController {:#GetFocusController}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#FocusController'>FocusController</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### GetFocusProvider {:#GetFocusProvider}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#FocusProvider'>FocusProvider</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### GetPresentation {:#GetPresentation}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='../fuchsia.ui.policy/index.html'>fuchsia.ui.policy</a>/<a class='link' href='../fuchsia.ui.policy/index.html#Presentation'>Presentation</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### GetStoryProvider {:#GetStoryProvider}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#StoryProvider'>StoryProvider</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### Logout {:#Logout}
+
+ Requests logout of the user. This causes the basemgr to tear down the
+ `Sessionmgr` instance of the user.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+## SessionShellPresentationProvider {:#SessionShellPresentationProvider}
+*Defined in [fuchsia.modular/session_shell.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/session/session_shell.fidl#80)*
+
+ Session shell provides this service to the framework which may plumb it to
+ different subscribers, such as story shell and intelligence provider.
+
+ EXPERIMENTAL Service that allows consumers of a given story to get a
+ connection to a Presentation, and visual state services provided by the user
+ shell. This allows story shell implementations to coordinate event and focus
+ handling. An analog mechanism exists between BaseShell and SessionShell.
+
+### GetPresentation {:#GetPresentation}
+
+ When a StoryShell calls StoryShellContext.GetPresentation(), this request
+ arrives here.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>story_id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='../fuchsia.ui.policy/index.html'>fuchsia.ui.policy</a>/<a class='link' href='../fuchsia.ui.policy/index.html#Presentation'>Presentation</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### WatchVisualState {:#WatchVisualState}
+
+ When a StoryShell calls StoryShellContext.WatchVisualState(), this request
+ arrives here.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>story_id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>watcher</code></td>
+            <td>
+                <code><a class='link' href='#StoryVisualStateWatcher'>StoryVisualStateWatcher</a></code>
+            </td>
+        </tr></table>
+
+
+
+## PuppetMaster {:#PuppetMaster}
+*Defined in [fuchsia.modular/puppet_master.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/story/puppet_master.fidl#52)*
+
+
+### ControlStory {:#ControlStory}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>story_name</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#StoryPuppetMaster'>StoryPuppetMaster</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### DeleteStory {:#DeleteStory}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>story_name</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+### GetStories {:#GetStories}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>story_names</code></td>
+            <td>
+                <code>vector&lt;string&gt;</code>
+            </td>
+        </tr></table>
+
+## StoryPuppetMaster {:#StoryPuppetMaster}
+*Defined in [fuchsia.modular/puppet_master.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/story/puppet_master.fidl#74)*
+
+
+### Enqueue {:#Enqueue}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>commands</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#StoryCommand'>StoryCommand</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### Execute {:#Execute}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#ExecuteResult'>ExecuteResult</a></code>
+            </td>
+        </tr></table>
+
+### SetStoryInfoExtra {:#SetStoryInfoExtra}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>story_info_extra</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#StoryInfoExtraEntry'>StoryInfoExtraEntry</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#StoryPuppetMaster_SetStoryInfoExtra_Result'>StoryPuppetMaster_SetStoryInfoExtra_Result</a></code>
+            </td>
+        </tr></table>
+
+### Annotate {:#Annotate}
+
+ Attach the `annotations` to the story. If the story does not yet exist,
+ it will be created.
+
+ Existing annotations with the same key will be overwritten, or
+ deleted if new value is null.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>annotations</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#Annotation'>Annotation</a>&gt;[50]</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#StoryPuppetMaster_Annotate_Result'>StoryPuppetMaster_Annotate_Result</a></code>
+            </td>
+        </tr></table>
+
+### AnnotateModule {:#AnnotateModule}
+
+ Attach the `annotations` to the module with the given `id`.
+ The module can be annotated before being added to the story, but if the
+ story does not yet exist, AnnotationError.NOT_FOUND is returned.
+
+ Existing annotations with the same key will be overwritten.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>module_id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>annotations</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#Annotation'>Annotation</a>&gt;[50]</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#StoryPuppetMaster_AnnotateModule_Result'>StoryPuppetMaster_AnnotateModule_Result</a></code>
+            </td>
+        </tr></table>
+
+## StoryController {:#StoryController}
+*Defined in [fuchsia.modular/story_controller.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/story/story_controller.fidl#12)*
+
+ Used by the clients of StoryProvider (SessionShell) to interact with a single
+ story. Created by StoryProvider.
+
+ If `StoryController` is closed, the `StoryState` associated with this story
+ does not change.
+
+### GetInfo {:#GetInfo}
+
+ Gets information associated with the story.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>info</code></td>
+            <td>
+                <code><a class='link' href='#StoryInfo'>StoryInfo</a></code>
+            </td>
+        </tr><tr>
+            <td><code>state</code></td>
+            <td>
+                <code><a class='link' href='#StoryState'>StoryState</a></code>
+            </td>
+        </tr></table>
+
+### GetInfo2 {:#GetInfo2}
+
+ For transition purposes only.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>info</code></td>
+            <td>
+                <code><a class='link' href='#StoryInfo2'>StoryInfo2</a></code>
+            </td>
+        </tr><tr>
+            <td><code>state</code></td>
+            <td>
+                <code><a class='link' href='#StoryState'>StoryState</a></code>
+            </td>
+        </tr></table>
+
+### RequestStart {:#RequestStart}
+
+ Requests to run the story controlled by this `StoryController` instance.
+ When the story starts, if not yet running, the view of the newly started
+ story shell will be passed in a call to SessionShell.AttachView().
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### Stop {:#Stop}
+
+ Requests to stop the story controlled by this `StoryController`. If Start()
+ requests are pending when this request is issued, the request is queued
+ until the Start() requests complete. Before stopping the story, a snapshot
+ of the story will be taken and saved. Returns when the story is stopped.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+### Watch {:#Watch}
+
+ Registers a watcher for changes of the story state.
+
+ Note that stories can stop themselves at any time and it is advisable
+ for the holder of a StoryController to provide a watcher.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>watcher</code></td>
+            <td>
+                <code><a class='link' href='#StoryWatcher'>StoryWatcher</a></code>
+            </td>
+        </tr></table>
+
+
+
+### GetModuleController {:#GetModuleController}
+
+ DEPRECATED
+ (metadata about, and requesting changes to runtime state).
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>module_path</code></td>
+            <td>
+                <code>vector&lt;string&gt;</code>
+            </td>
+        </tr><tr>
+            <td><code>request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#ModuleController'>ModuleController</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### Annotate {:#Annotate}
+
+ Attach the `annotations` to the story.
+
+ Existing annotations with the same key will be overwritten.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>annotations</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#Annotation'>Annotation</a>&gt;[50]</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#StoryController_Annotate_Result'>StoryController_Annotate_Result</a></code>
+            </td>
+        </tr></table>
+
+## StoryWatcher {:#StoryWatcher}
+*Defined in [fuchsia.modular/story_controller.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/story/story_controller.fidl#49)*
+
+ Implemented by the client calling StoryController.Watch().
+
+### OnStateChange {:#OnStateChange}
+
+ Called with the current state right after registration, and subsequently
+ when the state changes.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>new_state</code></td>
+            <td>
+                <code><a class='link' href='#StoryState'>StoryState</a></code>
+            </td>
+        </tr></table>
+
+
+
+### OnModuleAdded {:#OnModuleAdded}
+
+ DEPRECATED
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>module_data</code></td>
+            <td>
+                <code><a class='link' href='#ModuleData'>ModuleData</a></code>
+            </td>
+        </tr></table>
+
+
+
+### OnModuleFocused {:#OnModuleFocused}
+
+ DEPRECATED
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>module_path</code></td>
+            <td>
+                <code>vector&lt;string&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+## StoryProvider {:#StoryProvider}
+*Defined in [fuchsia.modular/story_provider.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/story/story_provider.fidl#14)*
+
+ Sessionmgr passes a connection to this service to the SessionShell so it can
+ operate on stories for the user. It is also passed to other services that
+ monitor or manipulate stories, specifically the maxwell services.
+
+ Closing a `StoryProvider` connection has no effect on the state of the
+ framework.
+
+### GetStories {:#GetStories}
+
+ Returns a list of existing stories. If `watcher` is provided, the client will
+ be notified of story changes (new stories, deleted stories, runtime
+ state changes).
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>watcher</code></td>
+            <td>
+                <code><a class='link' href='#StoryProviderWatcher'>StoryProviderWatcher</a>?</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>story_infos</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#StoryInfo'>StoryInfo</a>&gt;</code>
+            </td>
+        </tr></table>
+
+### GetStories2 {:#GetStories2}
+
+ For transition purposes only.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>watcher</code></td>
+            <td>
+                <code><a class='link' href='#StoryProviderWatcher'>StoryProviderWatcher</a>?</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>story_infos</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#StoryInfo2'>StoryInfo2</a>&gt;</code>
+            </td>
+        </tr></table>
+
+### GetStoryInfo {:#GetStoryInfo}
+
+ Requests detailed information about the given story. If the story doesn't
+ exist, returns null.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>story_id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>story_info</code></td>
+            <td>
+                <code><a class='link' href='#StoryInfo'>StoryInfo</a>?</code>
+            </td>
+        </tr></table>
+
+### GetStoryInfo2 {:#GetStoryInfo2}
+
+ For transition purposes only.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>story_id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>story_info</code></td>
+            <td>
+                <code><a class='link' href='#StoryInfo2'>StoryInfo2</a></code>
+            </td>
+        </tr></table>
+
+### GetController {:#GetController}
+
+ Obtains a controller for a previously created story identified by its story
+ ID. Obtaining the controller doesn't run it yet. If the story doesn't
+ exist, the interface request is closed.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>story_id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#StoryController'>StoryController</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### Watch {:#Watch}
+
+ Registers a watcher for changes in the story collection.
+ DEPRECATED: In favor of GetStories().
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>watcher</code></td>
+            <td>
+                <code><a class='link' href='#StoryProviderWatcher'>StoryProviderWatcher</a></code>
+            </td>
+        </tr></table>
+
+
+
+## StoryProviderWatcher {:#StoryProviderWatcher}
+*Defined in [fuchsia.modular/story_provider.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/story/story_provider.fidl#43)*
+
+ Implemented by clients of StoryProvider.
+
+### OnChange {:#OnChange}
+
+ Called in three different situations:
+
+  * Immediately when a new watcher is registered with one OnChange()
+    invocation with the current infor and state of each story known on the
+    current device.
+
+  * Every time a change to StoryInfo is applied to the record of the story
+    kept on the current device, including a new story created on another
+    device becoming known on this device for the first time.
+
+  * Every time the StoryState of the story changes on this device. The
+    StoryState on another device of a story known on this device is not made
+    known on this device.
+
+  * Every time the StoryVisibilityState of the story changes on this device.
+    The StoryVisibilityState on another device of a story known on this
+    device is not made known on this device.
+
+    I.e. if the story is started or stopped on *another* device, it does
+    *not* cause an OnChange() call on *this* device. Cf. OnDelete() below.
+
+ The ID of the story the notifications are about are part of StoryInfo.
+
+ `story_state` is STOPPED if the story was just created or just became known
+ on this device and was not yet started on the current device. It's RUNNING
+ when the story is started on the current device.
+
+ `story_visibility_state` is DEFAULT until a mod on the current device
+ requests for the visibility state to be changed.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>story_info</code></td>
+            <td>
+                <code><a class='link' href='#StoryInfo'>StoryInfo</a></code>
+            </td>
+        </tr><tr>
+            <td><code>story_state</code></td>
+            <td>
+                <code><a class='link' href='#StoryState'>StoryState</a></code>
+            </td>
+        </tr><tr>
+            <td><code>story_visibility_state</code></td>
+            <td>
+                <code><a class='link' href='#StoryVisibilityState'>StoryVisibilityState</a></code>
+            </td>
+        </tr></table>
+
+
+
+### OnChange2 {:#OnChange2}
+
+ For transition purposes only.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>story_info</code></td>
+            <td>
+                <code><a class='link' href='#StoryInfo2'>StoryInfo2</a></code>
+            </td>
+        </tr><tr>
+            <td><code>story_state</code></td>
+            <td>
+                <code><a class='link' href='#StoryState'>StoryState</a></code>
+            </td>
+        </tr><tr>
+            <td><code>story_visibility_state</code></td>
+            <td>
+                <code><a class='link' href='#StoryVisibilityState'>StoryVisibilityState</a></code>
+            </td>
+        </tr></table>
+
+
+
+### OnDelete {:#OnDelete}
+
+ Called when a story record is permanently deleted. The deletion could
+ have originated on this or on another device.
+
+ If the story is running on this device at the time it is deleted,
+ OnChange() will not be called first.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>story_id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr></table>
+
+
+
+## StoryShell {:#StoryShell}
+*Defined in [fuchsia.modular/story_shell.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/story/story_shell.fidl#21)*
+
+ This interface is implemented by a story shell. Dependencies are passed to it
+ in Initialize() on startup. The story shell is also expected to implement
+ Lifecycle in order to receive a Terminate() call on teardown.
+
+ In one component instance there can only be one StoryShell service instance.
+ The view token is sent to the separate View service. This way, the story
+ shell may be implemented as a flutter component.
+
+ Teardown may occur via the session shell calling StoryController.Stop(), the
+ sessionmgr being terminated, or by the system shutting down.
+
+### Initialize {:#Initialize}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>story_shell_context</code></td>
+            <td>
+                <code><a class='link' href='#StoryShellContext'>StoryShellContext</a></code>
+            </td>
+        </tr></table>
+
+
+
+### AddSurface {:#AddSurface}
+
+ Adds a new Surface and its corresponding view to be displayed by the
+ StoryShell. More context that allows the story shell to decide how
+ to layout will be added later. Also, interface to influence life cycle and
+ focus is obviously missing.
+ `view_connection` the new view and the associated Surface ID.
+ `surface_info` metadata relating to the Surface.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>view_connection</code></td>
+            <td>
+                <code><a class='link' href='#ViewConnection'>ViewConnection</a></code>
+            </td>
+        </tr><tr>
+            <td><code>surface_info</code></td>
+            <td>
+                <code><a class='link' href='#SurfaceInfo'>SurfaceInfo</a></code>
+            </td>
+        </tr></table>
+
+
+
+### AddSurface2 {:#AddSurface2}
+
+ DEPRECATED.  For transition purposes only.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>view_connection</code></td>
+            <td>
+                <code><a class='link' href='#ViewConnection2'>ViewConnection2</a></code>
+            </td>
+        </tr><tr>
+            <td><code>surface_info</code></td>
+            <td>
+                <code><a class='link' href='#SurfaceInfo'>SurfaceInfo</a></code>
+            </td>
+        </tr></table>
+
+
+
+### AddSurface3 {:#AddSurface3}
+
+ For transition purposes only.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>view_connection</code></td>
+            <td>
+                <code><a class='link' href='#ViewConnection'>ViewConnection</a></code>
+            </td>
+        </tr><tr>
+            <td><code>surface_info</code></td>
+            <td>
+                <code><a class='link' href='#SurfaceInfo2'>SurfaceInfo2</a></code>
+            </td>
+        </tr></table>
+
+
+
+### FocusSurface {:#FocusSurface}
+
+ Focuses the surface with surface_id, bringing it to the foreground.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>surface_id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr></table>
+
+
+
+### DefocusSurface {:#DefocusSurface}
+
+ Defocuses the surface with surface_id, dismissing it to the background.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>surface_id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+### OnSurfaceFocused {:#OnSurfaceFocused}
+
+ Notify when a Surface is focused in the story. The focus could be from
+ a user interaction or requested by the framework through
+ StoryController#FocusModule.
+ EXPERIMENTAL
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>surface_id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr></table>
+
+### RemoveSurface {:#RemoveSurface}
+
+ Remove the Surface with surface_id from the StoryShell entirely. This is
+ final. The Surface is removed from the graph. If necessary, the
+ associated Surface is defocused. There is no expectation that
+ DefocusSurface is called before this.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>surface_id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr></table>
+
+
+
+### UpdateSurface {:#UpdateSurface}
+
+ Update the surface
+ This is called when the intent is to update the surface metadata in the
+ story graph in place. Any fields, except for the surface_id can be
+ updated. If no value or null is passed for a field it remains unchanged.
+ This includes the `view_holder_token` inside the connection.
+
+ E.g called when an intent resolves to a module that is known by the
+ caller to already be running, to update associated metadata.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>view_connection</code></td>
+            <td>
+                <code><a class='link' href='#ViewConnection'>ViewConnection</a></code>
+            </td>
+        </tr><tr>
+            <td><code>surface_info</code></td>
+            <td>
+                <code><a class='link' href='#SurfaceInfo'>SurfaceInfo</a></code>
+            </td>
+        </tr></table>
+
+
+
+### UpdateSurface2 {:#UpdateSurface2}
+
+ DEPRECATED.  For transition purposes only.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>view_connection</code></td>
+            <td>
+                <code><a class='link' href='#ViewConnection2'>ViewConnection2</a></code>
+            </td>
+        </tr><tr>
+            <td><code>surface_info</code></td>
+            <td>
+                <code><a class='link' href='#SurfaceInfo'>SurfaceInfo</a></code>
+            </td>
+        </tr></table>
+
+
+
+### UpdateSurface3 {:#UpdateSurface3}
+
+ For transition purposes only.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>view_connection</code></td>
+            <td>
+                <code><a class='link' href='#ViewConnection'>ViewConnection</a></code>
+            </td>
+        </tr><tr>
+            <td><code>surface_info</code></td>
+            <td>
+                <code><a class='link' href='#SurfaceInfo2'>SurfaceInfo2</a></code>
+            </td>
+        </tr></table>
+
+
+
+## StoryShellContext {:#StoryShellContext}
+*Defined in [fuchsia.modular/story_shell.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/story/story_shell.fidl#135)*
+
+ This interface provides the StoryShell instance with everything it needs to
+ know or be able to do about the Story. Not much right now, but we expect this
+ to increase.
+
+### GetPresentation {:#GetPresentation}
+
+ Requests a Presentation connection from the SessionShell. See
+ SessionShellPresenationProvider in session_shell.fidl.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='../fuchsia.ui.policy/index.html'>fuchsia.ui.policy</a>/<a class='link' href='../fuchsia.ui.policy/index.html#Presentation'>Presentation</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### WatchVisualState {:#WatchVisualState}
+
+ Starts watching Story shell's visual state.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>watcher</code></td>
+            <td>
+                <code><a class='link' href='#StoryVisualStateWatcher'>StoryVisualStateWatcher</a></code>
+            </td>
+        </tr></table>
+
+
+
+### RequestView {:#RequestView}
+
+ Requests a view for a Surface.
+ Requests that a view for `surface_id` is provided through
+ StoryShell.ReconnectView().
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>surface_id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr></table>
+
+
+
+## StoryVisualStateWatcher {:#StoryVisualStateWatcher}
+*Defined in [fuchsia.modular/story_shell.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/story/story_shell.fidl#150)*
+
+ Implemented by StoryShell to get notified about visual state changes.
+
+### OnVisualStateChange {:#OnVisualStateChange}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>visual_state</code></td>
+            <td>
+                <code><a class='link' href='#StoryVisualState'>StoryVisualState</a></code>
+            </td>
+        </tr></table>
+
+
+
+## StoryShellFactory {:#StoryShellFactory}
+*Defined in [fuchsia.modular/story_shell_factory.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/story/story_shell_factory.fidl#11)*
+
+ StoryShellFactory creates or returns an existing `StoryShell` for a particular story.
+ This is intended to be implemented by session shells that want to implement
+ StoryShell functionality themselves.
+
+### AttachStory {:#AttachStory}
+
+ Requests a StoryShell for the story with the given `story_id`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>story_id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>story_shell</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#StoryShell'>StoryShell</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### DetachStory {:#DetachStory}
+
+ Instructs the session shell to teardown the story shell with the given `story_id`.
+ This will be called before the story is stopped.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>story_id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+## UserIntelligenceProvider {:#UserIntelligenceProvider}
+*Defined in [fuchsia.modular/user_intelligence_provider.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/user_intelligence/user_intelligence_provider.fidl#9)*
+
+
+### StartAgents {:#StartAgents}
+
+ The `ComponentContext` is used to create agents and use message queues.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>user_intelligence_context</code></td>
+            <td>
+                <code><a class='link' href='#ComponentContext'>ComponentContext</a></code>
+            </td>
+        </tr><tr>
+            <td><code>session_agents</code></td>
+            <td>
+                <code>vector&lt;string&gt;</code>
+            </td>
+        </tr><tr>
+            <td><code>startup_agents</code></td>
+            <td>
+                <code>vector&lt;string&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### GetServicesForAgent {:#GetServicesForAgent}
+
+ A standard set of services provided to all agents at startup,
+ along with services particuarly for this agent.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>agent_url</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>service_list</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.sys/index.html'>fuchsia.sys</a>/<a class='link' href='../fuchsia.sys/index.html#ServiceList'>ServiceList</a></code>
+            </td>
+        </tr></table>
+
 
 
 ## **STRUCTS**
@@ -3900,6 +6627,1169 @@
         </tr>
 </table>
 
+### Annotation {:#Annotation}
+*Defined in [fuchsia.modular/annotation.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/annotation/annotation.fidl#10)*
+
+
+
+ A user-defined annotation for a story or module.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>key</code></td>
+            <td>
+                <code>string[256]</code>
+            </td>
+            <td> An identfier for this annotation.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code><a class='link' href='#AnnotationValue'>AnnotationValue</a>?</code>
+            </td>
+            <td> The contents of this annotation.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### BaseShellParams {:#BaseShellParams}
+*Defined in [fuchsia.modular/base_shell.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/basemgr/base_shell.fidl#43)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>presentation</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.ui.policy/index.html'>fuchsia.ui.policy</a>/<a class='link' href='../fuchsia.ui.policy/index.html#Presentation'>Presentation</a>?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### UserLoginParams {:#UserLoginParams}
+*Defined in [fuchsia.modular/user_provider.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/basemgr/user_provider.fidl#48)*
+
+
+
+ Used to specify arguments to log into a user session.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>account_id</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td> `account_id` is received from either AddUser() or PreviousUsers(). It
+ can be NULL which means logging-in using incognito mode.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### UserLoginParams2 {:#UserLoginParams2}
+*Defined in [fuchsia.modular/user_provider.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/basemgr/user_provider.fidl#55)*
+
+
+
+ DEPRECATED, for backwards compatibility only
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>account_id</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td> `account_id` is received from either AddUser() or PreviousUsers(). It
+ can be NULL which means logging-in in an incognito mode.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### AppConfig {:#AppConfig}
+*Defined in [fuchsia.modular/config.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/config/config.fidl#9)*
+
+
+
+ Used to pass around configuration references to apps such as user
+ shell, base shell, story shell.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>url</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>args</code></td>
+            <td>
+                <code>vector&lt;string&gt;?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Intent {:#Intent}
+*Defined in [fuchsia.modular/intent.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/intent/intent.fidl#11)*
+
+
+
+ The Intent struct is a runtime descriptor for an abstract action to be initiated
+ in Fuchsia. For details please see docs/intent.md.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>action</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td> The name of the action represented by this Intent.
+
+ This is nullable for backwards compatibility.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>handler</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td> An explicit handler for the Intent. Specified as the component URL of the
+ module.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>parameters</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#IntentParameter'>IntentParameter</a>&gt;?</code>
+            </td>
+            <td> The parameters that will be passed to the handler of `action`.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### IntentParameter {:#IntentParameter}
+*Defined in [fuchsia.modular/intent.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/intent/intent.fidl#28)*
+
+
+
+ A struct representing a parameter that is passed to the handler of an Intent's
+ Action.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>name</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td> The name of the parameter. The handler (i.e. selected mod) will be provided
+ with the data for this parameter under a link called `name`.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>data</code></td>
+            <td>
+                <code><a class='link' href='#IntentParameterData'>IntentParameterData</a></code>
+            </td>
+            <td> The data that will be passed to the intent handler.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### LinkPath {:#LinkPath}
+*Defined in [fuchsia.modular/link_path.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/module/link_path.fidl#12)*
+
+
+
+ Addresses a Link within a story. A LinkPath struct should be treated as an
+ opaque unique identifier of a link instance.  The `module_path` and
+ `link_name` components are leftovers from legacy code and have no external
+ meaning.
+ TODO(thatguy,lindkvist): Replace this structure with a vector<>. MI4-1021
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>module_path</code></td>
+            <td>
+                <code>vector&lt;string&gt;</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>link_name</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ModuleParameterMap {:#ModuleParameterMap}
+*Defined in [fuchsia.modular/module_data.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/module/module_data.fidl#66)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>entries</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#ModuleParameterMapEntry'>ModuleParameterMapEntry</a>&gt;</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ModuleParameterMapEntry {:#ModuleParameterMapEntry}
+*Defined in [fuchsia.modular/module_data.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/module/module_data.fidl#70)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>name</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td> A null [name] is allowed for backwards compatibility with default links.
+ TODO(thatguy); When no modules use null link names any more, make this
+ required.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>link_path</code></td>
+            <td>
+                <code><a class='link' href='#LinkPath'>LinkPath</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ModuleManifest {:#ModuleManifest}
+*Defined in [fuchsia.modular/module_manifest.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/module/module_manifest.fidl#8)*
+
+
+
+ Metadata that define the runtime properties of a Module.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>binary</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> The relative path from the root of the package where the Module executable
+ file can be found.
+ TODO(MF-94): Extract a module's URL from its cmx manifest instead of
+ here.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>suggestion_headline</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td> A human-readable string that can be used when suggesting this Module.
+ DEPRECATED.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>intent_filters</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#IntentFilter'>IntentFilter</a>&gt;?</code>
+            </td>
+            <td> A list of intents that this module is able to handle.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>composition_pattern</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td> Identifies the pattern with which to compose this module with others.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>placeholder_color</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td> Defines the color of the placeholder widget used while the module loads.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### IntentFilter {:#IntentFilter}
+*Defined in [fuchsia.modular/module_manifest.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/module/module_manifest.fidl#30)*
+
+
+
+ This struct is used to describe an intent that a module is able to handle.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>action</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> The action this module is able to handle.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>parameter_constraints</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#ParameterConstraint'>ParameterConstraint</a>&gt;</code>
+            </td>
+            <td> Includes the name and types of entities for the parameters required to
+ execute specified [action].
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>action_display</code></td>
+            <td>
+                <code><a class='link' href='#ActionDisplay'>ActionDisplay</a></code>
+            </td>
+            <td> Defines presentation properties for suggestions of this action.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ParameterConstraint {:#ParameterConstraint}
+*Defined in [fuchsia.modular/module_manifest.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/module/module_manifest.fidl#42)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>name</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>type</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> The entity type that is valid for this parameter.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### FindModulesQuery {:#FindModulesQuery}
+*Defined in [fuchsia.modular/module_resolver.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/module_resolver/module_resolver.fidl#30)*
+
+
+
+ Mirrors the information present in a Intent. Where a Intent is meant to
+ interface between Modules and the Framework, this structure is specific to
+ the interface between the Framework and the ModuleResolver.
+
+ In that role, it has references to structures and concepts that are only
+ visible within the abstraction layer of the Framework.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>handler</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td> The handler is a module URL; if the handler is specified, the search for
+ (action, parameter_constraints) is scoped within the specified handler.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>action</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>parameter_constraints</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#FindModulesParameterConstraint'>FindModulesParameterConstraint</a>&gt;</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### FindModulesParameterConstraint {:#FindModulesParameterConstraint}
+*Defined in [fuchsia.modular/module_resolver.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/module_resolver/module_resolver.fidl#38)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>param_name</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>param_types</code></td>
+            <td>
+                <code>vector&lt;string&gt;</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### FindModulesResponse {:#FindModulesResponse}
+*Defined in [fuchsia.modular/module_resolver.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/module_resolver/module_resolver.fidl#51)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#FindModulesStatus'>FindModulesStatus</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>results</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#FindModulesResult'>FindModulesResult</a>&gt;</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### FindModulesResult {:#FindModulesResult}
+*Defined in [fuchsia.modular/module_resolver.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/module_resolver/module_resolver.fidl#56)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>module_id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> The ID of the Module. For now, this is the URL of the Module binary.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>manifest</code></td>
+            <td>
+                <code><a class='link' href='#ModuleManifest'>ModuleManifest</a>?</code>
+            </td>
+            <td> The Module's manifest file (see docs/manifests/module.md).
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### FocusInfo {:#FocusInfo}
+*Defined in [fuchsia.modular/focus.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/session/focus.fidl#62)*
+
+
+
+ Specifies the focused story of a device.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>device_id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> The id of the device.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>focused_story_id</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td> The id of the focused story.  If null, no stories are focused.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>last_focus_change_timestamp</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> The time the focused story on the device `device_id` was last
+ changed. 0 if no focus has ever been set for device `device_id`.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ViewIdentifier {:#ViewIdentifier}
+*Defined in [fuchsia.modular/session_shell.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/session/session_shell.fidl#49)*
+
+
+
+ Identifies a view provided to a session shell. The values of the `story_id`
+ field match those used in the `StoryProvider` interface, allowing
+ identification of the same story across interfaces.
+
+ This is a struct rather than a naked string to allow for future evolution of
+ the identifier without changing the `SessionShell` API itself.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>story_id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### CreateLinkInfo {:#CreateLinkInfo}
+*Defined in [fuchsia.modular/create_link.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/story/create_link.fidl#10)*
+
+
+
+ Defines the attributes for a Link when the Link is created.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>initial_data</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.mem/index.html'>fuchsia.mem</a>/<a class='link' href='../fuchsia.mem/index.html#Buffer'>Buffer</a></code>
+            </td>
+            <td> Passed as root_json argument to StoryProvider.CreateStoryWithInfo()
+ Link.Set() to set the value in the root link of the new Story's primary
+ module.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>allowed_types</code></td>
+            <td>
+                <code><a class='link' href='#LinkAllowedTypes'>LinkAllowedTypes</a>?</code>
+            </td>
+            <td> If `allowed_types` is null, the Link contains JSON. No schema validation
+ is performed.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### LinkAllowedTypes {:#LinkAllowedTypes}
+*Defined in [fuchsia.modular/create_link.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/story/create_link.fidl#21)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>allowed_entity_types</code></td>
+            <td>
+                <code>vector&lt;string&gt;</code>
+            </td>
+            <td> The Link must contain an Entity (see Link.SetEntity()) that has at least
+ one of `allowed_entity_types` in its `Entity.GetTypes()` return value.
+
+ If empty, allows any Entity type.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### CreateModuleParameterMapInfo {:#CreateModuleParameterMapInfo}
+*Defined in [fuchsia.modular/create_module_parameter_map.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/story/create_module_parameter_map.fidl#8)*
+
+
+
+ Module parameters are named pointers to link instances.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>property_info</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#CreateModuleParameterMapEntry'>CreateModuleParameterMapEntry</a>&gt;?</code>
+            </td>
+            <td> Contains instructions to create each name in the parameter map.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### CreateModuleParameterMapEntry {:#CreateModuleParameterMapEntry}
+*Defined in [fuchsia.modular/create_module_parameter_map.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/story/create_module_parameter_map.fidl#13)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>key</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code><a class='link' href='#CreateModuleParameterInfo'>CreateModuleParameterInfo</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### StoryPuppetMaster_SetStoryInfoExtra_Response {:#StoryPuppetMaster_SetStoryInfoExtra_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr>
+</table>
+
+### StoryPuppetMaster_Annotate_Response {:#StoryPuppetMaster_Annotate_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr>
+</table>
+
+### StoryPuppetMaster_AnnotateModule_Response {:#StoryPuppetMaster_AnnotateModule_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr>
+</table>
+
+### ExecuteResult {:#ExecuteResult}
+*Defined in [fuchsia.modular/puppet_master.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/story/puppet_master.fidl#37)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#ExecuteStatus'>ExecuteStatus</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>story_id</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>error_message</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SetFocusState {:#SetFocusState}
+*Defined in [fuchsia.modular/story_command.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/story/story_command.fidl#39)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>focused</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### AddMod {:#AddMod}
+*Defined in [fuchsia.modular/story_command.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/story/story_command.fidl#45)*
+
+
+
+ Adds a mod described by `intent` to the story with name `mod_name`. If
+ `mod_name` already exists in the story, the mod is updated.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>mod_name</code></td>
+            <td>
+                <code>vector&lt;string&gt;</code>
+            </td>
+            <td> The name of the mod within the story. The mod's name acts as the unique
+ ID of the mod, scoped to the story in which it is contained. Since
+ AddMod is reused for observation and mod names are vector<string>
+ inside the framework, they are vector<string> here as well.
+
+ Clients should treat the full vector as a single opaque value.
+
+ Clients should provide `mod_name_transitional` instead.
+ If both are provided, `mod_name` is ignored.
+
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>mod_name_transitional</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td> The name of the mod within the story. This should be used instead of
+ `mod_name`. If provided, it is equivalent to passing `mod_name` with
+ a single item. If both are provided, `mod_name` is ignored.
+
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>intent</code></td>
+            <td>
+                <code><a class='link' href='#Intent'>Intent</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>surface_relation</code></td>
+            <td>
+                <code><a class='link' href='#SurfaceRelation'>SurfaceRelation</a></code>
+            </td>
+            <td> `surface_relation` defines the visual relationship between this mod and the
+ mod at `surface_parent_mod_name`.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>surface_parent_mod_name</code></td>
+            <td>
+                <code>vector&lt;string&gt;?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### RemoveMod {:#RemoveMod}
+*Defined in [fuchsia.modular/story_command.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/story/story_command.fidl#75)*
+
+
+
+ Removes the mod under `mod_name` from the story.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>mod_name</code></td>
+            <td>
+                <code>vector&lt;string&gt;</code>
+            </td>
+            <td> The name of the mod within the story.
+
+ Clients should provide `mod_name_transitional` instead.
+ If both are provided, `mod_name` is ignored.
+
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>mod_name_transitional</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td> The name of the mod within the story. This should be used instead of
+ `mod_name`. If provided, it is equivalent to passing `mod_name` with
+ a single item. If both are provided, `mod_name` is ignored.
+
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SetLinkValue {:#SetLinkValue}
+*Defined in [fuchsia.modular/story_command.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/story/story_command.fidl#93)*
+
+
+
+ Sets the value of link at `path` to `value`.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>path</code></td>
+            <td>
+                <code><a class='link' href='#LinkPath'>LinkPath</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.mem/index.html'>fuchsia.mem</a>/<a class='link' href='../fuchsia.mem/index.html#Buffer'>Buffer</a>?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### FocusMod {:#FocusMod}
+*Defined in [fuchsia.modular/story_command.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/story/story_command.fidl#99)*
+
+
+
+ Instructs the session shell to focus the mod under `mod_name`.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>mod_name</code></td>
+            <td>
+                <code>vector&lt;string&gt;</code>
+            </td>
+            <td> The name of the mod within the story.
+
+ Clients should provide `mod_name_transitional` instead.
+ If both are provided, `mod_name` is ignored.
+
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>mod_name_transitional</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td> The name of the mod within the story. This should be used instead of
+ `mod_name`. If provided, it is equivalent to passing `mod_name` with
+ a single item. If both are provided, `mod_name` is ignored.
+
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SetKindOfProtoStoryOption {:#SetKindOfProtoStoryOption}
+*Defined in [fuchsia.modular/story_command.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/story/story_command.fidl#117)*
+
+
+
+ Updates the kind_of_proto_story option in a story.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### StoryController_Annotate_Response {:#StoryController_Annotate_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr>
+</table>
+
+### StoryInfo {:#StoryInfo}
+*Defined in [fuchsia.modular/story_info.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/story/story_info.fidl#8)*
+
+
+
+ Information about a story as provided to the SessionShell.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>url</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td> URL of the first module run in this story. This module is free to
+ run more modules in the story. Used for display purposes only.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> The ID of the Story, used to reference it in method arguments.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>last_focus_time</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+            <td> Wallclock time when the story was last focused. From
+ `ZX_CLOCK_UTC`, thus nanoseconds since UNIX epoch (1970-01-01 00:00 UTC).
+
+ A value of zero means the story has never been focused.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>extra</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#StoryInfoExtraEntry'>StoryInfoExtraEntry</a>&gt;?</code>
+            </td>
+            <td> Data the SessionShell wants to keep associated with this Story, like
+ title, a color, or a display rank.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### StoryInfoExtraEntry {:#StoryInfoExtraEntry}
+*Defined in [fuchsia.modular/story_info.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/story/story_info.fidl#47)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>key</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### StoryOptions {:#StoryOptions}
+*Defined in [fuchsia.modular/story_options.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/story/story_options.fidl#7)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>kind_of_proto_story</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Whether or not the story will be hidden on a call to
+ StoryProvider#GetStories.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ViewConnection {:#ViewConnection}
+*Defined in [fuchsia.modular/story_shell.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/story/story_shell.fidl#76)*
+
+
+
+ A pair mapping a surface ID to a view (via `view_holder_token`).
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>surface_id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> The ID for the surface
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>view_holder_token</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.ui.views/index.html'>fuchsia.ui.views</a>/<a class='link' href='../fuchsia.ui.views/index.html#ViewHolderToken'>ViewHolderToken</a></code>
+            </td>
+            <td> Token for embedding the new view corresponding to the surface.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ViewConnection2 {:#ViewConnection2}
+*Defined in [fuchsia.modular/story_shell.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/story/story_shell.fidl#85)*
+
+
+
+ DEPRECATED, for transition purposes only.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>surface_id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> The ID for the surface
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>view_holder_token</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.ui.views/index.html'>fuchsia.ui.views</a>/<a class='link' href='../fuchsia.ui.views/index.html#ViewHolderToken'>ViewHolderToken</a></code>
+            </td>
+            <td> Token for embedding the new view corresponding to the surface.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SurfaceInfo {:#SurfaceInfo}
+*Defined in [fuchsia.modular/story_shell.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/story/story_shell.fidl#94)*
+
+
+
+ Contains metadata for a Surface.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>parent_id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> ID of the view that is parent of this Surface.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>surface_relation</code></td>
+            <td>
+                <code><a class='link' href='#SurfaceRelation'>SurfaceRelation</a>?</code>
+            </td>
+            <td> The relationship between the parent Surface and this new Surface. Used
+ for layout optimization.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>module_manifest</code></td>
+            <td>
+                <code><a class='link' href='#ModuleManifest'>ModuleManifest</a>?</code>
+            </td>
+            <td> Information about the module populates the view.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>module_source</code></td>
+            <td>
+                <code><a class='link' href='#ModuleSource'>ModuleSource</a></code>
+            </td>
+            <td> How the Surface was generated. By an action internal to the story or by
+ an external action.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SurfaceRelation {:#SurfaceRelation}
+*Defined in [fuchsia.modular/surface.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/surface/surface.fidl#11)*
+
+
+
+ Describes the relationship between two Surfaces.
+ Provides information to the StoryShell for layout optimization.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>arrangement</code></td>
+            <td>
+                <code><a class='link' href='#SurfaceArrangement'>SurfaceArrangement</a></code>
+            </td>
+            <td> Advice on arranging these surfaces on the screen together.
+</td>
+            <td><a class='link' href='#SurfaceArrangement.NONE'>SurfaceArrangement.NONE</a></td>
+        </tr><tr>
+            <td><code>dependency</code></td>
+            <td>
+                <code><a class='link' href='#SurfaceDependency'>SurfaceDependency</a></code>
+            </td>
+            <td> Advice for dismissal of surfaces to be linked.
+</td>
+            <td><a class='link' href='#SurfaceDependency.NONE'>SurfaceDependency.NONE</a></td>
+        </tr><tr>
+            <td><code>emphasis</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td> Relative emphasis of the child surface, relative to the parent.
+ Influences relative areas of surfaces on screen.
+</td>
+            <td>1</td>
+        </tr>
+</table>
+
 
 
 ## **ENUMS**
@@ -3916,23 +7806,15 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>VALUE_TOO_BIG</code></td>
             <td><code>1</code></td>
-            <td> The `AnnotationValue.buffer` size exceeds the maximum length,
- `MAX_ANNOTATION_VALUE_BUFFER_LENGTH_BYTES`.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>TOO_MANY_ANNOTATIONS</code></td>
             <td><code>2</code></td>
-            <td> The total number of annotations on the story or module being annotated
- exceeds `MAX_ANNOTATIONS_PER_STORY` or `MAX_ANNOTATIONS_PER_MODULE`.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>NOT_FOUND</code></td>
             <td><code>3</code></td>
-            <td> The resource to be annotated was not found and could not be resolved
- by, for example, waiting, or creating the missing resource automatically.
- This error may be returned by StoryPuppetMaster.AnnotateModule(), which
- can wait for a missing Module, but requires the Module's Story exist.
-</td>
+            <td></td>
         </tr></table>
 
 ### EntityWriteStatus {:#EntityWriteStatus}
@@ -3950,13 +7832,11 @@
         </tr><tr>
             <td><code>ERROR</code></td>
             <td><code>1</code></td>
-            <td> Indicates a failure of the entity provider to write the update.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>READ_ONLY</code></td>
             <td><code>2</code></td>
-            <td> Entity providers are not necessarily required to support entity mutation.
-</td>
+            <td></td>
         </tr></table>
 
 ### StartModuleStatus {:#StartModuleStatus}
@@ -4011,16 +7891,11 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>INTERNAL</code></td>
             <td><code>0</code></td>
-            <td> Module that was added to the story from within the story by another
- module using ModuleContext.AddModuleToStory() or
- ModuleContext.EmbedModule().
-</td>
+            <td></td>
         </tr><tr>
             <td><code>EXTERNAL</code></td>
             <td><code>1</code></td>
-            <td> Module that was added to the story from outside the story using
- PuppetMaster.
-</td>
+            <td></td>
         </tr></table>
 
 ### ModuleState {:#ModuleState}
@@ -4048,20 +7923,15 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>RUNNING</code></td>
             <td><code>2</code></td>
-            <td> Module instance was created.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>STOPPED</code></td>
             <td><code>4</code></td>
-            <td> Module instance is stopped after Module.Stop(). No further transitions are
- to be expected.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>ERROR</code></td>
             <td><code>5</code></td>
-            <td> Connection to the Module instance was closed without Stop() request. No
- further transitions are to be expected.
-</td>
+            <td></td>
         </tr></table>
 
 ### FindModulesStatus {:#FindModulesStatus}
@@ -4075,14 +7945,11 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>SUCCESS</code></td>
             <td><code>0</code></td>
-            <td> A search was successfully conducted.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>UNKNOWN_HANDLER</code></td>
             <td><code>1</code></td>
-            <td> `FindModulesQuery.handler` was specified but the resolver doesn't know
- about it.
-</td>
+            <td></td>
         </tr></table>
 
 ### ExecuteStatus {:#ExecuteStatus}
@@ -4134,8 +8001,7 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>ERR_STORY_ALREADY_CREATED</code></td>
             <td><code>1</code></td>
-            <td> The story cannot be (re)configured because it was already created.
-</td>
+            <td></td>
         </tr></table>
 
 ### StoryVisualState {:#StoryVisualState}
@@ -4181,20 +8047,15 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>RUNNING</code></td>
             <td><code>1</code></td>
-            <td> Story was started using StoryController.Start().
-</td>
+            <td></td>
         </tr><tr>
             <td><code>STOPPING</code></td>
             <td><code>2</code></td>
-            <td> Story is in the middle of stopping after StoryController.Stop() was
- called.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>STOPPED</code></td>
             <td><code>3</code></td>
-            <td> Story was not yet run, or Story was stopped after StoryController.Stop()
- was called.
-</td>
+            <td></td>
         </tr></table>
 
 ### StoryVisibilityState {:#StoryVisibilityState}
@@ -4218,13 +8079,11 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>DEFAULT</code></td>
             <td><code>1</code></td>
-            <td> Default state for a story.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>IMMERSIVE</code></td>
             <td><code>2</code></td>
-            <td> Full-screen user experience, e.g. playing a video.
-</td>
+            <td></td>
         </tr></table>
 
 ### SurfaceArrangement {:#SurfaceArrangement}
@@ -4239,26 +8098,19 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>NONE</code></td>
             <td><code>0</code></td>
-            <td> No arrangement specified.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>COPRESENT</code></td>
             <td><code>1</code></td>
-            <td> Desire to present simultaneously.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>SEQUENTIAL</code></td>
             <td><code>2</code></td>
-            <td> The parent prefers to not be presented simultaneously with its child.
- (The child may still become part of a simultaneous presentation depending
- on the relationships between it and subsequently added surfaces).
-</td>
+            <td></td>
         </tr><tr>
             <td><code>ONTOP</code></td>
             <td><code>3</code></td>
-            <td> Place this surface on top of and obscuring the parent surface. This is a
- complete replacement, not a modal or inset presentation.
-</td>
+            <td></td>
         </tr></table>
 
 ### SurfaceDependency {:#SurfaceDependency}
@@ -4273,14 +8125,349 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>NONE</code></td>
             <td><code>0</code></td>
-            <td> No dependency specified.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>DEPENDENT</code></td>
             <td><code>1</code></td>
-            <td> Child is dependent on parent.
- If parent is dismissed, child is dismissed as well.
-</td>
+            <td></td>
+        </tr></table>
+
+### AnnotationError {:#AnnotationError}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.modular/annotation.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/annotation/annotation.fidl#59)*
+
+ Error returned from calls to Annotate().
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>VALUE_TOO_BIG</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>TOO_MANY_ANNOTATIONS</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>NOT_FOUND</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr></table>
+
+### EntityWriteStatus {:#EntityWriteStatus}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.modular/entity.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/entity/entity.fidl#46)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>OK</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>ERROR</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>READ_ONLY</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr></table>
+
+### StartModuleStatus {:#StartModuleStatus}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.modular/module_context.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/module/module_context.fidl#62)*
+
+ Communicates the status of an Intent to a Module.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>SUCCESS</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>NO_MODULES_FOUND</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr></table>
+
+### OngoingActivityType {:#OngoingActivityType}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.modular/module_context.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/module/module_context.fidl#73)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>UNSPECIFIED</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>VIDEO</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>AUDIO</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr></table>
+
+### ModuleSource {:#ModuleSource}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.modular/module_data.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/module/module_data.fidl#55)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>INTERNAL</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>EXTERNAL</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr></table>
+
+### ModuleState {:#ModuleState}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.modular/module_state.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/module/module_state.fidl#21)*
+
+ State used to notify about state transitions of a Module
+ instance. This is very similar to the StoryState, however it's not entirely
+ the same and hence a separate type. A module cannot have an INITIAL state,
+ because it's started as soon as it is created, and it gets deleted as soon as
+ it reaches the STOPPED state, whileas a story can be restarted.
+
+ Currently possible state transitions (and the events that cause
+ them) are:
+
+            -> RUNNING     ModuleContext.AddModuleToStory() or
+                           ModuleContext.EmbedModule() or
+                           StoryController.AddModule()
+   RUNNING  -> STOPPED     ModuleController.Stop() or StoryController.Stop()
+   RUNNING  -> ERROR       application exits
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>RUNNING</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>STOPPED</code></td>
+            <td><code>4</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>ERROR</code></td>
+            <td><code>5</code></td>
+            <td></td>
+        </tr></table>
+
+### FindModulesStatus {:#FindModulesStatus}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.modular/module_resolver.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/module_resolver/module_resolver.fidl#43)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>SUCCESS</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>UNKNOWN_HANDLER</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr></table>
+
+### ExecuteStatus {:#ExecuteStatus}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.modular/puppet_master.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/story/puppet_master.fidl#7)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>OK</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>INVALID_COMMAND</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>INVALID_STORY_ID</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>STORY_MUST_HAVE_MODS</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>INVALID_MOD</code></td>
+            <td><code>4</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>NO_MODULES_FOUND</code></td>
+            <td><code>5</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>INTERNAL_ERROR</code></td>
+            <td><code>6</code></td>
+            <td></td>
+        </tr></table>
+
+### ConfigureStoryError {:#ConfigureStoryError}
+Type: <code>int32</code>
+
+*Defined in [fuchsia.modular/puppet_master.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/story/puppet_master.fidl#32)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>ERR_STORY_ALREADY_CREATED</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr></table>
+
+### StoryVisualState {:#StoryVisualState}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.modular/story_shell.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/story/story_shell.fidl#155)*
+
+ Defines the visual state of the Story shell.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>MINIMIZED</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>MAXIMIZED</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>MAXIMIZED_OVERLAYED</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr></table>
+
+### StoryState {:#StoryState}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.modular/story_state.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/story/story_state.fidl#16)*
+
+ State of a Story. A story is either running, stopping, or stopped, separately
+ on every device of the user. If it's running, it can also be focused, but
+ that's tracked in a separate service, cf. FocusProvider in focus.fidl.
+
+ Possible state transitions are:
+
+   STOPPED  -> RUNNING
+   RUNNING  -> STOPPING
+   STOPPING -> STOPPED
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>RUNNING</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>STOPPING</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>STOPPED</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr></table>
+
+### StoryVisibilityState {:#StoryVisibilityState}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.modular/story_visibility_state.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/story/story_visibility_state.fidl#17)*
+
+ Visibility state of a Story within the session shell.
+ This state describes how a story should be displayed within the session shell,
+ regardless of whether the story is in focus or not. Focus state and
+ visibility state are orthogonal concepts.
+ E.g A story can be out-of-focus and be in IMMERSIVE state at the same time
+ if a user was playing a video, exits, then re-enters the story. The
+ expectation in this scenario is that the story is in IMMERSIVE state upon
+ re-enter.
+
+ All state transitions are possible.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>DEFAULT</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>IMMERSIVE</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr></table>
+
+### SurfaceArrangement {:#SurfaceArrangement}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.modular/surface.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/surface/surface.fidl#24)*
+
+ Expresses arrangement type.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>NONE</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>COPRESENT</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>SEQUENTIAL</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>ONTOP</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr></table>
+
+### SurfaceDependency {:#SurfaceDependency}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.modular/surface.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/surface/surface.fidl#42)*
+
+ Links surface dismissal.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>NONE</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>DEPENDENT</code></td>
+            <td><code>1</code></td>
+            <td></td>
         </tr></table>
 
 
@@ -4634,6 +8821,353 @@
 </td>
         </tr></table>
 
+### AgentServiceRequest {:#AgentServiceRequest}
+
+
+*Defined in [fuchsia.modular/component_context.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/component/component_context.fidl#45)*
+
+ Used by ComponentContext.ConnectToAgentService
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>service_name</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> The name of the requested service.
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>channel</code></td>
+            <td>
+                <code>handle&lt;channel&gt;</code>
+            </td>
+            <td> The channel that will be used to communicate with the requested service.
+</td>
+        </tr><tr>
+            <td>3</td>
+            <td><code>handler</code></td>
+            <td>
+                <code>string[2083]</code>
+            </td>
+            <td> The component URL of the Agent that is to provide the specified service.
+ If no handler is specified, the framework will perform resolution to
+ find an appropriate handler.
+</td>
+        </tr><tr>
+            <td>4</td>
+            <td><code>agent_controller</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#AgentController'>AgentController</a>&gt;</code>
+            </td>
+            <td> The AgentController that keeps the agent alive.
+</td>
+        </tr></table>
+
+### ModuleData {:#ModuleData}
+
+
+*Defined in [fuchsia.modular/module_data.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/module/module_data.fidl#8)*
+
+ Information about a Module instance in a story.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>module_url</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> The URL of the Module binary.
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>module_path</code></td>
+            <td>
+                <code>vector&lt;string&gt;</code>
+            </td>
+            <td> The named path leading up to this Module instance. The last name in this
+ array is the name by which the Module was started by the parent Module
+ instance calling StartModule().
+</td>
+        </tr><tr>
+            <td>3</td>
+            <td><code>parameter_map</code></td>
+            <td>
+                <code><a class='link' href='#ModuleParameterMap'>ModuleParameterMap</a></code>
+            </td>
+            <td> Contains the mapping of Mod parameter name to Link instances for this mod.
+</td>
+        </tr><tr>
+            <td>4</td>
+            <td><code>module_source</code></td>
+            <td>
+                <code><a class='link' href='#ModuleSource'>ModuleSource</a></code>
+            </td>
+            <td> The way in which this Module instance was first started in the story,
+ either by request from another Module instance (INTERNAL) or by request
+ from outside the story (i.e. by suggestion from an agent - EXTERNAL).
+</td>
+        </tr><tr>
+            <td>5</td>
+            <td><code>surface_relation</code></td>
+            <td>
+                <code><a class='link' href='#SurfaceRelation'>SurfaceRelation</a></code>
+            </td>
+            <td> The `surface_relation` that was used to start this Module instance with.
+ The same is used when re-inflating the Module instance when the story is
+ resumed. A SurfaceRelation value of null represents an embedded Module
+ instance (started by EmbedModule()) that is not managed by the story shell.
+</td>
+        </tr><tr>
+            <td>6</td>
+            <td><code>module_deleted</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> True if this module was removed from its story either through
+ ModuleController.Stop() or ModuleContext.RemoveSelfFromStory().
+</td>
+        </tr><tr>
+            <td>7</td>
+            <td><code>intent</code></td>
+            <td>
+                <code><a class='link' href='#Intent'>Intent</a></code>
+            </td>
+            <td> The intent that was issued to start add this Module instance to the story.
+ Some Module instances may have been added not by an Intent, for example as
+ the initial module of a story. For those the field may be null.
+
+ TODO(thatguy,mesch): This field should now always be set, so make it
+ required once the framework is cleaned up enough to guarantee this
+ statement.
+</td>
+        </tr><tr>
+            <td>8</td>
+            <td><code>is_embedded</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> If true, this module was started by a parent module using
+ ModuleContext.EmbedModule(), and its view is not managed by the
+ StoryShell.
+</td>
+        </tr><tr>
+            <td>9</td>
+            <td><code>annotations</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#Annotation'>Annotation</a>&gt;[100]</code>
+            </td>
+            <td> Collection of user-defined key-value attributes that describe this surface (module).
+
+ The `Annotation.value` field of each `Annotation` is always set.
+</td>
+        </tr></table>
+
+### ActionDisplay {:#ActionDisplay}
+
+
+*Defined in [fuchsia.modular/module_manifest.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/module/module_manifest.fidl#49)*
+
+ Defines how a suggestion of an action will be presented.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>display_info</code></td>
+            <td>
+                <code><a class='link' href='#DisplayInfo'>DisplayInfo</a></code>
+            </td>
+            <td> Defines presentation fields for a suggestion. The string fields might be
+ templated and will be filled from data in `parameter_mapping`.
+ For example: "Listen to $artistName"
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>parameter_mapping</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#ParameterMapping'>ParameterMapping</a>&gt;</code>
+            </td>
+            <td> Fields to be replaced in the given `display_info` templated strings.
+ In the example above, we would map name=artistName to the intent field
+ artist.name where artist is the intent parameter name and name a field
+ of it.
+</td>
+        </tr></table>
+
+### DisplayInfo {:#DisplayInfo}
+
+
+*Defined in [fuchsia.modular/module_manifest.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/module/module_manifest.fidl#63)*
+
+ Presentation information about the suggestion.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>title</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> The title of the suggestion.
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>subtitle</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> A subtitle for the suggestion.
+</td>
+        </tr><tr>
+            <td>3</td>
+            <td><code>icon</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> A url from which to fetch the icon of the suggestion.
+</td>
+        </tr></table>
+
+### ParameterMapping {:#ParameterMapping}
+
+
+*Defined in [fuchsia.modular/module_manifest.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/module/module_manifest.fidl#75)*
+
+ Defines pairs that will be replaced in the DisplayInfo.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>name</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> The name of the variable to be replaced in the template.
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>parameter_property</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> The path in the intent parameter to get that name.
+ `PARAMETER_PROPERTY` = string | string . `PARAMETER_PROPERTY`
+ The first string in the dot-separated string is the name of the intent
+ parameter and the following are nested subfields.
+</td>
+        </tr></table>
+
+### StoryInfo2 {:#StoryInfo2}
+
+
+*Defined in [fuchsia.modular/story_info.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/story/story_info.fidl#30)*
+
+ Information about a story as provided to the SessionShell.
+ For transition purposes only.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> The ID of the Story, used to reference it in method arguments.
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>last_focus_time</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+            <td> Wallclock time when the story was last focused. From
+ ZX_CLOCK_UTC, thus nanoseconds since UNIX epoch (1970-01-01 00:00 UTC).
+
+ A value of zero means the story has never been focused.
+</td>
+        </tr><tr>
+            <td>3</td>
+            <td><code>annotations</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#Annotation'>Annotation</a>&gt;[100]</code>
+            </td>
+            <td> Collection of user-defined key-value attributes that describe
+ this story.
+
+ The `Annotation.value` field of each `Annotation` is always set.
+</td>
+        </tr></table>
+
+### SurfaceInfo2 {:#SurfaceInfo2}
+
+
+*Defined in [fuchsia.modular/story_shell.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/story/story_shell.fidl#111)*
+
+ Contains metadata for a Surface.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>parent_id</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> ID of the view that is parent of this Surface.
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>surface_relation</code></td>
+            <td>
+                <code><a class='link' href='#SurfaceRelation'>SurfaceRelation</a></code>
+            </td>
+            <td> The relationship between the parent Surface and this new Surface. Used
+ for layout optimization.
+</td>
+        </tr><tr>
+            <td>3</td>
+            <td><code>module_manifest</code></td>
+            <td>
+                <code><a class='link' href='#ModuleManifest'>ModuleManifest</a></code>
+            </td>
+            <td> Information about the module populates the view.
+</td>
+        </tr><tr>
+            <td>4</td>
+            <td><code>module_source</code></td>
+            <td>
+                <code><a class='link' href='#ModuleSource'>ModuleSource</a></code>
+            </td>
+            <td> How the Surface was generated. By an action internal to the story or by
+ an external action.
+</td>
+        </tr><tr>
+            <td>5</td>
+            <td><code>annotations</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#Annotation'>Annotation</a>&gt;[100]</code>
+            </td>
+            <td> Collection of user-defined key-value attributes that describe this surface (module).
+
+ The `Annotation.value` field of each `Annotation` is always set.
+</td>
+        </tr></table>
+
 
 
 ## **UNIONS**
@@ -4836,6 +9370,204 @@
             <td></td>
         </tr></table>
 
+### IntentParameterData {:#IntentParameterData}
+*Defined in [fuchsia.modular/intent.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/intent/intent.fidl#37)*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>entity_reference</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> Set this if you already have an Entity reference at runtime.
+ Entity.getTypes() will be used to set the constraints for this noun during
+ resolution.
+</td>
+        </tr><tr>
+            <td><code>json</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.mem/index.html'>fuchsia.mem</a>/<a class='link' href='../fuchsia.mem/index.html#Buffer'>Buffer</a></code>
+            </td>
+            <td> Set this if you have structured JSON data. Values typically are a JSON
+ object with a "@type" attribute and other associated data.  TODO(thatguy):
+ We need to decide if we want to keep this in place, or deprecate this
+ eventually and move entirely to using Entity references.
+
+ DEPRECATED: Use `entity_reference`.
+</td>
+        </tr><tr>
+            <td><code>entity_type</code></td>
+            <td>
+                <code>vector&lt;string&gt;</code>
+            </td>
+            <td> Set this if you want to explicitly define this noun's allowed types. This
+ is also useful in the cases where the noun has a 'direction' of type
+ 'output', and you wish to set the allowable output types from the Module
+ (see docs/modular/manifests/action_template.md for a definition of
+ 'direction').
+
+ Only one entry in `entity_type` must match the constraint specified by
+ the Module for the constraint to be considered satisfied.
+</td>
+        </tr></table>
+
+### CreateModuleParameterInfo {:#CreateModuleParameterInfo}
+*Defined in [fuchsia.modular/create_module_parameter_map.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/story/create_module_parameter_map.fidl#18)*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>link_path</code></td>
+            <td>
+                <code><a class='link' href='#LinkPath'>LinkPath</a></code>
+            </td>
+            <td> Instructs parameter map initialization to either use an existing Link
+ (`link_path` is set) or create a new Link (`create_link` is set).
+</td>
+        </tr><tr>
+            <td><code>create_link</code></td>
+            <td>
+                <code><a class='link' href='#CreateLinkInfo'>CreateLinkInfo</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### StoryPuppetMaster_SetStoryInfoExtra_Result {:#StoryPuppetMaster_SetStoryInfoExtra_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#StoryPuppetMaster_SetStoryInfoExtra_Response'>StoryPuppetMaster_SetStoryInfoExtra_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code><a class='link' href='#ConfigureStoryError'>ConfigureStoryError</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### StoryPuppetMaster_Annotate_Result {:#StoryPuppetMaster_Annotate_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#StoryPuppetMaster_Annotate_Response'>StoryPuppetMaster_Annotate_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code><a class='link' href='#AnnotationError'>AnnotationError</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### StoryPuppetMaster_AnnotateModule_Result {:#StoryPuppetMaster_AnnotateModule_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#StoryPuppetMaster_AnnotateModule_Response'>StoryPuppetMaster_AnnotateModule_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code><a class='link' href='#AnnotationError'>AnnotationError</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### StoryCommand {:#StoryCommand}
+*Defined in [fuchsia.modular/story_command.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/story/story_command.fidl#17)*
+
+ StoryCommands are POD structures that describe the set of operations that
+ can be performed on a story by components outside the modular framework. All commands are:
+
+   (1) Scoped to a single story
+   (2) Idempotent: issuing the same command twice yields the same result
+   (3) Symmetrical with observation: the same structures are used to describe
+       operations to watchers of a story (through SessionWatcher) as are used
+       to control a story.
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>set_focus_state</code></td>
+            <td>
+                <code><a class='link' href='#SetFocusState'>SetFocusState</a></code>
+            </td>
+            <td> Sets the focus state of the story to `set_focus_state.focused`.
+</td>
+        </tr><tr>
+            <td><code>add_mod</code></td>
+            <td>
+                <code><a class='link' href='#AddMod'>AddMod</a></code>
+            </td>
+            <td> Adds a Mod.
+</td>
+        </tr><tr>
+            <td><code>remove_mod</code></td>
+            <td>
+                <code><a class='link' href='#RemoveMod'>RemoveMod</a></code>
+            </td>
+            <td> Removes an existing Mod.
+</td>
+        </tr><tr>
+            <td><code>set_link_value</code></td>
+            <td>
+                <code><a class='link' href='#SetLinkValue'>SetLinkValue</a></code>
+            </td>
+            <td> Sets the value of a Link.
+ DEPRECATED. This command is a no-op.
+</td>
+        </tr><tr>
+            <td><code>focus_mod</code></td>
+            <td>
+                <code><a class='link' href='#FocusMod'>FocusMod</a></code>
+            </td>
+            <td> Brings focus to a mod.
+</td>
+        </tr><tr>
+            <td><code>set_kind_of_proto_story_option</code></td>
+            <td>
+                <code><a class='link' href='#SetKindOfProtoStoryOption'>SetKindOfProtoStoryOption</a></code>
+            </td>
+            <td> Updates the kind_of_proto_story option in a story.
+ DEPRECATED. This command is a no-op.
+</td>
+        </tr></table>
+
+### StoryController_Annotate_Result {:#StoryController_Annotate_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#StoryController_Annotate_Response'>StoryController_Annotate_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code><a class='link' href='#AnnotationError'>AnnotationError</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
 
 
 ## **XUNIONS**
@@ -4872,6 +9604,38 @@
             <td></td>
         </tr></table>
 
+### AnnotationValue {:#AnnotationValue}
+*Defined in [fuchsia.modular/annotation.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/annotation/annotation.fidl#52)*
+
+ The value of a <a class='link' href='#Annotation'>Annotation</a>.
+
+ The actual field used depends on the type of annotation, which is
+ user-defined, and not enforced by the framework.
+
+ The size of `buffer` is limited to
+ `MAX_ANNOTATION_VALUE_BUFFER_LENGTH_BYTES` bytes.
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>text</code></td>
+            <td>
+                <code>string[1024]</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>bytes</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;[1024]</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>buffer</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.mem/index.html'>fuchsia.mem</a>/<a class='link' href='../fuchsia.mem/index.html#Buffer'>Buffer</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
 
 
 
@@ -4939,6 +9703,66 @@
  Does not apply to other fields; see <a class='link' href='#MAX_ANNOTATION_VALUE_LENGTH'>MAX_ANNOTATION_VALUE_LENGTH</a>.
 </td>
         </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/annotation/annotation.fidl#19">MAX_ANNOTATIONS_PER_STORY</a></td>
+            <td>
+                    <code>100</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Maximum number of annotations on a single story.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/annotation/annotation.fidl#22">MAX_ANNOTATIONS_PER_MODULE</a></td>
+            <td>
+                    <code>100</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Maximum number of annotations on a single module.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/annotation/annotation.fidl#27">MAX_ANNOTATIONS_PER_UPDATE</a></td>
+            <td>
+                    <code>50</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Maximum number of annotations that can be passed to either method
+ Annotate() AnnotateModule() in fuchsia.modular protocols that support
+ annotations.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/annotation/annotation.fidl#30">MAX_ANNOTATION_KEY_LENGTH</a></td>
+            <td>
+                    <code>256</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Maximum length of <a class='link' href='#AnnotationKey'>AnnotationKey</a>.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/annotation/annotation.fidl#34">MAX_ANNOTATION_VALUE_LENGTH</a></td>
+            <td>
+                    <code>1024</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Maximum length of <a class='link' href='#AnnotationValue'>AnnotationValue</a> fields:
+ `text` and `bytes`.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.modular/annotation/annotation.fidl#40">MAX_ANNOTATION_VALUE_BUFFER_LENGTH_BYTES</a></td>
+            <td>
+                    <code>102400</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Maximum length of the <a class='link' href='#AnnotationValue.buffer'>AnnotationValue.buffer</a> field, in
+ bytes.
+
+ Does not apply to other fields; see <a class='link' href='#MAX_ANNOTATION_VALUE_LENGTH'>MAX_ANNOTATION_VALUE_LENGTH</a>.
+</td>
+        </tr>
     
 </table>
 
diff --git a/sdk/fidl/fuchsia.net.dhcp/index.md b/sdk/fidl/fuchsia.net.dhcp/index.md
index 35fb961..32b5920 100644
--- a/sdk/fidl/fuchsia.net.dhcp/index.md
+++ b/sdk/fidl/fuchsia.net.dhcp/index.md
@@ -242,6 +242,242 @@
             </td>
         </tr></table>
 
+## Client {:#Client}
+*Defined in [fuchsia.net.dhcp/client.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.net.dhcp/client.fidl#10)*
+
+ Client provides control operations on a DHCP client.
+
+### Start {:#Start}
+
+ Start runs the DHCP client represented by this protocol.
+
+ # Errors
+
+ In the case that the interface this client represents no longer exists,
+ the server end of this protocol's channel will be closed.
+
+ Start returns no other errors currently, but callers should check the error
+ value in case new errors are returned in the future.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#Client_Start_Result'>Client_Start_Result</a></code>
+            </td>
+        </tr></table>
+
+### Stop {:#Stop}
+
+ Stops the DHCP client (if it is running).
+
+ # Errors
+
+ In the case that the interface this client represents no longer exists,
+ the server end of this protocol's channel will be closed.
+
+ Stop returns no other errors currently, but callers should check the error
+ value in case new errors are returned in the future.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#Client_Stop_Result'>Client_Stop_Result</a></code>
+            </td>
+        </tr></table>
+
+## Server {:#Server}
+*Defined in [fuchsia.net.dhcp/server.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.net.dhcp/server.fidl#85)*
+
+ Provides methods for DHCP Server configuration.
+
+### GetOption {:#GetOption}
+
+ Returns the requested Option if it is supported.
+
+ + request `code` the code of an Option whose value has been requested.
+ - response `value` the value of the requested Option.
+ * error a zx.status indicating why the value could not be retrieved.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>code</code></td>
+            <td>
+                <code><a class='link' href='#OptionCode'>OptionCode</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#Server_GetOption_Result'>Server_GetOption_Result</a></code>
+            </td>
+        </tr></table>
+
+### GetParameter {:#GetParameter}
+
+ Returns the requested Parameter if it is supported.
+
+ + request `name` the name of a Parameter whose value has been requested.
+ - response `value` the value of the requested Parameter.
+ * error a zx.status indicating why the value could not be retrieved.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>name</code></td>
+            <td>
+                <code><a class='link' href='#ParameterName'>ParameterName</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#Server_GetParameter_Result'>Server_GetParameter_Result</a></code>
+            </td>
+        </tr></table>
+
+### SetOption {:#SetOption}
+
+ Sets the Option to the argument. Each SetOption call is treated as its own atomic
+ transaction. On success, a SetOption will take effect immediately.
+
+ + request `value` an Option whose value will be set to the value of this argument.
+ * error a zx.status indicating the cause of failure.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>value</code></td>
+            <td>
+                <code><a class='link' href='#Option'>Option</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#Server_SetOption_Result'>Server_SetOption_Result</a></code>
+            </td>
+        </tr></table>
+
+### SetParameter {:#SetParameter}
+
+ Sets the Parameter to the argument. Each SetParameter call is treated as its own atomic
+ transaction. On success, a SetParameter will take effect immediately.
+
+ + request `value` a Parameter whose value will be set to the value of this argument.
+ * error a zx.status indicating the cause of failure.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>value</code></td>
+            <td>
+                <code><a class='link' href='#Parameter'>Parameter</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#Server_SetParameter_Result'>Server_SetParameter_Result</a></code>
+            </td>
+        </tr></table>
+
+### ListOptions {:#ListOptions}
+
+ Lists all DHCP options for which the Server has a value. Any option which does
+ not have a value will be omitted from the returned list. ListOptions provides administrators
+ a means to print a server's configuration as opposed to querying the value of a single
+ Option.
+
+ - response `options` a vector containing all of the options for which the Server has a
+ value. Bounded to 256 as options are identified by a 1 octet code and 256 is the maximum
+ number of such codes.
+ * error a zx.status indicating the cause of failure.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#Server_ListOptions_Result'>Server_ListOptions_Result</a></code>
+            </td>
+        </tr></table>
+
+### ListParameters {:#ListParameters}
+
+ Lists all DHCP server parameters. ListParameters provides administrators a means to print a
+ server's configuration as opposed to querying the value of a single Parameter.
+
+ - response `parameter` a vector containing the values of all of the Server's parameters.
+ Bounded to 256 to provide a generous upper limit on the number of server parameters while
+ being of the same size as ListOptions.
+ * error a zx.status indicating the cause of failure.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#Server_ListParameters_Result'>Server_ListParameters_Result</a></code>
+            </td>
+        </tr></table>
+
 
 
 ## **STRUCTS**
@@ -362,6 +598,122 @@
         </tr>
 </table>
 
+### Client_Start_Response {:#Client_Start_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr>
+</table>
+
+### Client_Stop_Response {:#Client_Stop_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr>
+</table>
+
+### Server_GetOption_Response {:#Server_GetOption_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code><a class='link' href='#Option'>Option</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Server_GetParameter_Response {:#Server_GetParameter_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code><a class='link' href='#Parameter'>Parameter</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Server_SetOption_Response {:#Server_SetOption_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr>
+</table>
+
+### Server_SetParameter_Response {:#Server_SetParameter_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr>
+</table>
+
+### Server_ListOptions_Response {:#Server_ListOptions_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>options</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#Option'>Option</a>&gt;[256]</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Server_ListParameters_Response {:#Server_ListParameters_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>parameters</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#Parameter'>Parameter</a>&gt;[256]</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
 
 
 ## **ENUMS**
@@ -378,18 +730,15 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>FILE</code></td>
             <td><code>1</code></td>
-            <td> The file DHCP field.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>SNAME</code></td>
             <td><code>2</code></td>
-            <td> The sname DHCP field.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>BOTH</code></td>
             <td><code>3</code></td>
-            <td> Both file and sname DHCP fields.
-</td>
+            <td></td>
         </tr></table>
 
 ### MessageType {:#MessageType}
@@ -406,43 +755,415 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>DHCPDISCOVER</code></td>
             <td><code>1</code></td>
-            <td> A DHCP Discover message.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>DHCPOFFER</code></td>
             <td><code>2</code></td>
-            <td> A DHCP Offer message.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>DHCPREQUEST</code></td>
             <td><code>3</code></td>
-            <td> A DHCP Request message.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>DHCPDECLINE</code></td>
             <td><code>4</code></td>
-            <td> A DHCP Decline message.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>DHCPACK</code></td>
             <td><code>5</code></td>
-            <td> A DHCP Ack message.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>DHCPNAK</code></td>
             <td><code>6</code></td>
-            <td> A DHCP Nak message;
-</td>
+            <td></td>
         </tr><tr>
             <td><code>DHCPRELEASE</code></td>
             <td><code>7</code></td>
-            <td> A DHCP Release message;
-</td>
+            <td></td>
         </tr><tr>
             <td><code>DHCPINFORM</code></td>
             <td><code>8</code></td>
-            <td> A DHCP Inform message.
-</td>
+            <td></td>
+        </tr></table>
+
+### OptionCode {:#OptionCode}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.net.dhcp/options.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.net.dhcp/options.fidl#334)*
+
+ The code of a DHCP option to be retrieved by Server.GetOption(). The code
+ values are from https://tools.ietf.org/html/rfc2132 and the enum variants
+ have been listed in the order they are presented in the RFC.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>SUBNET_MASK</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>TIME_OFFSET</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>ROUTER</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>TIME_SERVER</code></td>
+            <td><code>4</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>NAME_SERVER</code></td>
+            <td><code>5</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>DOMAIN_NAME_SERVER</code></td>
+            <td><code>6</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>LOG_SERVER</code></td>
+            <td><code>7</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>COOKIE_SERVER</code></td>
+            <td><code>8</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>LPR_SERVER</code></td>
+            <td><code>9</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>IMPRESS_SERVER</code></td>
+            <td><code>10</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>RESOURCE_LOCATION_SERVER</code></td>
+            <td><code>11</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>HOST_NAME</code></td>
+            <td><code>12</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>BOOT_FILE_SIZE</code></td>
+            <td><code>13</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>MERIT_DUMP_FILE</code></td>
+            <td><code>14</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>DOMAIN_NAME</code></td>
+            <td><code>15</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>SWAP_SERVER</code></td>
+            <td><code>16</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>ROOT_PATH</code></td>
+            <td><code>17</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>EXTENSIONS_PATH</code></td>
+            <td><code>18</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>IP_FORWARDING</code></td>
+            <td><code>19</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>NON_LOCAL_SOURCE_ROUTING</code></td>
+            <td><code>20</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>POLICY_FILTER</code></td>
+            <td><code>21</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>MAX_DATAGRAM_REASSEMBLY_SIZE</code></td>
+            <td><code>22</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>DEFAULT_IP_TTL</code></td>
+            <td><code>23</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PATH_MTU_AGING_TIMEOUT</code></td>
+            <td><code>24</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PATH_MTU_PLATEAU_TABLE</code></td>
+            <td><code>25</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>INTERFACE_MTU</code></td>
+            <td><code>26</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>ALL_SUBNETS_LOCAL</code></td>
+            <td><code>27</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>BROADCAST_ADDRESS</code></td>
+            <td><code>28</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PERFORM_MASK_DISCOVERY</code></td>
+            <td><code>29</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>MASK_SUPPLIER</code></td>
+            <td><code>30</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PERFORM_ROUTER_DISCOVERY</code></td>
+            <td><code>31</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>ROUTER_SOLICITATION_ADDRESS</code></td>
+            <td><code>32</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>STATIC_ROUTE</code></td>
+            <td><code>33</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>TRAILER_ENCAPSULATION</code></td>
+            <td><code>34</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>ARP_CACHE_TIMEOUT</code></td>
+            <td><code>35</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>ETHERNET_ENCAPSULATION</code></td>
+            <td><code>36</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>TCP_DEFAULT_TTL</code></td>
+            <td><code>37</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>TCP_KEEPALIVE_INTERVAL</code></td>
+            <td><code>38</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>TCP_KEEPALIVE_GARBAGE</code></td>
+            <td><code>39</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>NETWORK_INFORMATION_SERVICE_DOMAIN</code></td>
+            <td><code>40</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>NETWORK_INFORMATION_SERVERS</code></td>
+            <td><code>41</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>NETWORK_TIME_PROTOCOL_SERVERS</code></td>
+            <td><code>42</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>VENDOR_SPECIFIC_INFORMATION</code></td>
+            <td><code>43</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>NETBIOS_OVER_TCPIP_NAME_SERVER</code></td>
+            <td><code>44</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>NETBIOS_OVER_TCPIP_DATAGRAM_DISTRIBUTION_SERVER</code></td>
+            <td><code>45</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>NETBIOS_OVER_TCPIP_NODE_TYPE</code></td>
+            <td><code>46</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>NETBIOS_OVER_TCPIP_SCOPE</code></td>
+            <td><code>47</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>X_WINDOW_SYSTEM_FONT_SERVER</code></td>
+            <td><code>48</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>X_WINDOW_SYSTEM_DISPLAY_MANAGER</code></td>
+            <td><code>49</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>NETWORK_INFORMATION_SERVICE_PLUS_DOMAIN</code></td>
+            <td><code>64</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>NETWORK_INFORMATION_SERVICE_PLUS_SERVERS</code></td>
+            <td><code>65</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>MOBILE_IP_HOME_AGENT</code></td>
+            <td><code>68</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>SMTP_SERVER</code></td>
+            <td><code>69</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>POP3_SERVER</code></td>
+            <td><code>70</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>NNTP_SERVER</code></td>
+            <td><code>71</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>DEFAULT_WWW_SERVER</code></td>
+            <td><code>72</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>DEFAULT_FINGER_SERVER</code></td>
+            <td><code>73</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>DEFAULT_IRC_SERVER</code></td>
+            <td><code>74</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>STREETTALK_SERVER</code></td>
+            <td><code>75</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>STREETTALK_DIRECTORY_ASSISTANCE_SERVER</code></td>
+            <td><code>76</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>OPTION_OVERLOAD</code></td>
+            <td><code>52</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>TFTP_SERVER_NAME</code></td>
+            <td><code>66</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>BOOTFILE_NAME</code></td>
+            <td><code>67</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>MAX_DHCP_MESSAGE_SIZE</code></td>
+            <td><code>57</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>RENEWAL_TIME_VALUE</code></td>
+            <td><code>58</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>REBINDING_TIME_VALUE</code></td>
+            <td><code>59</code></td>
+            <td></td>
+        </tr></table>
+
+### ParameterName {:#ParameterName}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.net.dhcp/server.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.net.dhcp/server.fidl#74)*
+
+ The name of the Parameter to be retrieved by Server.GetParameter().
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>IP_ADDRS</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>ADDRESS_POOL</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>LEASE_LENGTH</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PERMITTED_MACS</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>STATICALLY_ASSIGNED_ADDRS</code></td>
+            <td><code>4</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>ARP_PROBE</code></td>
+            <td><code>5</code></td>
+            <td></td>
+        </tr></table>
+
+### OptionOverloadValue {:#OptionOverloadValue}
+Type: <code>uint8</code>
+
+*Defined in [fuchsia.net.dhcp/options.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.net.dhcp/options.fidl#27)*
+
+ A indication of which DHCP message field should be used to store additional options.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>FILE</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>SNAME</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>BOTH</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr></table>
+
+### MessageType {:#MessageType}
+Type: <code>uint8</code>
+
+*Defined in [fuchsia.net.dhcp/options.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.net.dhcp/options.fidl#52)*
+
+ The type of DHCP message. The DHCP protocol requires that all messages identify
+ their type by including the MessageType option. These values are specified
+ in https://tools.ietf.org/html/rfc2132#section-9.6.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>DHCPDISCOVER</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>DHCPOFFER</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>DHCPREQUEST</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>DHCPDECLINE</code></td>
+            <td><code>4</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>DHCPACK</code></td>
+            <td><code>5</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>DHCPNAK</code></td>
+            <td><code>6</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>DHCPRELEASE</code></td>
+            <td><code>7</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>DHCPINFORM</code></td>
+            <td><code>8</code></td>
+            <td></td>
         </tr></table>
 
 ### OptionCode {:#OptionCode}
@@ -875,6 +1596,120 @@
 </td>
         </tr></table>
 
+### AddressPool {:#AddressPool}
+
+
+*Defined in [fuchsia.net.dhcp/server.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.net.dhcp/server.fidl#10)*
+
+ The pool of addresses managed by a DHCP server and from which leases are supplied.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>network_id</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#Ipv4Address'>Ipv4Address</a></code>
+            </td>
+            <td> The network ID of the address pool's subnet.
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>broadcast</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#Ipv4Address'>Ipv4Address</a></code>
+            </td>
+            <td> The broadcast address of the address pool's subnet.
+</td>
+        </tr><tr>
+            <td>3</td>
+            <td><code>mask</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#Ipv4Address'>Ipv4Address</a></code>
+            </td>
+            <td> The subnet mask of the address pool's network.
+</td>
+        </tr><tr>
+            <td>4</td>
+            <td><code>pool_range_start</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#Ipv4Address'>Ipv4Address</a></code>
+            </td>
+            <td> The starting address, inclusive, of the range of addresses which the DHCP server
+ will lease to clients. This address must be in the subnet defined by the network_id
+ and mask members of the AddressPool.
+</td>
+        </tr><tr>
+            <td>5</td>
+            <td><code>pool_range_stop</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#Ipv4Address'>Ipv4Address</a></code>
+            </td>
+            <td> The ending address, inclusive, of the range of addresses which the server will
+ to clients. This address must be in the subnet defined by the network_id and mask
+ members of the AddressPool.
+</td>
+        </tr></table>
+
+### LeaseLength {:#LeaseLength}
+
+
+*Defined in [fuchsia.net.dhcp/server.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.net.dhcp/server.fidl#28)*
+
+ The duration of leases offered by the server.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>default</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> The default lease length to be issued to clients. This field must have a value.
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>max</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> The maximum lease length value which the server will issue to clients who
+ have requested a specific lease length. If omitted, the max lease length is
+ equivalent to the default lease length.
+</td>
+        </tr></table>
+
+### StaticAssignment {:#StaticAssignment}
+
+
+*Defined in [fuchsia.net.dhcp/server.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.net.dhcp/server.fidl#38)*
+
+ A static IP address assignment for a host or device on the network managed by Server.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>host</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#MacAddress'>MacAddress</a></code>
+            </td>
+            <td> The MAC address of the host or device which will have the static IP address assignment.
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>assigned_addr</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#Ipv4Address'>Ipv4Address</a></code>
+            </td>
+            <td> The IP address which the host or device will always be assigned by dhcpd.
+</td>
+        </tr></table>
+
 
 
 ## **UNIONS**
@@ -1031,6 +1866,158 @@
             <td></td>
         </tr></table>
 
+### Client_Start_Result {:#Client_Start_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#Client_Start_Response'>Client_Start_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### Client_Stop_Result {:#Client_Stop_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#Client_Stop_Response'>Client_Stop_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### Server_GetOption_Result {:#Server_GetOption_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#Server_GetOption_Response'>Server_GetOption_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### Server_GetParameter_Result {:#Server_GetParameter_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#Server_GetParameter_Response'>Server_GetParameter_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### Server_SetOption_Result {:#Server_SetOption_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#Server_SetOption_Response'>Server_SetOption_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### Server_SetParameter_Result {:#Server_SetParameter_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#Server_SetParameter_Response'>Server_SetParameter_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### Server_ListOptions_Result {:#Server_ListOptions_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#Server_ListOptions_Response'>Server_ListOptions_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### Server_ListParameters_Result {:#Server_ListParameters_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#Server_ListParameters_Response'>Server_ListParameters_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td></td>
+        </tr></table>
+
 
 
 ## **XUNIONS**
@@ -1626,6 +2613,597 @@
 </td>
         </tr></table>
 
+### Option {:#Option}
+*Defined in [fuchsia.net.dhcp/options.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.net.dhcp/options.fidl#87)*
+
+ A generic representation of client configuration parameters and DHCP settings. Options are the
+ mechanism by which the DHCP protocol communicates configuration parameters from a repository on
+ a DHCP server to DHCP clients, or by which DHCP clients and servers communicate data relevant to
+ a DHCP transaction.
+ All DHCP option values must have a length which can fit within a single byte, i.e. less than 256.
+ Options for which there is no reasonable administrator-configurable value have been omitted
+ from this xunion. The omitted options are:
+ * Pad - never has a value
+ * End - never has a value
+ * RequestedIpAddress - value always selected by the DHCP client.
+ * DhcpMessageType - value always determined by state of transaction between DHCP client and server.
+ * ServerIdentifier - value always determined by address to which the server is bound.
+ * ParameterRequestList - value always selected by the DHCP client.
+ * Message - value determined in response to runtime error.
+ * VendorClassIdentifer - value always selected by the DHCP client.
+ * ClientIdentifier - value always selected by the DHCP client.
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>subnet_mask</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#Ipv4Address'>Ipv4Address</a></code>
+            </td>
+            <td> A 32-bit IPv4 subnet mask.
+</td>
+        </tr><tr>
+            <td><code>time_offset</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td> The client's offset from UTC in seconds. A positive offset is east of the zero meridian, and
+ a negative offset is west of the zero meridian.
+</td>
+        </tr><tr>
+            <td><code>router</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#Ipv4Address'>Ipv4Address</a>&gt;[63]</code>
+            </td>
+            <td> A list of the routers in a client's subnet, listed in order of preference.
+</td>
+        </tr><tr>
+            <td><code>time_server</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#Ipv4Address'>Ipv4Address</a>&gt;[63]</code>
+            </td>
+            <td> A list of time servers available to the client, in order of preference.
+</td>
+        </tr><tr>
+            <td><code>name_server</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#Ipv4Address'>Ipv4Address</a>&gt;[63]</code>
+            </td>
+            <td> A list of IEN 116 Name servers available to the client, in order of preference.
+</td>
+        </tr><tr>
+            <td><code>domain_name_server</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#Ipv4Address'>Ipv4Address</a>&gt;[63]</code>
+            </td>
+            <td> A list of Domain Name System servers available to the client, in order of preference;
+</td>
+        </tr><tr>
+            <td><code>log_server</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#Ipv4Address'>Ipv4Address</a>&gt;[63]</code>
+            </td>
+            <td> A list of MIT-LCS UDP Log servers available to the client, in order of preference.
+</td>
+        </tr><tr>
+            <td><code>cookie_server</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#Ipv4Address'>Ipv4Address</a>&gt;[63]</code>
+            </td>
+            <td> A list of RFC 865 Cookie servers available to the client, in order of preference.
+</td>
+        </tr><tr>
+            <td><code>lpr_server</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#Ipv4Address'>Ipv4Address</a>&gt;[63]</code>
+            </td>
+            <td> A list of RFC 1179 Line Printer servers available to the client, in order of preference.
+</td>
+        </tr><tr>
+            <td><code>impress_server</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#Ipv4Address'>Ipv4Address</a>&gt;[63]</code>
+            </td>
+            <td> A list of Imagen Impress servers available to the client, in order of preference.
+</td>
+        </tr><tr>
+            <td><code>resource_location_server</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#Ipv4Address'>Ipv4Address</a>&gt;[63]</code>
+            </td>
+            <td> A list of RFC 887 Resource Location servers available to the client, in order of preference.
+</td>
+        </tr><tr>
+            <td><code>host_name</code></td>
+            <td>
+                <code>string[255]</code>
+            </td>
+            <td> The host name of the client, which may or may not be qualified with the local domain name.
+</td>
+        </tr><tr>
+            <td><code>boot_file_size</code></td>
+            <td>
+                <code>uint16</code>
+            </td>
+            <td> The size of the client's default boot image in 512-octet blocks.
+</td>
+        </tr><tr>
+            <td><code>merit_dump_file</code></td>
+            <td>
+                <code>string[255]</code>
+            </td>
+            <td> The path name to the client's core dump in the event the client crashes.
+</td>
+        </tr><tr>
+            <td><code>domain_name</code></td>
+            <td>
+                <code>string[255]</code>
+            </td>
+            <td> The client's domain name for use in resolving hostnames in the DNS.
+</td>
+        </tr><tr>
+            <td><code>swap_server</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#Ipv4Address'>Ipv4Address</a></code>
+            </td>
+            <td> The address of the client's swap server.
+</td>
+        </tr><tr>
+            <td><code>root_path</code></td>
+            <td>
+                <code>string[255]</code>
+            </td>
+            <td> The path name to the client's root disk.
+</td>
+        </tr><tr>
+            <td><code>extensions_path</code></td>
+            <td>
+                <code>string[255]</code>
+            </td>
+            <td> The path name to a TFTP-retrievable file. This file contains data which can be interpreted
+ as the BOOTP vendor-extension field. Unlike the BOOTP vendor-extension field, this file has
+ an unconstrained length and any references to Tag 18 are ignored.
+</td>
+        </tr><tr>
+            <td><code>ip_forwarding</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> A flag which will enabled IP layer packet forwarding when true.
+</td>
+        </tr><tr>
+            <td><code>non_local_source_routing</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> A flag which will enable forwarding of IP packets with non-local source routes.
+</td>
+        </tr><tr>
+            <td><code>policy_filter</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#Ipv4Address'>Ipv4Address</a>&gt;[63]</code>
+            </td>
+            <td> Policy filters for non-local source routing.
+ A list of IP Address and Subnet Mask pairs. If an incoming source-routed packet has a
+ next-hop that does not match one of these pairs, then the packet will be dropped.
+</td>
+        </tr><tr>
+            <td><code>max_datagram_reassembly_size</code></td>
+            <td>
+                <code>uint16</code>
+            </td>
+            <td> The maximum sized datagram that the client should be able to reassemble, in octets. The
+ minimum legal value is 576.
+</td>
+        </tr><tr>
+            <td><code>default_ip_ttl</code></td>
+            <td>
+                <code>uint8</code>
+            </td>
+            <td> The default time-to-live to use on outgoing IP datagrams. The value must be between 1 and
+ 255.
+</td>
+        </tr><tr>
+            <td><code>path_mtu_aging_timeout</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> The timeout to be used when aging Path MTU values by the mechanism in RFC 1191.
+</td>
+        </tr><tr>
+            <td><code>path_mtu_plateau_table</code></td>
+            <td>
+                <code>vector&lt;uint16&gt;[127]</code>
+            </td>
+            <td> Table of MTU sizes for Path MTU Discovery.
+ A list of MTU sizes, ordered from smallest to largest. The smallest value cannot be smaller
+ than 68.
+</td>
+        </tr><tr>
+            <td><code>interface_mtu</code></td>
+            <td>
+                <code>uint16</code>
+            </td>
+            <td> The MTU for the client's interface. Minimum value of 68.
+</td>
+        </tr><tr>
+            <td><code>all_subnets_local</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> A flag indicating if all subents of the IP network to which the client is connected have the
+ same MTU.
+</td>
+        </tr><tr>
+            <td><code>broadcast_address</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#Ipv4Address'>Ipv4Address</a></code>
+            </td>
+            <td> The broadcast address of the client's subnet. Legal values are defined in RFC 1122.
+</td>
+        </tr><tr>
+            <td><code>perform_mask_discovery</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> A flag indicating whether the client should perform subnet mask discovery via ICMP.
+</td>
+        </tr><tr>
+            <td><code>mask_supplier</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> A flag indicating whether the client should respond to subnet mask discovery requests via
+ ICMP.
+</td>
+        </tr><tr>
+            <td><code>perform_router_discovery</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> A flag indicating whether the client should solicit routers using Router Discovery as
+ defined in RFC 1256.
+</td>
+        </tr><tr>
+            <td><code>router_solicitation_address</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#Ipv4Address'>Ipv4Address</a></code>
+            </td>
+            <td> The address to which the client should transmit Router Solicitation requests.
+</td>
+        </tr><tr>
+            <td><code>static_route</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#Ipv4Address'>Ipv4Address</a>&gt;[63]</code>
+            </td>
+            <td> Static Routes which the host should put in its routing cache.
+ A list of Destination address/Next-hop address pairs defining static routes for the client's
+ routing table. The routes should be listed in descending order of priority. It is illegal
+ to use 0.0.0.0 as the destination in a static route.
+</td>
+        </tr><tr>
+            <td><code>trailer_encapsulation</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> A flag specifying whether the client negotiate the use of trailers when using ARP, per RFC
+ 893.
+</td>
+        </tr><tr>
+            <td><code>arp_cache_timeout</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> The timeout for ARP cache entries.
+</td>
+        </tr><tr>
+            <td><code>ethernet_encapsulation</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> A flag specifying that the client should use Ethernet v2 encapsulation when false, and IEEE
+ 802.3 encapsulation when true.
+</td>
+        </tr><tr>
+            <td><code>tcp_default_ttl</code></td>
+            <td>
+                <code>uint8</code>
+            </td>
+            <td> The default time-to-live that the client should use for outgoing TCP segments. The minimum
+ value is 1.
+</td>
+        </tr><tr>
+            <td><code>tcp_keepalive_interval</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> The interval the client should wait before sending a TCP keepalive message. A
+ value of 0 indicates that the client should not send keepalive messages unless specifically
+ requested by an application.
+</td>
+        </tr><tr>
+            <td><code>tcp_keepalive_garbage</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> A flag specifying whether the client should send TCP keepalive messages with an octet of
+ garbage for compatibility with older implementations.
+</td>
+        </tr><tr>
+            <td><code>network_information_service_domain</code></td>
+            <td>
+                <code>string[255]</code>
+            </td>
+            <td> The name of the client's Network Information Service domain.
+</td>
+        </tr><tr>
+            <td><code>network_information_servers</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#Ipv4Address'>Ipv4Address</a>&gt;[63]</code>
+            </td>
+            <td> A list of Network Information Service server addresses available to the client, listed in
+ order of preference.
+</td>
+        </tr><tr>
+            <td><code>network_time_protocol_servers</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#Ipv4Address'>Ipv4Address</a>&gt;[63]</code>
+            </td>
+            <td> A list of Network Time Protocol (NTP) server addresses available to the client, listed in
+ order of preference.
+</td>
+        </tr><tr>
+            <td><code>vendor_specific_information</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;[255]</code>
+            </td>
+            <td> An opaque object of octets for exchanging vendor-specific information.
+</td>
+        </tr><tr>
+            <td><code>netbios_over_tcpip_name_server</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#Ipv4Address'>Ipv4Address</a>&gt;[63]</code>
+            </td>
+            <td> A list of NetBIOS name server addresses available to the client, listed in order of
+ preference.
+</td>
+        </tr><tr>
+            <td><code>netbios_over_tcpip_datagram_distribution_server</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#Ipv4Address'>Ipv4Address</a>&gt;[63]</code>
+            </td>
+            <td> A list of NetBIOS datagram distribution servers available to the client, listed in order of
+ preference.
+</td>
+        </tr><tr>
+            <td><code>netbios_over_tcpip_node_type</code></td>
+            <td>
+                <code><a class='link' href='#NodeTypes'>NodeTypes</a></code>
+            </td>
+            <td> The NetBIOS node type which should be used by the client.
+</td>
+        </tr><tr>
+            <td><code>netbios_over_tcpip_scope</code></td>
+            <td>
+                <code>string[255]</code>
+            </td>
+            <td> The NetBIOS over TCP/IP scope parameter, as defined in RFC 1001, for the client.
+</td>
+        </tr><tr>
+            <td><code>x_window_system_font_server</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#Ipv4Address'>Ipv4Address</a>&gt;[63]</code>
+            </td>
+            <td> A list of X Window System Font server addresses available to the client, listed in order of
+ preference.
+</td>
+        </tr><tr>
+            <td><code>x_window_system_display_manager</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#Ipv4Address'>Ipv4Address</a>&gt;[63]</code>
+            </td>
+            <td> A list of X Window System Display Manager system addresses available to the client, listed
+ in order of preference.
+</td>
+        </tr><tr>
+            <td><code>network_information_service_plus_domain</code></td>
+            <td>
+                <code>string[255]</code>
+            </td>
+            <td> The name of the client's Network Information System+ domain.
+</td>
+        </tr><tr>
+            <td><code>network_information_service_plus_servers</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#Ipv4Address'>Ipv4Address</a>&gt;[63]</code>
+            </td>
+            <td> A list of Network Information System+ server addresses available to the client, listed in
+ order of preference.
+</td>
+        </tr><tr>
+            <td><code>mobile_ip_home_agent</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#Ipv4Address'>Ipv4Address</a>&gt;[63]</code>
+            </td>
+            <td> A list of mobile IP home agent addresses available to the client, listed in order of
+ preference.
+</td>
+        </tr><tr>
+            <td><code>smtp_server</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#Ipv4Address'>Ipv4Address</a>&gt;[63]</code>
+            </td>
+            <td> A list of Simple Mail Transport Protocol (SMTP) server address available to the client,
+ listed in order of preference.
+</td>
+        </tr><tr>
+            <td><code>pop3_server</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#Ipv4Address'>Ipv4Address</a>&gt;[63]</code>
+            </td>
+            <td> A list of Post Office Protocol (POP3) server addresses available to the client, listed in
+ order of preference.
+</td>
+        </tr><tr>
+            <td><code>nntp_server</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#Ipv4Address'>Ipv4Address</a>&gt;[63]</code>
+            </td>
+            <td> A list Network News Transport Protocol (NNTP) server addresses available to the client,
+ listed in order of preference.
+</td>
+        </tr><tr>
+            <td><code>default_www_server</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#Ipv4Address'>Ipv4Address</a>&gt;[63]</code>
+            </td>
+            <td> A list of default World Wide Web (WWW) server addresses available to the client, listed in
+ order of preference.
+</td>
+        </tr><tr>
+            <td><code>default_finger_server</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#Ipv4Address'>Ipv4Address</a>&gt;[63]</code>
+            </td>
+            <td> A list of default Finger server addresses available to the client, listed in order of
+ preference.
+</td>
+        </tr><tr>
+            <td><code>default_irc_server</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#Ipv4Address'>Ipv4Address</a>&gt;[63]</code>
+            </td>
+            <td> A list of Internet Relay Chat server addresses available to the client, listed in order of
+ preference.
+</td>
+        </tr><tr>
+            <td><code>streettalk_server</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#Ipv4Address'>Ipv4Address</a>&gt;[63]</code>
+            </td>
+            <td> A list of StreetTalk server addresses available to the client, listed in order of
+ preference.
+</td>
+        </tr><tr>
+            <td><code>streettalk_directory_assistance_server</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#Ipv4Address'>Ipv4Address</a>&gt;[63]</code>
+            </td>
+            <td> A list of StreetTalk Directory Assistance server addresses available to the client, listed
+ in order of preference.
+</td>
+        </tr><tr>
+            <td><code>option_overload</code></td>
+            <td>
+                <code><a class='link' href='#OptionOverloadValue'>OptionOverloadValue</a></code>
+            </td>
+            <td> An option specifying whether the `sname`, `file`, or both fields have been overloaded to
+ carry DHCP options. If this option is present, the client interprets the additional fields
+ after it concludes interpreting standard option fields.
+</td>
+        </tr><tr>
+            <td><code>tftp_server_name</code></td>
+            <td>
+                <code>string[255]</code>
+            </td>
+            <td> The TFTP server name available to the client. This option should be used when the `sname`
+ field has been overloaded to carry options.
+</td>
+        </tr><tr>
+            <td><code>bootfile_name</code></td>
+            <td>
+                <code>string[255]</code>
+            </td>
+            <td> The bootfile name for the client. This option should be used when the `file` field has been
+ overloaded to carry options.
+</td>
+        </tr><tr>
+            <td><code>max_dhcp_message_size</code></td>
+            <td>
+                <code>uint16</code>
+            </td>
+            <td> The maximum length in octets of a DHCP message that the participant is willing to accept.
+ The minimum value is 576.
+</td>
+        </tr><tr>
+            <td><code>renewal_time_value</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> The time interval after address assignment at which the client will transition
+ to the Renewing state.
+</td>
+        </tr><tr>
+            <td><code>rebinding_time_value</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> The time interval after address assignment at which the client will transition
+ to the Rebinding state.
+</td>
+        </tr></table>
+
+### Parameter {:#Parameter}
+*Defined in [fuchsia.net.dhcp/server.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.net.dhcp/server.fidl#46)*
+
+ The configurable server parameters.
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>ip_addrs</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#Ipv4Address'>Ipv4Address</a>&gt;[256]</code>
+            </td>
+            <td> The IP addresses to which the server is bound. The vector bound has been
+ arbitrarily selected as a generous upper limit.
+</td>
+        </tr><tr>
+            <td><code>address_pool</code></td>
+            <td>
+                <code><a class='link' href='#AddressPool'>AddressPool</a></code>
+            </td>
+            <td> The server's pool of managed addresses. Changing the address pool will not cancel existing
+ leases because the DHCP protocol does not provide a mechanism for doing so. Administrators
+ should take care when changing the address pool for a server with active leases.
+</td>
+        </tr><tr>
+            <td><code>lease</code></td>
+            <td>
+                <code><a class='link' href='#LeaseLength'>LeaseLength</a></code>
+            </td>
+            <td> The duration of leases issued by dhcpd.
+</td>
+        </tr><tr>
+            <td><code>permitted_macs</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#MacAddress'>MacAddress</a>&gt;[256]</code>
+            </td>
+            <td> The client MAC addresses which the server will issue leases to. By default,
+ the server will not have a permitted MAC list, in which case it will attempt to
+ issue a lease to every client which requests one. If permitted_macs has a non-zero length
+ then the server will only respond to lease requests from clients with a MAC in the list. The
+ vector bound has been arbitrarily selected as a generous upper limit.
+</td>
+        </tr><tr>
+            <td><code>statically_assigned_addrs</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#StaticAssignment'>StaticAssignment</a>&gt;[256]</code>
+            </td>
+            <td> Addresses statically assigned to specific hosts or devices. Typically, a network
+ administrator will statically assign addresses to always-on network
+ devices which should always have the same IP address, such as network printers. The vector
+ bound has been arbitrarily selected as a generous upper limit.
+</td>
+        </tr><tr>
+            <td><code>arp_probe</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Enables server behavior where the server ARPs an IP address prior to issuing
+ it in a lease. If the server receives a response, the server will mark the
+ address as in-use and try again with a different address.
+</td>
+        </tr></table>
+
 
 
 ## **BITS**
@@ -1657,5 +3235,32 @@
 </td>
         </tr></table>
 
+### NodeTypes {:#NodeTypes}
+Type: <code>uint8</code>
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td>B_NODE</td>
+            <td>1</td>
+            <td> A B node type.
+</td>
+        </tr><tr>
+            <td>P_NODE</td>
+            <td>2</td>
+            <td> A P node type.
+</td>
+        </tr><tr>
+            <td>M_NODE</td>
+            <td>4</td>
+            <td> A M node type.
+</td>
+        </tr><tr>
+            <td>H_NODE</td>
+            <td>8</td>
+            <td> A H node type.
+</td>
+        </tr></table>
+
 
 
diff --git a/sdk/fidl/fuchsia.net.http/index.md b/sdk/fidl/fuchsia.net.http/index.md
index c5bdec3..240ce18 100644
--- a/sdk/fidl/fuchsia.net.http/index.md
+++ b/sdk/fidl/fuchsia.net.http/index.md
@@ -108,6 +108,108 @@
     <tr><th>Name</th><th>Type</th></tr>
     </table>
 
+## Loader {:#Loader}
+*Defined in [fuchsia.net.http/client.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.net.http/client.fidl#155)*
+
+ An HTTP loader.
+
+ The loader can service many HTTP requests concurrently. The loader tracks all
+ the outstanding requests and will cancel them all if the client closes the
+ loader interface.
+
+### Fetch {:#Fetch}
+
+ Initiate the given HTTP request, follow redirects, and return the final
+ response.
+
+ The loader will follow redirects (up to an implementation-defined limit)
+ and return the final response as a reply to this message. To cancel the
+ request, either close the loader interface or close the peer to the `event`
+ included in the `request`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>request</code></td>
+            <td>
+                <code><a class='link' href='#Request'>Request</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#Response'>Response</a></code>
+            </td>
+        </tr></table>
+
+### Start {:#Start}
+
+ Initiate the given HTTP request and return all intermediate responses to
+ the given client.
+
+ Unlike `Fetch`, `Start` does not automatically follow all redirects.
+ Instead, each individual response along the redirect chain is delivered to
+ the `LoaderClient`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>request</code></td>
+            <td>
+                <code><a class='link' href='#Request'>Request</a></code>
+            </td>
+        </tr><tr>
+            <td><code>client</code></td>
+            <td>
+                <code><a class='link' href='#LoaderClient'>LoaderClient</a></code>
+            </td>
+        </tr></table>
+
+
+
+## LoaderClient {:#LoaderClient}
+*Defined in [fuchsia.net.http/client.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.net.http/client.fidl#177)*
+
+ A client interface used with `Loader.Start`.
+
+ Closing the underlying channel will cancel the associated HTTP transaction.
+
+### OnResponse {:#OnResponse}
+
+ Called by the loader when the loader receives an HTTP response.
+
+ If the server has requested a redirect, then `redirect` will be non-null
+ and describe the target the server requested. To follow the redirect, reply
+ to this message. To not follow the redirect, close the underlying channel.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#Response'>Response</a></code>
+            </td>
+        </tr><tr>
+            <td><code>redirect</code></td>
+            <td>
+                <code><a class='link' href='#RedirectTarget'>RedirectTarget</a>?</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
 
 
 ## **STRUCTS**
@@ -362,6 +464,256 @@
         </tr>
 </table>
 
+### Error {:#Error}
+*Defined in [fuchsia.net.http/client.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.net.http/client.fidl#10)*
+
+
+
+ An error occurred during the HTTP transaction.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>code</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td> The numerical error code.
+
+ These error codes correspond to
+ <https://fuchsia.googlesource.com/fuchsia/+/master/garnet/bin/network/net_error_list.h>
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>description</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td> A textual description of the error in en-US.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Header {:#Header}
+*Defined in [fuchsia.net.http/client.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.net.http/client.fidl#22)*
+
+
+
+ An HTTP header field.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>name</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;</code>
+            </td>
+            <td> The name of the header field.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;</code>
+            </td>
+            <td> The value of the header field.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Request {:#Request}
+*Defined in [fuchsia.net.http/client.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.net.http/client.fidl#76)*
+
+
+
+ An HTTP request.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>method</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> The HTTP method if applicable.
+</td>
+            <td>GET</td>
+        </tr><tr>
+            <td><code>url</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;</code>
+            </td>
+            <td> The URL to load.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>headers</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#Header'>Header</a>&gt;?</code>
+            </td>
+            <td> Additional HTTP request headers.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>body</code></td>
+            <td>
+                <code><a class='link' href='#Body'>Body</a>?</code>
+            </td>
+            <td> The payload for the request body. For HTTP requests, the method must be set
+ to "POST" or "PUT". If a buffer is used for the body, a Content-Length
+ header will automatically be added.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>event</code></td>
+            <td>
+                <code>handle&lt;eventpair&gt;?</code>
+            </td>
+            <td> The loader will cancel the request if the peer for this event is closed.
+
+ When this happens, the loader will send a Response with the appropriate
+ error code.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>cache_mode</code></td>
+            <td>
+                <code><a class='link' href='#CacheMode'>CacheMode</a></code>
+            </td>
+            <td> The cache behavior for the request.
+</td>
+            <td><a class='link' href='#CacheMode.DEFAULT'>CacheMode.DEFAULT</a></td>
+        </tr><tr>
+            <td><code>response_body_mode</code></td>
+            <td>
+                <code><a class='link' href='#ResponseBodyMode'>ResponseBodyMode</a></code>
+            </td>
+            <td> The response body mode.
+</td>
+            <td><a class='link' href='#ResponseBodyMode.BUFFER'>ResponseBodyMode.BUFFER</a></td>
+        </tr>
+</table>
+
+### RedirectTarget {:#RedirectTarget}
+*Defined in [fuchsia.net.http/client.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.net.http/client.fidl#109)*
+
+
+
+ A description of the redirect the server requested.
+
+ The semantics of an HTTP redirect vary according to the status code use to
+ generate the redirect. This structure ensures that the loader and its client
+ agree on the interpretation of the redirect response from the server.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>method</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> The HTTP method the server suggested for the redirect.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>url</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;</code>
+            </td>
+            <td> The URL the server suggested for the redirect.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>referrer</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;</code>
+            </td>
+            <td> The referrer the server suggested for the redirect.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Response {:#Response}
+*Defined in [fuchsia.net.http/client.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.net.http/client.fidl#121)*
+
+
+
+ A response to an HTTP request.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>error</code></td>
+            <td>
+                <code><a class='link' href='#Error'>Error</a>?</code>
+            </td>
+            <td> If the response resulted in a network level error, this field will be set.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>body</code></td>
+            <td>
+                <code><a class='link' href='#Body'>Body</a>?</code>
+            </td>
+            <td> The response body.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>url</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;?</code>
+            </td>
+            <td> The final URL of the response, after redirects have been followed.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>status_code</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> The HTTP status code.
+
+ 0 if not applicable.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>status_line</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td> The HTTP status line.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>headers</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#Header'>Header</a>&gt;?</code>
+            </td>
+            <td> The HTTP response headers.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>mime_type</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td> The MIME type of the response body.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>charset</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td> The character set of the response body.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
 
 
 ## **ENUMS**
@@ -378,22 +730,15 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>DEFAULT</code></td>
             <td><code>0</code></td>
-            <td> Default behavior.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>BYPASS_CACHE</code></td>
             <td><code>1</code></td>
-            <td> The HTTP request will bypass the local cache and will have a
- 'Cache-Control: nocache' header added in that causes any proxy servers
- to also not satisfy the request from their cache.  This has the effect
- of forcing a full end-to-end fetch.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>ONLY_FROM_CACHE</code></td>
             <td><code>2</code></td>
-            <td> The HTTP request will fail if it cannot serve the requested resource
- from the cache (or some equivalent local store).
-</td>
+            <td></td>
         </tr></table>
 
 ### ResponseBodyMode {:#ResponseBodyMode}
@@ -414,18 +759,59 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>BUFFER</code></td>
             <td><code>0</code></td>
-            <td> The complete response body should be returned in the `buffer` field of
- the response body.
-
- The loader MAY abort the transation if the buffer size exceeds an
- implementation-defined limit.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>STREAM</code></td>
             <td><code>1</code></td>
-            <td> The response body should be streamed through the `stream` field of the
- response body.
-</td>
+            <td></td>
+        </tr></table>
+
+### CacheMode {:#CacheMode}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.net.http/client.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.net.http/client.fidl#40)*
+
+ Specify the cache behavior of the request.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>DEFAULT</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>BYPASS_CACHE</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>ONLY_FROM_CACHE</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr></table>
+
+### ResponseBodyMode {:#ResponseBodyMode}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.net.http/client.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.net.http/client.fidl#62)*
+
+ Specify the mechanism used to return the response body.
+
+ Streaming the response can be more efficient if the response body is large
+ and can be processed incrementally (e.g., by an image decoder).
+
+ Buffering the response can be more efficient if the response body is in cache
+ and the cache entry can be directly mapped into the resulting buffer.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>BUFFER</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>STREAM</code></td>
+            <td><code>1</code></td>
+            <td></td>
         </tr></table>
 
 
@@ -456,6 +842,28 @@
 </td>
         </tr></table>
 
+### Body {:#Body}
+*Defined in [fuchsia.net.http/client.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.net.http/client.fidl#31)*
+
+ The body of either an HTTP request or an HTTP response.
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>buffer</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.mem/index.html'>fuchsia.mem</a>/<a class='link' href='../fuchsia.mem/index.html#Buffer'>Buffer</a></code>
+            </td>
+            <td> A buffer that will contain the complete request or response body.
+</td>
+        </tr><tr>
+            <td><code>stream</code></td>
+            <td>
+                <code>handle&lt;socket&gt;</code>
+            </td>
+            <td> A socket that will contain the streaming request or response body.
+</td>
+        </tr></table>
+
 
 
 
diff --git a/sdk/fidl/fuchsia.net.mdns/index.md b/sdk/fidl/fuchsia.net.mdns/index.md
index a2764c2..79ea137 100644
--- a/sdk/fidl/fuchsia.net.mdns/index.md
+++ b/sdk/fidl/fuchsia.net.mdns/index.md
@@ -278,6 +278,278 @@
     <tr><th>Name</th><th>Type</th></tr>
     </table>
 
+## Resolver {:#Resolver}
+*Defined in [fuchsia.net.mdns/mdns.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.net.mdns/mdns.fidl#43)*
+
+ Discoverable protocol for resolving host names to IP addresses.
+
+### ResolveHostName {:#ResolveHostName}
+
+ Gets the addresses for the specified host. `timeout` specifies how long
+ the service should wait before giving up when waiting for a response to
+ a resolution query. In typical use, a timeout of two or three seconds
+ is recommended.
+
+ A successful resolution may return one or both addresses. An
+ unsuccessful resolution is indicated when both addresses are null.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>host</code></td>
+            <td>
+                <code>string[255]</code>
+            </td>
+        </tr><tr>
+            <td><code>timeout</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>v4_address</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#Ipv4Address'>Ipv4Address</a>?</code>
+            </td>
+        </tr><tr>
+            <td><code>v6_address</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#Ipv6Address'>Ipv6Address</a>?</code>
+            </td>
+        </tr></table>
+
+## Subscriber {:#Subscriber}
+*Defined in [fuchsia.net.mdns/mdns.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.net.mdns/mdns.fidl#58)*
+
+ Discoverable protocol for finding service instances.
+
+### SubscribeToService {:#SubscribeToService}
+
+ Subscribes to a service. The subscription lasts until `subscriber` is
+ unbound.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>service</code></td>
+            <td>
+                <code>string[22]</code>
+            </td>
+        </tr><tr>
+            <td><code>subscriber</code></td>
+            <td>
+                <code><a class='link' href='#ServiceSubscriber'>ServiceSubscriber</a></code>
+            </td>
+        </tr></table>
+
+
+
+## Publisher {:#Publisher}
+*Defined in [fuchsia.net.mdns/mdns.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.net.mdns/mdns.fidl#66)*
+
+ Discoverable protocol for publishing service instances.
+
+### PublishServiceInstance {:#PublishServiceInstance}
+
+ Publishes a service instance. `publication_responder` is consulted via its
+ `OnPublication` method for initial announcements and to answer queries.
+ The service is published until the `publication_responder` channel closes. In
+ addition to announcements and queries for the service type, all queries
+ for subtypes are answered subject to filtering through the responder.
+ `perform_probe` indicates whether a probe for a conflicting instance
+ should be performed before publishing the instance. This value should
+ be `true` unless the instance name is known to be unique.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>service</code></td>
+            <td>
+                <code>string[22]</code>
+            </td>
+        </tr><tr>
+            <td><code>instance</code></td>
+            <td>
+                <code>string[63]</code>
+            </td>
+        </tr><tr>
+            <td><code>perform_probe</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr><tr>
+            <td><code>publication_responder</code></td>
+            <td>
+                <code><a class='link' href='#PublicationResponder'>PublicationResponder</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#Publisher_PublishServiceInstance_Result'>Publisher_PublishServiceInstance_Result</a></code>
+            </td>
+        </tr></table>
+
+## ServiceSubscriber {:#ServiceSubscriber}
+*Defined in [fuchsia.net.mdns/mdns.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.net.mdns/mdns.fidl#102)*
+
+ Client-implemented interface for subscribers. Method replies are used to
+ throttle traffic. The service won't necessarily wait for a reply before
+ calling another method.
+
+### OnInstanceDiscovered {:#OnInstanceDiscovered}
+
+ Notifies the subscriber that a service instance has been discovered.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>instance</code></td>
+            <td>
+                <code><a class='link' href='#ServiceInstance'>ServiceInstance</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+### OnInstanceChanged {:#OnInstanceChanged}
+
+ Notifies the subscriber that addresses or text for a known service
+ instance have changed.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>instance</code></td>
+            <td>
+                <code><a class='link' href='#ServiceInstance'>ServiceInstance</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+### OnInstanceLost {:#OnInstanceLost}
+
+ Notifies the subscriber that a known service instance has been lost.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>service</code></td>
+            <td>
+                <code>string[22]</code>
+            </td>
+        </tr><tr>
+            <td><code>instance</code></td>
+            <td>
+                <code>string[63]</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+## PublicationResponder {:#PublicationResponder}
+*Defined in [fuchsia.net.mdns/mdns.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.net.mdns/mdns.fidl#139)*
+
+ Client-supplied publication responder interface.
+
+### OnPublication {:#OnPublication}
+
+ Provides instance information for initial announcements and query
+ responses relating to the service instance specified in
+ `Publisher.PublishServiceInstance`. `query` indicates whether data is
+ requested for an initial announcement (false) or in response to a query
+ (true). If the publication relates to a subtype of the service,
+ `subtype` contains the subtype, otherwise it is null. If `publication`
+ is null, no announcement or response is transmitted. Strings in `text`
+ are transmitted in the TXT record.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>query</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr><tr>
+            <td><code>subtype</code></td>
+            <td>
+                <code>string[63]?</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>publication</code></td>
+            <td>
+                <code><a class='link' href='#Publication'>Publication</a>?</code>
+            </td>
+        </tr></table>
+
+### SetSubtypes {:#SetSubtypes}
+
+ Sets the subtypes for the service instance. The specified subtypes will
+ be announced subject to filtering through the responder. The initial
+ subtype collection is empty.
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>subtypes</code></td>
+            <td>
+                <code>vector&lt;string&gt;</code>
+            </td>
+        </tr></table>
+
+### Reannounce {:#Reannounce}
+
+ Initiates reannouncement of the service instance due to a change in the
+ instance's port number or text strings. All announcements are filtered
+ through `OnPublication`, which replies with the new port and text
+ values.
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
 
 
 ## **STRUCTS**
@@ -430,6 +702,154 @@
         </tr>
 </table>
 
+### Publisher_PublishServiceInstance_Response {:#Publisher_PublishServiceInstance_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr>
+</table>
+
+### ServiceInstance {:#ServiceInstance}
+*Defined in [fuchsia.net.mdns/mdns.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.net.mdns/mdns.fidl#115)*
+
+
+
+ Describes a service instance.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>service</code></td>
+            <td>
+                <code>string[22]</code>
+            </td>
+            <td> The name of the service.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>instance</code></td>
+            <td>
+                <code>string[63]</code>
+            </td>
+            <td> The name of the service instance.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>endpoints</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#Endpoint'>Endpoint</a>&gt;[2]</code>
+            </td>
+            <td> Endpoints for the service. If two endpoints are supplied, one will be a
+ V4 and the other will be a V6.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>text</code></td>
+            <td>
+                <code>vector&lt;string&gt;</code>
+            </td>
+            <td> Text strings describing the instance.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>srv_priority</code></td>
+            <td>
+                <code>uint16</code>
+            </td>
+            <td> The priority of the SRV resource record for this publication. See
+ [RFC6763](https://tools.ietf.org/html/rfc6763) for details.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>srv_weight</code></td>
+            <td>
+                <code>uint16</code>
+            </td>
+            <td> The weight of the SRV resource record for this publication. See
+ [RFC6763](https://tools.ietf.org/html/rfc6763) for details.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Publication {:#Publication}
+*Defined in [fuchsia.net.mdns/mdns.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.net.mdns/mdns.fidl#168)*
+
+
+
+ Describes an initial instance announcement or query response. In typical
+ use, the default SRV priority, SRV weight and TTL values should be used. TTL
+ values are rounded down to the nearest second. TTL values less than one
+ second are not permitted and will result in the `PublicationResponder`
+ channel being closed.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>port</code></td>
+            <td>
+                <code>uint16</code>
+            </td>
+            <td> The port at which the service instance is addressable.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>text</code></td>
+            <td>
+                <code>vector&lt;string&gt;</code>
+            </td>
+            <td> Text strings describing the instance.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>srv_priority</code></td>
+            <td>
+                <code>uint16</code>
+            </td>
+            <td> The priority of the SRV resource record for this publication. See
+ [RFC6763](https://tools.ietf.org/html/rfc6763) for details.
+</td>
+            <td><a class='link' href='#DEFAULT_SRV_PRIORITY'>DEFAULT_SRV_PRIORITY</a></td>
+        </tr><tr>
+            <td><code>srv_weight</code></td>
+            <td>
+                <code>uint16</code>
+            </td>
+            <td> The weight of the SRV resource record for this publication. See
+ [RFC6763](https://tools.ietf.org/html/rfc6763) for details.
+</td>
+            <td><a class='link' href='#DEFAULT_SRV_WEIGHT'>DEFAULT_SRV_WEIGHT</a></td>
+        </tr><tr>
+            <td><code>ptr_ttl</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+            <td> Time-to-live for PTR resource records.
+</td>
+            <td><a class='link' href='#DEFAULT_PTR_TTL'>DEFAULT_PTR_TTL</a></td>
+        </tr><tr>
+            <td><code>srv_ttl</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+            <td> Time-to-live for SRV resource records.
+</td>
+            <td><a class='link' href='#DEFAULT_SRV_TTL'>DEFAULT_SRV_TTL</a></td>
+        </tr><tr>
+            <td><code>txt_ttl</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+            <td> Time-to-live for TXT resource records.
+</td>
+            <td><a class='link' href='#DEFAULT_TXT_TTL'>DEFAULT_TXT_TTL</a></td>
+        </tr>
+</table>
+
 
 
 ## **ENUMS**
@@ -446,26 +866,46 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>INVALID_SERVICE_NAME</code></td>
             <td><code>1</code></td>
-            <td> The specified service name is invalid.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>INVALID_INSTANCE_NAME</code></td>
             <td><code>2</code></td>
-            <td> The specified instance name is invalid.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>ALREADY_PUBLISHED_LOCALLY</code></td>
             <td><code>3</code></td>
-            <td> The specified service instance is already being published by this
- mDNS implementation.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>ALREADY_PUBLISHED_ON_SUBNET</code></td>
             <td><code>4</code></td>
-            <td> The specified service instance is already being published by another
- host on the subnet. This result occurs when an initial probe discovers
- a conflicting instance.
-</td>
+            <td></td>
+        </tr></table>
+
+### Error {:#Error}
+Type: <code>int32</code>
+
+*Defined in [fuchsia.net.mdns/mdns.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.net.mdns/mdns.fidl#82)*
+
+ Error values for instance publishing.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>INVALID_SERVICE_NAME</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>INVALID_INSTANCE_NAME</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>ALREADY_PUBLISHED_LOCALLY</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>ALREADY_PUBLISHED_ON_SUBNET</code></td>
+            <td><code>4</code></td>
+            <td></td>
         </tr></table>
 
 
@@ -493,6 +933,25 @@
             <td></td>
         </tr></table>
 
+### Publisher_PublishServiceInstance_Result {:#Publisher_PublishServiceInstance_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#Publisher_PublishServiceInstance_Response'>Publisher_PublishServiceInstance_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code><a class='link' href='#Error'>Error</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
 
 
 
@@ -542,6 +1001,46 @@
                 <td><code>int64</code></td>
             <td></td>
         </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.net.mdns/mdns.fidl#193">DEFAULT_SRV_PRIORITY</a></td>
+            <td>
+                    <code>0</code>
+                </td>
+                <td><code>uint16</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.net.mdns/mdns.fidl#194">DEFAULT_SRV_WEIGHT</a></td>
+            <td>
+                    <code>0</code>
+                </td>
+                <td><code>uint16</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.net.mdns/mdns.fidl#195">DEFAULT_PTR_TTL</a></td>
+            <td>
+                    <code>4500000000000</code>
+                </td>
+                <td><code>int64</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.net.mdns/mdns.fidl#196">DEFAULT_SRV_TTL</a></td>
+            <td>
+                    <code>120000000000</code>
+                </td>
+                <td><code>int64</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.net.mdns/mdns.fidl#197">DEFAULT_TXT_TTL</a></td>
+            <td>
+                    <code>4500000000000</code>
+                </td>
+                <td><code>int64</code></td>
+            <td></td>
+        </tr>
     
 </table>
 
diff --git a/sdk/fidl/fuchsia.net.oldhttp/index.md b/sdk/fidl/fuchsia.net.oldhttp/index.md
index ae29a65..f655d33 100644
--- a/sdk/fidl/fuchsia.net.oldhttp/index.md
+++ b/sdk/fidl/fuchsia.net.oldhttp/index.md
@@ -98,6 +98,98 @@
             </td>
         </tr></table>
 
+## HttpService {:#HttpService}
+*Defined in [fuchsia.net.oldhttp/http_service.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.net.oldhttp/http_service.fidl#8)*
+
+
+### CreateURLLoader {:#CreateURLLoader}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>loader</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#URLLoader'>URLLoader</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+## URLLoader {:#URLLoader}
+*Defined in [fuchsia.net.oldhttp/url_loader.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.net.oldhttp/url_loader.fidl#21)*
+
+
+### Start {:#Start}
+
+ Loads the given `request`, asynchronously producing `response`. Consult
+ `response` to determine if the request resulted in an error, was
+ redirected, or has a response body to be consumed.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>request</code></td>
+            <td>
+                <code><a class='link' href='#URLRequest'>URLRequest</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#URLResponse'>URLResponse</a></code>
+            </td>
+        </tr></table>
+
+### FollowRedirect {:#FollowRedirect}
+
+ If the request passed to `Start` had `auto_follow_redirects` set to false,
+ then upon receiving an URLResponse with a non-NULL `redirect_url` field,
+ `FollowRedirect` may be called to load the URL indicated by the redirect.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#URLResponse'>URLResponse</a></code>
+            </td>
+        </tr></table>
+
+### QueryStatus {:#QueryStatus}
+
+ Query status about the URLLoader.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#URLLoaderStatus'>URLLoaderStatus</a></code>
+            </td>
+        </tr></table>
+
 
 
 ## **STRUCTS**
@@ -361,6 +453,265 @@
         </tr>
 </table>
 
+### HttpError {:#HttpError}
+*Defined in [fuchsia.net.oldhttp/http_error.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.net.oldhttp/http_error.fidl#7)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>code</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>description</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### HttpHeader {:#HttpHeader}
+*Defined in [fuchsia.net.oldhttp/http_header.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.net.oldhttp/http_header.fidl#7)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>name</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### URLLoaderStatus {:#URLLoaderStatus}
+*Defined in [fuchsia.net.oldhttp/url_loader.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.net.oldhttp/url_loader.fidl#7)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>error</code></td>
+            <td>
+                <code><a class='link' href='#HttpError'>HttpError</a>?</code>
+            </td>
+            <td> If the loader has failed due to a network level error, this field will be
+ set.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>is_loading</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Set to true if the URLLoader is still working. Set to false once an error
+ is encountered or the response body is completely copied to the response
+ body stream.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### URLRequest {:#URLRequest}
+*Defined in [fuchsia.net.oldhttp/url_request.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.net.oldhttp/url_request.fidl#35)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>url</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> The URL to load.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>method</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> The HTTP method if applicable.
+</td>
+            <td>GET</td>
+        </tr><tr>
+            <td><code>headers</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#HttpHeader'>HttpHeader</a>&gt;?</code>
+            </td>
+            <td> Additional HTTP request headers.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>body</code></td>
+            <td>
+                <code><a class='link' href='#URLBody'>URLBody</a>?</code>
+            </td>
+            <td> The payload for the request body. For HTTP requests, the method must be set
+ to "POST" or "PUT". If a buffer is used for the body, a Content-Length
+ header will automatically be added.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>response_body_buffer_size</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> The buffer size of the socket returned in URLResponse's `body` member.
+ A value of 0 indicates that the default buffer size should be used.  This
+ value is just a suggestion. The URLLoader may choose to ignore this value.
+</td>
+            <td>0</td>
+        </tr><tr>
+            <td><code>auto_follow_redirects</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> If set to true, then redirects will be automatically followed. Otherwise,
+ when a redirect is encounterd, FollowRedirect must be called to proceed.
+</td>
+            <td>false</td>
+        </tr><tr>
+            <td><code>cache_mode</code></td>
+            <td>
+                <code><a class='link' href='#CacheMode'>CacheMode</a></code>
+            </td>
+            <td> The cache behavior for the request.
+</td>
+            <td><a class='link' href='#CacheMode.DEFAULT'>CacheMode.DEFAULT</a></td>
+        </tr><tr>
+            <td><code>response_body_mode</code></td>
+            <td>
+                <code><a class='link' href='#ResponseBodyMode'>ResponseBodyMode</a></code>
+            </td>
+            <td> The response body mode.
+</td>
+            <td><a class='link' href='#ResponseBodyMode.STREAM'>ResponseBodyMode.STREAM</a></td>
+        </tr>
+</table>
+
+### URLResponse {:#URLResponse}
+*Defined in [fuchsia.net.oldhttp/url_response.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.net.oldhttp/url_response.fidl#7)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>error</code></td>
+            <td>
+                <code><a class='link' href='#HttpError'>HttpError</a>?</code>
+            </td>
+            <td> If the response resulted in a network level error, this field will be set.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>body</code></td>
+            <td>
+                <code><a class='link' href='#URLBody'>URLBody</a>?</code>
+            </td>
+            <td> The response body.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>url</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td> The final URL of the response, after redirects have been followed.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>status_code</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> The HTTP status code. 0 if not applicable.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>status_line</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td> The HTTP status line.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>headers</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#HttpHeader'>HttpHeader</a>&gt;?</code>
+            </td>
+            <td> The HTTP response headers.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>mime_type</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td> The MIME type of the response body.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>charset</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td> The character set of the response body.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>redirect_method</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td> These fields are set to non-NULL if this response corresponds to a
+ redirect.  Call the `FollowRedirect` method on the URLLoader instance to
+ follow this redirect.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>redirect_url</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>redirect_referrer</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
 
 
 ## **ENUMS**
@@ -377,22 +728,15 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>DEFAULT</code></td>
             <td><code>0</code></td>
-            <td> Default behavior.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>BYPASS_CACHE</code></td>
             <td><code>1</code></td>
-            <td> The HTTP request will bypass the local cache and will have a
- 'Cache-Control: nocache' header added in that causes any proxy servers
- to also not satisfy the request from their cache.  This has the effect
- of forcing a full end-to-end fetch.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>ONLY_FROM_CACHE</code></td>
             <td><code>2</code></td>
-            <td> The HTTP request will fail if it cannot serve the requested resource
- from the cache (or some equivalent local store).
-</td>
+            <td></td>
         </tr></table>
 
 ### ResponseBodyMode {:#ResponseBodyMode}
@@ -407,20 +751,61 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>BUFFER</code></td>
             <td><code>0</code></td>
-            <td> The complete response body should be returned in the `buffer` field of
- the response body.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>STREAM</code></td>
             <td><code>1</code></td>
-            <td> The response body should be streamed through the `stream` field of the
- response body.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>BUFFER_OR_STREAM</code></td>
             <td><code>2</code></td>
-            <td> The response body may be returned as a buffer or stream.
-</td>
+            <td></td>
+        </tr></table>
+
+### CacheMode {:#CacheMode}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.net.oldhttp/url_request.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.net.oldhttp/url_request.fidl#8)*
+
+ Specify the cache behavior of the request.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>DEFAULT</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>BYPASS_CACHE</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>ONLY_FROM_CACHE</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr></table>
+
+### ResponseBodyMode {:#ResponseBodyMode}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.net.oldhttp/url_request.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.net.oldhttp/url_request.fidl#24)*
+
+ Specify the mechanism used to return the response body.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>BUFFER</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>STREAM</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>BUFFER_OR_STREAM</code></td>
+            <td><code>2</code></td>
+            <td></td>
         </tr></table>
 
 
@@ -450,6 +835,27 @@
 </td>
         </tr></table>
 
+### URLBody {:#URLBody}
+*Defined in [fuchsia.net.oldhttp/url_body.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.net.oldhttp/url_body.fidl#9)*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>stream</code></td>
+            <td>
+                <code>handle&lt;socket&gt;</code>
+            </td>
+            <td> A socket that will contain the streaming request or response body.
+</td>
+        </tr><tr>
+            <td><code>buffer</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.mem/index.html'>fuchsia.mem</a>/<a class='link' href='../fuchsia.mem/index.html#Buffer'>Buffer</a></code>
+            </td>
+            <td> A shared buffer that will contain the complete request or response body.
+</td>
+        </tr></table>
+
 
 
 
diff --git a/sdk/fidl/fuchsia.net.stack/index.md b/sdk/fidl/fuchsia.net.stack/index.md
index 2aa77ac..9f0dd9c 100644
--- a/sdk/fidl/fuchsia.net.stack/index.md
+++ b/sdk/fidl/fuchsia.net.stack/index.md
@@ -784,13 +784,11 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>ADDED</code></td>
             <td><code>1</code></td>
-            <td> The interface is added.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>REMOVED</code></td>
             <td><code>2</code></td>
-            <td> The interface is removed.
-</td>
+            <td></td>
         </tr></table>
 
 ### PhysicalStatus {:#PhysicalStatus}
@@ -804,13 +802,11 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>DOWN</code></td>
             <td><code>1</code></td>
-            <td> The link is not attached to the medium.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>UP</code></td>
             <td><code>2</code></td>
-            <td> The link is attached to the medium.
-</td>
+            <td></td>
         </tr></table>
 
 ### AdministrativeStatus {:#AdministrativeStatus}
@@ -824,13 +820,11 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>DISABLED</code></td>
             <td><code>1</code></td>
-            <td> The interface is administratively disabled.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>ENABLED</code></td>
             <td><code>2</code></td>
-            <td> The interface is administratively enabled.
-</td>
+            <td></td>
         </tr></table>
 
 ### Error {:#Error}
diff --git a/sdk/fidl/fuchsia.net/index.md b/sdk/fidl/fuchsia.net/index.md
index 84237fc..75987ba 100644
--- a/sdk/fidl/fuchsia.net/index.md
+++ b/sdk/fidl/fuchsia.net/index.md
@@ -89,6 +89,89 @@
             </td>
         </tr></table>
 
+## Connectivity {:#Connectivity}
+*Defined in [fuchsia.net/connectivity.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-net/connectivity.fidl#8)*
+
+
+### OnNetworkReachable {:#OnNetworkReachable}
+
+ This is triggered on a state change in network reachability. Clients
+ should expect that network requests will succeed when `reachable` is
+ true.
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>reachable</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr></table>
+
+## NameLookup {:#NameLookup}
+*Defined in [fuchsia.net/namelookup.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-net/namelookup.fidl#41)*
+
+
+### LookupIp {:#LookupIp}
+
+ Look up a list of IP addresses by hostname.
+
+ If `hostname` is an Internationalized Domain Name, it must be encoded as per RFC 3490.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>hostname</code></td>
+            <td>
+                <code>string[255]</code>
+            </td>
+        </tr><tr>
+            <td><code>options</code></td>
+            <td>
+                <code><a class='link' href='#LookupIpOptions'>LookupIpOptions</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#NameLookup_LookupIp_Result'>NameLookup_LookupIp_Result</a></code>
+            </td>
+        </tr></table>
+
+### LookupHostname {:#LookupHostname}
+
+ Look up a hostname by IP address.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>addr</code></td>
+            <td>
+                <code><a class='link' href='#IpAddress'>IpAddress</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#NameLookup_LookupHostname_Result'>NameLookup_LookupHostname_Result</a></code>
+            </td>
+        </tr></table>
+
 
 
 ## **STRUCTS**
@@ -286,6 +369,199 @@
         </tr>
 </table>
 
+### NameLookup_LookupIp_Response {:#NameLookup_LookupIp_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>addr</code></td>
+            <td>
+                <code><a class='link' href='#IpAddressInfo'>IpAddressInfo</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### NameLookup_LookupHostname_Response {:#NameLookup_LookupHostname_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>hostname</code></td>
+            <td>
+                <code>string[255]</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### IpAddressInfo {:#IpAddressInfo}
+*Defined in [fuchsia.net/namelookup.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-net/namelookup.fidl#7)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>ipv4_addrs</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#Ipv4Address'>Ipv4Address</a>&gt;</code>
+            </td>
+            <td> All of the IPv4 addresses for the requested hostname.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>ipv6_addrs</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#Ipv6Address'>Ipv6Address</a>&gt;</code>
+            </td>
+            <td> All of the IPv6 addresses for the requested hostname.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>canonical_name</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td> The canonical name of the requested hostname (usually the DNS CNAME record, if one exists).
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Ipv4Address {:#Ipv4Address}
+*Defined in [fuchsia.net/net.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-net/net.fidl#9)*
+
+
+
+ Ipv4Address is expressed in network byte order, so the most significant byte
+ ("127" in the address "127.0.0.1") will be at index 0.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>addr</code></td>
+            <td>
+                <code>uint8[4]</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Ipv6Address {:#Ipv6Address}
+*Defined in [fuchsia.net/net.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-net/net.fidl#15)*
+
+
+
+ Ipv6Address is expressed in network byte order, so the most significant byte
+ ("ff" in the address "ff02::1") will be at index 0.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>addr</code></td>
+            <td>
+                <code>uint8[16]</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Endpoint {:#Endpoint}
+*Defined in [fuchsia.net/net.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-net/net.fidl#28)*
+
+
+
+ Endpoint describes an IP address and port. The network protocol associated
+ with the Endpoint will be known from context or communicated through
+ additional structures.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>addr</code></td>
+            <td>
+                <code><a class='link' href='#IpAddress'>IpAddress</a></code>
+            </td>
+            <td> The IP address of the endpoint.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>port</code></td>
+            <td>
+                <code>uint16</code>
+            </td>
+            <td> The port number of the endpoint.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Subnet {:#Subnet}
+*Defined in [fuchsia.net/net.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-net/net.fidl#38)*
+
+
+
+ Subnet describes an IP subnetwork, where all host IP addresses share the same most significant
+ bits.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>addr</code></td>
+            <td>
+                <code><a class='link' href='#IpAddress'>IpAddress</a></code>
+            </td>
+            <td> The Ipv4 or Ipv6 address. Only the `prefix_len` most significant bits may be set in `addr`;
+ all bits in the host portion of the address must be zero.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>prefix_len</code></td>
+            <td>
+                <code>uint8</code>
+            </td>
+            <td> The prefix length of the netmask. E.g. for 192.168.1.0/24, the prefix
+ length is 24, corresponding to a netmask of 255.255.255.0.
+ For Ipv4, prefix_len must be in the range [0, 32].
+ For Ipv6, prefix_len must be in the range [0, 128].
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### MacAddress {:#MacAddress}
+*Defined in [fuchsia.net/net.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-net/net.fidl#51)*
+
+
+
+ A MAC address used to identify a network interface on the data link layer within the network.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>octets</code></td>
+            <td>
+                <code>uint8[6]</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
 
 
 ## **ENUMS**
@@ -301,25 +577,45 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>NOT_FOUND</code></td>
             <td><code>1</code></td>
-            <td> No result was found for this query.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>TRANSIENT</code></td>
             <td><code>2</code></td>
-            <td> The lookup failed, but may succeed at a later time. For instance, the
- network or DNS server may be unreachable.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>INVALID_ARGS</code></td>
             <td><code>3</code></td>
-            <td> The lookup failed due to an invalid argument (for instance, the hostname was not encoded
- correctly, or was too long).
-</td>
+            <td></td>
         </tr><tr>
             <td><code>INTERNAL_ERROR</code></td>
             <td><code>4</code></td>
-            <td> The lookup failed due to an internal error.
-</td>
+            <td></td>
+        </tr></table>
+
+### LookupError {:#LookupError}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.net/namelookup.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-net/namelookup.fidl#16)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>NOT_FOUND</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>TRANSIENT</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>INVALID_ARGS</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>INTERNAL_ERROR</code></td>
+            <td><code>4</code></td>
+            <td></td>
         </tr></table>
 
 
@@ -386,6 +682,64 @@
             <td></td>
         </tr></table>
 
+### NameLookup_LookupIp_Result {:#NameLookup_LookupIp_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#NameLookup_LookupIp_Response'>NameLookup_LookupIp_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code><a class='link' href='#LookupError'>LookupError</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### NameLookup_LookupHostname_Result {:#NameLookup_LookupHostname_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#NameLookup_LookupHostname_Response'>NameLookup_LookupHostname_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code><a class='link' href='#LookupError'>LookupError</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### IpAddress {:#IpAddress}
+*Defined in [fuchsia.net/net.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-net/net.fidl#20)*
+
+ Represents an IP address that may be either v4 or v6.
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>ipv4</code></td>
+            <td>
+                <code><a class='link' href='#Ipv4Address'>Ipv4Address</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>ipv6</code></td>
+            <td>
+                <code><a class='link' href='#Ipv6Address'>Ipv6Address</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
 
 
 
@@ -414,6 +768,28 @@
 </td>
         </tr></table>
 
+### LookupIpOptions {:#LookupIpOptions}
+Type: <code>uint8</code>
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td>V4_ADDRS</td>
+            <td>1</td>
+            <td> If the lookup should return IPv4 addresses.
+</td>
+        </tr><tr>
+            <td>V6_ADDRS</td>
+            <td>2</td>
+            <td> If the lookup should return IPv6 addresses.
+</td>
+        </tr><tr>
+            <td>CNAME_LOOKUP</td>
+            <td>4</td>
+            <td> If the lookup should return a canonical_name, if one exists.
+</td>
+        </tr></table>
+
 
 
 ## **CONSTANTS**
@@ -427,6 +803,14 @@
                 <td><code>uint64</code></td>
             <td></td>
         </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-net/namelookup.fidl#38">MAX_HOSTNAME_SIZE</a></td>
+            <td>
+                    <code>255</code>
+                </td>
+                <td><code>uint64</code></td>
+            <td></td>
+        </tr>
     
 </table>
 
diff --git a/sdk/fidl/fuchsia.netstack/index.md b/sdk/fidl/fuchsia.netstack/index.md
index e7d2c7e..9c26a07 100644
--- a/sdk/fidl/fuchsia.netstack/index.md
+++ b/sdk/fidl/fuchsia.netstack/index.md
@@ -7,7 +7,7 @@
 ## **PROTOCOLS**
 
 ## Netstack {:#Netstack}
-*Defined in [fuchsia.netstack/netstack.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.netstack/netstack.fidl#123)*
+*Defined in [fuchsia.netstack/netstack.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.netstack/netstack.fidl#109)*
 
 
 ### GetPortForService {:#GetPortForService}
@@ -157,30 +157,6 @@
             </td>
         </tr></table>
 
-### GetStats {:#GetStats}
-
-
-#### Request
-<table>
-    <tr><th>Name</th><th>Type</th></tr>
-    <tr>
-            <td><code>nicid</code></td>
-            <td>
-                <code>uint32</code>
-            </td>
-        </tr></table>
-
-
-#### Response
-<table>
-    <tr><th>Name</th><th>Type</th></tr>
-    <tr>
-            <td><code>stats</code></td>
-            <td>
-                <code><a class='link' href='#NetInterfaceStats'>NetInterfaceStats</a></code>
-            </td>
-        </tr></table>
-
 ### SetInterfaceStatus {:#SetInterfaceStatus}
 
  Sets the status (up or down) for the interface with the given nicid.
@@ -440,7 +416,7 @@
         </tr></table>
 
 ## ResolverAdmin {:#ResolverAdmin}
-*Defined in [fuchsia.netstack/netstack.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.netstack/netstack.fidl#182)*
+*Defined in [fuchsia.netstack/netstack.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.netstack/netstack.fidl#165)*
 
 
 ### SetNameServers {:#SetNameServers}
@@ -459,7 +435,487 @@
 
 
 ## RouteTableTransaction {:#RouteTableTransaction}
-*Defined in [fuchsia.netstack/netstack.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.netstack/netstack.fidl#187)*
+*Defined in [fuchsia.netstack/netstack.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.netstack/netstack.fidl#170)*
+
+
+### AddRoute {:#AddRoute}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>r</code></td>
+            <td>
+                <code><a class='link' href='#RouteTableEntry2'>RouteTableEntry2</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### DelRoute {:#DelRoute}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>r</code></td>
+            <td>
+                <code><a class='link' href='#RouteTableEntry2'>RouteTableEntry2</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+## Netstack {:#Netstack}
+*Defined in [fuchsia.netstack/netstack.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.netstack/netstack.fidl#109)*
+
+
+### GetPortForService {:#GetPortForService}
+
+ Finds the port number from a given service name and protocol. [service] can be a
+ number like "42", or a service name like "http". If [protocol] is UNSPECIFIED,
+ the service is checked for TCP first, then UDP.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>service</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>protocol</code></td>
+            <td>
+                <code><a class='link' href='#Protocol'>Protocol</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>port</code></td>
+            <td>
+                <code>uint16</code>
+            </td>
+        </tr></table>
+
+### GetAddress {:#GetAddress}
+
+ Finds the IP address for a given host name and port. This may issue network
+ requests via DNS to look up domain names. E.g.
+ GetAddress("example.com", 80) -> [{142.42.42.1}]
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>address</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>port</code></td>
+            <td>
+                <code>uint16</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>addresses</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#SocketAddress'>SocketAddress</a>&gt;</code>
+            </td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code><a class='link' href='#NetErr'>NetErr</a></code>
+            </td>
+        </tr></table>
+
+### GetInterfaces {:#GetInterfaces}
+
+ Returns the list of registered network interfaces.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>interfaces</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#NetInterface'>NetInterface</a>&gt;</code>
+            </td>
+        </tr></table>
+
+### GetInterfaces2 {:#GetInterfaces2}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>interfaces</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#NetInterface2'>NetInterface2</a>&gt;</code>
+            </td>
+        </tr></table>
+
+### GetRouteTable {:#GetRouteTable}
+
+ Returns current route table.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>rt</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#RouteTableEntry'>RouteTableEntry</a>&gt;</code>
+            </td>
+        </tr></table>
+
+### GetRouteTable2 {:#GetRouteTable2}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>rt</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#RouteTableEntry2'>RouteTableEntry2</a>&gt;</code>
+            </td>
+        </tr></table>
+
+### SetInterfaceStatus {:#SetInterfaceStatus}
+
+ Sets the status (up or down) for the interface with the given nicid.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>nicid</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>enabled</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr></table>
+
+
+
+### SetInterfaceAddress {:#SetInterfaceAddress}
+
+ Sets the address for the interface with the given nicid.
+ Masks off addr.PrefixLen bits from addr.Addr to set the subnet.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>nicid</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>addr</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#IpAddress'>IpAddress</a></code>
+            </td>
+        </tr><tr>
+            <td><code>prefixLen</code></td>
+            <td>
+                <code>uint8</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#NetErr'>NetErr</a></code>
+            </td>
+        </tr></table>
+
+### RemoveInterfaceAddress {:#RemoveInterfaceAddress}
+
+ Removes the address for the interface with the given nicid.
+ Masks off addr.PrefixLen bits from addr.Addr to set the subnet.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>nicid</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>addr</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#IpAddress'>IpAddress</a></code>
+            </td>
+        </tr><tr>
+            <td><code>prefixLen</code></td>
+            <td>
+                <code>uint8</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#NetErr'>NetErr</a></code>
+            </td>
+        </tr></table>
+
+### SetInterfaceMetric {:#SetInterfaceMetric}
+
+ Sets the route metric for the interface with the given nicid.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>nicid</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>metric</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#NetErr'>NetErr</a></code>
+            </td>
+        </tr></table>
+
+### BridgeInterfaces {:#BridgeInterfaces}
+
+ Creates a bridge and returns the newly created nicid or an
+ error if the creation fails.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>nicids</code></td>
+            <td>
+                <code>vector&lt;uint32&gt;</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#NetErr'>NetErr</a></code>
+            </td>
+        </tr><tr>
+            <td><code>nicid</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr></table>
+
+### AddEthernetDevice {:#AddEthernetDevice}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>topological_path</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>interfaceConfig</code></td>
+            <td>
+                <code><a class='link' href='#InterfaceConfig'>InterfaceConfig</a></code>
+            </td>
+        </tr><tr>
+            <td><code>device</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.hardware.ethernet/index.html'>fuchsia.hardware.ethernet</a>/<a class='link' href='../fuchsia.hardware.ethernet/index.html#Device'>Device</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>nicid</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr></table>
+
+### GetDhcpClient {:#GetDhcpClient}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>nicid</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>client</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='../fuchsia.net.dhcp/index.html'>fuchsia.net.dhcp</a>/<a class='link' href='../fuchsia.net.dhcp/index.html#Client'>Client</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#Netstack_GetDhcpClient_Result'>Netstack_GetDhcpClient_Result</a></code>
+            </td>
+        </tr></table>
+
+### StartRouteTableTransaction {:#StartRouteTableTransaction}
+
+ Begin a route transaction for atomically getting and setting the route
+ table.  Returns true if a transaction can be started.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>routeTableTransaction</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#RouteTableTransaction'>RouteTableTransaction</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### OnInterfacesChanged {:#OnInterfacesChanged}
+
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>interfaces</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#NetInterface'>NetInterface</a>&gt;</code>
+            </td>
+        </tr></table>
+
+## ResolverAdmin {:#ResolverAdmin}
+*Defined in [fuchsia.netstack/netstack.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.netstack/netstack.fidl#165)*
+
+
+### SetNameServers {:#SetNameServers}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>servers</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#IpAddress'>IpAddress</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+## RouteTableTransaction {:#RouteTableTransaction}
+*Defined in [fuchsia.netstack/netstack.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.netstack/netstack.fidl#170)*
 
 
 ### AddRoute {:#AddRoute}
@@ -550,67 +1006,8 @@
         </tr>
 </table>
 
-### NetTrafficStats {:#NetTrafficStats}
-*Defined in [fuchsia.netstack/netstack.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.netstack/netstack.fidl#32)*
-
-
-
-
-
-<table>
-    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
-            <td><code>pkts_total</code></td>
-            <td>
-                <code>uint64</code>
-            </td>
-            <td></td>
-            <td>No default</td>
-        </tr><tr>
-            <td><code>bytes_total</code></td>
-            <td>
-                <code>uint64</code>
-            </td>
-            <td></td>
-            <td>No default</td>
-        </tr>
-</table>
-
-### NetInterfaceStats {:#NetInterfaceStats}
-*Defined in [fuchsia.netstack/netstack.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.netstack/netstack.fidl#37)*
-
-
-
-
-
-<table>
-    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
-            <td><code>up_since</code></td>
-            <td>
-                <code>int64</code>
-            </td>
-            <td> Placeholder for all statistics regarding the network interface,
- including, but not limited to traffic itself.
-</td>
-            <td>No default</td>
-        </tr><tr>
-            <td><code>rx</code></td>
-            <td>
-                <code><a class='link' href='#NetTrafficStats'>NetTrafficStats</a></code>
-            </td>
-            <td></td>
-            <td>No default</td>
-        </tr><tr>
-            <td><code>tx</code></td>
-            <td>
-                <code><a class='link' href='#NetTrafficStats'>NetTrafficStats</a></code>
-            </td>
-            <td></td>
-            <td>No default</td>
-        </tr>
-</table>
-
 ### InterfaceConfig {:#InterfaceConfig}
-*Defined in [fuchsia.netstack/netstack.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.netstack/netstack.fidl#46)*
+*Defined in [fuchsia.netstack/netstack.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.netstack/netstack.fidl#32)*
 
 
 
@@ -653,7 +1050,7 @@
 </table>
 
 ### NetInterface {:#NetInterface}
-*Defined in [fuchsia.netstack/netstack.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.netstack/netstack.fidl#65)*
+*Defined in [fuchsia.netstack/netstack.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.netstack/netstack.fidl#51)*
 
 
 
@@ -735,7 +1132,7 @@
 </table>
 
 ### NetInterface2 {:#NetInterface2}
-*Defined in [fuchsia.netstack/netstack.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.netstack/netstack.fidl#81)*
+*Defined in [fuchsia.netstack/netstack.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.netstack/netstack.fidl#67)*
 
 
 
@@ -824,7 +1221,7 @@
 </table>
 
 ### RouteTableEntry {:#RouteTableEntry}
-*Defined in [fuchsia.netstack/netstack.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.netstack/netstack.fidl#99)*
+*Defined in [fuchsia.netstack/netstack.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.netstack/netstack.fidl#85)*
 
 
 
@@ -863,7 +1260,7 @@
 </table>
 
 ### RouteTableEntry2 {:#RouteTableEntry2}
-*Defined in [fuchsia.netstack/netstack.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.netstack/netstack.fidl#109)*
+*Defined in [fuchsia.netstack/netstack.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.netstack/netstack.fidl#95)*
 
 
 
@@ -910,7 +1307,368 @@
 </table>
 
 ### SocketAddress {:#SocketAddress}
-*Defined in [fuchsia.netstack/netstack.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.netstack/netstack.fidl#117)*
+*Defined in [fuchsia.netstack/netstack.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.netstack/netstack.fidl#103)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>addr</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#IpAddress'>IpAddress</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>port</code></td>
+            <td>
+                <code>uint16</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Netstack_GetDhcpClient_Response {:#Netstack_GetDhcpClient_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr>
+</table>
+
+### NetErr {:#NetErr}
+*Defined in [fuchsia.netstack/netstack.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.netstack/netstack.fidl#27)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#Status'>Status</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>message</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### InterfaceConfig {:#InterfaceConfig}
+*Defined in [fuchsia.netstack/netstack.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.netstack/netstack.fidl#32)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>name</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>filepath</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> An unstable file path corresponding to the interface. Used in watching the creation
+ and destruction of the interface, or in accessing the interface using netdump.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>metric</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>ip_address_config</code></td>
+            <td>
+                <code><a class='link' href='#IpAddressConfig'>IpAddressConfig</a></code>
+            </td>
+            <td> Deprecated; to configure a network interface, use SetDhcpClientStatus
+ and SetInterfaceAddress instead.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### NetInterface {:#NetInterface}
+*Defined in [fuchsia.netstack/netstack.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.netstack/netstack.fidl#51)*
+
+
+
+ https://linux.die.net/man/7/netdevice
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>flags</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>features</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>configuration</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>name</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>addr</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#IpAddress'>IpAddress</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>netmask</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#IpAddress'>IpAddress</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>broadaddr</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#IpAddress'>IpAddress</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>ipv6addrs</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#Subnet'>Subnet</a>&gt;</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>hwaddr</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### NetInterface2 {:#NetInterface2}
+*Defined in [fuchsia.netstack/netstack.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.netstack/netstack.fidl#67)*
+
+
+
+ New version that includes a metric value.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>flags</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>features</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>configuration</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>metric</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>name</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>addr</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#IpAddress'>IpAddress</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>netmask</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#IpAddress'>IpAddress</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>broadaddr</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#IpAddress'>IpAddress</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>ipv6addrs</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#Subnet'>Subnet</a>&gt;</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>hwaddr</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### RouteTableEntry {:#RouteTableEntry}
+*Defined in [fuchsia.netstack/netstack.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.netstack/netstack.fidl#85)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>destination</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#IpAddress'>IpAddress</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>netmask</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#IpAddress'>IpAddress</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>gateway</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#IpAddress'>IpAddress</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>nicid</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### RouteTableEntry2 {:#RouteTableEntry2}
+*Defined in [fuchsia.netstack/netstack.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.netstack/netstack.fidl#95)*
+
+
+
+ New version that includes a metric value.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>destination</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#IpAddress'>IpAddress</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>netmask</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#IpAddress'>IpAddress</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>gateway</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#IpAddress'>IpAddress</a>?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>nicid</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>metric</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SocketAddress {:#SocketAddress}
+*Defined in [fuchsia.netstack/netstack.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.netstack/netstack.fidl#103)*
 
 
 
@@ -994,6 +1752,62 @@
             <td></td>
         </tr></table>
 
+### Protocol {:#Protocol}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.netstack/netstack.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.netstack/netstack.fidl#12)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>UNSPECIFIED</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>UDP</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>TCP</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr></table>
+
+### Status {:#Status}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.netstack/netstack.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.netstack/netstack.fidl#18)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>OK</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>UNKNOWN_ERROR</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>DNS_ERROR</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PARSE_ERROR</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>IPV4_ONLY</code></td>
+            <td><code>4</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>UNKNOWN_INTERFACE</code></td>
+            <td><code>5</code></td>
+            <td></td>
+        </tr></table>
+
 
 
 
@@ -1020,7 +1834,45 @@
         </tr></table>
 
 ### IpAddressConfig {:#IpAddressConfig}
-*Defined in [fuchsia.netstack/netstack.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.netstack/netstack.fidl#59)*
+*Defined in [fuchsia.netstack/netstack.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.netstack/netstack.fidl#45)*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>static_ip</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.net/index.html'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/index.html#Subnet'>Subnet</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>dhcp</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### Netstack_GetDhcpClient_Result {:#Netstack_GetDhcpClient_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#Netstack_GetDhcpClient_Response'>Netstack_GetDhcpClient_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### IpAddressConfig {:#IpAddressConfig}
+*Defined in [fuchsia.netstack/netstack.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.netstack/netstack.fidl#45)*
 
 
 <table>
@@ -1048,7 +1900,7 @@
 
 <table>
     <tr><th>Name</th><th>Value</th><th>Type</th><th>Description</th></tr><tr>
-            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.netstack/netstack.fidl#96">NetInterfaceFlagUp</a></td>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.netstack/netstack.fidl#82">NetInterfaceFlagUp</a></td>
             <td>
                     <code>1</code>
                 </td>
@@ -1057,7 +1909,24 @@
 </td>
         </tr>
     <tr>
-            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.netstack/netstack.fidl#97">NetInterfaceFlagDhcp</a></td>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.netstack/netstack.fidl#83">NetInterfaceFlagDhcp</a></td>
+            <td>
+                    <code>2</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.netstack/netstack.fidl#82">NetInterfaceFlagUp</a></td>
+            <td>
+                    <code>1</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Flags for NetInterface.flags.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.netstack/netstack.fidl#83">NetInterfaceFlagDhcp</a></td>
             <td>
                     <code>2</code>
                 </td>
diff --git a/sdk/fidl/fuchsia.paver/index.md b/sdk/fidl/fuchsia.paver/index.md
index 2052c51..ebff451 100644
--- a/sdk/fidl/fuchsia.paver/index.md
+++ b/sdk/fidl/fuchsia.paver/index.md
@@ -611,13 +611,11 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>KERNEL</code></td>
             <td><code>1</code></td>
-            <td> Zircon Boot Image (ZBI) containing the kernel image as well as bootfs.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>VERIFIED_BOOT_METADATA</code></td>
             <td><code>2</code></td>
-            <td> Metadata used for verified boot purposes.
-</td>
+            <td></td>
         </tr></table>
 
 ### ConfigurationStatus {:#ConfigurationStatus}
@@ -632,18 +630,15 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>HEALTHY</code></td>
             <td><code>1</code></td>
-            <td> Bootable and health checked.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>PENDING</code></td>
             <td><code>2</code></td>
-            <td> Bootable but not yet marked healthy.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>UNBOOTABLE</code></td>
             <td><code>3</code></td>
-            <td> Unbootable.
-</td>
+            <td></td>
         </tr></table>
 
 
diff --git a/sdk/fidl/fuchsia.pkg/index.md b/sdk/fidl/fuchsia.pkg/index.md
index e3e16b3..6979dfd 100644
--- a/sdk/fidl/fuchsia.pkg/index.md
+++ b/sdk/fidl/fuchsia.pkg/index.md
@@ -704,13 +704,11 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>LIGHTBULB</code></td>
             <td><code>0</code></td>
-            <td> Does nothing, but visible in inspect.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>DOWNLOAD_BLOB</code></td>
             <td><code>1</code></td>
-            <td> Perform blob downloading in the package resolver instead of amber.
-</td>
+            <td></td>
         </tr></table>
 
 
diff --git a/sdk/fidl/fuchsia.posix.socket/index.md b/sdk/fidl/fuchsia.posix.socket/index.md
index 190517d..238a916 100644
--- a/sdk/fidl/fuchsia.posix.socket/index.md
+++ b/sdk/fidl/fuchsia.posix.socket/index.md
@@ -480,6 +480,480 @@
             </td>
         </tr></table>
 
+## Control {:#Control}
+*Defined in [fuchsia.posix.socket/socket.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-posix-socket/socket.fidl#26)*
+
+ The control plane for a network socket.
+
+ Once a socket has been retrieved from a `Provider`, this interface is then used to further
+ configure and use the socket. This interface is essentially POSIX. Its implementation must
+ support Linux-specific arguments to {Get,Set}SockOpt.
+
+ *Warning:* This protocol is not yet ready for direct use by clients. Instead, clients should
+ use the BSD sockets API to interact with sockets. We plan to change this protocol substantially
+ and clients that couple directly to this protocol will make those changes more difficult.
+
+### Clone {:#Clone}
+
+ Create another connection to the same remote object.
+
+ `flags` may be any of:
+
+ - `OPEN_RIGHT_*`
+ - `OPEN_FLAG_APPEND`
+ - `OPEN_FLAG_NO_REMOTE`
+ - `OPEN_FLAG_DESCRIBE`
+ - `CLONE_FLAG_SAME_RIGHTS`
+
+ All other flags are ignored.
+
+ The `OPEN_RIGHT_*` bits in `flags` request corresponding rights over the resulting
+ cloned object.
+ The cloned object must have rights less than or equal to the original object.
+ Alternatively, pass `CLONE_FLAG_SAME_RIGHTS` to inherit the rights on the source connection.
+ It is invalid to pass any of the `OPEN_RIGHT_*` flags together with
+ `CLONE_FLAG_SAME_RIGHTS`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>flags</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>object</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='../fuchsia.io/index.html'>fuchsia.io</a>/<a class='link' href='../fuchsia.io/index.html#Node'>Node</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### Close {:#Close}
+
+ Terminates connection with object.
+
+ This method does not require any rights.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### Describe {:#Describe}
+
+ Returns extra information about the type of the object.
+ If the `Describe` operation fails, the connection is closed.
+
+ This method does not require any rights.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>info</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.io/index.html'>fuchsia.io</a>/<a class='link' href='../fuchsia.io/index.html#NodeInfo'>NodeInfo</a></code>
+            </td>
+        </tr></table>
+
+### OnOpen {:#OnOpen}
+
+ An event produced eagerly by a FIDL server if requested by `OPEN_FLAG_DESCRIBE`.
+
+ Indicates the success or failure of the open operation, and optionally describes the
+ object. If the status is `ZX_OK`, `info` contains descriptive information about the object
+ (the same as would be returned by `Describe`).
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr><tr>
+            <td><code>info</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.io/index.html'>fuchsia.io</a>/<a class='link' href='../fuchsia.io/index.html#NodeInfo'>NodeInfo</a>?</code>
+            </td>
+        </tr></table>
+
+### Sync {:#Sync}
+
+ Synchronizes updates to the node to the underlying media, if it exists.
+
+ This method does not require any rights.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### GetAttr {:#GetAttr}
+
+ Acquires information about the node.
+
+ This method does not require any rights.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr><tr>
+            <td><code>attributes</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.io/index.html'>fuchsia.io</a>/<a class='link' href='../fuchsia.io/index.html#NodeAttributes'>NodeAttributes</a></code>
+            </td>
+        </tr></table>
+
+### SetAttr {:#SetAttr}
+
+ Updates information about the node.
+ `flags` may be any of `NODE_ATTRIBUTE_FLAG_*`.
+
+ This method requires following rights: `OPEN_RIGHT_WRITABLE`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>flags</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>attributes</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.io/index.html'>fuchsia.io</a>/<a class='link' href='../fuchsia.io/index.html#NodeAttributes'>NodeAttributes</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### Bind {:#Bind}
+
+ Sets the local address used for the socket.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>addr</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;[128]</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>code</code></td>
+            <td>
+                <code>int16</code>
+            </td>
+        </tr></table>
+
+### Connect {:#Connect}
+
+ Initiates a connection to a remote address.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>addr</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;[128]</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>code</code></td>
+            <td>
+                <code>int16</code>
+            </td>
+        </tr></table>
+
+### Listen {:#Listen}
+
+ Begins listening for new incoming connections. At most `backlog` connections will be
+ buffered.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>backlog</code></td>
+            <td>
+                <code>int16</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>code</code></td>
+            <td>
+                <code>int16</code>
+            </td>
+        </tr></table>
+
+### Accept {:#Accept}
+
+ Accepts a buffered incoming connection.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>flags</code></td>
+            <td>
+                <code>int16</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>code</code></td>
+            <td>
+                <code>int16</code>
+            </td>
+        </tr><tr>
+            <td><code>s</code></td>
+            <td>
+                <code><a class='link' href='#Control'>Control</a>?</code>
+            </td>
+        </tr></table>
+
+### GetSockName {:#GetSockName}
+
+ Retrieves the local socket address.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>code</code></td>
+            <td>
+                <code>int16</code>
+            </td>
+        </tr><tr>
+            <td><code>addr</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;[128]</code>
+            </td>
+        </tr></table>
+
+### GetPeerName {:#GetPeerName}
+
+ Retrieves the remote socket address.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>code</code></td>
+            <td>
+                <code>int16</code>
+            </td>
+        </tr><tr>
+            <td><code>addr</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;[128]</code>
+            </td>
+        </tr></table>
+
+### SetSockOpt {:#SetSockOpt}
+
+ Sets the value of a socket option.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>level</code></td>
+            <td>
+                <code>int16</code>
+            </td>
+        </tr><tr>
+            <td><code>optname</code></td>
+            <td>
+                <code>int16</code>
+            </td>
+        </tr><tr>
+            <td><code>optval</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;[900]</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>code</code></td>
+            <td>
+                <code>int16</code>
+            </td>
+        </tr></table>
+
+### GetSockOpt {:#GetSockOpt}
+
+ Retrieves the value of a socket option.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>level</code></td>
+            <td>
+                <code>int16</code>
+            </td>
+        </tr><tr>
+            <td><code>optname</code></td>
+            <td>
+                <code>int16</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>code</code></td>
+            <td>
+                <code>int16</code>
+            </td>
+        </tr><tr>
+            <td><code>optval</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;[900]</code>
+            </td>
+        </tr></table>
+
+## Provider {:#Provider}
+*Defined in [fuchsia.posix.socket/socket.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-posix-socket/socket.fidl#50)*
+
+ Provider implements the POSIX sockets API.
+
+### Socket {:#Socket}
+
+ Requests a socket with the specified parameters. Values for `code` are defined in errno.h.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>domain</code></td>
+            <td>
+                <code>int16</code>
+            </td>
+        </tr><tr>
+            <td><code>type</code></td>
+            <td>
+                <code>int16</code>
+            </td>
+        </tr><tr>
+            <td><code>protocol</code></td>
+            <td>
+                <code>int16</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>code</code></td>
+            <td>
+                <code>int16</code>
+            </td>
+        </tr><tr>
+            <td><code>s</code></td>
+            <td>
+                <code><a class='link' href='#Control'>Control</a>?</code>
+            </td>
+        </tr></table>
+
 
 
 
diff --git a/sdk/fidl/fuchsia.process/index.md b/sdk/fidl/fuchsia.process/index.md
index c30da24..e1d13ce 100644
--- a/sdk/fidl/fuchsia.process/index.md
+++ b/sdk/fidl/fuchsia.process/index.md
@@ -235,6 +235,235 @@
             </td>
         </tr></table>
 
+## Launcher {:#Launcher}
+*Defined in [fuchsia.process/launcher.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-process/launcher.fidl#118)*
+
+ A low-level interface for launching processes.
+
+ This interface is used for manually assembling a process. The caller supplies
+ all the capabilities for the newly created process.
+
+ That create processes typically use `fdio_spawn` or `fdio_spawn_etc` rather
+ than using this interface directly. The `fdio_spawn` and `fdio_spawn_etc`
+ functions are implemented using this interface.
+
+ Debuggers and other clients that need to create processes in a suspended
+ state often use this interface directly. These clients use the
+ `CreateWithoutStarting` method to create the process without actually
+ starting it.
+
+### Launch {:#Launch}
+
+ Creates and starts the process described by `info`.
+
+ After processing this message, the `Launcher` is reset to its initial
+ state and is ready to launch another process.
+
+ `process` is present if, and only if, `status` is `ZX_OK`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>info</code></td>
+            <td>
+                <code><a class='link' href='#LaunchInfo'>LaunchInfo</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr><tr>
+            <td><code>process</code></td>
+            <td>
+                <code>handle&lt;process&gt;?</code>
+            </td>
+        </tr></table>
+
+### CreateWithoutStarting {:#CreateWithoutStarting}
+
+ Creates the process described by `info` but does not start it.
+
+ After processing this message, the `Launcher` is reset to its initial
+ state and is ready to launch another process.
+
+ The caller is responsible for calling `zx_process_start` using the data
+ in `ProcessStartData` to actually start the process.
+
+ `data` is present if, and only if, `status` is `ZX_OK`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>info</code></td>
+            <td>
+                <code><a class='link' href='#LaunchInfo'>LaunchInfo</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr><tr>
+            <td><code>data</code></td>
+            <td>
+                <code><a class='link' href='#ProcessStartData'>ProcessStartData</a>?</code>
+            </td>
+        </tr></table>
+
+### AddArgs {:#AddArgs}
+
+ Adds the given arguments to the command-line for the process.
+
+ Calling this method multiple times concatenates the arguments.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>args</code></td>
+            <td>
+                <code>vector&lt;vector&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### AddEnvirons {:#AddEnvirons}
+
+ Adds the given variables to the environment variables for the process.
+
+ Calling this method multiple times concatenates the variables.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>environ</code></td>
+            <td>
+                <code>vector&lt;vector&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### AddNames {:#AddNames}
+
+ Adds the given names to the namespace for the process.
+
+ The paths in the namespace must be non-overlapping. See
+ <https://fuchsia.googlesource.com/fuchsia/+/master/docs/the-book/namespaces.md>
+ for details.
+
+ Calling this method multiple times concatenates the names.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>names</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#NameInfo'>NameInfo</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### AddHandles {:#AddHandles}
+
+ Adds the given handles to the startup handles for the process.
+
+ Calling this method multiple times concatenates the handles.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>handles</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#HandleInfo'>HandleInfo</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+## Resolver {:#Resolver}
+*Defined in [fuchsia.process/resolver.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-process/resolver.fidl#29)*
+
+ An interface for resolving names to executables and library loaders.
+
+ An executable itself is often not sufficient to create a working process
+ because many executables also load shared libraries. On Fuchsia, there is no
+ global pool of shared libraries. Instead, every process has an associated
+ `fuchsia.ldsvc.Loader`, which provides access to a private pool of shared
+ libraries appropriate for that process.
+
+ This interface provides a protocol for resolving a name into both the
+ `handle<vmo>` for the executable and the `fuchsia.ldsvc.Loader` for its
+ associated shared libraries.
+
+ This interface is rarely used directly. Instead, `fdio_spawn` and
+ `fdio_spawn_etc` use this interface internally when they try to run a file
+ with a `#!resolve` directive.
+
+### Resolve {:#Resolve}
+
+ Resolves the given `name` to an `executable` and an shared library
+ loader.
+
+ If present, the `executable` is suitable for use as the `executable`
+ property of `LaunchInfo`. If present, the `ldsvc` is suitable for use as
+ the `PA_LDSVC_LOADER` handle when launching the process.
+
+ For example, the resolver might locate the given `name` inside a package
+ and return the executable binary from the package as well as a shared
+ library loader scoped to that package.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>name</code></td>
+            <td>
+                <code>string[2048]</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr><tr>
+            <td><code>executable</code></td>
+            <td>
+                <code>handle&lt;vmo&gt;?</code>
+            </td>
+        </tr><tr>
+            <td><code>ldsvc</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.ldsvc/index.html'>fuchsia.ldsvc</a>/<a class='link' href='../fuchsia.ldsvc/index.html#Loader'>Loader</a>?</code>
+            </td>
+        </tr></table>
+
 
 
 ## **STRUCTS**
@@ -441,6 +670,208 @@
         </tr>
 </table>
 
+### HandleInfo {:#HandleInfo}
+*Defined in [fuchsia.process/launcher.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-process/launcher.fidl#18)*
+
+
+
+ Information about a handle provided to a process at startup.
+
+ Processes are given a set of initial handles as part of the bootstrapping
+ sequence. Some of these handles are associated with zx.procarg identifiers
+ that designate their intended use by the new process.
+
+ This structure represents one such handle and its associated zx.procarg
+ identifier.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>handle</code></td>
+            <td>
+                <code>handle&lt;handle&gt;</code>
+            </td>
+            <td> The handle to use for this process argument.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> Process argument identifier.
+
+ See <zircon/processargs.h> for definitions of well-known process
+ arguments.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### NameInfo {:#NameInfo}
+*Defined in [fuchsia.process/launcher.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-process/launcher.fidl#36)*
+
+
+
+ A namespace entry provided to a process at startup.
+
+ Processes are given a set of initial handles as part of the bootstrapping
+ sequence. Some of these handles are associated with paths that designate
+ their intended use by the new process as namespace entries.
+
+ This structure represents one such handle and its associated namespace path.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>path</code></td>
+            <td>
+                <code>string[4096]</code>
+            </td>
+            <td> Path at which to install the associated directory.
+
+ Must be an absolute path (i.e., start with '/').
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>directory</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.io/index.html'>fuchsia.io</a>/<a class='link' href='../fuchsia.io/index.html#Directory'>Directory</a></code>
+            </td>
+            <td> The associated directory.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### LaunchInfo {:#LaunchInfo}
+*Defined in [fuchsia.process/launcher.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-process/launcher.fidl#47)*
+
+
+
+ The information needed to launch a process.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>executable</code></td>
+            <td>
+                <code>handle&lt;vmo&gt;</code>
+            </td>
+            <td> The executable to run in the process.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>job</code></td>
+            <td>
+                <code>handle&lt;job&gt;</code>
+            </td>
+            <td> The job in which to create the process.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>name</code></td>
+            <td>
+                <code>string[32]</code>
+            </td>
+            <td> The name to assign to the created process.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ProcessStartData {:#ProcessStartData}
+*Defined in [fuchsia.process/launcher.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-process/launcher.fidl#61)*
+
+
+
+ The information required to start a process.
+
+ To start the process, call `zx_process_start` with the arguments provided.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>process</code></td>
+            <td>
+                <code>handle&lt;process&gt;</code>
+            </td>
+            <td> The process that was created.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>root_vmar</code></td>
+            <td>
+                <code>handle&lt;vmar&gt;</code>
+            </td>
+            <td> The vmar object that was created when the process was created.
+
+ See <https://fuchsia.googlesource.com/fuchsia/+/master/docs/zircon/syscalls/process_create.md>.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>thread</code></td>
+            <td>
+                <code>handle&lt;thread&gt;</code>
+            </td>
+            <td> The initial thread for the process.
+
+ Should be passed to `zx_process_start` when starting the process.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>entry</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> The address of the initial entry point in the process.
+
+ Should be passed to `zx_process_start` when starting the process.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>stack</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> The stack pointer value for the initial thread of the process.
+
+ Should be passed to `zx_process_start` when starting the process.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>bootstrap</code></td>
+            <td>
+                <code>handle&lt;channel&gt;</code>
+            </td>
+            <td> The bootstrap channel to pass to the process on startup.
+
+ Should be passed to `zx_process_start` when starting the process.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>vdso_base</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> The base address of the vDSO to pass to the process on startup.
+
+ Should be passed to `zx_process_start` when starting the process.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>base</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> The base load address of the ELF file loaded.
+
+ Most often used by debuggers or other tools that inspect the process.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
 
 
 
@@ -473,6 +904,23 @@
             <td> The maximum size for a name used by `Resolver`.
 </td>
         </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-process/launcher.fidl#102">MAX</a></td>
+            <td>
+                    <code>4294967295</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-process/resolver.fidl#11">MAX_RESOLVE_NAME_SIZE</a></td>
+            <td>
+                    <code>2048</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> The maximum size for a name used by `Resolver`.
+</td>
+        </tr>
     
 </table>
 
diff --git a/sdk/fidl/fuchsia.recovery/index.md b/sdk/fidl/fuchsia.recovery/index.md
index d472b2f..a2ae903 100644
--- a/sdk/fidl/fuchsia.recovery/index.md
+++ b/sdk/fidl/fuchsia.recovery/index.md
@@ -32,6 +32,32 @@
             </td>
         </tr></table>
 
+## FactoryReset {:#FactoryReset}
+*Defined in [fuchsia.recovery/factory_reset.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.recovery/factory_reset.fidl#11)*
+
+ A protocol for intitiating a factory reset.
+
+### Reset {:#Reset}
+
+ Request an immediate factory reset. If unsuccessful will return an
+ error.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
 
 
 
diff --git a/sdk/fidl/fuchsia.scenic.scheduling/index.md b/sdk/fidl/fuchsia.scenic.scheduling/index.md
index cee3b8f..dba7d54 100644
--- a/sdk/fidl/fuchsia.scenic.scheduling/index.md
+++ b/sdk/fidl/fuchsia.scenic.scheduling/index.md
@@ -78,6 +78,76 @@
         </tr>
 </table>
 
+### PresentationInfo {:#PresentationInfo}
+*Defined in [fuchsia.scenic.scheduling/prediction_info.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.scenic.scheduling/prediction_info.fidl#7)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>latch_point</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> The |latch_point| is guaranteed to be less than |presentation_time|. The
+ latch point is the time where clients should aim to have their updates
+ and fences ready in order for the content to be presented at the
+ corresponding presentation time.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>presentation_time</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> The predicted time in which the enqueued operations are anticipated to take
+ visible effect, expressed in nanoseconds in the |CLOCK_MONOTONIC| timebase.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### FuturePresentationTimes {:#FuturePresentationTimes}
+*Defined in [fuchsia.scenic.scheduling/prediction_info.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.scenic.scheduling/prediction_info.fidl#21)*
+
+
+
+ The data type returned in |fuchsia.ui.scenic::RequestPresentationTimes|. See
+ that method description for more information.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>future_presentations</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#PresentationInfo'>PresentationInfo</a>&gt;[8]</code>
+            </td>
+            <td> The future estimated presentation times. They represent the times Scenic
+ intends to let the client's work be presented over the next few frames.
+ These values may change after they are queried.
+
+ Clients who wish to minimize latency should use these values to schedule
+ their work accordingly.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>remaining_presents_in_flight_allowed</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+            <td> The amount of Present() calls the client is currently allowed. If the
+ client calls Present() when this number is zero, the session will be
+ shut down.
+
+ This value is decremented every Present() call, and is incremented every
+ OnFramePresented() event.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
 
 
 
diff --git a/sdk/fidl/fuchsia.scpi/index.md b/sdk/fidl/fuchsia.scpi/index.md
index 55cced8..425952e 100644
--- a/sdk/fidl/fuchsia.scpi/index.md
+++ b/sdk/fidl/fuchsia.scpi/index.md
@@ -167,40 +167,31 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>OK</code></td>
             <td><code>0</code></td>
-            <td> the call completed successfully
-</td>
+            <td></td>
         </tr><tr>
             <td><code>ERR_DVFS_INFO</code></td>
             <td><code>1</code></td>
-            <td> failed to get the DVFS operating
- points information
-</td>
+            <td></td>
         </tr><tr>
             <td><code>ERR_DVFS_OPP_IDX</code></td>
             <td><code>2</code></td>
-            <td> failed to get the dvfs opp index
- which is set currently
-</td>
+            <td></td>
         </tr><tr>
             <td><code>ERR_TEMPERATURE</code></td>
             <td><code>3</code></td>
-            <td> failed to get the temperature
-</td>
+            <td></td>
         </tr><tr>
             <td><code>ERR_FAN_LEVEL</code></td>
             <td><code>4</code></td>
-            <td> failed to get the fan level
-</td>
+            <td></td>
         </tr><tr>
             <td><code>ERR_CPU_STATS</code></td>
             <td><code>5</code></td>
-            <td> failed to get cpu stats info
-</td>
+            <td></td>
         </tr><tr>
             <td><code>ERR_MEM_STATS</code></td>
             <td><code>6</code></td>
-            <td> failed to get memory stat info
-</td>
+            <td></td>
         </tr></table>
 
 
diff --git a/sdk/fidl/fuchsia.settings/index.md b/sdk/fidl/fuchsia.settings/index.md
index 34116b0..7870f30 100644
--- a/sdk/fidl/fuchsia.settings/index.md
+++ b/sdk/fidl/fuchsia.settings/index.md
@@ -494,6 +494,494 @@
             </td>
         </tr></table>
 
+## Accessibility {:#Accessibility}
+*Defined in [fuchsia.settings/accessibility.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.settings/accessibility.fidl#11)*
+
+ Modify or watch accessibility settings that are persisted.
+
+### Watch {:#Watch}
+
+ Gets the current value of all accessibility settings. Returns
+ immediately on first call; subsequent calls return when any of the
+ values change.
+
+ - `settings` all current values of the accessibility settings.
+ * see <a class='link' href='#AccessibilitySettings'>AccessibilitySettings</a> for their meaning.
+
+ This call may fail if AccessibilitySettings are not accessible, possibly because of file
+ system errors, not being supported on this product, or general service failures.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#Accessibility_Watch_Result'>Accessibility_Watch_Result</a></code>
+            </td>
+        </tr></table>
+
+### Set {:#Set}
+
+ Sets [AccessibilitySettings] settings. Any field not explicitly set in the table performs a
+ no-op, and will not make any changes.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>settings</code></td>
+            <td>
+                <code><a class='link' href='#AccessibilitySettings'>AccessibilitySettings</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#Accessibility_Set_Result'>Accessibility_Set_Result</a></code>
+            </td>
+        </tr></table>
+
+## Audio {:#Audio}
+*Defined in [fuchsia.settings/audio.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.settings/audio.fidl#11)*
+
+ Settings related to audio.
+
+### Watch {:#Watch}
+
+ Gets the current [AudioSettings]. Returns immediately on first call;
+ subsequent calls return when the value changes.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#Audio_Watch_Result'>Audio_Watch_Result</a></code>
+            </td>
+        </tr></table>
+
+### Set {:#Set}
+
+ Sets audio settings. Any field not explicitly set in the table performs a
+ no-op, and will not make any changes.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>settings</code></td>
+            <td>
+                <code><a class='link' href='#AudioSettings'>AudioSettings</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#Audio_Set_Result'>Audio_Set_Result</a></code>
+            </td>
+        </tr></table>
+
+## Device {:#Device}
+*Defined in [fuchsia.settings/device.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.settings/device.fidl#8)*
+
+
+### Watch {:#Watch}
+
+ Notifies of a change in information about the device.
+
+ On a given connection, the first call will return the current `settings` value while
+ subsequent calls will only return the new `settings` value upon a value change. This
+ follows the hanging get pattern.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>device_settings</code></td>
+            <td>
+                <code><a class='link' href='#DeviceSettings'>DeviceSettings</a></code>
+            </td>
+        </tr></table>
+
+## Display {:#Display}
+*Defined in [fuchsia.settings/display.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.settings/display.fidl#9)*
+
+ Settings related to display
+
+### Watch {:#Watch}
+
+ Gets the current [DisplaySettings]. Returns immediately on first call;
+ subsequent calls return when the value changes.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#Display_Watch_Result'>Display_Watch_Result</a></code>
+            </td>
+        </tr></table>
+
+### WatchLightSensor {:#WatchLightSensor}
+
+ Obtains the current data from the light sensor. Returns immediately on
+ first call; subsequent calls return when the light sensor value changes
+  by a certain amount measured in lux.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>delta</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#Display_WatchLightSensor_Result'>Display_WatchLightSensor_Result</a></code>
+            </td>
+        </tr></table>
+
+### Set {:#Set}
+
+ Sets display settings. Any field not explicitly set in the table performs a
+ no-op, and will not make any changes.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>settings</code></td>
+            <td>
+                <code><a class='link' href='#DisplaySettings'>DisplaySettings</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#Display_Set_Result'>Display_Set_Result</a></code>
+            </td>
+        </tr></table>
+
+## DoNotDisturb {:#DoNotDisturb}
+*Defined in [fuchsia.settings/do_not_disturb.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.settings/do_not_disturb.fidl#13)*
+
+ Modify or watch do-not-disturb (DND) mode. While DND is active, distractions
+ created by the device are reduced or eliminated. E.g. bootup is silent,
+ incoming calls could be rejected or silent, and notifications could be
+ paused, silent, or hidden. High-priority disruptions like alarms can be
+ allowed.
+
+### Watch {:#Watch}
+
+ Gets the current <a class='link' href='#DoNotDisturbSettings'>DoNotDisturbSettings</a>. Returns immediately on first
+ call; subsequent calls return when the values change.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>settings</code></td>
+            <td>
+                <code><a class='link' href='#DoNotDisturbSettings'>DoNotDisturbSettings</a></code>
+            </td>
+        </tr></table>
+
+### Set {:#Set}
+
+ Sets <a class='link' href='#DoNotDisturbSettings'>DoNotDisturbSettings</a> settings. Any field not explicitly set in
+ the table performs a no-op, and will not make any changes.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>settings</code></td>
+            <td>
+                <code><a class='link' href='#DoNotDisturbSettings'>DoNotDisturbSettings</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#DoNotDisturb_Set_Result'>DoNotDisturb_Set_Result</a></code>
+            </td>
+        </tr></table>
+
+## Intl {:#Intl}
+*Defined in [fuchsia.settings/intl.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.settings/intl.fidl#12)*
+
+ Settings related to internationalization such as locale, time zone, and
+ temperature units.
+
+### Watch {:#Watch}
+
+ Gets the current [IntlSettings]. Returns immediately on first call;
+ subsequent calls return when the value changes.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#Intl_Watch_Result'>Intl_Watch_Result</a></code>
+            </td>
+        </tr></table>
+
+### Set {:#Set}
+
+ Sets [IntlSettings] settings. Any field not explicitly set in the table performs a
+ no-op, and will not make any changes.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>settings</code></td>
+            <td>
+                <code><a class='link' href='#IntlSettings'>IntlSettings</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#Intl_Set_Result'>Intl_Set_Result</a></code>
+            </td>
+        </tr></table>
+
+## Privacy {:#Privacy}
+*Defined in [fuchsia.settings/privacy.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.settings/privacy.fidl#8)*
+
+
+### Watch {:#Watch}
+
+ Notifies of a change in privacy settings.
+
+ On a given connection, the first call will return the current `settings` value while
+ subsequent calls will only return the new `settings` value upon a value change. This
+ follows the hanging get pattern.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#Privacy_Watch_Result'>Privacy_Watch_Result</a></code>
+            </td>
+        </tr></table>
+
+### Set {:#Set}
+
+ Sets the privacy settings.
+
+ Any field not explicitly set in `settings` performs a no-op, and will not make any changes.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>settings</code></td>
+            <td>
+                <code><a class='link' href='#PrivacySettings'>PrivacySettings</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#Privacy_Set_Result'>Privacy_Set_Result</a></code>
+            </td>
+        </tr></table>
+
+## Setup {:#Setup}
+*Defined in [fuchsia.settings/setup.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.settings/setup.fidl#9)*
+
+ Settings that influence the device's setup behavior.
+
+### Watch {:#Watch}
+
+ Gets the current [SetupSettings]. Returns immediately on first call;
+ subsequent calls return when the value changes.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>settings</code></td>
+            <td>
+                <code><a class='link' href='#SetupSettings'>SetupSettings</a></code>
+            </td>
+        </tr></table>
+
+### Set {:#Set}
+
+ Changes the settings specified in [SetupSettings]. Any field not set in
+ the table will not perform any system operation. An error will be
+ returned if the provided settings is an invalid change (for example, if
+ it is empty).
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>settings</code></td>
+            <td>
+                <code><a class='link' href='#SetupSettings'>SetupSettings</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#Setup_Set_Result'>Setup_Set_Result</a></code>
+            </td>
+        </tr></table>
+
+## System {:#System}
+*Defined in [fuchsia.settings/system.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.settings/system.fidl#9)*
+
+ Settings related to the general system.
+
+### Watch {:#Watch}
+
+ Gets the current [SystemSettings]. Returns immediately on first call;
+ subsequent calls return when the value changes.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#System_Watch_Result'>System_Watch_Result</a></code>
+            </td>
+        </tr></table>
+
+### Set {:#Set}
+
+ Changes the settings specified in [SystemSettings]. Any field not set in the table will
+ not perform any system operation.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>settings</code></td>
+            <td>
+                <code><a class='link' href='#SystemSettings'>SystemSettings</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#System_Set_Result'>System_Set_Result</a></code>
+            </td>
+        </tr></table>
+
 
 
 ## **STRUCTS**
@@ -712,6 +1200,220 @@
     <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr>
 </table>
 
+### Accessibility_Watch_Response {:#Accessibility_Watch_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>settings</code></td>
+            <td>
+                <code><a class='link' href='#AccessibilitySettings'>AccessibilitySettings</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Accessibility_Set_Response {:#Accessibility_Set_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr>
+</table>
+
+### Audio_Watch_Response {:#Audio_Watch_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>settings</code></td>
+            <td>
+                <code><a class='link' href='#AudioSettings'>AudioSettings</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Audio_Set_Response {:#Audio_Set_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr>
+</table>
+
+### Display_Watch_Response {:#Display_Watch_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>settings</code></td>
+            <td>
+                <code><a class='link' href='#DisplaySettings'>DisplaySettings</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Display_WatchLightSensor_Response {:#Display_WatchLightSensor_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>light_sensor_data</code></td>
+            <td>
+                <code><a class='link' href='#LightSensorData'>LightSensorData</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Display_Set_Response {:#Display_Set_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr>
+</table>
+
+### DoNotDisturb_Set_Response {:#DoNotDisturb_Set_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr>
+</table>
+
+### Intl_Watch_Response {:#Intl_Watch_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>settings</code></td>
+            <td>
+                <code><a class='link' href='#IntlSettings'>IntlSettings</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Intl_Set_Response {:#Intl_Set_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr>
+</table>
+
+### Privacy_Watch_Response {:#Privacy_Watch_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>settings</code></td>
+            <td>
+                <code><a class='link' href='#PrivacySettings'>PrivacySettings</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Privacy_Set_Response {:#Privacy_Set_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr>
+</table>
+
+### Setup_Set_Response {:#Setup_Set_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr>
+</table>
+
+### System_Watch_Response {:#System_Watch_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>settings</code></td>
+            <td>
+                <code><a class='link' href='#SystemSettings'>SystemSettings</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### System_Set_Response {:#System_Set_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr>
+</table>
+
 
 
 ## **ENUMS**
@@ -727,24 +1429,19 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>NONE</code></td>
             <td><code>0</code></td>
-            <td> No color blindness.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>PROTANOMALY</code></td>
             <td><code>1</code></td>
-            <td> Red-green color blindness due to reduced sensitivity to red light.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>DEUTERANOMALY</code></td>
             <td><code>2</code></td>
-            <td> Red-green color blindness due to reduced sensitivity to green light.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>TRITANOMALY</code></td>
             <td><code>3</code></td>
-            <td> Blue-yellow color blindness. It is due to reduced sensitivity to blue
- light.
-</td>
+            <td></td>
         </tr></table>
 
 ### CaptionFontFamily {:#CaptionFontFamily}
@@ -802,28 +1499,23 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>NONE</code></td>
             <td><code>0</code></td>
-            <td> No border around fonts.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>DROP_SHADOW</code></td>
             <td><code>1</code></td>
-            <td> A shadow "behind" and slightly offset from each edge.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>RAISED</code></td>
             <td><code>2</code></td>
-            <td> A bevel that mimics a 3D raised effect.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>DEPRESSED</code></td>
             <td><code>3</code></td>
-            <td> A bevel that mimics a 3D depressed effect.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>OUTLINE</code></td>
             <td><code>4</code></td>
-            <td> A plain border around each shapes.
-</td>
+            <td></td>
         </tr></table>
 
 ### AudioStreamSettingSource {:#AudioStreamSettingSource}
@@ -838,20 +1530,15 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>DEFAULT</code></td>
             <td><code>0</code></td>
-            <td> The volume is default.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>USER</code></td>
             <td><code>1</code></td>
-            <td> The volume is set by the user. When the |source| in AudioStreamSettings is
- set to this, the audio volume is set to |user_volume|.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>SYSTEM</code></td>
             <td><code>2</code></td>
-            <td> The system takes control of the volume. This is used when the system constantly
- calculates and changes the volume. The volume is not stored for this source.
-</td>
+            <td></td>
         </tr></table>
 
 ### Error {:#Error}
@@ -885,18 +1572,180 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>NONE</code></td>
             <td><code>1</code></td>
-            <td> No override has been set.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>AUTOLOGIN_GUEST</code></td>
             <td><code>2</code></td>
-            <td> Do not require an account and login always as guest.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>AUTH_PROVIDER</code></td>
             <td><code>3</code></td>
-            <td> Requires a provisioned account through auth provider.
-</td>
+            <td></td>
+        </tr></table>
+
+### ColorBlindnessType {:#ColorBlindnessType}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.settings/accessibility.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.settings/accessibility.fidl#50)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>NONE</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PROTANOMALY</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>DEUTERANOMALY</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>TRITANOMALY</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr></table>
+
+### CaptionFontFamily {:#CaptionFontFamily}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.settings/accessibility.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.settings/accessibility.fidl#97)*
+
+ Font family groups for closed captions, specified by 47 CFR §79.102(k).
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>UNKNOWN</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>MONOSPACED_SERIF</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PROPORTIONAL_SERIF</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>MONOSPACED_SANS_SERIF</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PROPORTIONAL_SANS_SERIF</code></td>
+            <td><code>4</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>CASUAL</code></td>
+            <td><code>5</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>CURSIVE</code></td>
+            <td><code>6</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>SMALL_CAPITALS</code></td>
+            <td><code>7</code></td>
+            <td></td>
+        </tr></table>
+
+### EdgeStyle {:#EdgeStyle}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.settings/accessibility.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.settings/accessibility.fidl#109)*
+
+ Edge style for fonts as specified in 47 CFR §79.103(c)(7)
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>NONE</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>DROP_SHADOW</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>RAISED</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>DEPRESSED</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>OUTLINE</code></td>
+            <td><code>4</code></td>
+            <td></td>
+        </tr></table>
+
+### AudioStreamSettingSource {:#AudioStreamSettingSource}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.settings/audio.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.settings/audio.fidl#22)*
+
+ The source of the volume settings. The volume is set according to the source.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>DEFAULT</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>USER</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>SYSTEM</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr></table>
+
+### Error {:#Error}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.settings/settings.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.settings/settings.fidl#8)*
+
+ Common error code used across different settings.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>FAILED</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>UNSUPPORTED</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr></table>
+
+### LoginOverride {:#LoginOverride}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.settings/system.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.settings/system.fidl#26)*
+
+ What preferred login behavior has been set.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>NONE</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>AUTOLOGIN_GUEST</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>AUTH_PROVIDER</code></td>
+            <td><code>3</code></td>
+            <td></td>
         </tr></table>
 
 
@@ -1379,6 +2228,482 @@
 </td>
         </tr></table>
 
+### AccessibilitySettings {:#AccessibilitySettings}
+
+
+*Defined in [fuchsia.settings/accessibility.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.settings/accessibility.fidl#29)*
+
+ Supported accessibility settings.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>audio_description</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> For videos, use an alternative audio track (akin to changing languages)
+ that explains what is happening visually while there is no dialogue.
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>screen_reader</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Read aloud elements of the screen selected by the user.
+</td>
+        </tr><tr>
+            <td>3</td>
+            <td><code>color_inversion</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Invert colors on the screen.
+</td>
+        </tr><tr>
+            <td>4</td>
+            <td><code>enable_magnification</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Interpret triple-tap on the touchscreen as a command to zoom in.
+</td>
+        </tr><tr>
+            <td>5</td>
+            <td><code>color_correction</code></td>
+            <td>
+                <code><a class='link' href='#ColorBlindnessType'>ColorBlindnessType</a></code>
+            </td>
+            <td> What type of color-blindness, if any, to correct for.
+</td>
+        </tr><tr>
+            <td>6</td>
+            <td><code>captions_settings</code></td>
+            <td>
+                <code><a class='link' href='#CaptionsSettings'>CaptionsSettings</a></code>
+            </td>
+            <td> What kind of sources get closed captions, and how they look.
+</td>
+        </tr></table>
+
+### CaptionsSettings {:#CaptionsSettings}
+
+
+*Defined in [fuchsia.settings/accessibility.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.settings/accessibility.fidl#66)*
+
+ What kind of sources get closed captions, and how they look.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>for_media</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Closed captions enabled for media sources of audio.
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>for_tts</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Closed captions enabled for Text-To-Speech sources of audio.
+</td>
+        </tr><tr>
+            <td>3</td>
+            <td><code>font_style</code></td>
+            <td>
+                <code><a class='link' href='#CaptionFontStyle'>CaptionFontStyle</a></code>
+            </td>
+            <td> Font style and color used for the closed captions text.
+</td>
+        </tr><tr>
+            <td>4</td>
+            <td><code>window_color</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.ui.types/index.html'>fuchsia.ui.types</a>/<a class='link' href='../fuchsia.ui.types/index.html#ColorRgba'>ColorRgba</a></code>
+            </td>
+            <td> Border color used around the closed captions window.
+</td>
+        </tr><tr>
+            <td>5</td>
+            <td><code>background_color</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.ui.types/index.html'>fuchsia.ui.types</a>/<a class='link' href='../fuchsia.ui.types/index.html#ColorRgba'>ColorRgba</a></code>
+            </td>
+            <td> Background color of the closed captions window.
+</td>
+        </tr></table>
+
+### CaptionFontStyle {:#CaptionFontStyle}
+
+
+*Defined in [fuchsia.settings/accessibility.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.settings/accessibility.fidl#84)*
+
+ Font, size, and color of closed captions text.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>family</code></td>
+            <td>
+                <code><a class='link' href='#CaptionFontFamily'>CaptionFontFamily</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>color</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.ui.types/index.html'>fuchsia.ui.types</a>/<a class='link' href='../fuchsia.ui.types/index.html#ColorRgba'>ColorRgba</a></code>
+            </td>
+            <td> 47 CFR §79.103(c)(2) requires at least 3-bit RGB for user override of
+ closed-captions color.
+</td>
+        </tr><tr>
+            <td>3</td>
+            <td><code>relative_size</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td> Size of closed captions text relative to the default captions size. A
+ range of [0.5, 2] is guaranteed to be supported (as 47 CFR §79.103(c)(4)
+ establishes).
+</td>
+        </tr><tr>
+            <td>4</td>
+            <td><code>char_edge_style</code></td>
+            <td>
+                <code><a class='link' href='#EdgeStyle'>EdgeStyle</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### Volume {:#Volume}
+
+
+*Defined in [fuchsia.settings/audio.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.settings/audio.fidl#35)*
+
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>level</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td> The volume level ranged [0.0, 1.0]. The level maps to a dbfs value from a volume
+ curve in the setting service.
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>muted</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> True if the volume should be muted. If this is true, then the volume is silent,
+ regardless of |level|.
+</td>
+        </tr></table>
+
+### AudioStreamSettings {:#AudioStreamSettings}
+
+
+*Defined in [fuchsia.settings/audio.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.settings/audio.fidl#45)*
+
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>stream</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.media/index.html'>fuchsia.media</a>/<a class='link' href='../fuchsia.media/index.html#AudioRenderUsage'>AudioRenderUsage</a></code>
+            </td>
+            <td> The audio stream which the settings are applying to.
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>source</code></td>
+            <td>
+                <code><a class='link' href='#AudioStreamSettingSource'>AudioStreamSettingSource</a></code>
+            </td>
+            <td> The volume of |stream| is set according to the volume settings from |source|.
+</td>
+        </tr><tr>
+            <td>3</td>
+            <td><code>user_volume</code></td>
+            <td>
+                <code><a class='link' href='#Volume'>Volume</a></code>
+            </td>
+            <td> User level volume setting. If the |source| is USER, then the volume is set to
+ |user_volume|.
+</td>
+        </tr></table>
+
+### AudioSettings {:#AudioSettings}
+
+
+*Defined in [fuchsia.settings/audio.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.settings/audio.fidl#57)*
+
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>streams</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#AudioStreamSettings'>AudioStreamSettings</a>&gt;[5]</code>
+            </td>
+            <td> Contains the volume setting for all audio stream settings. There should only be
+ one AudioStreamSettings for each fuchsia.media.AudioRenderUsage.
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>input</code></td>
+            <td>
+                <code><a class='link' href='#AudioInput'>AudioInput</a></code>
+            </td>
+            <td> Settings related to the audio input.
+</td>
+        </tr></table>
+
+### AudioInput {:#AudioInput}
+
+
+*Defined in [fuchsia.settings/audio.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.settings/audio.fidl#66)*
+
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>muted</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Whether the audio input is muted. Takes into consideration the hardware state.
+</td>
+        </tr></table>
+
+### DeviceSettings {:#DeviceSettings}
+
+
+*Defined in [fuchsia.settings/device.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.settings/device.fidl#18)*
+
+ Information about the device.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>build_tag</code></td>
+            <td>
+                <code>string[50]</code>
+            </td>
+            <td> The identifier representing the specific build that the device
+ is currently running. Read-only field, cannot be set by client.
+</td>
+        </tr></table>
+
+### DisplaySettings {:#DisplaySettings}
+
+
+*Defined in [fuchsia.settings/display.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.settings/display.fidl#24)*
+
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>auto_brightness</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>brightness_value</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### LightSensorData {:#LightSensorData}
+
+
+*Defined in [fuchsia.settings/display.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.settings/display.fidl#29)*
+
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>illuminance_lux</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td> Brightness from the light sensor measured in lux
+</td>
+        </tr></table>
+
+### DoNotDisturbSettings {:#DoNotDisturbSettings}
+
+
+*Defined in [fuchsia.settings/do_not_disturb.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.settings/do_not_disturb.fidl#24)*
+
+ Settings related to do-not-disturb (DND) mode.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>user_initiated_do_not_disturb</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> If true, the device is in do-not-disturb (DND) mode. Change this value
+ if you're directly responding to a user-initiated event.
+
+ Note that the device could still be in DND mode even if this is set to
+ `false`, as <a class='link' href='#night_mode_initiated_do_not_disturb'>night_mode_initiated_do_not_disturb</a> might be `true`. To
+ actually disable DND mode, set both fields to `false`.
+
+ To know whether DND is enabled, you need to do a boolean OR of both
+ fields.
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>night_mode_initiated_do_not_disturb</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> If true, the device is in do-not-disturb (DND) mode. Change this value
+ if you're trying to enable or disable DND based on a nightly schedule.
+
+ Note that the device could still be in DND mode even if this is set to
+ `false`, as <a class='link' href='#user_initiated_do_not_disturb'>user_initiated_do_not_disturb</a> might be `true`. Do not
+ set that field to `false` unless you're directly responding to a
+ user-initiated event.
+
+ To know whether DND is enabled, you need to do a boolean OR of both
+ fields.
+</td>
+        </tr></table>
+
+### IntlSettings {:#IntlSettings}
+
+
+*Defined in [fuchsia.settings/intl.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.settings/intl.fidl#23)*
+
+ Collection of internationalization-related settings.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>locales</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='../fuchsia.intl/index.html'>fuchsia.intl</a>/<a class='link' href='../fuchsia.intl/index.html#LocaleId'>LocaleId</a>&gt;[10]</code>
+            </td>
+            <td> An ordered list of preferred locales.
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>temperature_unit</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.intl/index.html'>fuchsia.intl</a>/<a class='link' href='../fuchsia.intl/index.html#TemperatureUnit'>TemperatureUnit</a></code>
+            </td>
+            <td> The preferred temperature unit.
+</td>
+        </tr><tr>
+            <td>3</td>
+            <td><code>time_zone_id</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.intl/index.html'>fuchsia.intl</a>/<a class='link' href='../fuchsia.intl/index.html#TimeZoneId'>TimeZoneId</a></code>
+            </td>
+            <td> The currently set time zone.
+</td>
+        </tr></table>
+
+### PrivacySettings {:#PrivacySettings}
+
+
+*Defined in [fuchsia.settings/privacy.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.settings/privacy.fidl#22)*
+
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>user_data_sharing_consent</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Reflects the user consent to have their user data shared with the product owner, e.g., for
+ metrics collection and crash reporting.
+</td>
+        </tr></table>
+
+### SetupSettings {:#SetupSettings}
+
+
+*Defined in [fuchsia.settings/setup.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.settings/setup.fidl#21)*
+
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>enabled_configuration_interfaces</code></td>
+            <td>
+                <code><a class='link' href='#ConfigurationInterfaces'>ConfigurationInterfaces</a></code>
+            </td>
+            <td> Specifies the network interfaces that the device can be configured
+ over during setup.
+</td>
+        </tr></table>
+
+### SystemSettings {:#SystemSettings}
+
+
+*Defined in [fuchsia.settings/system.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.settings/system.fidl#20)*
+
+ Settings related to the general system.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>mode</code></td>
+            <td>
+                <code><a class='link' href='#LoginOverride'>LoginOverride</a></code>
+            </td>
+            <td> If set, indicates a login behavior specified at runtime.
+</td>
+        </tr></table>
+
 
 
 ## **UNIONS**
@@ -1668,6 +2993,291 @@
             <td></td>
         </tr></table>
 
+### Accessibility_Watch_Result {:#Accessibility_Watch_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#Accessibility_Watch_Response'>Accessibility_Watch_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code><a class='link' href='#Error'>Error</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### Accessibility_Set_Result {:#Accessibility_Set_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#Accessibility_Set_Response'>Accessibility_Set_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code><a class='link' href='#Error'>Error</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### Audio_Watch_Result {:#Audio_Watch_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#Audio_Watch_Response'>Audio_Watch_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code><a class='link' href='#Error'>Error</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### Audio_Set_Result {:#Audio_Set_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#Audio_Set_Response'>Audio_Set_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code><a class='link' href='#Error'>Error</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### Display_Watch_Result {:#Display_Watch_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#Display_Watch_Response'>Display_Watch_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code><a class='link' href='#Error'>Error</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### Display_WatchLightSensor_Result {:#Display_WatchLightSensor_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#Display_WatchLightSensor_Response'>Display_WatchLightSensor_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code><a class='link' href='#Error'>Error</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### Display_Set_Result {:#Display_Set_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#Display_Set_Response'>Display_Set_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code><a class='link' href='#Error'>Error</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### DoNotDisturb_Set_Result {:#DoNotDisturb_Set_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#DoNotDisturb_Set_Response'>DoNotDisturb_Set_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code><a class='link' href='#Error'>Error</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### Intl_Watch_Result {:#Intl_Watch_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#Intl_Watch_Response'>Intl_Watch_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code><a class='link' href='#Error'>Error</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### Intl_Set_Result {:#Intl_Set_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#Intl_Set_Response'>Intl_Set_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code><a class='link' href='#Error'>Error</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### Privacy_Watch_Result {:#Privacy_Watch_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#Privacy_Watch_Response'>Privacy_Watch_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code><a class='link' href='#Error'>Error</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### Privacy_Set_Result {:#Privacy_Set_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#Privacy_Set_Response'>Privacy_Set_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code><a class='link' href='#Error'>Error</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### Setup_Set_Result {:#Setup_Set_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#Setup_Set_Response'>Setup_Set_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code><a class='link' href='#Error'>Error</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### System_Watch_Result {:#System_Watch_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#System_Watch_Response'>System_Watch_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code><a class='link' href='#Error'>Error</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### System_Set_Result {:#System_Set_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#System_Set_Response'>System_Set_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code><a class='link' href='#Error'>Error</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
 
 
 
@@ -1689,5 +3299,20 @@
             <td></td>
         </tr></table>
 
+### ConfigurationInterfaces {:#ConfigurationInterfaces}
+Type: <code>uint32</code>
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td>ETHERNET</td>
+            <td>1</td>
+            <td></td>
+        </tr><tr>
+            <td>WIFI</td>
+            <td>2</td>
+            <td></td>
+        </tr></table>
+
 
 
diff --git a/sdk/fidl/fuchsia.setui/index.md b/sdk/fidl/fuchsia.setui/index.md
index 633773b..d8f27cd 100644
--- a/sdk/fidl/fuchsia.setui/index.md
+++ b/sdk/fidl/fuchsia.setui/index.md
@@ -755,13 +755,11 @@
         </tr><tr>
             <td><code>AUTOLOGIN_GUEST</code></td>
             <td><code>1</code></td>
-            <td> Do not require an account and login always as guest.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>AUTH_PROVIDER</code></td>
             <td><code>2</code></td>
-            <td> Requires a provisioned account through auth provider.
-</td>
+            <td></td>
         </tr></table>
 
 ### ConnectionStatus {:#ConnectionStatus}
@@ -779,23 +777,19 @@
         </tr><tr>
             <td><code>DISCONNECTED</code></td>
             <td><code>1</code></td>
-            <td> The connection is at a resting disconnected state.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>CONNECTING</code></td>
             <td><code>2</code></td>
-            <td> The connection is being established.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>CONNECTED</code></td>
             <td><code>3</code></td>
-            <td> The connection is active.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>DISCONNECTING</code></td>
             <td><code>4</code></td>
-            <td> The connection is in the process of being disconnected.
-</td>
+            <td></td>
         </tr></table>
 
 ### WirelessSecurity {:#WirelessSecurity}
@@ -813,13 +807,11 @@
         </tr><tr>
             <td><code>UNSECURED</code></td>
             <td><code>1</code></td>
-            <td> The network is open and requires no password.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>SECURED</code></td>
             <td><code>2</code></td>
-            <td> The network is protected by a password.
-</td>
+            <td></td>
         </tr></table>
 
 ### WpaAuth {:#WpaAuth}
@@ -913,8 +905,7 @@
         </tr><tr>
             <td><code>WAN</code></td>
             <td><code>1</code></td>
-            <td> we have access to the wide area network.
-</td>
+            <td></td>
         </tr></table>
 
 ### HourCycle {:#HourCycle}
@@ -928,13 +919,11 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>H12</code></td>
             <td><code>0</code></td>
-            <td> 12-hour clock
-</td>
+            <td></td>
         </tr><tr>
             <td><code>H23</code></td>
             <td><code>1</code></td>
-            <td> 24-hour clock (from 0:00:00 to 23:59:59)
-</td>
+            <td></td>
         </tr></table>
 
 ### TemperatureUnit {:#TemperatureUnit}
diff --git a/sdk/fidl/fuchsia.sys.test/index.md b/sdk/fidl/fuchsia.sys.test/index.md
index 5a94653..0cd3b7a 100644
--- a/sdk/fidl/fuchsia.sys.test/index.md
+++ b/sdk/fidl/fuchsia.sys.test/index.md
@@ -27,6 +27,27 @@
     <tr><th>Name</th><th>Type</th></tr>
     </table>
 
+## CacheControl {:#CacheControl}
+*Defined in [fuchsia.sys.test/cache.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.sys.test/cache.fidl#10)*
+
+ An interface for interacting with the isolated system cache. Typically only
+ accessed from tests.
+
+### Clear {:#Clear}
+
+ Causes all isolated caches for the system to be cleared.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
 
 
 
diff --git a/sdk/fidl/fuchsia.sys/index.md b/sdk/fidl/fuchsia.sys/index.md
index 3e66238..d82c4e1 100644
--- a/sdk/fidl/fuchsia.sys/index.md
+++ b/sdk/fidl/fuchsia.sys/index.md
@@ -434,6 +434,434 @@
 
 
 
+## ComponentController {:#ComponentController}
+*Defined in [fuchsia.sys/component_controller.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.sys/component_controller.fidl#36)*
+
+ An interface for controlling components.
+
+ Closing this interface implicitly kills the controlled component unless
+ the `Detach` method has been called.
+
+ If the component exits, this interface will be closed.
+
+ Typically obtained via `Launcher.CreateComponent`.
+
+### Kill {:#Kill}
+
+ Terminates the component.
+
+ This ComponentController connection is closed when the component has
+ terminated.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### Detach {:#Detach}
+
+ Decouples the lifetime of the component from this controller.
+
+ After calling `Detach`, the component will not be implicitly killed when
+ this interface is closed.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### OnTerminated {:#OnTerminated}
+
+ Event that is triggered when the component is terminated.
+
+ This event provides the return code of the process and reason for
+ its termination. The return_code is only valid if the termination
+ reason is EXITED. If the termination reason is not EXITED, the
+ return code is guaranteed not to be 0.
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>return_code</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+        </tr><tr>
+            <td><code>termination_reason</code></td>
+            <td>
+                <code><a class='link' href='#TerminationReason'>TerminationReason</a></code>
+            </td>
+        </tr></table>
+
+### OnDirectoryReady {:#OnDirectoryReady}
+
+ Event that is triggered when the component's output directory is mounted.
+
+ This event will not be triggered for every component, only those that
+ serve a directory over their `PA_DIRECTORY_REQUEST` handle.
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+## Environment {:#Environment}
+*Defined in [fuchsia.sys/environment.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.sys/environment.fidl#32)*
+
+ An interface for managing a set of applications.
+
+ Applications run inside environments, which provide ambient services and
+ support for their lifecycle.
+
+### CreateNestedEnvironment {:#CreateNestedEnvironment}
+
+ Creates a new environment nested inside this environment.
+
+ When applications are created inside the nested environment using the
+ environment's `Launcher`, the environment requests the
+ environment services from `host_directory` before passing those services to
+ the newly created application in its `StartupInfo`.
+
+ The `controller` can be used to control the lifecycle of the created
+ environment. Note that by default the environment will be killed
+ automatically when the `EnvironmentController`'s interface is closed. You
+ can use `EnvironmentController.Detach` to disable this behavior.
+
+ `label` defines the new environment's label/name. It must be unique within
+ the parent environment (though not globally) and is used for isolating
+ separate environments. It can also be used for diagnostic purposes. The
+ label will be truncated if it is longer than `kLabelMaxLength`.
+
+ `additional_services`, which may be empty, contains a list of services
+ that the environment provides, which are hosted by
+ `additional_services.host_directory`. If `options.inherit_parent_services`
+ is false, `host_directory` must provide a `Loader` service if it wishes to
+ allow new components to be loaded in the new environment.
+
+ `options` provides additional options, see `EnvironmentOptions` for
+ details.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>environment</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#Environment'>Environment</a>&gt;</code>
+            </td>
+        </tr><tr>
+            <td><code>controller</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#EnvironmentController'>EnvironmentController</a>&gt;</code>
+            </td>
+        </tr><tr>
+            <td><code>label</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>additional_services</code></td>
+            <td>
+                <code><a class='link' href='#ServiceList'>ServiceList</a>?</code>
+            </td>
+        </tr><tr>
+            <td><code>options</code></td>
+            <td>
+                <code><a class='link' href='#EnvironmentOptions'>EnvironmentOptions</a></code>
+            </td>
+        </tr></table>
+
+
+
+### GetLauncher {:#GetLauncher}
+
+ Gets the Launcher associated with this environment.
+
+ Applications created using this application launcher will be given the
+ environment services provided by this environment's `host_directory`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>launcher</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#Launcher'>Launcher</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### GetServices {:#GetServices}
+
+ Gets a superset of services provided by this environment's
+ `host_directory`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>services</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#ServiceProvider'>ServiceProvider</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### GetDirectory {:#GetDirectory}
+
+ Gets a superset of services provided by this environment's
+ `host_directory`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>directory_request</code></td>
+            <td>
+                <code>handle&lt;channel&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+## EnvironmentController {:#EnvironmentController}
+*Defined in [fuchsia.sys/environment_controller.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.sys/environment_controller.fidl#15)*
+
+ An interface for controlling an environment.
+
+ Closing this interface implicitly kills the controlled environment unless
+ the `Detach` method has been called.
+
+ If the environment is destroyed, this interface will be closed.
+
+ Typically obtained via `Environment.CreateNestedEnvironment`.
+
+### Kill {:#Kill}
+
+ Terminates the environment.
+
+ When an `Environment` is terminated, all applications launched
+ in the environment (and in all transitively nested environments) are also
+ killed.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+### Detach {:#Detach}
+
+ Decouples the lifetime of the environment from this controller.
+
+ After calling `Detach`, the environment will not be implicitly killed when
+ this interface is closed.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### OnCreated {:#OnCreated}
+
+ Event that is triggered when the environment is created.
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+## JobProvider {:#JobProvider}
+*Defined in [fuchsia.sys/job_provider.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.sys/job_provider.fidl#11)*
+
+ An interface for providing a job handle. Instances of this interface are
+ created in the context of an already-identified realm, so there is no need
+ to explicitly identify the realm below.
+
+### GetJob {:#GetJob}
+
+ Gets the root job associated with the realm.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>job</code></td>
+            <td>
+                <code>handle&lt;job&gt;</code>
+            </td>
+        </tr></table>
+
+## Launcher {:#Launcher}
+*Defined in [fuchsia.sys/launcher.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.sys/launcher.fidl#78)*
+
+ An interface for creating component instances.
+
+ Typically obtained via `Environment.GetLauncher`.
+
+### CreateComponent {:#CreateComponent}
+
+ Creates a new instance of the component described by `launch_info`.
+
+ The component instance is created in the `Environment`
+ associated with this `Launcher`. When creating the component,
+ the environment requests the environment services for this component from
+ its `EnvironmentHost`.
+
+ The `controller` can be used to control the lifecycle of the created
+ component instance. If an `ComponentController`'s interface is
+ requested, the component instance is killed when the interface is closed.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>launch_info</code></td>
+            <td>
+                <code><a class='link' href='#LaunchInfo'>LaunchInfo</a></code>
+            </td>
+        </tr><tr>
+            <td><code>controller</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#ComponentController'>ComponentController</a>&gt;?</code>
+            </td>
+        </tr></table>
+
+
+
+## Loader {:#Loader}
+*Defined in [fuchsia.sys/loader.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.sys/loader.fidl#9)*
+
+ An interface for loading from packages.
+
+### LoadUrl {:#LoadUrl}
+
+ LoadUrl a package by url.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>url</code></td>
+            <td>
+                <code>string[2083]</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>package</code></td>
+            <td>
+                <code><a class='link' href='#Package'>Package</a>?</code>
+            </td>
+        </tr></table>
+
+## Runner {:#Runner}
+*Defined in [fuchsia.sys/runner.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.sys/runner.fidl#64)*
+
+ An interface for running components.
+
+ Typically exposed by components that provide execution environments for
+ particular classes of programs. For example, the Dart virtual machine
+ exposes this interface to run Dart programs.
+
+### StartComponent {:#StartComponent}
+
+ Execute the given component.
+
+ Upon startup, the component is to be given the information in
+ `startup_info`, but the mechanism by which the component receives that
+ information is up to the component runner.
+
+ The `controller` interface request typically originates from the
+ `Launcher.CreateComponent` message that caused this component to be
+ started.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>package</code></td>
+            <td>
+                <code><a class='link' href='#Package'>Package</a></code>
+            </td>
+        </tr><tr>
+            <td><code>startup_info</code></td>
+            <td>
+                <code><a class='link' href='#StartupInfo'>StartupInfo</a></code>
+            </td>
+        </tr><tr>
+            <td><code>controller</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#ComponentController'>ComponentController</a>&gt;?</code>
+            </td>
+        </tr></table>
+
+
+
+## ServiceProvider {:#ServiceProvider}
+*Defined in [fuchsia.sys/service_provider.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.sys/service_provider.fidl#15)*
+
+ An interface through which a client may request services from a host.
+ Instances of this interface are created within the context of an
+ already-identified client and host pair, so there is no need to explicitly
+ identify the client or host in the methods below.
+
+ This interface is deprecated.  Services should be published as directory
+ entries instead, just like files.
+
+### ConnectToService {:#ConnectToService}
+
+ Asks the host to provide the service identified by `service_name` through
+ the `channel` endpoint supplied by the caller. If the host is not willing
+ or able to provide the requested service, it should close the `channel`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>service_name</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr><tr>
+            <td><code>channel</code></td>
+            <td>
+                <code>handle&lt;channel&gt;</code>
+            </td>
+        </tr></table>
+
+
+
 
 
 ## **STRUCTS**
@@ -804,6 +1232,372 @@
         </tr>
 </table>
 
+### EnvironmentOptions {:#EnvironmentOptions}
+*Defined in [fuchsia.sys/environment.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.sys/environment.fidl#10)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>inherit_parent_services</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> True if this environment should inherit services provided by the
+ parent environment.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>use_parent_runners</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> True if components in this environment will share a runner provided
+ by the parent environment. If false, a new runner will be started
+ in this environment for components.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>kill_on_oom</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> True if this environment should be killed first in out of memory
+ situations by setting the `ZX_PROP_JOB_KILL_ON_OOM` property on this
+ environment's job.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>delete_storage_on_death</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> True if "persistent" storage requested by components in this environment should not actually
+ be persistent, and instead be deleted when this environment is killed.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### FlatNamespace {:#FlatNamespace}
+*Defined in [fuchsia.sys/flat_namespace.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.sys/flat_namespace.fidl#7)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>paths</code></td>
+            <td>
+                <code>vector&lt;string&gt;</code>
+            </td>
+            <td> The mount point for each of the directories below.
+
+ For example, ["/pkg", "/svc"].
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>directories</code></td>
+            <td>
+                <code>vector&lt;channel&gt;</code>
+            </td>
+            <td> The directories mounted at each path in the namespace.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### FileDescriptor {:#FileDescriptor}
+*Defined in [fuchsia.sys/launcher.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.sys/launcher.fidl#9)*
+
+
+
+ An FDIO file descriptor.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>type0</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td> The FDIO types of the handle (e.g., `FA_FDIO_REMOTE`).
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>type1</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>type2</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>handle0</code></td>
+            <td>
+                <code>handle&lt;handle&gt;?</code>
+            </td>
+            <td> The handles for the file descriptor (e.g., a channel).
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>handle1</code></td>
+            <td>
+                <code>handle&lt;handle&gt;?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>handle2</code></td>
+            <td>
+                <code>handle&lt;handle&gt;?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### LaunchInfo {:#LaunchInfo}
+*Defined in [fuchsia.sys/launcher.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.sys/launcher.fidl#23)*
+
+
+
+ Information used to create an instance of a component and obtain
+ services from it.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>url</code></td>
+            <td>
+                <code>string[2083]</code>
+            </td>
+            <td> The location from which to retrieve this component.
+
+ This field will probably be replaced with a stronger notion of identity,
+ such as an unforgeable token. This field is included in this iteration to
+ ease the transition from the previous component interfaces.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>arguments</code></td>
+            <td>
+                <code>vector&lt;string&gt;?</code>
+            </td>
+            <td> The arguments to be provided to the component.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>out</code></td>
+            <td>
+                <code><a class='link' href='#FileDescriptor'>FileDescriptor</a>?</code>
+            </td>
+            <td> The file descriptor to use for stdout.
+
+ If null, the component will use the default stdout for the environment.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code><a class='link' href='#FileDescriptor'>FileDescriptor</a>?</code>
+            </td>
+            <td> The file descriptor to use for stderr.
+
+ If null, the component will use the default stderr for the environment.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>directory_request</code></td>
+            <td>
+                <code>handle&lt;channel&gt;?</code>
+            </td>
+            <td> The interface request for a Directory that is passed through to the
+ component and arrives in the component as its `directory_request`
+ interface request.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>flat_namespace</code></td>
+            <td>
+                <code><a class='link' href='#FlatNamespace'>FlatNamespace</a>?</code>
+            </td>
+            <td> A custom namespace that can be appended to the namespace generated by
+ appmgr and provided to this component.
+ Adding a mount point at standard paths like 'pkg' or 'svc' will be ignored.
+ HACK(alhaad): Adding mount points for deprecated default directories like
+ '/data' will override the default.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>additional_services</code></td>
+            <td>
+                <code><a class='link' href='#ServiceList'>ServiceList</a>?</code>
+            </td>
+            <td> A list of services to be added to this component's svc namespace. These
+ services are in addition to those coming from Environment.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ServiceList {:#ServiceList}
+*Defined in [fuchsia.sys/launcher.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.sys/launcher.fidl#61)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>names</code></td>
+            <td>
+                <code>vector&lt;string&gt;</code>
+            </td>
+            <td> A list of services that can be requested from `provider`.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>provider</code></td>
+            <td>
+                <code><a class='link' href='#ServiceProvider'>ServiceProvider</a>?</code>
+            </td>
+            <td> A service provider to get the services listed in `names` from.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>host_directory</code></td>
+            <td>
+                <code>handle&lt;channel&gt;?</code>
+            </td>
+            <td> A channel to the directory hosting the services in `names`.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### StartupInfo {:#StartupInfo}
+*Defined in [fuchsia.sys/runner.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.sys/runner.fidl#13)*
+
+
+
+ Information given to components at startup.
+
+ For ELF binaries, this information is provided in the initialization
+ message given to `libc` by `fuchsia.process.Launcher`.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>launch_info</code></td>
+            <td>
+                <code><a class='link' href='#LaunchInfo'>LaunchInfo</a></code>
+            </td>
+            <td> The launch info for the component to start.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>flat_namespace</code></td>
+            <td>
+                <code><a class='link' href='#FlatNamespace'>FlatNamespace</a></code>
+            </td>
+            <td> The namespace in which to run the component.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>program_metadata</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#ProgramMetadata'>ProgramMetadata</a>&gt;?</code>
+            </td>
+            <td> Key string value string map of the component's program metadata,
+ obtained from its component manifest.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ProgramMetadata {:#ProgramMetadata}
+*Defined in [fuchsia.sys/runner.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.sys/runner.fidl#29)*
+
+
+
+ Program information about a component.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>key</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> Key for program metadata pair. E.g. "binary" for an ELF binary
+ component, or "data" for a flutter/dart component.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> Value for program metadata pair. E.g. "bin/app" for a "binary" key, or
+ "data/foo" for a flutter/dart component.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Package {:#Package}
+*Defined in [fuchsia.sys/runner.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.sys/runner.fidl#42)*
+
+
+
+ A binary representation of a component.
+
+ Typically provided to `Runner.StartComponent` when starting a component.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>data</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.mem/index.html'>fuchsia.mem</a>/<a class='link' href='../fuchsia.mem/index.html#Buffer'>Buffer</a>?</code>
+            </td>
+            <td> A read-only binary representation of the component. For example, if the
+ component is intended to run in the Dart virtual machine, this data
+ might contain a dartx package.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>directory</code></td>
+            <td>
+                <code>handle&lt;channel&gt;?</code>
+            </td>
+            <td> A directory containing the contents of the package. For example, if the
+ component is stored in pkgfs, this directory will be the pkgfs
+ directory containing the package.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>resolved_url</code></td>
+            <td>
+                <code>string[2083]</code>
+            </td>
+            <td> Resolved URL of the component. This is the url specified in
+ `startup_info` after following redirects and resolving relative paths.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
 
 
 ## **ENUMS**
@@ -819,48 +1613,85 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>UNKNOWN</code></td>
             <td><code>0</code></td>
-            <td> The channel closed without giving a termination reason.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>EXITED</code></td>
             <td><code>1</code></td>
-            <td> Component ran and exited with a given return_code.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>URL_INVALID</code></td>
             <td><code>2</code></td>
-            <td> The given URL given to launch was invalid.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>PACKAGE_NOT_FOUND</code></td>
             <td><code>3</code></td>
-            <td> The requested package could not be found.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>INTERNAL_ERROR</code></td>
             <td><code>4</code></td>
-            <td> An internal error happened during the launch process.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>PROCESS_CREATION_ERROR</code></td>
             <td><code>5</code></td>
-            <td> Process creation failed.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>RUNNER_FAILED</code></td>
             <td><code>6</code></td>
-            <td> A Runner failed to start.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>RUNNER_TERMINATED</code></td>
             <td><code>7</code></td>
-            <td> A Runner terminated while attempting to run a component.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>UNSUPPORTED</code></td>
             <td><code>8</code></td>
-            <td> Attempted to use an unsupported feature.
-</td>
+            <td></td>
+        </tr></table>
+
+### TerminationReason {:#TerminationReason}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.sys/component_controller.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.sys/component_controller.fidl#7)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>UNKNOWN</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>EXITED</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>URL_INVALID</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PACKAGE_NOT_FOUND</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>INTERNAL_ERROR</code></td>
+            <td><code>4</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PROCESS_CREATION_ERROR</code></td>
+            <td><code>5</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>RUNNER_FAILED</code></td>
+            <td><code>6</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>RUNNER_TERMINATED</code></td>
+            <td><code>7</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>UNSUPPORTED</code></td>
+            <td><code>8</code></td>
+            <td></td>
         </tr></table>
 
 
@@ -893,6 +1724,23 @@
                 <td><code>uint16</code></td>
             <td></td>
         </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.sys/environment.fidl#8">kLabelMaxLength</a></td>
+            <td>
+                    <code>32</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Maximum length for an environment label.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.sys/types.fidl#11">MAX_URL_LENGTH</a></td>
+            <td>
+                    <code>2083</code>
+                </td>
+                <td><code>uint16</code></td>
+            <td></td>
+        </tr>
     
 </table>
 
diff --git a/sdk/fidl/fuchsia.sys2/index.md b/sdk/fidl/fuchsia.sys2/index.md
index 4154662..542dd5c 100644
--- a/sdk/fidl/fuchsia.sys2/index.md
+++ b/sdk/fidl/fuchsia.sys2/index.md
@@ -870,13 +870,11 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>LAZY</code></td>
             <td><code>0</code></td>
-            <td> Start component instance only when another instance binds to it.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>EAGER</code></td>
             <td><code>1</code></td>
-            <td> Start component instance as soon as parent starts.
-</td>
+            <td></td>
         </tr></table>
 
 ### Durability {:#Durability}
@@ -891,14 +889,11 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>PERSISTENT</code></td>
             <td><code>1</code></td>
-            <td> An instance exists until either it or its parent is destroyed.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>TRANSIENT</code></td>
             <td><code>2</code></td>
-            <td> An instance exists until either its parent instance is stopped
- or it is explicitly destroyed.
-</td>
+            <td></td>
         </tr></table>
 
 ### StorageType {:#StorageType}
@@ -913,19 +908,15 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>DATA</code></td>
             <td><code>1</code></td>
-            <td> General data storage.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>CACHE</code></td>
             <td><code>2</code></td>
-            <td> Cache storage that may be deleted at any time by the system.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>META</code></td>
             <td><code>3</code></td>
-            <td> Meta storage that will be used by component manager to persist metadata
- and other information about the component
-</td>
+            <td></td>
         </tr></table>
 
 ### Error {:#Error}
@@ -940,49 +931,39 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>INTERNAL</code></td>
             <td><code>1</code></td>
-            <td> Component manager encountered an otherwise unspecified error while
- performing the operation.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>INVALID_ARGUMENTS</code></td>
             <td><code>2</code></td>
-            <td> At least one argument had an invalid format.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>UNSUPPORTED</code></td>
             <td><code>3</code></td>
-            <td> The feature is not yet supported.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>INSTANCE_NOT_FOUND</code></td>
             <td><code>4</code></td>
-            <td> The component instance was not found.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>INSTANCE_ALREADY_EXISTS</code></td>
             <td><code>5</code></td>
-            <td> The component instance already exists.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>INSTANCE_CANNOT_START</code></td>
             <td><code>6</code></td>
-            <td> The component instance could not be started.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>INSTANCE_CANNOT_RESOLVE</code></td>
             <td><code>7</code></td>
-            <td> Failed to resolve the component's declaration.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>COLLECTION_NOT_FOUND</code></td>
             <td><code>8</code></td>
-            <td> The component collection was not found.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>NO_SPACE</code></td>
             <td><code>9</code></td>
-            <td> There was insufficient space to perform the operation.
-</td>
+            <td></td>
         </tr></table>
 
 
diff --git a/sdk/fidl/fuchsia.sysinfo/index.md b/sdk/fidl/fuchsia.sysinfo/index.md
index 32fae9d..98f0b28 100644
--- a/sdk/fidl/fuchsia.sysinfo/index.md
+++ b/sdk/fidl/fuchsia.sysinfo/index.md
@@ -82,6 +82,82 @@
             </td>
         </tr></table>
 
+## Device {:#Device}
+*Defined in [fuchsia.sysinfo/sysinfo.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysinfo/sysinfo.fidl#23)*
+
+
+### GetHypervisorResource {:#GetHypervisorResource}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr><tr>
+            <td><code>resource</code></td>
+            <td>
+                <code>handle&lt;resource&gt;?</code>
+            </td>
+        </tr></table>
+
+### GetBoardName {:#GetBoardName}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr><tr>
+            <td><code>name</code></td>
+            <td>
+                <code>string[32]?</code>
+            </td>
+        </tr></table>
+
+### GetInterruptControllerInfo {:#GetInterruptControllerInfo}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr><tr>
+            <td><code>info</code></td>
+            <td>
+                <code><a class='link' href='#InterruptControllerInfo'>InterruptControllerInfo</a>?</code>
+            </td>
+        </tr></table>
+
 
 
 ## **STRUCTS**
@@ -104,6 +180,24 @@
         </tr>
 </table>
 
+### InterruptControllerInfo {:#InterruptControllerInfo}
+*Defined in [fuchsia.sysinfo/sysinfo.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysinfo/sysinfo.fidl#18)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>type</code></td>
+            <td>
+                <code><a class='link' href='#InterruptControllerType'>InterruptControllerType</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
 
 
 ## **ENUMS**
@@ -134,6 +228,32 @@
             <td></td>
         </tr></table>
 
+### InterruptControllerType {:#InterruptControllerType}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.sysinfo/sysinfo.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysinfo/sysinfo.fidl#11)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>UNKNOWN</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>APIC</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>GIC_V2</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>GIC_V3</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr></table>
+
 
 
 
@@ -155,6 +275,14 @@
                 <td><code>uint8</code></td>
             <td></td>
         </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysinfo/sysinfo.fidl#9">SYSINFO_BOARD_NAME_LEN</a></td>
+            <td>
+                    <code>32</code>
+                </td>
+                <td><code>uint8</code></td>
+            <td></td>
+        </tr>
     
 </table>
 
diff --git a/sdk/fidl/fuchsia.sysmem/index.md b/sdk/fidl/fuchsia.sysmem/index.md
index 3d47a93..260890c 100644
--- a/sdk/fidl/fuchsia.sysmem/index.md
+++ b/sdk/fidl/fuchsia.sysmem/index.md
@@ -954,6 +954,954 @@
             </td>
         </tr></table>
 
+## Allocator {:#Allocator}
+*Defined in [fuchsia.sysmem/allocator.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/allocator.fidl#11)*
+
+ Allocates system memory buffers.
+
+
+### AllocateNonSharedCollection {:#AllocateNonSharedCollection}
+
+ Allocates a BufferCollection on behalf of a single client (aka initiator)
+ who is also the only participant (from the point of view of sysmem).
+
+ This call exists mainly for temp/testing purposes.  This call skips the
+ BufferCollectionToken stage, so there's no way to allow another
+ participant to specify its constraints.
+
+ Real clients are encouraged to use AllocateSharedCollection() instead,
+ and to let relevant participants directly convey their own constraints to
+ sysmem.
+
+ `constraints` indicates constraints on the buffer collection, such as how
+ many buffers to allocate, buffer size constraints, etc.
+
+ `collection` is the server end of the BufferCollection FIDL channel.  The
+ client can call SetConstraints() and then WaitForBuffersAllocated() on
+ the client end of this channel to specify constraints and then determine
+ success/failure and get the BufferCollectionInfo_2 for the
+ BufferCollection.  The client should also keep the client end of
+ this channel open while using the BufferCollection, and should notice
+ when this channel closes and stop using the BufferCollection ASAP.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>collection</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#BufferCollection'>BufferCollection</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### AllocateSharedCollection {:#AllocateSharedCollection}
+
+ Creates a logical BufferCollectionToken which can be shared among
+ participants (using BufferCollectionToken.Duplicate()), and then
+ converted into a BufferCollection using BindSharedCollection().
+
+ Success/failure to populate the BufferCollection with buffers is
+ determined via the BufferCollection interface.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>token_request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#BufferCollectionToken'>BufferCollectionToken</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### BindSharedCollection {:#BindSharedCollection}
+
+ Convert a BufferCollectionToken into a connection to the logical
+ BufferCollection.  The BufferCollection hasn't yet been populated with
+ buffers - the participant must first also send SetConstraints() via the
+ client end of buffer_collection.
+
+ All BufferCollectionToken(s) duplicated from a logical
+ BufferCollectionToken created via AllocateSharedCollection() must be
+ turned in via BindSharedCollection() before the logical BufferCollection
+ will be populated with buffers.
+
+ `token` the client endpoint of a channel whose server end was sent to
+ sysmem using AllocateSharedCollection or whose server end was sent to
+ sysmem using BufferCollectionToken.Duplicate().  The token is being
+ "exchanged" for a channel to the logical BufferCollection.
+
+ `buffer_collection` the server end of a BufferCollection channel.  The
+ sender retains the client end as usual.  The BufferCollection channel
+ is a single participant's connection to the logical BufferCollection.
+ There typically will be other participants with their own
+ BufferCollection channel to the logical BufferCollection.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>token</code></td>
+            <td>
+                <code><a class='link' href='#BufferCollectionToken'>BufferCollectionToken</a></code>
+            </td>
+        </tr><tr>
+            <td><code>buffer_collection_request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#BufferCollection'>BufferCollection</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+## BufferCollectionToken {:#BufferCollectionToken}
+*Defined in [fuchsia.sysmem/collection.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/collection.fidl#17)*
+
+ A BufferCollectionToken is not a BufferCollection, but rather a way to
+ identify a potential shared BufferCollection prior to the BufferCollection
+ being allocated.
+
+ We use a channel for the BufferCollectionToken instead of a single eventpair
+ (pair) because this way we can detect error conditions like a participant
+ dying mid-create.
+
+### Duplicate {:#Duplicate}
+
+ The initiator or a participant can send Duplicate() as part of creating
+ another participant-side handle to the same logical
+ BufferCollectionToken.
+
+ This method is used to hand the logical token to all participants so all
+ participants can provide constraints to sysmem for the overall
+ BufferCollection to achieve the goal of allocating buffers compatible
+ with all participants.
+
+ The Duplicate() message is intentionally available only on
+ BufferCollectionToken not BufferCollection.
+
+ The token is separate from BufferCollection so that participants contact
+ sysmem directly, so that participants are only trusting their environment
+ for who sysmem is (fake token mitigation), not an initiator.  Only after
+ successful BindSharedCollection does a participant know that the token
+ was a real sysmem token.  In contrast, if we had Duplicate() directly on
+ BufferCollection, an initiator could attempt to serve the
+ BufferCollection channel itself, which would allow for some problematic
+ possibilities.
+
+ All the BufferCollectionToken channels of a logical token must be turned
+ in via BindSharedCollection() for a BufferCollection to be successfully
+ created.  Else the BufferCollection channel will close.
+
+ When a client calls BindSharedCollection() to turn in a
+ BufferCollectionToken, the server will process all Duplicate() messages
+ before closing down the BufferCollectionToken.  This allows the client
+ to Duplicate() and immediately turn in the BufferCollectionToken using
+ BindSharedCollection, then later transfer the client end of token_request
+ to another participant - the server will notice the existence of the
+ token_request before considering this BufferCollectionToken fully closed.
+
+ `rights_attenuation_mask` rights bits that are zero in this mask will be
+ absent in the buffer VMO rights obtainable via the client end of
+ token_request.  This allows an initiator or intermediary participant
+ to attenuate the rights available to a participant.  This may not be the
+ only mechanism that attenuates rights on the VMO handles obtainable via
+ the client end of token_request.  This does not allow a participant
+ to gain rights that the participant doesn't already have.
+
+ `token_request` is the server end of a BufferCollectionToken channel.
+ The client end of this channel acts as another handle to the same logical
+ BufferCollectionToken.  Typically the sender of Duplicate() will transfer
+ the client end corresponding to collection_request to a/another
+ participant running in a separate process, but it's also fine for the
+ additional logical participant to be in the same process.
+
+ After sending one or more Duplicate() messages, and before sending the
+ created tokens to other participants (or to other Allocator2 channels),
+ the client should send a Sync() and wait for its response.  The Sync()
+ call can be made on the token, or on the BufferCollection obtained by
+ passing this token to BindSharedCollection().  Either will ensure that
+ the server knows about the tokens created via Duplicate() before the
+ other participant sends the token to the server via separate Allocator2
+ channel.  If a client is using FIDL C generated code and doesn't want to
+ block waiting for a response message, the other option is to notice
+ arrival of the BufferCollectionEvents::OnBufferCollectionCreated() event
+ after turning in this token for a BufferCollection.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>rights_attenuation_mask</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>token_request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#BufferCollectionToken'>BufferCollectionToken</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### Sync {:#Sync}
+
+ Ensure that previous Duplicate() messages have been received server side,
+ so that it's safe to send the client end of token_request to another
+ participant knowing the server will recognize the token when it's sent
+ into BindSharedCollection by the other participant.
+
+ Other options include waiting for each Duplicate() to complete
+ individually, or calling Sync() on BufferCollection after this token has
+ been turned in via BindSharedCollection(), or noticing arrival of
+ BufferCollectionEvents::OnDuplicatedTokensKnownByServer().
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+### Close {:#Close}
+
+ Normally a participant will convert the token into a BufferCollection
+ view, but a particpant is also free to Close() the token (and then close
+ the channel immediately or shortly later in response to server closing
+ its end), which avoids causing LogicalBufferCollection failure.
+ Normally an unexpected token channel close will cause
+ LogicalBufferCollection failure.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+## BufferCollection {:#BufferCollection}
+*Defined in [fuchsia.sysmem/collection.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/collection.fidl#132)*
+
+ BufferCollection is a connection directly from a participant to sysmem re.
+ a logical BufferCollection; typically the logical BufferCollection is shared
+ with other participants.  In other words, an instance of the BufferCollection
+ interface is a view of a "LogicalBufferCollection".
+
+ This connection exists to facilitate async indication of when the logical
+ BufferCollection has been populated with buffers.
+
+ Also, the channel's closure by the server is an indication to the client
+ that the client should close all VMO handles that were obtained from the
+ BufferCollection ASAP.
+
+ Also, this interface may in future allow specifying constraints in other
+ ways, and may allow for back-and-forth negotiation of constraints to some
+ degree.
+
+ This interface may in future allow for more than 64 VMO handles per
+ BufferCollection, but currently the limit is 64.
+
+ This interface may in future allow for allocating/deallocating single
+ buffers.
+
+ Some initiators may wait a short duration until all old logical
+ BufferCollection VMO handles have closed (or until the short duration times
+ out) before allocating a new BufferCollection, to help control physical
+ memory fragmentation and avoid overlap of buffer allocation lifetimes for
+ the old and new collections. Collections can be large enough that it's worth
+ avoiding allocation overlap (in time).
+
+### SetEventSink {:#SetEventSink}
+
+ At least for now, the only way to get events from a BufferCollection is
+ to set a reverse BufferCollectionEvents channel.  This can be sent up to
+ once at any point during BufferCollection channel lifetime.  All events
+ are one-shot events, and will be sent immediately via `events` if the
+ one-shot event's condition has already become true (once true will stay
+ true; only goes from false to true once).
+
+ `events` is the client end of a BufferCollectionEvents which will be sent
+ one-way messages indicating events relevant to this BufferCollection
+ channel (some may be specific to this BufferCollection channel and some
+ may be relevant to the overall logical BufferCollection).
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>events</code></td>
+            <td>
+                <code><a class='link' href='#BufferCollectionEvents'>BufferCollectionEvents</a></code>
+            </td>
+        </tr></table>
+
+
+
+### Sync {:#Sync}
+
+ See comments on BufferCollectionToken::Sync().
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+### SetConstraints {:#SetConstraints}
+
+ Provide BufferCollectionConstraints to the logical BufferCollection.
+
+ Participants with read but not write can only call SetConstraints() once.
+
+ Participants with write can call SetConstraints() more than once.  The
+ initial buffer allocation will use the constraints in the first call to
+ SetConstraints().  Among other things, this allows a decoder to attempt
+ to allocate a new buffer that's larger to hold an output frame that's
+ larger.
+
+ Sometimes the initiator is a participant only in the sense of wanting to
+ keep an eye on success/failure to populate with buffers, and zx.status on
+ failure.  In that case, `has_constraints` can be false, and `constraints`
+ will be ignored.
+
+ VMO handles will not be provided to the client that sends null
+ constraints - that can be intentional for an initiator that doesn't need
+ VMO handles.  Not having VMO handles doesn't prevent the initator from
+ adjusting which portion of a buffer is considered valid and similar, but
+ the initiator can't hold a VMO handle open to prevent the logical
+ BufferCollection from cleaning up if the logical BufferCollection needs
+ to go away regardless of the initiator's degree of involvement for
+ whatever reason.
+
+ For population of buffers to be attempted, all holders of a
+ BufferCollection client channel need to call SetConstraints() before
+ sysmem will attempt to allocate buffers.
+
+ `has_constraints` if false, the constraints are effectively null, and
+ `constraints` are ignored.  The sender of null constraints won't get any
+ VMO handles in BufferCollectionInfo, but can still find out how many
+ buffers were allocated and can still refer to buffers by their
+ buffer_index.
+
+ `constraints` are constraints on the buffer collection.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>has_constraints</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr><tr>
+            <td><code>constraints</code></td>
+            <td>
+                <code><a class='link' href='#BufferCollectionConstraints'>BufferCollectionConstraints</a></code>
+            </td>
+        </tr></table>
+
+
+
+### WaitForBuffersAllocated {:#WaitForBuffersAllocated}
+
+ This request completes when buffers have been allocated, responds with
+ some failure detail if allocation has been attempted but failed.
+
+ The following must occur before buffers will be allocated:
+   * All BufferCollectionToken(s) of the logical BufferCollectionToken
+     must be turned in via BindSharedCollection().
+   * All BufferCollection(s) of the logical BufferCollection must have had
+     SetConstraints() sent to them.
+
+ A caller using C generated FIDL code who wishes not to block a thread in
+ a zx_channel_call() for a potentially fairly long duration on this
+ message/response can use SetEventSink() and
+ BufferCollectionEvents.OnBuffersPopulated() instead.
+
+ This method is still legal to call despite use of OnBuffersPopulated(),
+ but in that case the additional BufferCollectionInfo returned here will
+ include handles that are redundant with other handles in the
+ BufferCollectionInfo delivered via OnBuffersPopulated() (separate handle
+ but same underlying VMO objects), so most clients that bother calling
+ SetEventSink() will prefer to receive BufferCollectionInfo via
+ OnBuffersPopulated().  This method is mostly here for clients that don't
+ call SetEventSink().
+
+ Returns `ZX_OK` if successful.
+ Returns `ZX_ERR_NO_MEMORY` if the request is valid but cannot be
+ fulfilled due to resource exhaustion.
+ Returns `ZX_ERR_ACCESS_DENIED` if the caller is not permitted to
+ obtain the buffers it requested.
+ Returns `ZX_ERR_INVALID_ARGS` if the request is malformed.
+ Returns `ZX_ERR_NOT_SUPPORTED` if request is valid but cannot be
+ satisfied, perhaps due to hardware limitations.
+
+ `buffer_collection_info` has the VMO handles and other related info.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr><tr>
+            <td><code>buffer_collection_info</code></td>
+            <td>
+                <code><a class='link' href='#BufferCollectionInfo_2'>BufferCollectionInfo_2</a></code>
+            </td>
+        </tr></table>
+
+### CheckBuffersAllocated {:#CheckBuffersAllocated}
+
+ This returns the same result code as WaitForBuffersAllocated if the
+ buffer collection has been allocated or failed, or `ZX_ERR_UNAVAILABLE`
+ if WaitForBuffersAllocated would block.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr></table>
+
+### CloseSingleBuffer {:#CloseSingleBuffer}
+
+ The CloseBuffer() doesn't immediately force all VMO handles to that
+ buffer to close, but it does close any handle held by sysmem, and does
+ notify all participants of the desire to close the buffer at which point
+ each participant that's listening may close their handle to the buffer.
+
+ Only a particpant with write can do this.  Coordination among multiple
+ participants with write is outside of the scope of this interface.
+
+ `buffer_index` indicates which buffer to close.  If the buffer is already
+ closed this has no effect (idempotent).
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>buffer_index</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr></table>
+
+
+
+### AllocateSingleBuffer {:#AllocateSingleBuffer}
+
+ This allocates a new buffer that is consistent with the most recent call
+ to SetConstraints(), if possible.  If not possible, this indicates the
+ failure via OnNewBufferAllocated().
+
+ Only a participant with write can do this.  Coordination among multiple
+ participants with write is outside the scope of this interface.
+
+ The participant is (intentionally) never informed of other participant's
+ constraints.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>buffer_index</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr></table>
+
+
+
+### WaitForSingleBufferAllocated {:#WaitForSingleBufferAllocated}
+
+ Completes when AllocateBuffer is done.  Callers who wish to avoid
+ blocking a thread while waiting can use OnAllocateSingleBufferDone()
+ instead.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>buffer_index</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr><tr>
+            <td><code>buffer_info</code></td>
+            <td>
+                <code><a class='link' href='#SingleBufferInfo'>SingleBufferInfo</a></code>
+            </td>
+        </tr></table>
+
+### CheckSingleBufferAllocated {:#CheckSingleBufferAllocated}
+
+ A participant can use this message to have sysmem verify that this
+ buffer_index exists.  This message is intentionally ignored by the
+ server if the buffer_index _does_ exist.  In that case, the client will
+ see OnAllocateSingleBufferDone() soon with status == `ZX_OK` (if the
+ client hasn't already seen that message).  If on the other hand the
+ buffer_index does not exist, this message causes the server to send
+ OnAllocateSingleBufferDone() with status == `ZX_ERR_NOT_FOUND`.  A
+ particpant will typically use this when the participant receives a new
+ buffer_index that the participant doesn't yet know about, to ensure that
+ the participant won't be waiting forever for the
+ OnAllocateSingleBufferDone() message regarding this buffer_index.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>buffer_index</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr></table>
+
+
+
+### Close {:#Close}
+
+ The server handles unexpected failure of a BufferCollection by failing
+ the whole LogicalBufferCollection.  Partly this is to expedite closing
+ VMO handles.  If a participant would like to cleanly close a
+ BufferCollection view without causing LogicalBufferCollection failure,
+ the participant can send Close() before closing the client end of the
+ BufferCollection channel.  If this is the last BufferCollection view, the
+ LogicalBufferCollection will still go away.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+## BufferCollectionEvents {:#BufferCollectionEvents}
+*Defined in [fuchsia.sysmem/collection.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/collection.fidl#285)*
+
+ This interface intentionally doesn't include any event for
+ OnOldBufferClosed(), because such an event could arrive at a participant too
+ soon to be useful.  Instead, such an indication should be made in-band within
+ FIDL interfaces that deliver packets to downstream participants.
+
+### OnDuplicatedTokensKnownByServer {:#OnDuplicatedTokensKnownByServer}
+
+ See comments on BufferCollectionToken::Sync().
+
+ This message only indicates that the server has reached the point where
+ it knows about previously created tokens Duplicate()ed from the token
+ used to create this BufferCollection.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### OnBuffersAllocated {:#OnBuffersAllocated}
+
+ This event inidicates that buffer allocation is over, whether succesful
+ or failed.
+
+ This event will eventually be sent by the server (unless the
+ BufferCollection channel closes first).
+
+ `status`:
+ `ZX_OK` if successful.
+ `ZX_ERR_NO_MEMORY` if the request is valid but cannot be fulfilled due to
+ resource exhaustion.
+ `ZX_ERR_ACCESS_DENIED` if the caller is not permitted to obtain the
+ buffers it requested.
+ `ZX_ERR_INVALID_ARGS` if the request is malformed.
+ `ZX_ERR_NOT_SUPPORTED` if request is valid but cannot be satisfied,
+ perhaps due to hardware limitations.
+
+ `buffer_collection_info` The buffer information, including VMO handles.
+ If `status` is not `ZX_OK`, `buffer_collection_info` is default
+ initialized and contains no meaningful information.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr><tr>
+            <td><code>buffer_collection_info</code></td>
+            <td>
+                <code><a class='link' href='#BufferCollectionInfo_2'>BufferCollectionInfo_2</a></code>
+            </td>
+        </tr></table>
+
+
+
+### OnAllocateSingleBufferDone {:#OnAllocateSingleBufferDone}
+
+ A participant can learn when a new buffer is allocated via this event.
+ The only participant that will see a failing status is the participant
+ that attempted the single buffer allocation.  Other participants will
+ only see successful single buffer allocations.
+
+ `status`:
+
+ `ZX_OK` if successful.  This can be seen by any participant (whether
+ sender of AllocateSingleBuffer() or not.)
+
+ `ZX_ERR_NOT_FOUND` if the buffer_index sent via
+ CheckSingleBufferAllocated() isn't known to the server.  This can be seen
+ by any participant (whether sender of AllocateSingleBuffer() or not.)
+
+ These error codes are only ever seen by the sender of
+ AllocateSingleBuffer():
+
+ `ZX_ERR_NO_MEMORY` if the request is valid but cannot be fulfilled due to
+ resource exhaustion.
+ `ZX_ERR_ACCESS_DENIED` if the caller is not permitted to obtain the
+ buffers it requested.
+ `ZX_ERR_INVALID_ARGS` if the request is malformed.
+ `ZX_ERR_NOT_SUPPORTED` if request is valid but cannot be satisfied,
+ perhaps due to hardware limitations.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr><tr>
+            <td><code>buffer_info</code></td>
+            <td>
+                <code><a class='link' href='#SingleBufferInfo'>SingleBufferInfo</a></code>
+            </td>
+        </tr></table>
+
+
+
+## DriverConnector {:#DriverConnector}
+*Defined in [fuchsia.sysmem/driver_connector.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/driver_connector.fidl#26)*
+
+ Once a channel with this interface is established to a driver (typically in
+ advance), this interface allows asynchronously sending the server end of an
+ Allocator channel which will be served by the driver.
+
+ For now, the only FIDL interface directly served via normal devhost FIDL
+ dispatching code by the sysmem driver is this interface.  Other sysmem
+ interfaces are served by separate dispatching code primarily because we want
+ to be able to establish channels async by sending the server channel toward
+ the driver without needing a round-trip open and without managing the channel
+ as a file descriptor.
+
+ A secondary current reason tracked by ZX-3091 is that the current devhost
+ dispatching code doesn't permit async processing of requests, which we want
+ for proper functionining of at least the BufferCollection interface since
+ that interface has requests that don't complete until the devhost has
+ constraints from other participants.
+
+### Connect {:#Connect}
+
+ This one-way message sends in the server end of an Allocator channel.
+
+ `allocator_request` will be served by the sysmem driver (or the channel
+ will close).
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>allocator_request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#Allocator'>Allocator</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+## Heap {:#Heap}
+*Defined in [fuchsia.sysmem/heap.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/heap.fidl#13)*
+
+ Manages resources on a specific sysmem heap.
+
+ Needs Layout = "Simple" because used with "FIDL Simple C Bindings".
+
+### AllocateVmo {:#AllocateVmo}
+
+ Request a new memory allocation of `size` on heap.
+ For heaps which don't permit CPU access to the buffer data, this
+ will create a VMO with an official size, but which never has any
+ physical pages.  For such heaps, the VMO is effectively used as
+ an opaque buffer identifier.
+
+ Heaps should defer allocation of any associated resources until
+ CreateResource(), because the caller of AllocateVmo() may simply
+ delete the returned VMO with no further notification to the heap.
+ In contrast, after CreateResource(), the caller guarantees that
+ DestroyResource() or heap channel closure will occur.
+
+ The caller guarantees that CreateResource() will be called prior
+ to the returned VMO or any associated child VMO being used.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>size</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr><tr>
+            <td><code>vmo</code></td>
+            <td>
+                <code>handle&lt;vmo&gt;?</code>
+            </td>
+        </tr></table>
+
+### CreateResource {:#CreateResource}
+
+ Create resources and associate heap-specific resources with the
+ passed-in VMO. Resources can be hardware specific and their
+ lifetime don't have to be tied to `vmo`. `vmo` must be a VMO
+ (or a direct or indirect child of a VMO) acquired through a call
+ to AllocateVmo method above.  If the passed-in vmo is a child VMO,
+ its size must match the size of the parent VMO created by
+ AllocateVmo().  For heaps that permit CPU access, the passed-in
+ VMO must not have a copy-on-write relationship with the parent
+ VMO, but rather a pass-through relationship. Successful return
+ status indicate that Heap has established a mapping between
+ VMO and hardware specific resources.
+
+ The returned id must be passed to DestroyResource() later when
+ resources associated with VMO are no longer needed, unless the
+ heap channel closes first.
+
+ The heap must not own/keep a handle to VMO, or any derived child
+ VMO, or any VMAR mapping to VMO, as any of those would keep VMO
+ alive beyond all sysmem participant usages of the vmo; instead
+ the heap can get the vmo's koid for the heap's mapping.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>vmo</code></td>
+            <td>
+                <code>handle&lt;vmo&gt;</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr><tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr></table>
+
+### DestroyResource {:#DestroyResource}
+
+ Destroy previously created resources.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+## SecureMem {:#SecureMem}
+*Defined in [fuchsia.sysmem/secure_mem.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/secure_mem.fidl#31)*
+
+ SecureMem
+
+ The client is sysmem.  The server is securemem driver.
+
+ TEE - Trusted Execution Environment.
+
+ REE - Rich Execution Environment.
+
+ Enables sysmem to call the securemem driver to get any secure heaps
+ configured via the TEE (or via the securemem driver), and set any physical
+ secure heaps configured via sysmem.
+
+ Presently, dynamically-allocated secure heaps are configured via sysmem, as
+ it starts quite early during boot and can successfully reserve contiguous
+ physical memory.  Presently, fixed-location secure heaps are configured via
+ TEE, as the plumbing goes from the bootloader to the TEE.  However, this
+ protocol intentionally doesn't care which heaps are dynamically-allocated
+ and which are fixed-location.
+
+
+### GetPhysicalSecureHeaps {:#GetPhysicalSecureHeaps}
+
+ Gets the physical address and length of any secure heap whose physical
+ range is configured via the TEE.
+
+ Presently, these will be fixed physical addresses and lengths, with the
+ location plumbed via the TEE.
+
+ This is preferred over RegisterHeap() when there isn't any special
+ heap-specific per-VMO setup or teardown required.
+
+ The physical range must be secured/protected by the TEE before the
+ securemem driver responds to this request with success.
+
+ Sysmem should only call this once.  Returning zero heaps is not a
+ failure.
+
+ Errors:
+  * ZX_ERR_BAD_STATE - called more than once.
+  * ZX_ERR_INTERNAL - generic internal error (such as in communication
+    with TEE which doesn't generate zx_status_t errors).
+  * other errors are possible, such as from communication failures or
+    server propagation of zx_status_t failures
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#SecureMem_GetPhysicalSecureHeaps_Result'>SecureMem_GetPhysicalSecureHeaps_Result</a></code>
+            </td>
+        </tr></table>
+
+### SetPhysicalSecureHeaps {:#SetPhysicalSecureHeaps}
+
+ This request from sysmem to the securemem driver lets the TEE know the
+ physical memory address and length of any secure heap whose location is
+ configured/established via sysmem.
+
+ Only sysmem can call this because only sysmem is handed the client end
+ of a FIDL channel serving this protocol, via RegisterSecureMem().  The
+ securemem driver is the server end of this protocol.
+
+ Presently, these physical ranges will be dynamically-allocated by sysmem
+ early during boot.
+
+ The heap ID is included in case that's relevant to the securemem driver,
+ for more informative log messages, and for consistency with
+ GetPhysicalSecureHeaps().
+
+ The securemem driver must configure all the provided ranges as secure
+ with the TEE before responding to this message with success.
+
+ For heaps configured via sysmem, both the HeapType and heap location are
+ configured via sysmem, and ZX_ERR_INVALID_ARGS will be the result if the
+ securemem driver determines that the number of heaps or HeapType(s) are
+ not what's supported by the securemem driver.  Typically these aspects
+ are essentially fixed for a given device, so this error would typically
+ imply a configuration or plumbing problem.
+
+ Sysmem should only call this once.
+
+ Errors:
+  * ZX_ERR_BAD_STATE - called more than once
+  * ZX_ERR_INVALID_ARGS - unexpected heap count or unexpected heap
+  * ZX_ERR_INTERNAL - generic internal error (such as in communication
+    with TEE which doesn't generate zx_status_t errors).
+  * other errors are possible, such as from communication failures or
+    server propagation of zx_status_t failures
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>heaps</code></td>
+            <td>
+                <code><a class='link' href='#PhysicalSecureHeaps'>PhysicalSecureHeaps</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#SecureMem_SetPhysicalSecureHeaps_Result'>SecureMem_SetPhysicalSecureHeaps_Result</a></code>
+            </td>
+        </tr></table>
+
 
 
 ## **STRUCTS**
@@ -2176,6 +3124,1224 @@
         </tr>
 </table>
 
+### BufferCollectionInfo {:#BufferCollectionInfo}
+*Defined in [fuchsia.sysmem/collections_deprecated.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/collections_deprecated.fidl#9)*
+
+
+
+ Information about a buffer collection and its buffers.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>buffer_count</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> The number of buffers in the collection.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>format</code></td>
+            <td>
+                <code><a class='link' href='#BufferFormat'>BufferFormat</a></code>
+            </td>
+            <td> Describes how the contents of buffers are represented.
+ All buffers within the collection have the same format.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>vmos</code></td>
+            <td>
+                <code>vmo[64]</code>
+            </td>
+            <td> VMO handles for each buffer in the collection.
+ The VMOs are only present when the buffers are backed by VMOs.
+
+ If present, all the VMOs after `buffer_count` are invalid handles.
+ All buffer VMO handles have identical size and access rights.
+ The VMO access rights are determined based on the usages which the
+ client specified when allocating the buffer collection.  For example,
+ a client which expressed a read-only usage will receive VMOs without
+ write rights.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>vmo_size</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> The size of each VMO provided.
+ This property is only present when the buffers are backed by VMOs.
+</td>
+            <td>0</td>
+        </tr>
+</table>
+
+### BufferCollectionConstraints {:#BufferCollectionConstraints}
+*Defined in [fuchsia.sysmem/constraints.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/constraints.fidl#16)*
+
+
+
+ Constraints on BufferCollection parameters.  These constraints can be
+ specified per-participant.  The sysmem service implements aggregation of
+ constraints from multiple participants.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>usage</code></td>
+            <td>
+                <code><a class='link' href='#BufferUsage'>BufferUsage</a></code>
+            </td>
+            <td> The usage is only meant as a hint to help sysmem choose a more optimal
+ PixelFormat or similar when multiple compatible options exist.
+
+ When aggregating BufferCollectionConstraints, these values bitwise-OR.
+
+ At least one usage bit must be specified unless the whole
+ BufferCollectionConstraints is logically null due to !has_constraints.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>min_buffer_count_for_camping</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> Per-participant minimum number of buffers that are needed for camping
+ purposes.  A participant should specify a number for min_buffer_count
+ that's >= the maximum number of buffers that the participant may
+ concurrently camp on for any non-transient period of time.
+
+ For example, a video decoder would specify (at least) the maximum number
+ of reference frames + 1 frame currently being decoded into.
+
+ A participant must not camp on more buffers than specified here (except
+ very transiently) else processing may get stuck.
+
+ When aggregating BufferCollectionConstraints, these values add.
+
+ In testing scenarios, camping on more buffers than this for any
+ significant duration may (ideally will) be flagged as a failure.  In
+ testing scenarios, the participant may not be provided with more buffers
+ than this concurrently.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>min_buffer_count_for_dedicated_slack</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> Per-participant minimum number of buffers that are needed for slack
+ reasons, for better overlap of processing / better performance.
+
+ When aggregating BufferCollectionConstraints, these values add.
+
+ A participant should typically specify 0 or 1 here - typically 0 is
+ appropriate if min_buffer_count_for_camping is already enough to keep
+ the participant busy 100% of the time when the participant is slightly
+ behind, while 1 can be appropriate if 1 more buffer than strictly needed
+ for min-camping reasons gives enough slack to stay busy 100% of the time
+ (when slightly behind, vs. lower % without the extra buffer).
+
+ In testing scenarios, this field may be forced to 0, and all
+ participants are expected to continue to work without getting stuck.  If
+ a buffer is needed for forward progress reasons, that buffer should be
+ accounted for in min_buffer_count_for_camping.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>min_buffer_count_for_shared_slack</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> Similar to min_buffer_count_for_dedicated_slack, except when aggregating
+ these values max (instead of add).  The value here is not shared with
+ any participant's min_buffer_count_for_dedicated_slack.
+
+ A participant can specify > 0 here if a participant would like to ensure
+ there's some slack overall, but doesn't need that slack to be dedicated.
+
+ The choice whether to use min_buffer_count_for_dedicated_slack or
+ min_buffer_count_for_shared_slack (or both) will typically be about the
+ degree to which the extra slack improves performance.
+
+ In testing scenarios, this field may be forced to 0, and all
+ participants are expected to continue to work without getting stuck.  If
+ a buffer is needed for forward progress reasons, that buffer should be
+ accounted for in min_buffer_count_for_camping.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>min_buffer_count</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> A particularly-picky participant may unfortunately need to demand a tight
+ range of buffer_count, or even a specific buffer_count.  This field
+ should remain 0 unless a participant really must set this field to
+ constrain the overall BufferCollectionInfo_2.buffer_count.  Any such
+ participant should still fill out the min_buffer_count_for_* fields
+ above.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>max_buffer_count</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> 0 is treated as 0xFFFFFFFF.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>has_buffer_memory_constraints</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Constraints on BufferCollectionSettings.buffer_settings.
+
+ A participant that intends to specify image_format_constraints_count > 1
+ will typically specify the minimum buffer size implicitly via
+ image_format_constraints, and possibly specify only the max buffer size
+ via buffer_memory_constraints.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>buffer_memory_constraints</code></td>
+            <td>
+                <code><a class='link' href='#BufferMemoryConstraints'>BufferMemoryConstraints</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>image_format_constraints_count</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> Optional constraints on the image format parameters of an image stored
+ in a buffer of the BufferCollection.  This includes pixel format and
+ image layout.  These constraints are per-pixel-format, so more than one
+ is permitted.
+
+ When aggregating, only pixel formats that are specified by all
+ particpants with non-zero image_format_constraints_count (and non-Null)
+ BufferCollectionConstraints) are retained.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>image_format_constraints</code></td>
+            <td>
+                <code>[32]</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### VmoBuffer {:#VmoBuffer}
+*Defined in [fuchsia.sysmem/constraints.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/constraints.fidl#111)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>vmo</code></td>
+            <td>
+                <code>handle&lt;vmo&gt;?</code>
+            </td>
+            <td> The same VMO can be used by more than one CodecBuffer (only of the same
+ buffer_lifetime_ordinal), but each vmo_handle must be a separate handle.
+
+ The vmo field can be 0 if this is a VmoBuffer in BufferCollectionInfo_2
+ that's at or beyond BufferCollectionInfo_2.buffer_count.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>vmo_usable_start</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> Offset within the VMO of the first usable byte.  Must be < the VMO's size
+ in bytes, and leave sufficient room for BufferMemorySettings.size_bytes
+ before the end of the VMO.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### BufferCollectionInfo_2 {:#BufferCollectionInfo_2}
+*Defined in [fuchsia.sysmem/constraints.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/constraints.fidl#127)*
+
+
+
+ Information about a buffer collection and its buffers.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>buffer_count</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> If this is the initial buffer collection allocation, this is the total
+ number of buffers.  If this is a single buffer allocation, this is zero,
+ and the rest of the fields only apply to the single buffer.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>settings</code></td>
+            <td>
+                <code><a class='link' href='#SingleBufferSettings'>SingleBufferSettings</a></code>
+            </td>
+            <td> These settings apply to all the buffers in the inital buffer allocation.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>buffers</code></td>
+            <td>
+                <code>[64]</code>
+            </td>
+            <td> VMO handles (and vmo_usable_start offset) for each buffer in the
+ collection.
+
+ If present, all the VMOs at or after index `buffer_count` are invalid (0)
+ handles.
+
+ All buffer VMO handles have identical size and access rights.  The size
+ is in settings.buffer_settings.size_bytes.
+
+ The VMO access rights are determined based on the usages which the
+ client specified when allocating the buffer collection.  For example,
+ a client which expressed a read-only usage will receive VMOs without
+ write rights.  In addition, the rights can be attenuated by the parameter
+ to BufferCollectionToken.Duplicate() calls.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SingleBufferInfo {:#SingleBufferInfo}
+*Defined in [fuchsia.sysmem/constraints.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/constraints.fidl#153)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>settings</code></td>
+            <td>
+                <code><a class='link' href='#SingleBufferSettings'>SingleBufferSettings</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>buffer</code></td>
+            <td>
+                <code><a class='link' href='#VmoBuffer'>VmoBuffer</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SingleBufferSettings {:#SingleBufferSettings}
+*Defined in [fuchsia.sysmem/constraints.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/constraints.fidl#162)*
+
+
+
+ After the initial buffer allocation, it's allowed to close old buffers and
+ allocate new buffers.  When a new buffer is allocated its settings can differ
+ from the rest of the buffers in the collection, and the single buffer's
+ settings are delivered via OnSingleBufferAllocated() using this struct:
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>buffer_settings</code></td>
+            <td>
+                <code><a class='link' href='#BufferMemorySettings'>BufferMemorySettings</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>has_image_format_constraints</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Buffers holding data that is not uncompressed image data will not have
+ this field set.  Buffers holding data that is uncompressed image data
+ _may_ have this field set.
+
+ At least for now, changing the PixelFormat requires re-allocating
+ buffers.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>image_format_constraints</code></td>
+            <td>
+                <code><a class='link' href='#ImageFormatConstraints'>ImageFormatConstraints</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### BufferMemoryConstraints {:#BufferMemoryConstraints}
+*Defined in [fuchsia.sysmem/constraints.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/constraints.fidl#191)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>min_size_bytes</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>0</td>
+        </tr><tr>
+            <td><code>max_size_bytes</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>4294967295</td>
+        </tr><tr>
+            <td><code>physically_contiguous_required</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+            <td>false</td>
+        </tr><tr>
+            <td><code>secure_required</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> If true, at least one participant requires secure memory.
+
+ When aggregating BufferCollectionConstraints, these values boolean-OR.
+</td>
+            <td>false</td>
+        </tr><tr>
+            <td><code>ram_domain_supported</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> By default, participants must ensure the CPU can read or write data to
+ the buffer without cache operations. If they support using the RAM
+ domain, data must be available in RAM (with CPU cache state such that
+ the RAM data won't get corrupted by a dirty CPU cache line writing
+ incorrect data to RAM), and a consumer reading using the CPU must
+ invalidate CPU cache before reading (the producer doesn't guarantee
+ zero stale "clean" cache lines)
+</td>
+            <td>false</td>
+        </tr><tr>
+            <td><code>cpu_domain_supported</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+            <td>true</td>
+        </tr><tr>
+            <td><code>inaccessible_domain_supported</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+            <td>false</td>
+        </tr><tr>
+            <td><code>heap_permitted_count</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> Optional heap constraints. Participants that don't care which heap
+ memory is allocated on should leave this field 0.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>heap_permitted</code></td>
+            <td>
+                <code>[32]</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### BufferMemorySettings {:#BufferMemorySettings}
+*Defined in [fuchsia.sysmem/constraints.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/constraints.fidl#232)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>size_bytes</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>is_physically_contiguous</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>is_secure</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>coherency_domain</code></td>
+            <td>
+                <code><a class='link' href='#CoherencyDomain'>CoherencyDomain</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>heap</code></td>
+            <td>
+                <code><a class='link' href='#HeapType'>HeapType</a></code>
+            </td>
+            <td> The specific heap from which buffers are allocated.
+ See above in this file for heap identifier values.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ImageFormatConstraints {:#ImageFormatConstraints}
+*Defined in [fuchsia.sysmem/constraints.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/constraints.fidl#244)*
+
+
+
+ Describes constraints on layout of image data in buffers.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>pixel_format</code></td>
+            <td>
+                <code><a class='link' href='#PixelFormat'>PixelFormat</a></code>
+            </td>
+            <td> The PixelFormat for which the following constraints apply.  A
+ participant may have more than one PixelFormat that's supported, in
+ which case that participant can use a list of ImageFormatConstraints
+ with an entry per PixelFormat.  It's not uncommon for the other fields
+ of ImageFormatConstraints to vary by PixelFormat - for example for a
+ linear format to support smaller max size than a tiled format.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>color_spaces_count</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> Empty is an error.  Redundant entries are an error.  Arbitrary ordering
+ is not an error.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>color_space</code></td>
+            <td>
+                <code>[32]</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>min_coded_width</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> Minimum permitted width in pixels.
+
+ For example a video decoder participant may set this field to the
+ minimum coded_width that might potentially be specified by a stream.  In
+ contrast, required_min_coded_width would be set to the current
+ coded_width specified by the stream.  While min_coded_width aggregates
+ by taking the max, required_min_coded_width aggregates by taking the
+ min.
+
+ See also required_min_coded_width.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>max_coded_width</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> Maximum width in pixels.  For example Scenic may set this field
+ (directly or via sub-participants) to the maximum width that can be
+ composited.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>min_coded_height</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> Minimum height in pixels.  For example a video decoder participant may
+ set this field to the coded_height specified by a stream.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>max_coded_height</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> Maximum height in pixels.  For example Scenic may set this field
+ (directly or via sub-participants) to the maximum height that can be
+ composited.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>min_bytes_per_row</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> Must be >= the value implied by min_coded_width for plane 0.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>max_bytes_per_row</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> Must be >= the value implied by max_coded_width for plane 0.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>max_coded_width_times_coded_height</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> The max image area in pixels is limited indirectly via
+ BufferSettings.size_bytes, and can also be enforced directly via this
+ field.
+</td>
+            <td>4294967295</td>
+        </tr><tr>
+            <td><code>layers</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> Number of layers within a multi-layered image.
+ Defaults to 1 if not specified.
+</td>
+            <td>1</td>
+        </tr><tr>
+            <td><code>coded_width_divisor</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> coded_width % width_divisor must be 0.
+</td>
+            <td>1</td>
+        </tr><tr>
+            <td><code>coded_height_divisor</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> coded_height % height_divisor must be 0.
+</td>
+            <td>1</td>
+        </tr><tr>
+            <td><code>bytes_per_row_divisor</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> bytes_per_row % bytes_per_row_divisor must be 0.
+</td>
+            <td>1</td>
+        </tr><tr>
+            <td><code>start_offset_divisor</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> vmo_usable_start % start_offset_divisor must be 0.
+</td>
+            <td>1</td>
+        </tr><tr>
+            <td><code>display_width_divisor</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> display_width % display_width_divisor must be 0.
+</td>
+            <td>1</td>
+        </tr><tr>
+            <td><code>display_height_divisor</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> display_height % display_height_divisor must be 0.
+</td>
+            <td>1</td>
+        </tr><tr>
+            <td><code>required_min_coded_width</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> required_ dimension bounds.
+
+ In contrast to the corresponding fields without "required_" at the
+ start, these fields (when set to non-zero values) express a requirement
+ that the resulting aggregated non-required_ fields specify a space that
+ fully contain the space expressed by each participant's required_
+ fields.
+
+ For example, a producer video decoder is perfectly happy for the
+ consumer to be willing to accept anything, and the video decoder doesn't
+ really want to constrain the potential space of dimensions that might be
+ seen in a stream and may be acceptable to the consumer, but the video
+ decoder needs to ensure that the resulting dimension ranges contain
+ at least the current dimensions decoded from the stream.
+
+ Similarly, an initiator with a particular dynamic-dimension scenario in
+ mind may wish to require up front that participants agree to handle at
+ least the range of dimensions expected by the initiator in that
+ scenario (else fail earlier rather than later, maybe trying again with
+ smaller required_ space).
+
+ It's much more common for a producer or initiator to set these fields
+ than for a consumer to set these fields.
+
+ While the non-required_ fields aggregate by taking the intersection, the
+ required_ fields aggregate by taking the union.
+
+ If set, the required_max_coded_width and required_max_coded_height will
+ cause the allocated buffers to be large enough to hold an image that is
+ required_max_coded_width * required_max_coded_height.
+
+ TODO(dustingreen): Make it easier to allocate buffers of minimal size
+ that can (optionally) also handle 90 degree rotated version of the max
+ dimensions / alternate required bounds for another main aspect ratio.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>required_max_coded_width</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>required_min_coded_height</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>required_max_coded_height</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>required_min_bytes_per_row</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>required_max_bytes_per_row</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ImageFormat_2 {:#ImageFormat_2}
+*Defined in [fuchsia.sysmem/constraints.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/constraints.fidl#358)*
+
+
+
+ Describes how an image is represented.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>pixel_format</code></td>
+            <td>
+                <code><a class='link' href='#PixelFormat'>PixelFormat</a></code>
+            </td>
+            <td> Pixel format.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>coded_width</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> Row width in pixels that exist in the buffer.  Must be >= display_width.
+ Can be < the width implied by stride_bytes.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>coded_height</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> Number of rows.  Must be >= display_height.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>bytes_per_row</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>display_width</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> Row width in pixels that are to be displayed.  This can be <=
+ coded_width.  Any cropping occurs on the right of the image (not left).
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>display_height</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> Number of rows to be displayed.  This can be <= coded_height, with any
+ cropping on the bottom (not top).
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>layers</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> Number of layers within a multi-layered image.
+</td>
+            <td>1</td>
+        </tr><tr>
+            <td><code>color_space</code></td>
+            <td>
+                <code><a class='link' href='#ColorSpace'>ColorSpace</a></code>
+            </td>
+            <td> Color space.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>has_pixel_aspect_ratio</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> The pixel_aspect_ratio_width : pixel_aspect_ratio_height is the
+ pixel aspect ratio (AKA sample aspect ratio aka SAR) for the luma
+ (AKA Y) samples. A pixel_aspect_ratio of 1:1 mean square pixels. A
+ pixel_aspect_ratio of 2:1 would mean pixels that are displayed twice
+ as wide as they are tall. Codec implementation should ensure these
+ two values are relatively prime by reducing the fraction (dividing
+ both by GCF) if necessary.
+
+ When has_pixel_aspect_ratio == false, pixel_aspect_ratio_width and
+ pixel_aspect_ratio_height will both be 1, but in that case the
+ pixel_aspect_ratio_width : pixel_aspect_ratio_height of 1:1 is just
+ a very weak suggestion re. reasonable-ish handling, not in any way
+ authoritative. In this case (or in any case really) the receiver of
+ this message may have other OOB means to determine the actual
+ pixel_aspect_ratio.
+</td>
+            <td>false</td>
+        </tr><tr>
+            <td><code>pixel_aspect_ratio_width</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>1</td>
+        </tr><tr>
+            <td><code>pixel_aspect_ratio_height</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>1</td>
+        </tr>
+</table>
+
+### FormatModifier {:#FormatModifier}
+*Defined in [fuchsia.sysmem/format_modifier.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/format_modifier.fidl#7)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> The upper 8 bits are a vendor code as allocated in FormatModifierVendor
+ enum.  The lower 56 bits are vendor-defined.
+
+ This field and the values that go in this field are defined this way for
+ compatibility reasons.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### PixelFormat {:#PixelFormat}
+*Defined in [fuchsia.sysmem/image_formats.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/image_formats.fidl#11)*
+
+
+
+ Describes how the pixels within an image are represented.
+ Simple formats need only a type.
+ Parametric pixel formats may require additional properties.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>type</code></td>
+            <td>
+                <code><a class='link' href='#PixelFormatType'>PixelFormatType</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>has_format_modifier</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> This bool effectively makes format_modifier optional, to satisfy
+ 'Layout = "Simple"', to satisify "FIDL Simple C Bindings".
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>format_modifier</code></td>
+            <td>
+                <code><a class='link' href='#FormatModifier'>FormatModifier</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ColorSpace {:#ColorSpace}
+*Defined in [fuchsia.sysmem/image_formats.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/image_formats.fidl#77)*
+
+
+
+ Describes how the pixels within an image are meant to be presented.
+ Simple color spaces need only a type.
+ Parametric color spaces may require additional properties.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>type</code></td>
+            <td>
+                <code><a class='link' href='#ColorSpaceType'>ColorSpaceType</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ImageFormat {:#ImageFormat}
+*Defined in [fuchsia.sysmem/image_formats_deprecated.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/image_formats_deprecated.fidl#9)*
+
+
+
+ Describes how an image is represented.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>width</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> Row width in pixels.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>height</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> Number of rows.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>layers</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> Number of layers within a multi-layered image.
+ Defaults to 1 if not specified.
+</td>
+            <td>1</td>
+        </tr><tr>
+            <td><code>pixel_format</code></td>
+            <td>
+                <code><a class='link' href='#PixelFormat'>PixelFormat</a></code>
+            </td>
+            <td> Pixel format.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>color_space</code></td>
+            <td>
+                <code><a class='link' href='#ColorSpace'>ColorSpace</a></code>
+            </td>
+            <td> Color space.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>planes</code></td>
+            <td>
+                <code>[4]</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ImagePlane {:#ImagePlane}
+*Defined in [fuchsia.sysmem/image_formats_deprecated.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/image_formats_deprecated.fidl#29)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>byte_offset</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> Byte offset of the start of the plane from the beginning of the image.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>bytes_per_row</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> Stride in bytes per row.
+ Only meaningful for linear buffer formats.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ImageSpec {:#ImageSpec}
+*Defined in [fuchsia.sysmem/image_formats_deprecated.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/image_formats_deprecated.fidl#40)*
+
+
+
+ Describes constraints for allocating images of some desired form.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>min_width</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> Minimum width in pixels.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>min_height</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> Minimum height in pixels.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>layers</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> Number of layers within a multi-layered image.
+ Defaults to 1 if not specified.
+</td>
+            <td>1</td>
+        </tr><tr>
+            <td><code>pixel_format</code></td>
+            <td>
+                <code><a class='link' href='#PixelFormat'>PixelFormat</a></code>
+            </td>
+            <td> Pixel format.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>color_space</code></td>
+            <td>
+                <code><a class='link' href='#ColorSpace'>ColorSpace</a></code>
+            </td>
+            <td> Color space.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SecureMem_GetPhysicalSecureHeaps_Response {:#SecureMem_GetPhysicalSecureHeaps_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>heaps</code></td>
+            <td>
+                <code><a class='link' href='#PhysicalSecureHeaps'>PhysicalSecureHeaps</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SecureMem_SetPhysicalSecureHeaps_Response {:#SecureMem_SetPhysicalSecureHeaps_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr>
+</table>
+
+### PhysicalSecureHeap {:#PhysicalSecureHeap}
+*Defined in [fuchsia.sysmem/secure_mem.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/secure_mem.fidl#92)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>heap</code></td>
+            <td>
+                <code><a class='link' href='#HeapType'>HeapType</a></code>
+            </td>
+            <td> This must be a HeapType that is secure/protected.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>physical_address</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> Must be at least PAGE_SIZE aligned.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>size_bytes</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> Must be at least PAGE_SIZE aligned.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### PhysicalSecureHeaps {:#PhysicalSecureHeaps}
+*Defined in [fuchsia.sysmem/secure_mem.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/secure_mem.fidl#108)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>heaps_count</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> Must be <= MAX_HEAPS_COUNT.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>heaps</code></td>
+            <td>
+                <code>[32]</code>
+            </td>
+            <td> Only the first heaps_count are meaningful.  The rest are ignored.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### BufferUsage {:#BufferUsage}
+*Defined in [fuchsia.sysmem/usages.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/usages.fidl#9)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>none</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>cpu</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>vulkan</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>display</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>video</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
 
 
 ## **ENUMS**
@@ -2198,18 +4364,15 @@
         </tr><tr>
             <td><code>AMLOGIC_SECURE</code></td>
             <td><code>1152921504606912512</code></td>
-            <td> Heap used for amlogic protected memory.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>AMLOGIC_SECURE_VDEC</code></td>
             <td><code>1152921504606912513</code></td>
-            <td> Heap used for amlogic protected memory between decrypt and video decode.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>GOLDFISH_DEVICE_LOCAL</code></td>
             <td><code>1152921504606978048</code></td>
-            <td> Heap used by goldfish vulkan for device-local memory.
-</td>
+            <td></td>
         </tr></table>
 
 ### CoherencyDomain {:#CoherencyDomain}
@@ -2261,33 +4424,27 @@
         </tr><tr>
             <td><code>R8G8B8A8</code></td>
             <td><code>1</code></td>
-            <td> RGB only, 8 bits per each of R/G/B/A sample
-</td>
+            <td></td>
         </tr><tr>
             <td><code>BGRA32</code></td>
             <td><code>101</code></td>
-            <td> 32bpp BGRA, 1 plane.  RGB only, 8 bits per each of B/G/R/A sample.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>I420</code></td>
             <td><code>102</code></td>
-            <td> YUV only, 8 bits per Y sample
-</td>
+            <td></td>
         </tr><tr>
             <td><code>M420</code></td>
             <td><code>103</code></td>
-            <td> YUV only, 8 bits per Y sample
-</td>
+            <td></td>
         </tr><tr>
             <td><code>NV12</code></td>
             <td><code>104</code></td>
-            <td> YUV only, 8 bits per Y sample
-</td>
+            <td></td>
         </tr><tr>
             <td><code>YUY2</code></td>
             <td><code>105</code></td>
-            <td> YUV only, 8 bits per Y sample
-</td>
+            <td></td>
         </tr><tr>
             <td><code>MJPEG</code></td>
             <td><code>106</code></td>
@@ -2295,33 +4452,27 @@
         </tr><tr>
             <td><code>YV12</code></td>
             <td><code>107</code></td>
-            <td> YUV only, 8 bits per Y sample
-</td>
+            <td></td>
         </tr><tr>
             <td><code>BGR24</code></td>
             <td><code>108</code></td>
-            <td> 24bpp BGR, 1 plane. RGB only, 8 bits per each of B/G/R sample
-</td>
+            <td></td>
         </tr><tr>
             <td><code>RGB565</code></td>
             <td><code>109</code></td>
-            <td> 16bpp RGB, 1 plane. 5 bits R, 6 bits G, 5 bits B
-</td>
+            <td></td>
         </tr><tr>
             <td><code>RGB332</code></td>
             <td><code>110</code></td>
-            <td> 8bpp RGB, 1 plane. 3 bits R, 3 bits G, 2 bits B
-</td>
+            <td></td>
         </tr><tr>
             <td><code>RGB2220</code></td>
             <td><code>111</code></td>
-            <td> 8bpp RGB, 1 plane. 2 bits R, 2 bits G, 2 bits B
-</td>
+            <td></td>
         </tr><tr>
             <td><code>L8</code></td>
             <td><code>112</code></td>
-            <td> 8bpp, Luminance-only.
-</td>
+            <td></td>
         </tr></table>
 
 ### ColorSpaceType {:#ColorSpaceType}
@@ -2361,48 +4512,240 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>INVALID</code></td>
             <td><code>0</code></td>
-            <td> Not a valid color space type.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>SRGB</code></td>
             <td><code>1</code></td>
-            <td> sRGB
-</td>
+            <td></td>
         </tr><tr>
             <td><code>REC601_NTSC</code></td>
             <td><code>2</code></td>
-            <td> 601 NTSC ("525 line") YCbCr primaries, narrow
-</td>
+            <td></td>
         </tr><tr>
             <td><code>REC601_NTSC_FULL_RANGE</code></td>
             <td><code>3</code></td>
-            <td> 601 NTSC ("525 line") YCbCr primaries, wide
-</td>
+            <td></td>
         </tr><tr>
             <td><code>REC601_PAL</code></td>
             <td><code>4</code></td>
-            <td> 601 PAL ("625 line") YCbCr primaries, narrow
-</td>
+            <td></td>
         </tr><tr>
             <td><code>REC601_PAL_FULL_RANGE</code></td>
             <td><code>5</code></td>
-            <td> 601 PAL ("625 line") YCbCr primaries, wide
-</td>
+            <td></td>
         </tr><tr>
             <td><code>REC709</code></td>
             <td><code>6</code></td>
-            <td> 709 YCbCr (not RGB)
-</td>
+            <td></td>
         </tr><tr>
             <td><code>REC2020</code></td>
             <td><code>7</code></td>
-            <td> 2020 YCbCr (not RGB, not YcCbcCrc)
-</td>
+            <td></td>
         </tr><tr>
             <td><code>REC2100</code></td>
             <td><code>8</code></td>
-            <td> 2100 YCbCr (not RGB, not ICtCp)
-</td>
+            <td></td>
+        </tr></table>
+
+### HeapType {:#HeapType}
+Type: <code>uint64</code>
+
+*Defined in [fuchsia.sysmem/constraints.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/constraints.fidl#178)*
+
+ Known heap types.
+ Device specific types should have bit 60 set. Top order bit is reserved
+ and should not be set.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>SYSTEM_RAM</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>AMLOGIC_SECURE</code></td>
+            <td><code>1152921504606912512</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>AMLOGIC_SECURE_VDEC</code></td>
+            <td><code>1152921504606912513</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>GOLDFISH_DEVICE_LOCAL</code></td>
+            <td><code>1152921504606978048</code></td>
+            <td></td>
+        </tr></table>
+
+### CoherencyDomain {:#CoherencyDomain}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.sysmem/constraints.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/constraints.fidl#226)*
+
+ Inaccessible is only for cases where there is no CPU-based access to the
+ buffers.  A secure_required buffer can still have CoherencyDomain Cpu or
+ Ram even if the secure_required buffer can only be accessed by the CPU when
+ the CPU is running in secure mode (or similar).  In contrast, device-local
+ memory that isn't reachable from the CPU is CoherencyDomain Inaccessible,
+ even if it's possible to cause a device (physical or virtual) to copy the
+ data from the Inaccessible buffers to buffers that are visible to the CPU.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>CPU</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>RAM</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>INACCESSIBLE</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr></table>
+
+### PixelFormatType {:#PixelFormatType}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.sysmem/image_formats.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/image_formats.fidl#28)*
+
+ The ordering of the channels in the format name reflects how
+ the actual layout of the channel.
+
+ Each of these values is opinionated re. the color spaces that can be
+ contained within (in contrast with Vulkan).
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>INVALID</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>R8G8B8A8</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>BGRA32</code></td>
+            <td><code>101</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>I420</code></td>
+            <td><code>102</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>M420</code></td>
+            <td><code>103</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>NV12</code></td>
+            <td><code>104</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>YUY2</code></td>
+            <td><code>105</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>MJPEG</code></td>
+            <td><code>106</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>YV12</code></td>
+            <td><code>107</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>BGR24</code></td>
+            <td><code>108</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>RGB565</code></td>
+            <td><code>109</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>RGB332</code></td>
+            <td><code>110</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>RGB2220</code></td>
+            <td><code>111</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>L8</code></td>
+            <td><code>112</code></td>
+            <td></td>
+        </tr></table>
+
+### ColorSpaceType {:#ColorSpaceType}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.sysmem/image_formats.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/image_formats.fidl#107)*
+
+ This list has a separate entry for each variant of a color space standard.
+
+ For this reason, should we ever add support for the RGB variant of 709, for
+ example, we'd add a separate entry to this list for that variant.  Similarly
+ for the RGB variants of 2020 or 2100.  Similarly for the YcCbcCrc variant of
+ 2020.  Similarly for the ICtCp variant of 2100.
+
+ A given ColorSpaceType may permit usage with a PixelFormatType(s) that
+ provides a bits-per-sample that's compatible with the ColorSpaceType's
+ official spec.  Not all spec-valid combinations are necessarily supported.
+ See ImageFormatIsSupportedColorSpaceForPixelFormat() for the best-case degree
+ of support, but a "true" from that function doesn't guarantee that any given
+ combination of participants will all support the desired combination of
+ ColorSpaceType and PixelFormatType.
+
+ The sysmem service helps find a mutually supported combination and allocate
+ suitable buffers.
+
+ A ColorSpaceType's spec is not implicitly extended to support
+ outside-the-standard bits-per-sample (R, G, B, or Y sample).  For example,
+ for 2020 and 2100, 8 bits-per-Y-sample is not supported (by sysmem), because
+ 8 bits-per-Y-sample is not in the spec for 2020 or 2100.  A sysmem
+ participant that attempts to advertise support for a PixelFormat + ColorSpace
+ that's non-standard will cause sysmem to reject the combo and fail to
+ allocate (intentionally, to strongly discourage specifying
+ insufficiently-defined combos).
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>INVALID</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>SRGB</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>REC601_NTSC</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>REC601_NTSC_FULL_RANGE</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>REC601_PAL</code></td>
+            <td><code>4</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>REC601_PAL_FULL_RANGE</code></td>
+            <td><code>5</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>REC709</code></td>
+            <td><code>6</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>REC2020</code></td>
+            <td><code>7</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>REC2100</code></td>
+            <td><code>8</code></td>
+            <td></td>
         </tr></table>
 
 
@@ -2479,6 +4822,74 @@
             <td></td>
         </tr></table>
 
+### BufferFormat {:#BufferFormat}
+*Defined in [fuchsia.sysmem/formats_deprecated.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/formats_deprecated.fidl#9)*
+
+ Describes how the contents of buffers are represented.
+ Buffers of each type are described by their own tables.
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>image</code></td>
+            <td>
+                <code><a class='link' href='#ImageFormat'>ImageFormat</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### BufferSpec {:#BufferSpec}
+*Defined in [fuchsia.sysmem/formats_deprecated.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/formats_deprecated.fidl#15)*
+
+ Describes constraints for allocating buffers of some desired form.
+ Buffers of each type are described by their own tables.
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>image</code></td>
+            <td>
+                <code><a class='link' href='#ImageSpec'>ImageSpec</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### SecureMem_GetPhysicalSecureHeaps_Result {:#SecureMem_GetPhysicalSecureHeaps_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#SecureMem_GetPhysicalSecureHeaps_Response'>SecureMem_GetPhysicalSecureHeaps_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### SecureMem_SetPhysicalSecureHeaps_Result {:#SecureMem_SetPhysicalSecureHeaps_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#SecureMem_SetPhysicalSecureHeaps_Response'>SecureMem_SetPhysicalSecureHeaps_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td></td>
+        </tr></table>
+
 
 
 
@@ -2800,6 +5211,318 @@
                 <td><code>uint32</code></td>
             <td></td>
         </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/format_modifier.fidl#16">FORMAT_MODIFIER_NONE</a></td>
+            <td>
+                    <code>0</code>
+                </td>
+                <td><code>uint64</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/format_modifier.fidl#18">FORMAT_MODIFIER_VENDOR_NONE</a></td>
+            <td>
+                    <code>0</code>
+                </td>
+                <td><code>uint64</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/format_modifier.fidl#19">FORMAT_MODIFIER_VENDOR_INTEL</a></td>
+            <td>
+                    <code>72057594037927936</code>
+                </td>
+                <td><code>uint64</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/format_modifier.fidl#20">FORMAT_MODIFIER_VENDOR_AMD</a></td>
+            <td>
+                    <code>144115188075855872</code>
+                </td>
+                <td><code>uint64</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/format_modifier.fidl#21">FORMAT_MODIFIER_VENDOR_NVIDIA</a></td>
+            <td>
+                    <code>216172782113783808</code>
+                </td>
+                <td><code>uint64</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/format_modifier.fidl#22">FORMAT_MODIFIER_VENDOR_SAMSUNG</a></td>
+            <td>
+                    <code>288230376151711744</code>
+                </td>
+                <td><code>uint64</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/format_modifier.fidl#23">FORMAT_MODIFIER_VENDOR_QCOM</a></td>
+            <td>
+                    <code>360287970189639680</code>
+                </td>
+                <td><code>uint64</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/format_modifier.fidl#24">FORMAT_MODIFIER_VENDOR_VIVANTE</a></td>
+            <td>
+                    <code>432345564227567616</code>
+                </td>
+                <td><code>uint64</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/format_modifier.fidl#25">FORMAT_MODIFIER_VENDOR_BROADCOM</a></td>
+            <td>
+                    <code>504403158265495552</code>
+                </td>
+                <td><code>uint64</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/format_modifier.fidl#26">FORMAT_MODIFIER_VENDOR_ARM</a></td>
+            <td>
+                    <code>576460752303423488</code>
+                </td>
+                <td><code>uint64</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/format_modifier.fidl#28">FORMAT_MODIFIER_VALUE_RESERVED</a></td>
+            <td>
+                    <code>72057594037927935</code>
+                </td>
+                <td><code>uint64</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/format_modifier.fidl#30">FORMAT_MODIFIER_INVALID</a></td>
+            <td>
+                    <code><a class='link' href='#FORMAT_MODIFIER_VALUE_RESERVED'>FORMAT_MODIFIER_VALUE_RESERVED</a></code>
+                </td>
+                <td><code>uint64</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/format_modifier.fidl#32">FORMAT_MODIFIER_LINEAR</a></td>
+            <td>
+                    <code>0</code>
+                </td>
+                <td><code>uint64</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/format_modifier.fidl#39">FORMAT_MODIFIER_INTEL_I915_X_TILED</a></td>
+            <td>
+                    <code>72057594037927937</code>
+                </td>
+                <td><code>uint64</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/format_modifier.fidl#40">FORMAT_MODIFIER_INTEL_I915_Y_TILED</a></td>
+            <td>
+                    <code>72057594037927938</code>
+                </td>
+                <td><code>uint64</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/format_modifier.fidl#41">FORMAT_MODIFIER_INTEL_I915_YF_TILED</a></td>
+            <td>
+                    <code>72057594037927939</code>
+                </td>
+                <td><code>uint64</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/format_modifier.fidl#56">FORMAT_MODIFIER_ARM_AFBC_16x16</a></td>
+            <td>
+                    <code>576460752303423489</code>
+                </td>
+                <td><code>uint64</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/format_modifier.fidl#57">FORMAT_MODIFIER_ARM_AFBC_32x8</a></td>
+            <td>
+                    <code>576460752303423490</code>
+                </td>
+                <td><code>uint64</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/secure_mem.fidl#105">MAX_HEAPS_COUNT</a></td>
+            <td>
+                    <code>32</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/usages.fidl#21">noneUsage</a></td>
+            <td>
+                    <code>1</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/usages.fidl#25">cpuUsageRead</a></td>
+            <td>
+                    <code>1</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/usages.fidl#26">cpuUsageReadOften</a></td>
+            <td>
+                    <code>2</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/usages.fidl#27">cpuUsageWrite</a></td>
+            <td>
+                    <code>4</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/usages.fidl#28">cpuUsageWriteOften</a></td>
+            <td>
+                    <code>8</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/usages.fidl#32">vulkanUsageTransferSrc</a></td>
+            <td>
+                    <code>1</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/usages.fidl#33">vulkanUsageTransferDst</a></td>
+            <td>
+                    <code>2</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/usages.fidl#34">vulkanUsageSampled</a></td>
+            <td>
+                    <code>4</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/usages.fidl#35">vulkanUsageStorage</a></td>
+            <td>
+                    <code>8</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/usages.fidl#36">vulkanUsageColorAttachment</a></td>
+            <td>
+                    <code>16</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/usages.fidl#37">vulkanUsageStencilAttachment</a></td>
+            <td>
+                    <code>32</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/usages.fidl#38">vulkanUsageTransientAttachment</a></td>
+            <td>
+                    <code>64</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/usages.fidl#39">vulkanUsageInputAttachment</a></td>
+            <td>
+                    <code>128</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/usages.fidl#42">displayUsageLayer</a></td>
+            <td>
+                    <code>1</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/usages.fidl#43">displayUsageCursor</a></td>
+            <td>
+                    <code>2</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/usages.fidl#47">videoUsageHwDecoder</a></td>
+            <td>
+                    <code>1</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/usages.fidl#48">videoUsageHwEncoder</a></td>
+            <td>
+                    <code>2</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/usages.fidl#51">videoUsageHwProtected</a></td>
+            <td>
+                    <code>4</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/usages.fidl#52">videoUsageCapture</a></td>
+            <td>
+                    <code>8</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-sysmem/usages.fidl#65">videoUsageDecryptorOutput</a></td>
+            <td>
+                    <code>16</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
     
 </table>
 
diff --git a/sdk/fidl/fuchsia.time/index.md b/sdk/fidl/fuchsia.time/index.md
index 7de570d..33a703d 100644
--- a/sdk/fidl/fuchsia.time/index.md
+++ b/sdk/fidl/fuchsia.time/index.md
@@ -76,14 +76,11 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>BACKSTOP</code></td>
             <td><code>2</code></td>
-            <td> The clock has been initialized to a known-prior reference time but may be highly inaccurate.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>EXTERNAL</code></td>
             <td><code>3</code></td>
-            <td> The clock has been initialized from a suitably accurate external time source. For many
- devices the most common external time source is a network time server.
-</td>
+            <td></td>
         </tr></table>
 
 
diff --git a/sdk/fidl/fuchsia.tracing.provider/index.md b/sdk/fidl/fuchsia.tracing.provider/index.md
index f077db5..8004bbe 100644
--- a/sdk/fidl/fuchsia.tracing.provider/index.md
+++ b/sdk/fidl/fuchsia.tracing.provider/index.md
@@ -179,6 +179,179 @@
             </td>
         </tr></table>
 
+## Provider {:#Provider}
+*Defined in [fuchsia.tracing.provider/provider.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-tracing-provider/provider.fidl#23)*
+
+ The provider interface which applications must implement and register
+ with the `TraceRegistry` to participate in tracing.
+
+ See //zircon/system/ulib/trace-provider/ for a C++ implementation of
+ this interface which can easily be configured by an application.
+
+### Initialize {:#Initialize}
+
+ Initialize tracing and prepare for writing trace records for events in
+ the specified `categories` into `buffer` using `fifo` for signaling.
+ Tracing hasn't started yet, a `Start()` call is still required.
+
+
+ At most one trace can be active at a time. Subsequent `Initialize()`
+ requests received prior to a `Terminate()` call must be ignored.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>config</code></td>
+            <td>
+                <code><a class='link' href='#ProviderConfig'>ProviderConfig</a></code>
+            </td>
+        </tr></table>
+
+
+
+### Start {:#Start}
+
+ Begin tracing.
+
+ If tracing has already started the provider must ignore the request.
+
+ There is no result. The provider must send a `TRACE_PROVIDER_STARTED`
+ packet on `fifo` to indicate success/failure of starting.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>options</code></td>
+            <td>
+                <code><a class='link' href='#StartOptions'>StartOptions</a></code>
+            </td>
+        </tr></table>
+
+
+
+### Stop {:#Stop}
+
+ Stop tracing.
+
+ If tracing has already stopped the provider must ignore the request.
+
+ Once the provider has finished writing any final events to the trace
+ buffer, it must send a `TRACE_PROVIDER_STOPPED` packet on `fifo`.
+ Note that multiple `Start,Stop` requests can be received between
+ `Initialize,Terminate`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### Terminate {:#Terminate}
+
+ Terminate tracing.
+
+ Tracing is stopped first if not already stopped.
+ After tracing has fully terminated the provider must close both
+ `buffer` and `fifo` to indicate to the trace manager that tracing is
+ finished.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+## Registry {:#Registry}
+*Defined in [fuchsia.tracing.provider/provider.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-tracing-provider/provider.fidl#65)*
+
+ The service which trace providers use to register themselves with
+ the tracing system.
+ Note that one property of this interface is that once registration is made
+ the provider can drop this connection.
+
+### RegisterProvider {:#RegisterProvider}
+
+ Registers the trace provider.
+ Note: Registration is asynchronous, it's only at some point after this
+ returns that the provider is actually registered.
+ To unregister, simply close the Provider pipe.
+ `pid` is the process id of the provider, `name` is the name of the
+ provider. Both of these are used in logging and diagnostic messages.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>provider</code></td>
+            <td>
+                <code><a class='link' href='#Provider'>Provider</a></code>
+            </td>
+        </tr><tr>
+            <td><code>pid</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr><tr>
+            <td><code>name</code></td>
+            <td>
+                <code>string[100]</code>
+            </td>
+        </tr></table>
+
+
+
+### RegisterProviderSynchronously {:#RegisterProviderSynchronously}
+
+ Registers the trace provider synchronously. The call doesn't return
+ until the provider is registered.
+ On return `s` is `ZX_OK` if registration was successful.
+ `started` is true if tracing has already started, which is a hint to
+ the provider to wait for the Start() message before continuing if it
+ wishes to not drop trace records before Start() is received.
+ To unregister, simply close the Provider pipe.
+ `pid` is the process id of the provider, `name` is the name of the
+ provider. Both of these are used in logging and diagnostic messages.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>provider</code></td>
+            <td>
+                <code><a class='link' href='#Provider'>Provider</a></code>
+            </td>
+        </tr><tr>
+            <td><code>pid</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr><tr>
+            <td><code>name</code></td>
+            <td>
+                <code>string[100]</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>s</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+        </tr><tr>
+            <td><code>started</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr></table>
+
 
 
 ## **STRUCTS**
@@ -261,6 +434,84 @@
         </tr>
 </table>
 
+### ProviderConfig {:#ProviderConfig}
+*Defined in [fuchsia.tracing.provider/provider.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-tracing-provider/provider.fidl#113)*
+
+
+
+ Trace provider configuration.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>buffering_mode</code></td>
+            <td>
+                <code><a class='link' href='#BufferingMode'>BufferingMode</a></code>
+            </td>
+            <td> `buffering_mode` specifies what happens when the buffer fills.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>buffer</code></td>
+            <td>
+                <code>handle&lt;vmo&gt;</code>
+            </td>
+            <td> The buffer to write trace records into.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>fifo</code></td>
+            <td>
+                <code>handle&lt;fifo&gt;</code>
+            </td>
+            <td> When the trace provider observes `ZX_FIFO_PEER_CLOSED` on `fifo`, it
+ must assume the trace manager has terminated abnormally (since `Stop`
+ was not received as usual) and stop tracing automatically, discarding
+ any in-flight trace data.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>categories</code></td>
+            <td>
+                <code>vector&lt;string&gt;[100]</code>
+            </td>
+            <td> What trace categories to collect data for.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### StartOptions {:#StartOptions}
+*Defined in [fuchsia.tracing.provider/provider.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-tracing-provider/provider.fidl#164)*
+
+
+
+ Additional options to control tracing at start.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>buffer_disposition</code></td>
+            <td>
+                <code><a class='link' href='#BufferDisposition'>BufferDisposition</a></code>
+            </td>
+            <td> Whether and how to clear the buffer when starting data collection.
+ This allows, for example, multiple Start/Stop trace runs to be
+ collected in the same buffer.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>additional_categories</code></td>
+            <td>
+                <code>vector&lt;string&gt;[100]</code>
+            </td>
+            <td> The trace categories to add to the initial set provided in
+ `ProviderConfig`.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
 
 
 ## **ENUMS**
@@ -277,28 +528,15 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>ONESHOT</code></td>
             <td><code>1</code></td>
-            <td> In oneshot mode there is only one buffer that is not reused. When the
- buffer fills the provider just keeps dropping records, keeping a count,
- and then when tracing stops the header is updated to record final
- state.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>CIRCULAR</code></td>
             <td><code>2</code></td>
-            <td> In circular mode, the buffer is continually written to until tracing
- stops. When the buffer fills older records are discarded as needed.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>STREAMING</code></td>
             <td><code>3</code></td>
-            <td> In streaming mode, the buffer is effectively split into two pieces.
- When one half of the buffer fills the provider notifies the trace
- manager via the provided fifo, and then starts filling the other half
- of the buffer. When the buffer is saved, the manager responds via the
- provided fifo. If trace manager hasn't saved the buffer in time, and
- the other buffer fills, then the provider is required to drop records
- until space becomes available.
-</td>
+            <td></td>
         </tr></table>
 
 ### BufferDisposition {:#BufferDisposition}
@@ -320,32 +558,68 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>CLEAR_ENTIRE</code></td>
             <td><code>1</code></td>
-            <td> Clear the entire buffer, including durable buffer contents.
- N.B. If this is done mid-session, then string and thread references
- from prior to this point will become invalid - the underlying data
- will be gone. To prevent this save buffer contents before clearing.
-
- This is typically used when buffer contents were saved after the
- preceding Stop.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>CLEAR_NONDURABLE</code></td>
             <td><code>2</code></td>
-            <td> Clear the non-durable portion of the buffer, retaining the durable
- portion.
-
- This is typically used when buffer contents were not saved after the
- preceding Stop and the current contents are to be discarded.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>RETAIN</code></td>
             <td><code>3</code></td>
-            <td> Retain buffer contents. New trace data is added where the previous
- trace run left off.
+            <td></td>
+        </tr></table>
 
- This is typically used when buffer contents were not saved after the
- preceding Stop and the current contents are to be retained.
-</td>
+### BufferingMode {:#BufferingMode}
+Type: <code>uint8</code>
+
+*Defined in [fuchsia.tracing.provider/provider.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-tracing-provider/provider.fidl#87)*
+
+ The trace buffering mode.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>ONESHOT</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>CIRCULAR</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>STREAMING</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr></table>
+
+### BufferDisposition {:#BufferDisposition}
+Type: <code>uint8</code>
+
+*Defined in [fuchsia.tracing.provider/provider.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-tracing-provider/provider.fidl#138)*
+
+ Choices for clearing/retaining trace buffer contents at Start.
+ A brief summary of buffer contents:
+ The trace buffer is divided into two main pieces: durable and non-durable.
+ The durable portion contains things like the string and thread data for
+ their respective references (trace_encoded_string_ref_t and
+ trace_encoded_thread_ref_t). The non-durable portion contains the rest of
+ the trace data like events); this is the portion that, for example, is
+ discarded in circular buffering mode when the (non-durable) buffer fills.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>CLEAR_ENTIRE</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>CLEAR_NONDURABLE</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>RETAIN</code></td>
+            <td><code>3</code></td>
+            <td></td>
         </tr></table>
 
 
@@ -388,6 +662,33 @@
             <td> The maximum length of a category name.
 </td>
         </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-tracing-provider/provider.fidl#10">MAX_PROVIDER_NAME_LENGTH</a></td>
+            <td>
+                    <code>100</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> The maximum length of a provider's name.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-tracing-provider/provider.fidl#13">MAX_NUM_CATEGORIES</a></td>
+            <td>
+                    <code>100</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> The maximum number of categories supported.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/system/fidl/fuchsia-tracing-provider/provider.fidl#16">MAX_CATEGORY_NAME_LENGTH</a></td>
+            <td>
+                    <code>100</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> The maximum length of a category name.
+</td>
+        </tr>
     
 </table>
 
diff --git a/sdk/fidl/fuchsia.ui.app/index.md b/sdk/fidl/fuchsia.ui.app/index.md
index 1ce8920..1866ae7 100644
--- a/sdk/fidl/fuchsia.ui.app/index.md
+++ b/sdk/fidl/fuchsia.ui.app/index.md
@@ -146,6 +146,146 @@
 
 
 
+## View {:#View}
+*Defined in [fuchsia.ui.app/view.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.app/view.fidl#45)*
+
+ A View is an interface that a component implements to offer a Scenic
+ view to its clients.  A Scenic view is container of Scenic graph nodes,
+ which, when rendered, might display a graphical user interface, such
+ as a module, shell, or on-screen keyboard.
+
+ A client of the `View` interface will:
+
+ 1. Launch (or bind to) the component that provides the interface.
+ 2. Connect to the component's `View` interface.
+ 3. Call `SetConfig()` at least once to configure the view's presentation
+    parameters.
+ 4. Call `AttachView()` to ask the `View` to attach its graphical
+    content to the Scenic scene graph using the provided `view_token`.
+ 5. Optionally, while the View is attached, call `SetConfig()` again to
+    modify any presentation parameters as needed.
+
+ When the client no longer needs the View, it should disconnect from
+ the interface and terminate (or unbind) from the component.
+
+ NOTE: Unlike with `ViewProvider`, the client owns the `View` instance and
+ must retain it for the lifetime of the UI that it displays. If the `View`
+ instance is destroyed, the connection will be dropped.
+
+ On the implementation side, a component that exposes the
+ `View` interface has the following responsibilities:
+
+ * Initialize and attach the View's content to the Scenic scene graph
+   using the `fuchsia.ui.view.CreateViewCmd` and passing the provided
+   `view_token`.
+ * Adjust the appearance and/or contents of the view's content whenever
+   its `ViewConfig` changes.
+ * Provide graphical content for the view and handle user interface
+   events such as touches, key presses, and `fuchsia.ui.view.ViewProperty`
+   changes using other Scenic interfaces such as `fuchsia.ui.Scenic`
+   and `fuchsia.ui.SessionListener`.
+
+  TODO(SCN-1198): Migrate all implementations of `ViewProvider` to use `View`.
+
+### SetConfig {:#SetConfig}
+
+ Updates the View's configuration.
+
+ To prevent triggering UI changes shortly after a client starts up, the
+ View's client should set the configuration prior to calling
+ `AttachView()` unless the default is adequate.
+
+ May be called again at any time to modify the view's configuration.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>config</code></td>
+            <td>
+                <code><a class='link' href='#ViewConfig'>ViewConfig</a></code>
+            </td>
+        </tr></table>
+
+
+
+### Attach {:#Attach}
+
+ Attaches the View to Scenic's scene graph. Must only be called once per
+ `View` lifetime.
+
+ The View's implementation should pass the `view_token` to Scenic
+ using a `fuchsia.ui.view.CreateViewCmd`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>view_token</code></td>
+            <td>
+                <code>handle&lt;eventpair&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+## ViewProvider {:#ViewProvider}
+*Defined in [fuchsia.ui.app/view_provider.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.app/view_provider.fidl#19)*
+
+ ViewProvider is the standard mechanism for two modules to each obtain half
+ of a shared eventpair token.  The shared token is a capability allowing the
+ modules to ask Scenic to create a ViewHolder/View pair.  The resulting
+ View and ViewHolder are linked together until either one is destroyed.
+
+ Modules are free to use any other mechanism to agree upon the shared
+ eventpair token, and use this to create the linked ViewHolder/View.
+ ViewProvider is given for the convenience of clients that don't require
+ a more complex implementation.
+
+### CreateView {:#CreateView}
+
+ Creates a new View under the control of the ViewProvider.
+
+ `token` is one half of the shared eventpair which will bind the new View
+ to its associated ViewHolder.  The ViewProvider will use `token` to
+ create its internal View representation.  The caller is expected to use
+ its half to create corresponding ViewHolder object.
+
+ `incoming_services` allows clients to request services from the
+ ViewProvider implementation.  `outgoing_services` allows clients to
+ provide services of their own to the ViewProvider implementation.
+
+ Clients can embed a ViewHolder (and by proxy the paired View) into their
+ scene graph by using `Node.AddChild()`.  The ViewHolder cannot itself
+ have any children. A ViewProvider implementation can nest scene objects
+ within its View by using `View.AddChild()`.  The View itself
+ cannot be a child of anything.
+
+ Modules can use these mechanisms to establish a distributed,
+ inter-process scene graph.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>token</code></td>
+            <td>
+                <code>handle&lt;eventpair&gt;</code>
+            </td>
+        </tr><tr>
+            <td><code>incoming_services</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='../fuchsia.sys/index.html'>fuchsia.sys</a>/<a class='link' href='../fuchsia.sys/index.html#ServiceProvider'>ServiceProvider</a>&gt;?</code>
+            </td>
+        </tr><tr>
+            <td><code>outgoing_services</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.sys/index.html'>fuchsia.sys</a>/<a class='link' href='../fuchsia.sys/index.html#ServiceProvider'>ServiceProvider</a>?</code>
+            </td>
+        </tr></table>
+
+
+
 
 
 ## **STRUCTS**
@@ -171,6 +311,27 @@
         </tr>
 </table>
 
+### ViewConfig {:#ViewConfig}
+*Defined in [fuchsia.ui.app/view_config.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.app/view_config.fidl#12)*
+
+
+
+ Collection of properties that provide affect the rendering of a view's
+ contents. This might include internationalization settings, font scaling,
+ night mode, high contrast mode, etc.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>intl_profile</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.intl/index.html'>fuchsia.intl</a>/<a class='link' href='../fuchsia.intl/index.html#Profile'>Profile</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
 
 
 
diff --git a/sdk/fidl/fuchsia.ui.gfx/index.md b/sdk/fidl/fuchsia.ui.gfx/index.md
index 2c21f4e..ffe1317 100644
--- a/sdk/fidl/fuchsia.ui.gfx/index.md
+++ b/sdk/fidl/fuchsia.ui.gfx/index.md
@@ -63,6 +63,63 @@
 
 
 
+## SnapshotCallbackDEPRECATED {:#SnapshotCallbackDEPRECATED}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#386)*
+
+
+### OnData {:#OnData}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>data</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.mem/index.html'>fuchsia.mem</a>/<a class='link' href='../fuchsia.mem/index.html#Buffer'>Buffer</a></code>
+            </td>
+        </tr></table>
+
+
+
+## PoseBufferProvider {:#PoseBufferProvider}
+*Defined in [fuchsia.ui.gfx/pose_buffer_provider.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/pose_buffer_provider.fidl#9)*
+
+ A minimal fidl interface to allow sourcing the contents of a PoseBuffer from another service.
+
+### SetPoseBuffer {:#SetPoseBuffer}
+
+ Sets the PoseBuffer and the parameters PoseBufferProvider will use to fill that PoseBuffer.
+ Setting this when it is already set will replace the previously set parameters with the new
+ parameters, which will release the provider's reference to the buffer.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>buffer</code></td>
+            <td>
+                <code>handle&lt;vmo&gt;</code>
+            </td>
+        </tr><tr>
+            <td><code>num_entries</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+        </tr><tr>
+            <td><code>base_time</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+        </tr><tr>
+            <td><code>time_interval</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr></table>
+
+
+
 
 
 ## **STRUCTS**
@@ -3986,6 +4043,3925 @@
         </tr>
 </table>
 
+### CreateResourceCmd {:#CreateResourceCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#103)*
+
+
+
+ Instructs the compositor to create the specified `Resource`, and to register
+ it in a table so that it can be referenced by subsequent commands.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> An ID that is currently not used within the session.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>resource</code></td>
+            <td>
+                <code><a class='link' href='#ResourceArgs'>ResourceArgs</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ReleaseResourceCmd {:#ReleaseResourceCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#116)*
+
+
+
+ Releases the client's reference to the resource; it is then illegal to use
+ the ID in subsequent Commands.  Other references to the resource may exist,
+ so releasing the resource does not result in its immediate destruction; it is
+ only destroyed once the last reference is released.  For example, the
+ resource may be required to render an in-progress frame, or it may be
+ referred to by another resource).  However, the ID will be immediately
+ unregistered, and may be reused to create a new resource.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> ID of the resource to be dereferenced.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ExportResourceCmd {:#ExportResourceCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#129)*
+
+
+
+ Create an external reference to the specified resource, which can then be
+ imported into another Session by passing a handle to `token`'s peer to
+ ImportResourceCmd; see that comment for more details.
+
+ The importing client is typically in a different process than the exporter.
+ No specific mechanism is provided for transferring a token from an exporter
+ to an importer; collaborators may choose any out-of-band API they wish to do
+ so.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>token</code></td>
+            <td>
+                <code>handle&lt;eventpair&gt;</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ImportResourceCmd {:#ImportResourceCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#156)*
+
+
+
+ Import a resource that was exported via ExportResourceCmd().  `token` is
+ a handle to the eventpair peer that was used to export the resource, and
+ `spec` describes the type of the imported resource, and the commands which
+ can legally be applied to it.  Afterward, `id` can be used to refer to the
+ resource in an Command, similarly (but not identically: see below) to a
+ resource that was created in the session.  For example, you can add children
+ to an imported EntityNode via AddChildCmd.
+
+ However, note that the importer does not gain full access to the imported
+ resource, but rather to an attenuated subset of its capabilities.  For
+ example, you cannot use a DetachCmd to detach an imported EntityNode from
+ its parent.
+
+ Unlike ExportResourceCmd, there is no configurable timeout.  There is an
+ expectation that the exported resource will become available in a short
+ amount of time.  TODO: this needs elaboration... e.g. we might notify via the
+ SessionListener when we know that the link will never be made (e.g. if the
+ peer of the import token is destroyed).
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>token</code></td>
+            <td>
+                <code>handle&lt;eventpair&gt;</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>spec</code></td>
+            <td>
+                <code><a class='link' href='#ImportSpec'>ImportSpec</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SetTagCmd {:#SetTagCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#176)*
+
+
+
+ Sets/clears a node's tag value.
+
+ A session can apply a tag value to any node to which it has access, including
+ imported nodes.  These tags are private to the session and cannot be read
+ or modified by other sessions.  When multiple sessions import the same node,
+ each session will only observe its own tag values.
+
+ Hit test results for a session only include nodes which the session has
+ tagged with a non-zero value.  Therefore a session can use tag values to
+ associate nodes with their functional purpose when picked.
+
+ Constraints:
+ - `node_id` refs a `Node`.
+ - `tag_value` is the tag value to assign, or 0 to remove the tag.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>node_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>tag_value</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### DetachCmd {:#DetachCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#191)*
+
+
+
+ Detaches a parentable object from its parent (e.g. a node from a parent node,
+ or a layer from a layer stack).  It is illegal to apply this command to a
+ non-parentable object.  No-op if the target object currently has no parent.
+
+ Constraints:
+ - `id` refs a parentable object
+
+ Discussion:
+ For nodes, this command will detach a node from its parent, regardless of
+ whether it is a part or a child of its parent.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SetTranslationCmd {:#SetTranslationCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#199)*
+
+
+
+ Sets a Resource's (typically a Node's) translation.
+
+ Constraints:
+ - `id` refs a Resource with the has_transform characteristic.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code><a class='link' href='#Vector3Value'>Vector3Value</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SetScaleCmd {:#SetScaleCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#208)*
+
+
+
+ Sets a Resource's (typically a Node's) scale.
+
+ Constraints:
+ - `id` refs a Resource with the has_transform characteristic.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code><a class='link' href='#Vector3Value'>Vector3Value</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SetRotationCmd {:#SetRotationCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#217)*
+
+
+
+ Sets a Resource's (typically a Node's) rotation.
+
+ Constraints:
+ - `id` refs a Resource with the has_transform characteristic.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code><a class='link' href='#QuaternionValue'>QuaternionValue</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SetAnchorCmd {:#SetAnchorCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#226)*
+
+
+
+ Sets a Resource's (typically a Node's) anchor point.
+
+ Constraints:
+ - `id` refs a Resource with the has_transform characteristic.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code><a class='link' href='#Vector3Value'>Vector3Value</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SetSizeCmd {:#SetSizeCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#237)*
+
+
+
+ Sets an object's size.
+
+ Constraints:
+ - `id` refs a resizeable object.
+ - some objects that support this command may have additional constraints
+   (e.g. in some cases `depth` must be zero).
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code><a class='link' href='#Vector2Value'>Vector2Value</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SetOpacityCmd {:#SetOpacityCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#247)*
+
+
+
+ Sets a node's opacity.
+
+ Constraints:
+ - `node_id` refs a `Node` with the has_opacity characteristic.
+ - `opacity` is in the range [0, 1].
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>node_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>opacity</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SendSizeChangeHintCmdHACK {:#SendSizeChangeHintCmdHACK}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#258)*
+
+
+
+ Sends a hint about a pending size change to the given node and all nodes
+ below. This is generally sent before an animation.
+
+ `width_change_factor` and `height_change_factor` is how much bigger or smaller
+ the item is expected to be in the near future. This one number encapsulate
+ both changes in scale, as well as changes to layout width and height.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>node_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>width_change_factor</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>height_change_factor</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### AddChildCmd {:#AddChildCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#273)*
+
+
+
+ Add a node as a child to another node.
+
+ Constraints:
+ - `id` refs a Node with the has_children characteristic.
+ - `child_id` refs any Node.
+
+ Discussion:
+ The child node is first removed from its existing parent, as if DetachCmd
+ was applied first.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>node_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>child_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### AddPartCmd {:#AddPartCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#293)*
+
+
+
+ Add a node as a part of another node.  The implications of being a part
+ rather than a child differ based on the type of the part.  However, one
+ implication is constant: removing all of a node's children (e.g. via
+ DetachChildrenCmd) does not affect its parts.  This is similar to the
+ "shadow DOM" in a web browser: the controls of a <video> element are
+ implemented as using the shadow DOM, and do no show up amongst the children
+ of that element.
+
+ Constraints:
+ - `id` refs a Node with the has_parts characteristic.
+ - `part_id` refs any Node.
+
+ Discussion:
+ The part node is first removed from its existing parent, as if DetachCmd
+ was applied first.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>node_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>part_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### DetachChildrenCmd {:#DetachChildrenCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#299)*
+
+
+
+ Detaches all of a node's children (but not its parts).
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>node_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SetShapeCmd {:#SetShapeCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#317)*
+
+
+
+ Sets/clears a node's shape.
+
+ Constraints:
+ - `node_id` refs a `Node` with the has_shape characteristic.
+ - `shape_id` refs a `Shape`, or nothing.
+ - if this command causes the target to have both a `Shape` and a `Material`,
+   then these must be compatible with each other (see README.md regarding
+   "Shape/Material Compatibility").
+
+ Discussion:
+ In order to be painted, a node requires both a `Shape` and a `Material`.
+ Without a material, a node can still participate in hit-testing and clipping.
+ Without a shape, a node cannot do any of the above.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>node_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>shape_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SetMaterialCmd {:#SetMaterialCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#336)*
+
+
+
+ Sets/clears a node's material.
+
+ Constraints:
+ - `node_id` refs a `Node` with the has_material characteristic.
+ - `material_id` refs a `Material`, or nothing.
+ - if this command causes the target to have both a `Shape` and a `Material`,
+   then these must be compatible with each other (see README.md regarding
+   "Shape/Material Compatibility").
+
+ Discussion:
+ In order to be painted, a node requires both a `Shape` and a `Material`.
+ Without a material, a node can still participate in hit-testing and clipping.
+ Without a shape, a node cannot do any of the above.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>node_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>material_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SetClipCmd {:#SetClipCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#361)*
+
+
+
+ Sets/clears a node's clip.  DEPRECATED: use SetClipPlanesCmd.
+
+ Constraints:
+ - `node_id` refs a `Node` with the has_clip characteristic.
+ - `clip_id` a `Node` with the is_clip characteristic, or nothing.  If the
+   referenced node is not rooted, then it will have no effect (since its
+   full world-transform cannot be determined).
+ - `clip_to_self` If false, children are only clipped to the region specified
+   by `clip_id`.  If true, children are additionally clipped to the node's
+   shape (as determined by its ShapeNode parts).
+
+ Discussion:
+ If a node has a clip, it will be applied to both the parts and the children
+ of the node.  Under some circumstances (TBD), a clip will not be applicable
+ to a node; in such cases it will be as though no clip has been specified for
+ the node.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>node_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>clip_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>clip_to_self</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SetHitTestBehaviorCmd {:#SetHitTestBehaviorCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#372)*
+
+
+
+ Sets a node's hit test behavior.
+
+ Discussion:
+ By default, hit testing is performed on the node's content, its parts,
+ and its children.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>node_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>hit_test_behavior</code></td>
+            <td>
+                <code><a class='link' href='#HitTestBehavior'>HitTestBehavior</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SetViewPropertiesCmd {:#SetViewPropertiesCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#381)*
+
+
+
+ Sets the properties for a ViewHolder's attached View.
+
+ Constraints:
+ - `view_holder_id` refs a `ViewHolder`.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>view_holder_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>properties</code></td>
+            <td>
+                <code><a class='link' href='#ViewProperties'>ViewProperties</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### TakeSnapshotCmdDEPRECATED {:#TakeSnapshotCmdDEPRECATED}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#390)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>node_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>callback</code></td>
+            <td>
+                <code><a class='link' href='#SnapshotCallbackDEPRECATED'>SnapshotCallbackDEPRECATED</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SetCameraCmd {:#SetCameraCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#401)*
+
+
+
+ Sets a renderer's camera.
+
+ Constraints:
+ - `renderer_id` refs a `Renderer`.
+ - `camera_id` refs a `Camera`, or stops rendering by passing zero.
+ - `matrix` is a value or variable of type kMatrix4x4.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>renderer_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>camera_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SetCameraTransformCmd {:#SetCameraTransformCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#414)*
+
+
+
+ Sets a camera's view matrix.
+ This operation can be applied to both Cameras and StereoCameras.
+
+ Constraints:
+ - `camera_id` refs a `Camera`.
+ - `eye_position` is the position of the eye.
+ - `eye_look_at` is the point is the scene the that eye is pointed at.
+ - `eye_up` defines the camera's "up" vector.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>camera_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>eye_position</code></td>
+            <td>
+                <code><a class='link' href='#Vector3Value'>Vector3Value</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>eye_look_at</code></td>
+            <td>
+                <code><a class='link' href='#Vector3Value'>Vector3Value</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>eye_up</code></td>
+            <td>
+                <code><a class='link' href='#Vector3Value'>Vector3Value</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SetCameraProjectionCmd {:#SetCameraProjectionCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#430)*
+
+
+
+ Sets a camera's projection matrix.
+ This operation cannot be applied to a StereoCamera.
+
+ Constraints:
+ - `camera_id` refs a `Camera` that is not a `StereoCamera`.
+ - `fovy` is the Y-axis field of view, in radians.
+
+ NOTE: A default orthographic projection is specified by setting `fovy` to
+ zero.  In this case, the camera transform is ignored.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>camera_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>fovy</code></td>
+            <td>
+                <code><a class='link' href='#FloatValue'>FloatValue</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SetStereoCameraProjectionCmd {:#SetStereoCameraProjectionCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#445)*
+
+
+
+ Sets a StereoCamera's projection matrices.
+ This operation can only be applied to a StereoCamera.
+
+ Constraints:
+ - `camera_id` refs a `StereoCamera`.
+ - `left_projection` is the projection matrix for the left eye.
+ - `right_projection` is the projection matrix for the right eye.
+
+ These projection matrices may also contain a transform in camera space for
+ their eye if needed.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>camera_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>left_projection</code></td>
+            <td>
+                <code><a class='link' href='#Matrix4Value'>Matrix4Value</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>right_projection</code></td>
+            <td>
+                <code><a class='link' href='#Matrix4Value'>Matrix4Value</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SetCameraClipSpaceTransformCmd {:#SetCameraClipSpaceTransformCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#457)*
+
+
+
+ Sets a camera's clip-space transform.
+
+ Constraints:
+ - `camera_id` refs a `Camera`.
+ - `translation` is the desired translation, in Vulkan NDC.
+ - `scale` is the scale factor to apply before translation.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>camera_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>translation</code></td>
+            <td>
+                <code><a class='link' href='#vec2'>vec2</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>scale</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SetCameraPoseBufferCmd {:#SetCameraPoseBufferCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#535)*
+
+
+
+ Sets the "pose buffer" for the camera identified by `camera_id`.
+ This operation can be applied to both Cameras and StereoCameras.
+
+ This will override any position and rotation set for the camera and will
+ make it take its position and rotation from the pose buffer each frame
+ based on the presentation time for that frame.
+
+ A pose buffer represents a ring buffer of poses for a fixed number of time
+ points in the future. Each entry in the buffer identified by `buffer_id` is
+ a quaternion and a position layed out as follows:
+
+ struct Pose {
+   // Quaternion
+   float32 a;
+   float32 b;
+   float32 c;
+   float32 d;
+
+   // Position
+   float32 x;
+   float32 y;
+   float32 z;
+
+   // Reserved/Padding
+   byte[4] reserved;
+ }
+
+ The buffer can be thought of as a packed array of `num_entries` Pose structs
+ and is required to be at least num_entries * sizeof(Pose) bytes.
+
+ The quaternions and positions are specified in the space of the camera's
+ parent node.
+
+ `base_time` is a base time point expressed in nanoseconds in the
+ `CLOCK_MONOTONIC` timebase and `time_interval` is the time in nanoseconds
+ between entries in the buffer. `base_time` must be in the past.
+
+ For a given point in time `t` expressed in nanoseconds in the
+ `CLOCK_MONOTONIC` timebase the index of the corresponding pose in
+ the pose buffer can be computed as follows:
+
+ index(t) = ((t - base_time) / time_interval) % num_entries
+
+ poses[index(t)] is valid for t over the time interval (t - time_interval, t]
+ and should be expected to updated continuously without synchronization
+ for the duration of that interval. If a single pose value is needed for
+ multiple non-atomic operations a value should be latched and stored outside
+ the pose buffer.
+
+ Because the poses are not protected by any synchronization primitives it is
+ possible that when a pose is latched it will be only partially updated, and
+ the pose being read will contain some components from the pose before it is
+ updated and some components from the updated pose. The safety of using these
+ "torn" poses relies on two things:
+
+ 1) Sequential poses written to poses[index(t)] are very similar to each
+ other numerically, so that if some components are taken from the first and
+ some are taken from another the result is numerically similar to both
+
+ 2) The space of positions and quaternions is locally flat at the scale of
+ changes between sequential updates, which guarantees that two poses which
+ are numerically similar also represent semantically similar poses (i.e.
+ there are no discontinuities which will cause a small numerical change in
+ the position or quaterninon to cause a large change in the encoded pose)
+ For positions this is guaranteed because Scenic uses a Euclidean 3-space
+ which is globally flat and for quaternions this is guaranteed because
+ quaternions encode rotation as points on a unit 4-sphere, and spheres are
+ locally flat. For more details on the encoding of rotations in quaterions
+ see https://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation
+
+ This commanderation is intended for late latching camera pose to support
+ low-latency motion-tracked rendering.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>camera_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>buffer_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>num_entries</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>base_time</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>time_interval</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SetLightColorCmd {:#SetLightColorCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#544)*
+
+
+
+ Sets the color of the Light identified by `light_id`.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>light_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>color</code></td>
+            <td>
+                <code><a class='link' href='#ColorRgbValue'>ColorRgbValue</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SetLightDirectionCmd {:#SetLightDirectionCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#550)*
+
+
+
+ Sets the direction of the DirectionalLight identified by `light_id`.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>light_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>direction</code></td>
+            <td>
+                <code><a class='link' href='#Vector3Value'>Vector3Value</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### AddLightCmd {:#AddLightCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#558)*
+
+
+
+ DEPRECATED
+ Adds the light specified by `light_id` specified by `light_id` to the scene
+ identified by `scene_id`.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>scene_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>light_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### DetachLightCmd {:#DetachLightCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#565)*
+
+
+
+ Detach the light specified by `light_id` from the scene that it is attached
+ to, if any.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>light_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### DetachLightsCmd {:#DetachLightsCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#570)*
+
+
+
+ Detach all lights from the scene specified by `scene_id`.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>scene_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SetTextureCmd {:#SetTextureCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#583)*
+
+
+
+ Sets/clears a material's texture.
+
+ Constraints:
+ - `material_id` refs a `Material`.
+ - `texture_id` refs a `Image`, `ImagePipe`, or nothing.
+
+ If no texture is provided (i.e. `texture_id` is zero), a solid color is used.
+ If a texture is provided, then the value sampled from the texture is
+ multiplied by the color.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>material_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>texture_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SetColorCmd {:#SetColorCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#595)*
+
+
+
+ Sets a material's color.
+
+ Constraints:
+ - `material_id` refs a `Material`.
+
+ If a texture is set on the material, then the value sampled from the texture
+ is multiplied by the color.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>material_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>color</code></td>
+            <td>
+                <code><a class='link' href='#ColorRgbaValue'>ColorRgbaValue</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### MeshVertexFormat {:#MeshVertexFormat}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#627)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>position_type</code></td>
+            <td>
+                <code><a class='link' href='#ValueType'>ValueType</a></code>
+            </td>
+            <td> kVector2 or kVector3.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>normal_type</code></td>
+            <td>
+                <code><a class='link' href='#ValueType'>ValueType</a></code>
+            </td>
+            <td> kVector2 or kVector3 (must match position_type), or kNone.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>tex_coord_type</code></td>
+            <td>
+                <code><a class='link' href='#ValueType'>ValueType</a></code>
+            </td>
+            <td> kVector2 or kNone.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### BindMeshBuffersCmd {:#BindMeshBuffersCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#636)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>mesh_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>index_buffer_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>index_format</code></td>
+            <td>
+                <code><a class='link' href='#MeshIndexFormat'>MeshIndexFormat</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>index_offset</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>index_count</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>vertex_buffer_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>vertex_format</code></td>
+            <td>
+                <code><a class='link' href='#MeshVertexFormat'>MeshVertexFormat</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>vertex_offset</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>vertex_count</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>bounding_box</code></td>
+            <td>
+                <code><a class='link' href='#BoundingBox'>BoundingBox</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### AddLayerCmd {:#AddLayerCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#655)*
+
+
+
+ Add a layer to a layer stack.
+ Constraints:
+ - `layer_stack_id` refs a `LayerStack`.
+ - `layer_id` refs a `Layer`.
+ - The layer must not already belong to a different stack; it must first be
+   detached.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>layer_stack_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>layer_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### RemoveLayerCmd {:#RemoveLayerCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#665)*
+
+
+
+ Remove a layer from a layer stack.
+ Constraints:
+ - `layer_stack_id` refs a `LayerStack`.
+ - `layer_id` refs a `Layer`.
+ - The layer must belong to this stack.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>layer_stack_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>layer_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### RemoveAllLayersCmd {:#RemoveAllLayersCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#673)*
+
+
+
+ Remove all layers from a layer stack.
+ Constraints
+ - `layer_stack_id` refs a `LayerStack`.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>layer_stack_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SetLayerStackCmd {:#SetLayerStackCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#681)*
+
+
+
+ Set a compositor's layer stack, replacing the current stack (if any).
+ Constraints:
+ - `compositor_id` refs a `DisplayCompositor` or `ImagePipeCompositor`.
+ - `layer_stack_id` refs a `LayerStack`.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>compositor_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>layer_stack_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SetRendererCmd {:#SetRendererCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#690)*
+
+
+
+ Set a layer's renderer, replacing the current renderer (if any).
+ Constraints:
+ - `layer_id` refs a `Layer`.
+ - `renderer_id` refs a `Renderer`.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>layer_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>renderer_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SetRendererParamCmd {:#SetRendererParamCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#699)*
+
+
+
+ Sets a parameter that affects how a renderer renders a scene.
+
+ `renderer_id` refs the Renderer that is being modified.
+ `param` describes the parameter that should be set, and to what.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>renderer_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>param</code></td>
+            <td>
+                <code><a class='link' href='#RendererParam'>RendererParam</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SetEventMaskCmd {:#SetEventMaskCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#713)*
+
+
+
+ Sets which events a resource should deliver to the session listener.
+ This command replaces any prior event mask for the resource.
+
+ The initial event mask for a resource is zero, meaning no events are
+ reported.
+
+ Constraints:
+ - `resource_id` is a valid resource id
+ - `event_mask` is zero or a combination of `k*EventMask` bits OR'ed together.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>event_mask</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SetLabelCmd {:#SetLabelCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#731)*
+
+
+
+ Sets/clears a label to help developers identify the purpose of the resource
+ when using diagnostic tools.
+
+ The label serves no functional purpose in the scene graph.  It exists only
+ to help developers understand its structure.  The scene manager may truncate
+ or discard labels at will.
+
+ Constraints:
+ - The label's maximum length is `kLabelMaxLength` characters.
+ - Setting the label to an empty string clears it.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>label</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SetDisableClippingCmd {:#SetDisableClippingCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#745)*
+
+
+
+ Set whether clipping should be disabled for the specified renderer.  For a
+ newly-created renderer, clipping will NOT be disabled (i.e. it will be
+ enabled).
+
+ NOTE: this disables visual clipping only; objects are still clipped for the
+ purposes of hit-testing.
+
+ `renderer_id` refs the target renderer.
+ `disable_clipping` specifies whether the clipping should be disabled.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>renderer_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>disable_clipping</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SetImportFocusCmdDEPRECATED {:#SetImportFocusCmdDEPRECATED}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#751)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr>
+</table>
+
+### SetClipPlanesCmd {:#SetClipPlanesCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#759)*
+
+
+
+ Sets the list of clip planes that apply to a Node and all of its children.  Replaces
+ the list set by any previous SetClipPlanesCmd.
+
+ - `node_id` refs a `Node` with the has_clip characteristic.
+ - `clip_planes` is the new list of oriented clip planes.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>node_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>clip_planes</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#Plane3'>Plane3</a>&gt;</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SetPointLightPositionCmd {:#SetPointLightPositionCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#765)*
+
+
+
+ Sets the position of the PointLight identified by `light_id`.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>light_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>position</code></td>
+            <td>
+                <code><a class='link' href='#Vector3Value'>Vector3Value</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SetPointLightFalloffCmd {:#SetPointLightFalloffCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#779)*
+
+
+
+ Sets the falloff factor of the PointLight identified by `light_id`.
+ A value of 1.0 corresponds to the physically-based "inverse-square law"
+ (see Wikipedia).  Other values can be used for artistic effect, e.g. a
+ value of 0.0 means that the radiance of a surface is not dependant on
+ its distance from the light.
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>light_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>falloff</code></td>
+            <td>
+                <code><a class='link' href='#FloatValue'>FloatValue</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SceneAddAmbientLightCmd {:#SceneAddAmbientLightCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#786)*
+
+
+
+ Adds the light specified by `light_id` specified by `light_id` to the scene
+ identified by `scene_id`.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>scene_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>light_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SceneAddDirectionalLightCmd {:#SceneAddDirectionalLightCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#793)*
+
+
+
+ Adds the light specified by `light_id` specified by `light_id` to the scene
+ identified by `scene_id`.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>scene_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>light_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SceneAddPointLightCmd {:#SceneAddPointLightCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#800)*
+
+
+
+ Adds the light specified by `light_id` specified by `light_id` to the scene
+ identified by `scene_id`.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>scene_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>light_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SetDisplayColorConversionCmdHACK {:#SetDisplayColorConversionCmdHACK}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#819)*
+
+
+
+ Set the color conversion applied to the compositor's display.
+ The conversion is applied to to each pixel according to the formula:
+
+ (matrix * (pixel + preoffsets)) + postoffsets
+
+ where pixel is a column vector consisting of the pixel's 3 components.
+
+ `matrix` is passed in row-major order. Clients will be responsible
+ for passing default values, when needed.
+ Default values are not currently supported in fidl.
+ Default Values:
+   preoffsets = [0 0 0]
+   matrix = [1 0 0 0 1 0 0 0 1]
+   postoffsets = [0 0 0]
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>compositor_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>preoffsets</code></td>
+            <td>
+                <code>float32[3]</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>matrix</code></td>
+            <td>
+                <code>float32[9]</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>postoffsets</code></td>
+            <td>
+                <code>float32[3]</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SetDisplayRotationCmdHACK {:#SetDisplayRotationCmdHACK}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#837)*
+
+
+
+ Depending on the device, the display might be rotated
+ with respect to what the lower level device controller
+ considers the physical orientation of pixels. The
+ compositors and layers must be in alignment with the
+ underlying physical orientation which means that for
+ certain operations like screenshotting, they cannot
+ provide results with the accurate orientation unless
+ they have information about how the higher-level display
+ is orienting the screen. The only legal values for the
+ rotation are 0, 90, 180, and 270, which are each
+  applied counterclockwise.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>compositor_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>rotation_degrees</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SetEnableDebugViewBoundsCmd {:#SetEnableDebugViewBoundsCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#845)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>view_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>enable</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SetViewHolderBoundsColorCmd {:#SetViewHolderBoundsColorCmd}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#852)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>view_holder_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>color</code></td>
+            <td>
+                <code><a class='link' href='#ColorRgbValue'>ColorRgbValue</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### DisplayInfo {:#DisplayInfo}
+*Defined in [fuchsia.ui.gfx/display_info.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/display_info.fidl#8)*
+
+
+
+ Provides information about a display.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>width_in_px</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> The size of the display, in physical pixels.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>height_in_px</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### MetricsEvent {:#MetricsEvent}
+*Defined in [fuchsia.ui.gfx/events.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/events.fidl#42)*
+
+
+
+ Provides rendering target metrics information about the specified node.
+
+ This event is delivered when the following conditions are true:
+ - The node is a descendant of a `Scene`.
+ - The node has `kMetricsEventMask` set to an enabled state.
+ - The node's metrics have changed since they were last delivered, or since
+   `kMetricsEventMask` transitioned from a disabled state to an enabled state.
+
+ Subscribe to this event to receive information about the scale factors you
+ should apply when generating textures for your nodes.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>node_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>metrics</code></td>
+            <td>
+                <code><a class='link' href='#Metrics'>Metrics</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SizeChangeHintEvent {:#SizeChangeHintEvent}
+*Defined in [fuchsia.ui.gfx/events.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/events.fidl#57)*
+
+
+
+ Delivered in response to a size change hint from a parent node
+ (SendSizeChangeHintCmd).
+
+ This event is delivered when the following conditions are true:
+ - The node has `kSizeChangeEventMask` set to an enabled state.
+ - A parent node has sent a SendSizeChangeHintCmd.
+
+ Subscribe to this event to receive information about how large textures you
+ will need in the near future for your nodes. The canonical use case is to
+ pre-allocate memory to avoid repeated re-allocations.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>node_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>width_change_factor</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>height_change_factor</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ImportUnboundEvent {:#ImportUnboundEvent}
+*Defined in [fuchsia.ui.gfx/events.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/events.fidl#66)*
+
+
+
+ Delivered when the imported resource with the given ID is no longer bound to
+ its host resource, or if the imported resource can not be bound because
+ the host resource is not available.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>resource_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ViewConnectedEvent {:#ViewConnectedEvent}
+*Defined in [fuchsia.ui.gfx/events.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/events.fidl#71)*
+
+
+
+ Delivered to a ViewHolder's Session when its peer View is connected.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>view_holder_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ViewDisconnectedEvent {:#ViewDisconnectedEvent}
+*Defined in [fuchsia.ui.gfx/events.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/events.fidl#80)*
+
+
+
+ Delivered to a ViewHolder's Session when its peer View is disconnected or
+ destroyed.
+
+ If the View is destroyed before the connection is established, then this
+ event will be delivered immediately when the ViewHolder attempts to connect.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>view_holder_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ViewHolderDisconnectedEvent {:#ViewHolderDisconnectedEvent}
+*Defined in [fuchsia.ui.gfx/events.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/events.fidl#89)*
+
+
+
+ Delivered to a View's Session when its peer ViewHolder is disconnected or
+ destroyed.
+
+ If the ViewHolder is destroyed before the connection is established, then
+ this event will be delivered immediately when the View attempts to connect.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>view_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ViewHolderConnectedEvent {:#ViewHolderConnectedEvent}
+*Defined in [fuchsia.ui.gfx/events.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/events.fidl#97)*
+
+
+
+ Delivered to a View's Session when its peer ViewHolder is connected.
+
+ If the ViewHolder is destroyed before the connection is established, then
+ this event will not be delivered.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>view_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ViewAttachedToSceneEvent {:#ViewAttachedToSceneEvent}
+*Defined in [fuchsia.ui.gfx/events.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/events.fidl#107)*
+
+
+
+ Delivered to a View's Session when the parent ViewHolder for the given View
+ becomes a part of a Scene.
+
+ A ViewHolder is considered to be part of a Scene if there is an unbroken
+ chain of parent-child relationships between the Scene node and the
+ ViewHolder node.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>view_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>properties</code></td>
+            <td>
+                <code><a class='link' href='#ViewProperties'>ViewProperties</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ViewDetachedFromSceneEvent {:#ViewDetachedFromSceneEvent}
+*Defined in [fuchsia.ui.gfx/events.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/events.fidl#121)*
+
+
+
+ Delivered to a View's Session when the parent ViewHolder for the given View
+ is no longer part of a scene.
+
+ This can happen if the ViewHolder is detached directly from the scene, or
+ if one of its parent nodes is.
+
+ A ViewHolder is considered to be part of a Scene if there is an unbroken
+ chain of parent-child relationships between the Scene node and the
+ ViewHolder node.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>view_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ViewPropertiesChangedEvent {:#ViewPropertiesChangedEvent}
+*Defined in [fuchsia.ui.gfx/events.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/events.fidl#127)*
+
+
+
+ Delivered when the parent ViewHolder for the given View makes a change to
+ the View's properties.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>view_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>properties</code></td>
+            <td>
+                <code><a class='link' href='#ViewProperties'>ViewProperties</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ViewStateChangedEvent {:#ViewStateChangedEvent}
+*Defined in [fuchsia.ui.gfx/events.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/events.fidl#133)*
+
+
+
+ Delivered to a ViewHolder's Session when its peer View's state has changed.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>view_holder_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>state</code></td>
+            <td>
+                <code><a class='link' href='#ViewState'>ViewState</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Hit {:#Hit}
+*Defined in [fuchsia.ui.gfx/hit.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/hit.fidl#16)*
+
+
+
+ Describes where a hit occurred within the content of a node tagged
+ by this session.
+
+ To compute the point of intersection within the node's local coordinate
+ system, perform the following calculation using the ray which was
+ originally passed to `Session.HitTest()`.
+
+   hit_point = ray.origin + (hit.distance * ray.direction)
+   local_point = hit.inverse_transform * hit_point
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>tag_value</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> The node's tag value.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>ray_origin</code></td>
+            <td>
+                <code><a class='link' href='#vec4'>vec4</a></code>
+            </td>
+            <td> The origin of the ray that was used for the hit test, in the hit
+ node's coordinate system.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>ray_direction</code></td>
+            <td>
+                <code><a class='link' href='#vec4'>vec4</a></code>
+            </td>
+            <td> The direction of the ray that was used for the hit test, in the hit
+ node's coordinate system.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>inverse_transform</code></td>
+            <td>
+                <code><a class='link' href='#mat4'>mat4</a></code>
+            </td>
+            <td> The inverse transformation matrix which maps the coordinate system of
+ the node at which the hit test was initiated into the local coordinate
+ system of the node which was hit.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>distance</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td> The distance from the ray's origin to the closest point of intersection
+ in multiples of the ray's direction vector.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ShapeNodeArgs {:#ShapeNodeArgs}
+*Defined in [fuchsia.ui.gfx/nodes.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/nodes.fidl#32)*
+
+
+
+ Characteristics:
+ - has_parent
+ - has_shape
+ - has_material
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>unused</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>0</td>
+        </tr>
+</table>
+
+### ClipNodeArgs {:#ClipNodeArgs}
+*Defined in [fuchsia.ui.gfx/nodes.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/nodes.fidl#41)*
+
+
+
+ Characteristics:
+ - has_parent
+ - is_clip
+ - has_parts
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>unused</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>0</td>
+        </tr>
+</table>
+
+### OpacityNodeArgsHACK {:#OpacityNodeArgsHACK}
+*Defined in [fuchsia.ui.gfx/nodes.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/nodes.fidl#52)*
+
+
+
+ Characteristics:
+ - has_transform
+ - has_parent
+ - has_children
+ - has_parts
+ - has_opacity
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>unused</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>0</td>
+        </tr>
+</table>
+
+### EntityNodeArgs {:#EntityNodeArgs}
+*Defined in [fuchsia.ui.gfx/nodes.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/nodes.fidl#62)*
+
+
+
+ Characteristics:
+ - has_transform
+ - has_children
+ - has_parent
+ - has_parts
+ - has_clip
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>unused</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>0</td>
+        </tr>
+</table>
+
+### ImagePipeArgs {:#ImagePipeArgs}
+*Defined in [fuchsia.ui.gfx/resources.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/resources.fidl#67)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>image_pipe_request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='../fuchsia.images/index.html'>fuchsia.images</a>/<a class='link' href='../fuchsia.images/index.html#ImagePipe'>ImagePipe</a>&gt;</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ImagePipe2Args {:#ImagePipe2Args}
+*Defined in [fuchsia.ui.gfx/resources.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/resources.fidl#72)*
+
+
+
+ `ImagePipe2` is a `Resource` that can be used as a `Texture` for a `Material`.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>image_pipe_request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='../fuchsia.images/index.html'>fuchsia.images</a>/<a class='link' href='../fuchsia.images/index.html#ImagePipe2'>ImagePipe2</a>&gt;</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### MemoryArgs {:#MemoryArgs}
+*Defined in [fuchsia.ui.gfx/resources.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/resources.fidl#79)*
+
+
+
+ `Memory` is a `Resource` that wraps a client-provided Zircon vmo to register
+ it with Scenic.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>vmo</code></td>
+            <td>
+                <code>handle&lt;vmo&gt;</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>allocation_size</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>memory_type</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.images/index.html'>fuchsia.images</a>/<a class='link' href='../fuchsia.images/index.html#MemoryType'>MemoryType</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ImageArgs {:#ImageArgs}
+*Defined in [fuchsia.ui.gfx/resources.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/resources.fidl#93)*
+
+
+
+ An image mapped to a range of a `Memory` resource.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>info</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.images/index.html'>fuchsia.images</a>/<a class='link' href='../fuchsia.images/index.html#ImageInfo'>ImageInfo</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>memory_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>memory_offset</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### BufferArgs {:#BufferArgs}
+*Defined in [fuchsia.ui.gfx/resources.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/resources.fidl#101)*
+
+
+
+ A buffer mapped to a range of `Memory`.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>memory_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>memory_offset</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>num_bytes</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ViewArgs {:#ViewArgs}
+*Defined in [fuchsia.ui.gfx/resources.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/resources.fidl#118)*
+
+
+
+ Represents the root of a subgraph within a larger scene graph.  Nodes can be
+ attached to the `View` as children, and these Nodes will have the `View`s'
+ coordinate transform applied to their own, in addition to being clipped to
+ the `View`s' bounding box.
+ See `ViewProperties`.
+
+ Each `View` is linked to a paired `ViewHolder` via a shared token pair.
+
+ Usually the `View` and its associated `ViewHolder` exist in separate
+ processes.  By combining them, the UI for an entire system can be built
+ using content contributed from many different processes.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>token</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.ui.views/index.html'>fuchsia.ui.views</a>/<a class='link' href='../fuchsia.ui.views/index.html#ViewToken'>ViewToken</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>debug_name</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ViewArgs2 {:#ViewArgs2}
+*Defined in [fuchsia.ui.gfx/resources.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/resources.fidl#123)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>token</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.ui.views/index.html'>fuchsia.ui.views</a>/<a class='link' href='../fuchsia.ui.views/index.html#ViewToken'>ViewToken</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>debug_name</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ViewArgs3 {:#ViewArgs3}
+*Defined in [fuchsia.ui.gfx/resources.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/resources.fidl#145)*
+
+
+
+ Represents the root of a subgraph within a larger scene graph.  Nodes can be
+ attached to the |View| as children, and these Nodes will have the |View|s'
+ coordinate transform applied to their own, in addition to being clipped to
+ the |View|s' bounding box.
+ See |ViewProperties|.
+
+ Each |View| is linked to a paired |ViewHolder| via a shared token pair.
+
+ Usually the |View| and its associated |ViewHolder| exist in separate
+ processes.  By combining them, the UI for an entire system can be built
+ using content contributed from many different processes.
+
+ Clients self-identify their |View| with a |ViewRef|, which is a stable
+ identifier that may be cloned and passed to other components in a
+ feed-forward style. It is accompanied by a |ViewRefControl|, which Scenic
+ uses to signal |View| destruction across the system; the |ViewRefControl|
+ must be unique - do not clone it.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>token</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.ui.views/index.html'>fuchsia.ui.views</a>/<a class='link' href='../fuchsia.ui.views/index.html#ViewToken'>ViewToken</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>control_ref</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.ui.views/index.html'>fuchsia.ui.views</a>/<a class='link' href='../fuchsia.ui.views/index.html#ViewRefControl'>ViewRefControl</a></code>
+            </td>
+            <td> |control_ref.reference| must have full rights (i.e., with signaling).
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>view_ref</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.ui.views/index.html'>fuchsia.ui.views</a>/<a class='link' href='../fuchsia.ui.views/index.html#ViewRef'>ViewRef</a></code>
+            </td>
+            <td> |view_ref.reference| must have basic rights (i.e., no signaling).
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>debug_name</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ViewHolderArgs {:#ViewHolderArgs}
+*Defined in [fuchsia.ui.gfx/resources.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/resources.fidl#163)*
+
+
+
+ Represents an attachment point for a subgraph within a larger scene graph.
+ The `ViewHolder` can be attached to a Node as a child, and the contents of
+ the linked `View` will become a child of the Node as well.
+
+ Each `ViewHolder` is linked to a paired `View` via a shared token pair.
+
+ Usually the `ViewHolder` and its associated `View` exist in separate
+ processes.  By combining them, the UI for an entire system can be built
+ using content contributed from many different processes.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>token</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.ui.views/index.html'>fuchsia.ui.views</a>/<a class='link' href='../fuchsia.ui.views/index.html#ViewHolderToken'>ViewHolderToken</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>debug_name</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ViewHolderArgs2 {:#ViewHolderArgs2}
+*Defined in [fuchsia.ui.gfx/resources.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/resources.fidl#168)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>token</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.ui.views/index.html'>fuchsia.ui.views</a>/<a class='link' href='../fuchsia.ui.views/index.html#ViewHolderToken'>ViewHolderToken</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>debug_name</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### CompositorArgs {:#CompositorArgs}
+*Defined in [fuchsia.ui.gfx/resources.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/resources.fidl#176)*
+
+
+
+ A Compositor draws its `LayerStack` into a framebuffer provided by its
+ attached `Display`, if any.  If no display is attached, nothing is rendered.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>dummy</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>0</td>
+        </tr>
+</table>
+
+### DisplayCompositorArgs {:#DisplayCompositorArgs}
+*Defined in [fuchsia.ui.gfx/resources.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/resources.fidl#183)*
+
+
+
+ A DisplayCompositor draws its attached `LayerStack` into an image that is
+ presented on a display.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>dummy</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>0</td>
+        </tr>
+</table>
+
+### ImagePipeCompositorArgs {:#ImagePipeCompositorArgs}
+*Defined in [fuchsia.ui.gfx/resources.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/resources.fidl#190)*
+
+
+
+ An ImagePipeCompositor draws its attached `LayerStack` into an image that is
+ presented on an image-pipe.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>target</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.images/index.html'>fuchsia.images</a>/<a class='link' href='../fuchsia.images/index.html#ImagePipe'>ImagePipe</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### LayerStackArgs {:#LayerStackArgs}
+*Defined in [fuchsia.ui.gfx/resources.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/resources.fidl#201)*
+
+
+
+ A LayerStack is a stack of layers that are attached to a Compositor, which
+ draws them in order of increasing Z-order (or rather, presents the illusion
+ of drawing them in that order: it may apply any optimizations that don't
+ affect the output).
+
+ Supported commands:
+ - AddLayer
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>dummy</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>0</td>
+        </tr>
+</table>
+
+### LayerArgs {:#LayerArgs}
+*Defined in [fuchsia.ui.gfx/resources.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/resources.fidl#220)*
+
+
+
+ A Layer is a 2-dimensional image that is drawn by a Compositor.  The
+ contents of each Layer in a Layerstack are independent of each other.
+ A layer is not drawn unless it has a camera, texture, or color.
+
+ Supported commands:
+ - Detach
+ - SetCamera
+ - SetColor
+ - SetTexture
+ - SetSize (depth must be zero)
+ - SetSize
+ - SetTranslation (z component determines the relative Z-ordering of layers)
+ - SetRotation (must rotate around Z-axis)
+ - SetScale
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>dummy</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>0</td>
+        </tr>
+</table>
+
+### SceneArgs {:#SceneArgs}
+*Defined in [fuchsia.ui.gfx/resources.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/resources.fidl#231)*
+
+
+
+ A Scene is the root of a scene-graph, and defines the rendering environment
+ (lighting, etc.) for the tree of nodes beneath it.
+
+ Supported commands:
+ - Add/RemoveLight
+ - AddChild
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>dummy</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>0</td>
+        </tr>
+</table>
+
+### CameraArgs {:#CameraArgs}
+*Defined in [fuchsia.ui.gfx/resources.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/resources.fidl#243)*
+
+
+
+ A Camera is used to render a Scene from a particular viewpoint.  This is
+ achieved by setting a Renderer to use the camera.
+
+ The following commands may be applied to a Camera:
+ - SetCameraTransform
+ - SetCameraProjection
+ - SetCameraPoseBuffer
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>scene_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### StereoCameraArgs {:#StereoCameraArgs}
+*Defined in [fuchsia.ui.gfx/resources.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/resources.fidl#254)*
+
+
+
+ A StereoCamera is a Camera that renders the scene in side-by-side stereo.
+
+ Any command which can be applied to a Camera can also be applied to a
+ StereoCamera.
+ Additional supported commands:
+ - SetStereoCameraProjection
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>scene_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### RendererArgs {:#RendererArgs}
+*Defined in [fuchsia.ui.gfx/resources.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/resources.fidl#264)*
+
+
+
+ A Renderer renders a Scene via a Camera.
+
+ Supported commands:
+ - SetCamera
+ - SetRendererParam
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>dummy</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>0</td>
+        </tr>
+</table>
+
+### AmbientLightArgs {:#AmbientLightArgs}
+*Defined in [fuchsia.ui.gfx/resources.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/resources.fidl#274)*
+
+
+
+ An AmbientLight is a Light that is is assumed to be everywhere in the scene,
+ in all directions.
+
+ Supported commands:
+ - SetLightColor
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>dummy</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>0</td>
+        </tr>
+</table>
+
+### DirectionalLightArgs {:#DirectionalLightArgs}
+*Defined in [fuchsia.ui.gfx/resources.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/resources.fidl#289)*
+
+
+
+ A DirectionalLight is a Light that is emitted from a point at infinity.
+
+ Although the light is directional, the light has some amount of angular
+ dispersion (i.e., the light is not fully columnated). For simplicity, we
+ assume the dispersion of the light source is symmetric about the light's
+ primary direction.
+
+ Supported commands:
+ - SetLightColor
+ - SetLightDirection
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>dummy</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>0</td>
+        </tr>
+</table>
+
+### PointLightArgs {:#PointLightArgs}
+*Defined in [fuchsia.ui.gfx/resources.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/resources.fidl#303)*
+
+
+
+ A PointLight is a Light that emits light in all directions.  By default, the
+ intensity of the light falls off according to the physically based
+ "inverse-square law" (see Wikipedia), although it can be adjusted to other
+ values for artistic effect.
+
+ Supported commands:
+ - SetLightColor
+ - SetPointLightPosition
+ - SetPointLightFalloff
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>dummy</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>0</td>
+        </tr>
+</table>
+
+### MaterialArgs {:#MaterialArgs}
+*Defined in [fuchsia.ui.gfx/resources.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/resources.fidl#314)*
+
+
+
+ Simple texture-mapped material.
+
+ Supported commands:
+ - SetTextureCmd: sets the texture, or it can be left as zero (no texture).
+   The texture can be an Image or ImagePipe.
+ - SetColorCmd: sets the color.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>dummy</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>0</td>
+        </tr>
+</table>
+
+### VariableArgs {:#VariableArgs}
+*Defined in [fuchsia.ui.gfx/resources.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/resources.fidl#320)*
+
+
+
+ Describes a typed, client-modifiable value.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>type</code></td>
+            <td>
+                <code><a class='link' href='#ValueType'>ValueType</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>initial_value</code></td>
+            <td>
+                <code><a class='link' href='#Value'>Value</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### RectangleArgs {:#RectangleArgs}
+*Defined in [fuchsia.ui.gfx/shapes.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/shapes.fidl#11)*
+
+
+
+ Rectangle centered at (0,0).
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>width</code></td>
+            <td>
+                <code><a class='link' href='#Value'>Value</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>height</code></td>
+            <td>
+                <code><a class='link' href='#Value'>Value</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### RoundedRectangleArgs {:#RoundedRectangleArgs}
+*Defined in [fuchsia.ui.gfx/shapes.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/shapes.fidl#23)*
+
+
+
+ RoundedRectangle centered at (0,0).  Legal parameter values must satisfy the
+ constraint that the flat sides of the rectangle have non-negative length.
+ In other words, the following constraints must hold:
+   - top_left_radius + top_right_radius <= width
+   - bottom_left_radius + bottom_right_radius <= width
+   - top_left_radius + bottom_left_radius <= height
+   - top_right_radius + bottom_right_radius <= height
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>width</code></td>
+            <td>
+                <code><a class='link' href='#Value'>Value</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>height</code></td>
+            <td>
+                <code><a class='link' href='#Value'>Value</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>top_left_radius</code></td>
+            <td>
+                <code><a class='link' href='#Value'>Value</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>top_right_radius</code></td>
+            <td>
+                <code><a class='link' href='#Value'>Value</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>bottom_right_radius</code></td>
+            <td>
+                <code><a class='link' href='#Value'>Value</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>bottom_left_radius</code></td>
+            <td>
+                <code><a class='link' href='#Value'>Value</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### CircleArgs {:#CircleArgs}
+*Defined in [fuchsia.ui.gfx/shapes.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/shapes.fidl#32)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>radius</code></td>
+            <td>
+                <code><a class='link' href='#Value'>Value</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### MeshArgs {:#MeshArgs}
+*Defined in [fuchsia.ui.gfx/shapes.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/shapes.fidl#38)*
+
+
+
+ A Mesh cannot be rendered until it has been bound to vertex/index buffers;
+ see BindMeshBuffersCmd.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr>
+</table>
+
+### ImportToken {:#ImportToken}
+*Defined in [fuchsia.ui.gfx/tokens.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/tokens.fidl#18)*
+
+
+
+ Token that uniquely identifies an attachment point for a subgraph in the
+ global scene graph.  Each `ImportToken` has exactly one corresponding
+ `ExportToken`.
+
+ A Scenic client can reference contents from another client by creating a
+ typed resource using this token.  The other client must also create a
+ correspondingly typed resource using the corresponding `ExportToken`.
+
+ The exact nature of the inter-client reference depends on the specific
+ resources created from the tokens.  For example, creating a `ViewHolder`
+ resource from this token allows a client to embed another client's `View`.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code>handle&lt;eventpair&gt;</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ExportToken {:#ExportToken}
+*Defined in [fuchsia.ui.gfx/tokens.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/tokens.fidl#34)*
+
+
+
+ Token that uniquely identifies a root point for a subgraph in the global
+ scene graph. Each `ExportToken` has exactly one corresponding `ImportToken`.
+
+ A Scenic client can have its contents referenced from another client by
+ creating a typed resource using this token.  The other client must also
+ create a correspondingly typed resource using the corresponding
+ `ImportToken`.
+
+ The exact nature of the inter-client reference depends on the specific
+ resources created from the tokens.  For example, creating a `View`
+ resource from this token allows everything attached to the `View` to be
+ embedded in another clients `ViewHolder`.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code>handle&lt;eventpair&gt;</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### vec2 {:#vec2}
+*Defined in [fuchsia.ui.gfx/types.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/types.fidl#7)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>x</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>y</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### vec3 {:#vec3}
+*Defined in [fuchsia.ui.gfx/types.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/types.fidl#12)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>x</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>y</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>z</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### vec4 {:#vec4}
+*Defined in [fuchsia.ui.gfx/types.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/types.fidl#18)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>x</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>y</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>z</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>w</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### mat4 {:#mat4}
+*Defined in [fuchsia.ui.gfx/types.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/types.fidl#25)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>matrix</code></td>
+            <td>
+                <code>float32[16]</code>
+            </td>
+            <td> Column major order.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ColorRgba {:#ColorRgba}
+*Defined in [fuchsia.ui.gfx/types.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/types.fidl#31)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>red</code></td>
+            <td>
+                <code>uint8</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>green</code></td>
+            <td>
+                <code>uint8</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>blue</code></td>
+            <td>
+                <code>uint8</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>alpha</code></td>
+            <td>
+                <code>uint8</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ColorRgb {:#ColorRgb}
+*Defined in [fuchsia.ui.gfx/types.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/types.fidl#38)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>red</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>green</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>blue</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Quaternion {:#Quaternion}
+*Defined in [fuchsia.ui.gfx/types.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/types.fidl#44)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>x</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>y</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>z</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>w</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Plane3 {:#Plane3}
+*Defined in [fuchsia.ui.gfx/types.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/types.fidl#53)*
+
+
+
+ Oriented plane described by a normal vector and a distance
+ from the origin along that vector.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>dir</code></td>
+            <td>
+                <code><a class='link' href='#vec3'>vec3</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>dist</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### FactoredTransform {:#FactoredTransform}
+*Defined in [fuchsia.ui.gfx/types.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/types.fidl#58)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>translation</code></td>
+            <td>
+                <code><a class='link' href='#vec3'>vec3</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>scale</code></td>
+            <td>
+                <code><a class='link' href='#vec3'>vec3</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>anchor</code></td>
+            <td>
+                <code><a class='link' href='#vec3'>vec3</a></code>
+            </td>
+            <td> Point around which rotation and scaling occur.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>rotation</code></td>
+            <td>
+                <code><a class='link' href='#Quaternion'>Quaternion</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### FloatValue {:#FloatValue}
+*Defined in [fuchsia.ui.gfx/types.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/types.fidl#87)*
+
+
+
+ A value that is specified explicitly by `value` if `variable_id` is zero,
+ or is the value produced by the resource identified by `variable_id`, e.g.
+ an animation or expression.  In the latter case, the value produced by the
+ resource must be a float32, and `value` is ignored.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>variable_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Vector2Value {:#Vector2Value}
+*Defined in [fuchsia.ui.gfx/types.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/types.fidl#96)*
+
+
+
+ A value that is specified explicitly by `value` if `variable_id` is zero,
+ or is the value produced by the resource identified by `variable_id`, e.g.
+ an animation or expression.  In the latter case, the value produced by the
+ resource must be a vec2, and `value` is ignored.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code><a class='link' href='#vec2'>vec2</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>variable_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Vector3Value {:#Vector3Value}
+*Defined in [fuchsia.ui.gfx/types.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/types.fidl#105)*
+
+
+
+ A value that is specified explicitly by `value` if `variable_id` is zero,
+ or is the value produced by the resource identified by `variable_id`, e.g.
+ an animation or expression.  In the latter case, the value produced by the
+ resource must be a vec3, and `value` is ignored.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code><a class='link' href='#vec3'>vec3</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>variable_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Vector4Value {:#Vector4Value}
+*Defined in [fuchsia.ui.gfx/types.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/types.fidl#114)*
+
+
+
+ A value that is specified explicitly by `value` if `variable_id` is zero,
+ or is the value produced by the resource identified by `variable_id`, e.g.
+ an animation or expression.  In the latter case, the value produced by the
+ resource must be a vec4, and `value` is ignored.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code><a class='link' href='#vec4'>vec4</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>variable_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Matrix4Value {:#Matrix4Value}
+*Defined in [fuchsia.ui.gfx/types.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/types.fidl#123)*
+
+
+
+ A value that is specified explicitly by `value` if `variable_id` is zero,
+ or is the value produced by the resource identified by `variable_id`, e.g.
+ an animation or expression.  In the latter case, the value produced by the
+ resource must be a vec4, and `value` is ignored.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code><a class='link' href='#mat4'>mat4</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>variable_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ColorRgbValue {:#ColorRgbValue}
+*Defined in [fuchsia.ui.gfx/types.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/types.fidl#132)*
+
+
+
+ A value that is specified explicitly by `value` if `variable_id` is zero,
+ or is the value produced by the resource identified by `variable_id`, e.g.
+ an animation or expression.  In the latter case, the value produced by the
+ resource must be a ColorRgb, and `value` is ignored.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code><a class='link' href='#ColorRgb'>ColorRgb</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>variable_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ColorRgbaValue {:#ColorRgbaValue}
+*Defined in [fuchsia.ui.gfx/types.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/types.fidl#141)*
+
+
+
+ A value that is specified explicitly by `value` if `variable_id` is zero,
+ or is the value produced by the resource identified by `variable_id`, e.g.
+ an animation or expression.  In the latter case, the value produced by the
+ resource must be a ColorRgba, and `value` is ignored.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code><a class='link' href='#ColorRgba'>ColorRgba</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>variable_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### QuaternionValue {:#QuaternionValue}
+*Defined in [fuchsia.ui.gfx/types.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/types.fidl#150)*
+
+
+
+ A value that is specified explicitly by `value` if `variable_id` is zero,
+ or is the value produced by the resource identified by `variable_id`, e.g.
+ an animation or expression.  In the latter case, the value produced by the
+ resource must be a Quaternion, and `value` is ignored.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code><a class='link' href='#Quaternion'>Quaternion</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>variable_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Metrics {:#Metrics}
+*Defined in [fuchsia.ui.gfx/types.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/types.fidl#179)*
+
+
+
+ Rendering target metrics associated with a node.
+ See also `MetricsEvent`.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>scale_x</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td> The ratio between the size of one logical pixel within the node's local
+ coordinate system and the size of one physical pixel of the rendering
+ target.
+
+ This scale factors change in relation to the resolution of the rendering
+ target and the scale transformations applied by containing nodes.
+ They are always strictly positive and non-zero.
+
+ For example, suppose the rendering target is a high resolution display
+ with a device pixel ratio of 2.0 meaning that each logical pixel
+ within the model corresponds to two physical pixels of the display.
+ Assuming no scale transformations affect the node, then its metrics event
+ will report a scale factor of 2.0.
+
+ Building on this example, if instead the node's parent applies a
+ scale transformation of 0.25 to the node, then the node's metrics event
+ will report a scale factor of 0.5 indicating that the node should render
+ its content at a reduced resolution and level of detail since a smaller
+ area of physical pixels (half the size in each dimension) will be rendered.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>scale_y</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>scale_z</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### BoundingBox {:#BoundingBox}
+*Defined in [fuchsia.ui.gfx/types.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/types.fidl#207)*
+
+
+
+ Represents an axis-aligned bounding box.  If any of the dimensions has a
+ negative extent (e.g. max.x < min.x) then the bounding box is treated as
+ empty.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>min</code></td>
+            <td>
+                <code><a class='link' href='#vec3'>vec3</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>max</code></td>
+            <td>
+                <code><a class='link' href='#vec3'>vec3</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ViewProperties {:#ViewProperties}
+*Defined in [fuchsia.ui.gfx/types.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/types.fidl#213)*
+
+
+
+ Represents the properties for a View.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>bounding_box</code></td>
+            <td>
+                <code><a class='link' href='#BoundingBox'>BoundingBox</a></code>
+            </td>
+            <td> The View's bounding box extents can be defined as:
+    { bounding_box.min + inset_from_min, bounding_box.max - inset_from_max }
+ Content contained within the View is clipped to this bounding box.
+
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>inset_from_min</code></td>
+            <td>
+                <code><a class='link' href='#vec3'>vec3</a></code>
+            </td>
+            <td> `insets_from_min` and `insets_from_max` specify the distances between the
+ view's bounding box and that of its parent.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>inset_from_max</code></td>
+            <td>
+                <code><a class='link' href='#vec3'>vec3</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>focus_change</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Whether the View can receive a focus event; default is true.  When
+ false, and this View is eligible to receive a focus event, no
+ focus/unfocus event is actually sent to any View.
+</td>
+            <td>true</td>
+        </tr><tr>
+            <td><code>downward_input</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Whether the View allows geometrically underlying Views to receive input;
+ default is true. When false, Scenic does not send input events to
+ underlying Views.
+</td>
+            <td>true</td>
+        </tr>
+</table>
+
+### ViewState {:#ViewState}
+*Defined in [fuchsia.ui.gfx/types.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/types.fidl#240)*
+
+
+
+ Represents the state of a View in Scenic.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>is_rendering</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Whether the View is rendering. Default is false. Delivered to the View's
+ corresponding ViewHolder after the View's first frame render request.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
 
 
 ## **ENUMS**
@@ -4042,28 +8018,23 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>UNSHADOWED</code></td>
             <td><code>0</code></td>
-            <td> No shadows.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>SCREEN_SPACE</code></td>
             <td><code>1</code></td>
-            <td> Default.  Screen-space, depth-buffer based shadows; SSDO-ish.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>SHADOW_MAP</code></td>
             <td><code>2</code></td>
-            <td> Basic shadow map.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>MOMENT_SHADOW_MAP</code></td>
             <td><code>3</code></td>
-            <td> Moment shadow map (see http:///momentsingraphics.de).
-</td>
+            <td></td>
         </tr><tr>
             <td><code>STENCIL_SHADOW_VOLUME</code></td>
             <td><code>4</code></td>
-            <td> Stencil shadow volume.
-</td>
+            <td></td>
         </tr></table>
 
 ### RenderFrequency {:#RenderFrequency}
@@ -4077,14 +8048,11 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>WHEN_REQUESTED</code></td>
             <td><code>0</code></td>
-            <td> Render only on when requested (i.e. when something triggers it).
- Default behavior.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>CONTINUOUSLY</code></td>
             <td><code>1</code></td>
-            <td> Render one frame after another regardless of it it's needed.
-</td>
+            <td></td>
         </tr></table>
 
 ### ImportSpec {:#ImportSpec}
@@ -4168,13 +8136,188 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>kDefault</code></td>
             <td><code>0</code></td>
-            <td> Apply hit testing to the node's content, its parts, and its children.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>kSuppress</code></td>
             <td><code>1</code></td>
-            <td> Suppress hit testing of the node and everything it contains.
-</td>
+            <td></td>
+        </tr></table>
+
+### MeshIndexFormat {:#MeshIndexFormat}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#621)*
+
+ Set a mesh's indices and vertices.
+
+ `mesh_id` refs the Mesh to be updated.
+ `index_buffer_id` refs a Buffer that contains the mesh indices.
+ `index_format` defines how the index buffer data is to be interpreted.
+ `index_offset` number of bytes from the start of the index Buffer.
+ `index_count` number of indices.
+ `vertex_buffer_id` refs a Buffer that contains the mesh vertices.
+ `vertex_format` defines how the vertex buffer data is to be interpreted.
+ `vertex_offset` number of bytes from the start of the vertex Buffer.
+ `vertex_count` number of vertices.
+ `bounding_box` must contain all vertices within the specified range.
+
+ The MeshVertexFormat defines which per-vertex attributes are provided by the
+ mesh, and the size of each attribute (and therefore the size of each vertex).
+ The attributes are ordered within the vertex in the same order that they
+ appear within the MeshVertexFormat struct.  For example, if the values are
+ kVector3, kNone and kVector2, then:
+   - each vertex has a position and UV-coordinates, but no surface normal.
+   - the 3D position occupies bytes 0-11 (3 dimensions * 4 bytes per float32).
+   - the UV coords occupy bytes 12-19, since no surface normal is provided.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>kUint16</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>kUint32</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr></table>
+
+### ShadowTechnique {:#ShadowTechnique}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.ui.gfx/renderer.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/renderer.fidl#17)*
+
+ Represents the shadow algorithm that the `Renderer` should use when lighting
+ the scene.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>UNSHADOWED</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>SCREEN_SPACE</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>SHADOW_MAP</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>MOMENT_SHADOW_MAP</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>STENCIL_SHADOW_VOLUME</code></td>
+            <td><code>4</code></td>
+            <td></td>
+        </tr></table>
+
+### RenderFrequency {:#RenderFrequency}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.ui.gfx/renderer.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/renderer.fidl#30)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>WHEN_REQUESTED</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>CONTINUOUSLY</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr></table>
+
+### ImportSpec {:#ImportSpec}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.ui.gfx/resources.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/resources.fidl#330)*
+
+ Describes an exported resource that is to be imported by an
+ ImportResourceCmd.
+
+ NOTE: Currently just an enum of importable resource types, but may later be
+ expanded to express concepts like "meshes with a particular vertex format".
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>NODE</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr></table>
+
+### ValueType {:#ValueType}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.ui.gfx/types.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/types.fidl#155)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>kNone</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>kVector1</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>kVector2</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>kVector3</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>kVector4</code></td>
+            <td><code>4</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>kMatrix4</code></td>
+            <td><code>5</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>kColorRgb</code></td>
+            <td><code>6</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>kColorRgba</code></td>
+            <td><code>7</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>kQuaternion</code></td>
+            <td><code>8</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>kFactoredTransform</code></td>
+            <td><code>9</code></td>
+            <td></td>
+        </tr></table>
+
+### HitTestBehavior {:#HitTestBehavior}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.ui.gfx/types.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/types.fidl#169)*
+
+ Describes how nodes interact with hit testings.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>kDefault</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>kSuppress</code></td>
+            <td><code>1</code></td>
+            <td></td>
         </tr></table>
 
 
@@ -4919,6 +9062,742 @@
 </td>
         </tr></table>
 
+### Command {:#Command}
+*Defined in [fuchsia.ui.gfx/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#10)*
+
+ Commands that are used to modify the state of a `Session`.
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>create_resource</code></td>
+            <td>
+                <code><a class='link' href='#CreateResourceCmd'>CreateResourceCmd</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>release_resource</code></td>
+            <td>
+                <code><a class='link' href='#ReleaseResourceCmd'>ReleaseResourceCmd</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>export_resource</code></td>
+            <td>
+                <code><a class='link' href='#ExportResourceCmd'>ExportResourceCmd</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>import_resource</code></td>
+            <td>
+                <code><a class='link' href='#ImportResourceCmd'>ImportResourceCmd</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>set_tag</code></td>
+            <td>
+                <code><a class='link' href='#SetTagCmd'>SetTagCmd</a></code>
+            </td>
+            <td> Tagging commands.
+</td>
+        </tr><tr>
+            <td><code>detach</code></td>
+            <td>
+                <code><a class='link' href='#DetachCmd'>DetachCmd</a></code>
+            </td>
+            <td> Grouping commands.
+</td>
+        </tr><tr>
+            <td><code>set_translation</code></td>
+            <td>
+                <code><a class='link' href='#SetTranslationCmd'>SetTranslationCmd</a></code>
+            </td>
+            <td> Spatial commands.
+</td>
+        </tr><tr>
+            <td><code>set_scale</code></td>
+            <td>
+                <code><a class='link' href='#SetScaleCmd'>SetScaleCmd</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>set_rotation</code></td>
+            <td>
+                <code><a class='link' href='#SetRotationCmd'>SetRotationCmd</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>set_anchor</code></td>
+            <td>
+                <code><a class='link' href='#SetAnchorCmd'>SetAnchorCmd</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>set_size</code></td>
+            <td>
+                <code><a class='link' href='#SetSizeCmd'>SetSizeCmd</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>set_opacity</code></td>
+            <td>
+                <code><a class='link' href='#SetOpacityCmd'>SetOpacityCmd</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>send_size_change_hint_hack</code></td>
+            <td>
+                <code><a class='link' href='#SendSizeChangeHintCmdHACK'>SendSizeChangeHintCmdHACK</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>add_child</code></td>
+            <td>
+                <code><a class='link' href='#AddChildCmd'>AddChildCmd</a></code>
+            </td>
+            <td> Node-specific commands.
+</td>
+        </tr><tr>
+            <td><code>add_part</code></td>
+            <td>
+                <code><a class='link' href='#AddPartCmd'>AddPartCmd</a></code>
+            </td>
+            <td> re-parenting?
+</td>
+        </tr><tr>
+            <td><code>detach_children</code></td>
+            <td>
+                <code><a class='link' href='#DetachChildrenCmd'>DetachChildrenCmd</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>set_shape</code></td>
+            <td>
+                <code><a class='link' href='#SetShapeCmd'>SetShapeCmd</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>set_material</code></td>
+            <td>
+                <code><a class='link' href='#SetMaterialCmd'>SetMaterialCmd</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>set_clip</code></td>
+            <td>
+                <code><a class='link' href='#SetClipCmd'>SetClipCmd</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>set_hit_test_behavior</code></td>
+            <td>
+                <code><a class='link' href='#SetHitTestBehaviorCmd'>SetHitTestBehaviorCmd</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>set_view_properties</code></td>
+            <td>
+                <code><a class='link' href='#SetViewPropertiesCmd'>SetViewPropertiesCmd</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>take_snapshot_cmd</code></td>
+            <td>
+                <code><a class='link' href='#TakeSnapshotCmdDEPRECATED'>TakeSnapshotCmdDEPRECATED</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>set_camera</code></td>
+            <td>
+                <code><a class='link' href='#SetCameraCmd'>SetCameraCmd</a></code>
+            </td>
+            <td> Camera and lighting commands.
+</td>
+        </tr><tr>
+            <td><code>set_camera_transform</code></td>
+            <td>
+                <code><a class='link' href='#SetCameraTransformCmd'>SetCameraTransformCmd</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>set_camera_projection</code></td>
+            <td>
+                <code><a class='link' href='#SetCameraProjectionCmd'>SetCameraProjectionCmd</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>set_stereo_camera_projection</code></td>
+            <td>
+                <code><a class='link' href='#SetStereoCameraProjectionCmd'>SetStereoCameraProjectionCmd</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>set_camera_pose_buffer</code></td>
+            <td>
+                <code><a class='link' href='#SetCameraPoseBufferCmd'>SetCameraPoseBufferCmd</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>set_light_color</code></td>
+            <td>
+                <code><a class='link' href='#SetLightColorCmd'>SetLightColorCmd</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>set_light_direction</code></td>
+            <td>
+                <code><a class='link' href='#SetLightDirectionCmd'>SetLightDirectionCmd</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>add_light</code></td>
+            <td>
+                <code><a class='link' href='#AddLightCmd'>AddLightCmd</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>detach_light</code></td>
+            <td>
+                <code><a class='link' href='#DetachLightCmd'>DetachLightCmd</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>detach_lights</code></td>
+            <td>
+                <code><a class='link' href='#DetachLightsCmd'>DetachLightsCmd</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>set_texture</code></td>
+            <td>
+                <code><a class='link' href='#SetTextureCmd'>SetTextureCmd</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>set_color</code></td>
+            <td>
+                <code><a class='link' href='#SetColorCmd'>SetColorCmd</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>bind_mesh_buffers</code></td>
+            <td>
+                <code><a class='link' href='#BindMeshBuffersCmd'>BindMeshBuffersCmd</a></code>
+            </td>
+            <td> Mesh commands.
+</td>
+        </tr><tr>
+            <td><code>add_layer</code></td>
+            <td>
+                <code><a class='link' href='#AddLayerCmd'>AddLayerCmd</a></code>
+            </td>
+            <td> Layer and renderer commands.
+</td>
+        </tr><tr>
+            <td><code>remove_layer</code></td>
+            <td>
+                <code><a class='link' href='#RemoveLayerCmd'>RemoveLayerCmd</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>remove_all_layers</code></td>
+            <td>
+                <code><a class='link' href='#RemoveAllLayersCmd'>RemoveAllLayersCmd</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>set_layer_stack</code></td>
+            <td>
+                <code><a class='link' href='#SetLayerStackCmd'>SetLayerStackCmd</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>set_renderer</code></td>
+            <td>
+                <code><a class='link' href='#SetRendererCmd'>SetRendererCmd</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>set_renderer_param</code></td>
+            <td>
+                <code><a class='link' href='#SetRendererParamCmd'>SetRendererParamCmd</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>set_event_mask</code></td>
+            <td>
+                <code><a class='link' href='#SetEventMaskCmd'>SetEventMaskCmd</a></code>
+            </td>
+            <td> Events.
+</td>
+        </tr><tr>
+            <td><code>set_label</code></td>
+            <td>
+                <code><a class='link' href='#SetLabelCmd'>SetLabelCmd</a></code>
+            </td>
+            <td> Diagnostic commands.
+</td>
+        </tr><tr>
+            <td><code>set_disable_clipping</code></td>
+            <td>
+                <code><a class='link' href='#SetDisableClippingCmd'>SetDisableClippingCmd</a></code>
+            </td>
+            <td> Debugging commands.
+</td>
+        </tr><tr>
+            <td><code>set_import_focus</code></td>
+            <td>
+                <code><a class='link' href='#SetImportFocusCmdDEPRECATED'>SetImportFocusCmdDEPRECATED</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>set_clip_planes</code></td>
+            <td>
+                <code><a class='link' href='#SetClipPlanesCmd'>SetClipPlanesCmd</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>set_point_light_position</code></td>
+            <td>
+                <code><a class='link' href='#SetPointLightPositionCmd'>SetPointLightPositionCmd</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>set_point_light_falloff</code></td>
+            <td>
+                <code><a class='link' href='#SetPointLightFalloffCmd'>SetPointLightFalloffCmd</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>scene__add_ambient_light</code></td>
+            <td>
+                <code><a class='link' href='#SceneAddAmbientLightCmd'>SceneAddAmbientLightCmd</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>scene__add_directional_light</code></td>
+            <td>
+                <code><a class='link' href='#SceneAddDirectionalLightCmd'>SceneAddDirectionalLightCmd</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>scene__add_point_light</code></td>
+            <td>
+                <code><a class='link' href='#SceneAddPointLightCmd'>SceneAddPointLightCmd</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>set_display_color_conversion</code></td>
+            <td>
+                <code><a class='link' href='#SetDisplayColorConversionCmdHACK'>SetDisplayColorConversionCmdHACK</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>set_display_rotation</code></td>
+            <td>
+                <code><a class='link' href='#SetDisplayRotationCmdHACK'>SetDisplayRotationCmdHACK</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>set_enable_view_debug_bounds</code></td>
+            <td>
+                <code><a class='link' href='#SetEnableDebugViewBoundsCmd'>SetEnableDebugViewBoundsCmd</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>set_view_holder_bounds_color</code></td>
+            <td>
+                <code><a class='link' href='#SetViewHolderBoundsColorCmd'>SetViewHolderBoundsColorCmd</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>set_camera_clip_space_transform</code></td>
+            <td>
+                <code><a class='link' href='#SetCameraClipSpaceTransformCmd'>SetCameraClipSpaceTransformCmd</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### Event {:#Event}
+*Defined in [fuchsia.ui.gfx/events.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/events.fidl#14)*
+
+ These are all of the types of events which can be reported by a `Session`.
+ Use `SetEventMaskCmd` to enable event delivery for a resource.
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>metrics</code></td>
+            <td>
+                <code><a class='link' href='#MetricsEvent'>MetricsEvent</a></code>
+            </td>
+            <td> Events which are controlled by a mask.
+</td>
+        </tr><tr>
+            <td><code>size_change_hint</code></td>
+            <td>
+                <code><a class='link' href='#SizeChangeHintEvent'>SizeChangeHintEvent</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>import_unbound</code></td>
+            <td>
+                <code><a class='link' href='#ImportUnboundEvent'>ImportUnboundEvent</a></code>
+            </td>
+            <td> Events which are always delivered, regardless of mask.
+</td>
+        </tr><tr>
+            <td><code>view_connected</code></td>
+            <td>
+                <code><a class='link' href='#ViewConnectedEvent'>ViewConnectedEvent</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>view_disconnected</code></td>
+            <td>
+                <code><a class='link' href='#ViewDisconnectedEvent'>ViewDisconnectedEvent</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>view_holder_disconnected</code></td>
+            <td>
+                <code><a class='link' href='#ViewHolderDisconnectedEvent'>ViewHolderDisconnectedEvent</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>view_attached_to_scene</code></td>
+            <td>
+                <code><a class='link' href='#ViewAttachedToSceneEvent'>ViewAttachedToSceneEvent</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>view_detached_from_scene</code></td>
+            <td>
+                <code><a class='link' href='#ViewDetachedFromSceneEvent'>ViewDetachedFromSceneEvent</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>view_properties_changed</code></td>
+            <td>
+                <code><a class='link' href='#ViewPropertiesChangedEvent'>ViewPropertiesChangedEvent</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>view_state_changed</code></td>
+            <td>
+                <code><a class='link' href='#ViewStateChangedEvent'>ViewStateChangedEvent</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>view_holder_connected</code></td>
+            <td>
+                <code><a class='link' href='#ViewHolderConnectedEvent'>ViewHolderConnectedEvent</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### RendererParam {:#RendererParam}
+*Defined in [fuchsia.ui.gfx/renderer.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/renderer.fidl#9)*
+
+ These are all of the types of parameters that can be set to configure a
+ `Renderer`.
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>shadow_technique</code></td>
+            <td>
+                <code><a class='link' href='#ShadowTechnique'>ShadowTechnique</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>render_frequency</code></td>
+            <td>
+                <code><a class='link' href='#RenderFrequency'>RenderFrequency</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>enable_debugging</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### ResourceArgs {:#ResourceArgs}
+*Defined in [fuchsia.ui.gfx/resources.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/resources.fidl#12)*
+
+ These are all of the types of resources that can be created within a
+ `Session`. Add new fields only to the bottom of the list.
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>memory</code></td>
+            <td>
+                <code><a class='link' href='#MemoryArgs'>MemoryArgs</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>image</code></td>
+            <td>
+                <code><a class='link' href='#ImageArgs'>ImageArgs</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>image_pipe</code></td>
+            <td>
+                <code><a class='link' href='#ImagePipeArgs'>ImagePipeArgs</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>buffer</code></td>
+            <td>
+                <code><a class='link' href='#BufferArgs'>BufferArgs</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>view</code></td>
+            <td>
+                <code><a class='link' href='#ViewArgs'>ViewArgs</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>view_holder</code></td>
+            <td>
+                <code><a class='link' href='#ViewHolderArgs'>ViewHolderArgs</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>rectangle</code></td>
+            <td>
+                <code><a class='link' href='#RectangleArgs'>RectangleArgs</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>rounded_rectangle</code></td>
+            <td>
+                <code><a class='link' href='#RoundedRectangleArgs'>RoundedRectangleArgs</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>circle</code></td>
+            <td>
+                <code><a class='link' href='#CircleArgs'>CircleArgs</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>mesh</code></td>
+            <td>
+                <code><a class='link' href='#MeshArgs'>MeshArgs</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>shape_node</code></td>
+            <td>
+                <code><a class='link' href='#ShapeNodeArgs'>ShapeNodeArgs</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>clip_node</code></td>
+            <td>
+                <code><a class='link' href='#ClipNodeArgs'>ClipNodeArgs</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>entity_node</code></td>
+            <td>
+                <code><a class='link' href='#EntityNodeArgs'>EntityNodeArgs</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>opacity_node</code></td>
+            <td>
+                <code><a class='link' href='#OpacityNodeArgsHACK'>OpacityNodeArgsHACK</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>material</code></td>
+            <td>
+                <code><a class='link' href='#MaterialArgs'>MaterialArgs</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>compositor</code></td>
+            <td>
+                <code><a class='link' href='#CompositorArgs'>CompositorArgs</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>display_compositor</code></td>
+            <td>
+                <code><a class='link' href='#DisplayCompositorArgs'>DisplayCompositorArgs</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>image_pipe_compositor</code></td>
+            <td>
+                <code><a class='link' href='#ImagePipeCompositorArgs'>ImagePipeCompositorArgs</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>layer_stack</code></td>
+            <td>
+                <code><a class='link' href='#LayerStackArgs'>LayerStackArgs</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>layer</code></td>
+            <td>
+                <code><a class='link' href='#LayerArgs'>LayerArgs</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>scene</code></td>
+            <td>
+                <code><a class='link' href='#SceneArgs'>SceneArgs</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>camera</code></td>
+            <td>
+                <code><a class='link' href='#CameraArgs'>CameraArgs</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>stereo_camera</code></td>
+            <td>
+                <code><a class='link' href='#StereoCameraArgs'>StereoCameraArgs</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>renderer</code></td>
+            <td>
+                <code><a class='link' href='#RendererArgs'>RendererArgs</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>ambient_light</code></td>
+            <td>
+                <code><a class='link' href='#AmbientLightArgs'>AmbientLightArgs</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>directional_light</code></td>
+            <td>
+                <code><a class='link' href='#DirectionalLightArgs'>DirectionalLightArgs</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>variable</code></td>
+            <td>
+                <code><a class='link' href='#VariableArgs'>VariableArgs</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>point_light</code></td>
+            <td>
+                <code><a class='link' href='#PointLightArgs'>PointLightArgs</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>view2</code></td>
+            <td>
+                <code><a class='link' href='#ViewArgs2'>ViewArgs2</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>view_holder2</code></td>
+            <td>
+                <code><a class='link' href='#ViewHolderArgs2'>ViewHolderArgs2</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>view3</code></td>
+            <td>
+                <code><a class='link' href='#ViewArgs3'>ViewArgs3</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>image_pipe2</code></td>
+            <td>
+                <code><a class='link' href='#ImagePipe2Args'>ImagePipe2Args</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### Value {:#Value}
+*Defined in [fuchsia.ui.gfx/types.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/types.fidl#66)*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>vector1</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>vector2</code></td>
+            <td>
+                <code><a class='link' href='#vec2'>vec2</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>vector3</code></td>
+            <td>
+                <code><a class='link' href='#vec3'>vec3</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>vector4</code></td>
+            <td>
+                <code><a class='link' href='#vec4'>vec4</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>matrix4x4</code></td>
+            <td>
+                <code><a class='link' href='#mat4'>mat4</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>color_rgba</code></td>
+            <td>
+                <code><a class='link' href='#ColorRgba'>ColorRgba</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>color_rgb</code></td>
+            <td>
+                <code><a class='link' href='#ColorRgb'>ColorRgb</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>degrees</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td> Degrees of counter-clockwise rotation in the XY plane.
+</td>
+        </tr><tr>
+            <td><code>quaternion</code></td>
+            <td>
+                <code><a class='link' href='#Quaternion'>Quaternion</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>transform</code></td>
+            <td>
+                <code><a class='link' href='#FactoredTransform'>FactoredTransform</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>variable_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> ID of a value-producing resource (an animation or an expression).
+ The type of this value matches the type produced by the named resource.
+</td>
+        </tr></table>
+
 
 
 
@@ -4955,6 +9834,33 @@
                 <td><code>uint32</code></td>
             <td></td>
         </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/commands.fidl#719">kLabelMaxLength</a></td>
+            <td>
+                    <code>32</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Maximum length for a resource label.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/events.fidl#9">kMetricsEventMask</a></td>
+            <td>
+                    <code>1</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Reports metrics information.
+ This event type is only reported for node resources.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.gfx/events.fidl#10">kSizeChangeHintEventMask</a></td>
+            <td>
+                    <code>2</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
     
 </table>
 
diff --git a/sdk/fidl/fuchsia.ui.input.accessibility/index.md b/sdk/fidl/fuchsia.ui.input.accessibility/index.md
index 25e10f2..74e303e 100644
--- a/sdk/fidl/fuchsia.ui.input.accessibility/index.md
+++ b/sdk/fidl/fuchsia.ui.input.accessibility/index.md
@@ -103,16 +103,11 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>CONSUMED</code></td>
             <td><code>1</code></td>
-            <td> The listener consumes all the pointer events for (device_id, pointer_id)
- until the next UP event.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>REJECTED</code></td>
             <td><code>2</code></td>
-            <td> The listener rejects the remaining pointer events for (device_id,
- pointer_id), and observed (past) and expected (future) pointer events
- until the next UP event are to be sent for regular input dispatch.
-</td>
+            <td></td>
         </tr></table>
 
 
diff --git a/sdk/fidl/fuchsia.ui.input/index.md b/sdk/fidl/fuchsia.ui.input/index.md
index 27dd628..d2f763e 100644
--- a/sdk/fidl/fuchsia.ui.input/index.md
+++ b/sdk/fidl/fuchsia.ui.input/index.md
@@ -285,6 +285,285 @@
 
 
 
+## ImeService {:#ImeService}
+*Defined in [fuchsia.ui.input/ime_service.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/ime_service.fidl#11)*
+
+ The service provided by an IME
+
+### GetInputMethodEditor {:#GetInputMethodEditor}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>keyboard_type</code></td>
+            <td>
+                <code><a class='link' href='#KeyboardType'>KeyboardType</a></code>
+            </td>
+        </tr><tr>
+            <td><code>action</code></td>
+            <td>
+                <code><a class='link' href='#InputMethodAction'>InputMethodAction</a></code>
+            </td>
+        </tr><tr>
+            <td><code>initial_state</code></td>
+            <td>
+                <code><a class='link' href='#TextInputState'>TextInputState</a></code>
+            </td>
+        </tr><tr>
+            <td><code>client</code></td>
+            <td>
+                <code><a class='link' href='#InputMethodEditorClient'>InputMethodEditorClient</a></code>
+            </td>
+        </tr><tr>
+            <td><code>editor</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#InputMethodEditor'>InputMethodEditor</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### ShowKeyboard {:#ShowKeyboard}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### HideKeyboard {:#HideKeyboard}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### InjectInput {:#InjectInput}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>event</code></td>
+            <td>
+                <code><a class='link' href='#InputEvent'>InputEvent</a></code>
+            </td>
+        </tr></table>
+
+
+
+### DispatchKey {:#DispatchKey}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>event</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.ui.input2/index.html'>fuchsia.ui.input2</a>/<a class='link' href='../fuchsia.ui.input2/index.html#KeyEvent'>KeyEvent</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>handled</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr></table>
+
+## ImeVisibilityService {:#ImeVisibilityService}
+*Defined in [fuchsia.ui.input/ime_service.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/ime_service.fidl#28)*
+
+ Onscreen keyboard containers connect to this to know when a keyboard
+ should be shown or hidden.
+
+### OnKeyboardVisibilityChanged {:#OnKeyboardVisibilityChanged}
+
+
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>visible</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr></table>
+
+## InputDeviceRegistry {:#InputDeviceRegistry}
+*Defined in [fuchsia.ui.input/input_device_registry.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_device_registry.fidl#12)*
+
+ Service to receive input events.
+
+ Input devices can describe their capabilities using `DeviceDescriptor`
+ and register themselves with the `InputDeviceRegistry`.
+
+### RegisterDevice {:#RegisterDevice}
+
+ Register a device with the capabilities described by `DeviceDescriptor`
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>descriptor</code></td>
+            <td>
+                <code><a class='link' href='#DeviceDescriptor'>DeviceDescriptor</a></code>
+            </td>
+        </tr><tr>
+            <td><code>input_device</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#InputDevice'>InputDevice</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+## InputDevice {:#InputDevice}
+*Defined in [fuchsia.ui.input/input_device_registry.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_device_registry.fidl#17)*
+
+
+### DispatchReport {:#DispatchReport}
+
+ Dispatch an `InputReport` from the device `token`
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>report</code></td>
+            <td>
+                <code><a class='link' href='#InputReport'>InputReport</a></code>
+            </td>
+        </tr></table>
+
+
+
+## InputMethodEditor {:#InputMethodEditor}
+*Defined in [fuchsia.ui.input/text_input.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/text_input.fidl#41)*
+
+ A interface for interacting with a text input control.
+
+### SetKeyboardType {:#SetKeyboardType}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>keyboard_type</code></td>
+            <td>
+                <code><a class='link' href='#KeyboardType'>KeyboardType</a></code>
+            </td>
+        </tr></table>
+
+
+
+### SetState {:#SetState}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>state</code></td>
+            <td>
+                <code><a class='link' href='#TextInputState'>TextInputState</a></code>
+            </td>
+        </tr></table>
+
+
+
+### InjectInput {:#InjectInput}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>event</code></td>
+            <td>
+                <code><a class='link' href='#InputEvent'>InputEvent</a></code>
+            </td>
+        </tr></table>
+
+
+
+### Show {:#Show}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### Hide {:#Hide}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+## InputMethodEditorClient {:#InputMethodEditorClient}
+*Defined in [fuchsia.ui.input/text_input.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/text_input.fidl#53)*
+
+ An interface to receive information from `TextInputService`.
+
+### DidUpdateState {:#DidUpdateState}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>state</code></td>
+            <td>
+                <code><a class='link' href='#TextInputState'>TextInputState</a></code>
+            </td>
+        </tr><tr>
+            <td><code>event</code></td>
+            <td>
+                <code><a class='link' href='#InputEvent'>InputEvent</a>?</code>
+            </td>
+        </tr></table>
+
+
+
+### OnAction {:#OnAction}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>action</code></td>
+            <td>
+                <code><a class='link' href='#InputMethodAction'>InputMethodAction</a></code>
+            </td>
+        </tr></table>
+
+
+
 
 
 ## **STRUCTS**
@@ -1444,6 +1723,1161 @@
         </tr>
 </table>
 
+### SendKeyboardInputCmd {:#SendKeyboardInputCmd}
+*Defined in [fuchsia.ui.input/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/commands.fidl#20)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>compositor_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>keyboard_event</code></td>
+            <td>
+                <code><a class='link' href='#KeyboardEvent'>KeyboardEvent</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SendPointerInputCmd {:#SendPointerInputCmd}
+*Defined in [fuchsia.ui.input/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/commands.fidl#25)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>compositor_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>pointer_event</code></td>
+            <td>
+                <code><a class='link' href='#PointerEvent'>PointerEvent</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SetHardKeyboardDeliveryCmd {:#SetHardKeyboardDeliveryCmd}
+*Defined in [fuchsia.ui.input/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/commands.fidl#36)*
+
+
+
+ Typically, clients should receive text inputs from an IME.
+
+ For cases where no IME mediation is desired (such as a game application),
+ this command requests Scenic to deliver hard keyboard events to the client.
+
+ By default, Scenic will *not* deliver hard keyboard events to a client.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>delivery_request</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SetParallelDispatchCmd {:#SetParallelDispatchCmd}
+*Defined in [fuchsia.ui.input/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/commands.fidl#46)*
+
+
+
+ Typically, clients that participate in the hit test should receive input
+ events in parallel. This behavior is required for gesture disambiguation.
+
+ This command, typically set by the root presenter, allows disabling parallel
+ dispatch; it is part of the input v2 transition work.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>parallel_dispatch</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### KeyboardEvent {:#KeyboardEvent}
+*Defined in [fuchsia.ui.input/input_events.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_events.fidl#32)*
+
+
+
+ `KeyboardEvent` represents event generated by a user's interaction with a
+ keyboard.
+
+ Those events are triggered by distinct pressed state changes of the keys.
+
+ The state transitions should be as follows:
+ PRESSED -> (REPEAT ->) RELEASED
+ or
+ PRESSED -> (REPEAT ->) CANCELLED
+
+ The input system will repeat those events automatically when a code_point is
+ available.
+
+ DEPRECATED: Will be removed in favor of `fuchsia.ui.input.KeyEvent`.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>event_time</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> Time the event was delivered. The time is in nanoseconds and corresponds
+ to the uptime of the machine.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>device_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>phase</code></td>
+            <td>
+                <code><a class='link' href='#KeyboardEventPhase'>KeyboardEventPhase</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>hid_usage</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> Keyboard HID Usage
+ See https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>code_point</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> The unicode code point represented by this key event, if any.
+ Dead keys are represented as Unicode combining characters.
+
+ If there is no unicode code point, this value is zero.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>modifiers</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> Key modifiers as defined by the different kModifier constants such as
+ `kModifierCapsLock` currently pressed
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### PointerEvent {:#PointerEvent}
+*Defined in [fuchsia.ui.input/input_events.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_events.fidl#115)*
+
+
+
+ Pointers represent raw data about the user's interaction with the screen.
+
+ The state transitions should be as follows:
+ ADD (-> HOVER) -> DOWN -> MOVE -> UP (-> HOVER) -> REMOVE
+
+ At any point after the initial ADD, a transition to CANCEL is also possible.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>event_time</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> Time the event was delivered. The time is in nanoseconds and corresponds
+ to the uptime of the machine.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>device_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>pointer_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>type</code></td>
+            <td>
+                <code><a class='link' href='#PointerEventType'>PointerEventType</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>phase</code></td>
+            <td>
+                <code><a class='link' href='#PointerEventPhase'>PointerEventPhase</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>x</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td> `x` and `y` are in the coordinate system of the View.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>y</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>radius_major</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td></td>
+            <td>0</td>
+        </tr><tr>
+            <td><code>radius_minor</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td></td>
+            <td>0</td>
+        </tr><tr>
+            <td><code>buttons</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> Currently pressed buttons as defined the kButton constants such as
+ `kMousePrimaryButton`
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### FocusEvent {:#FocusEvent}
+*Defined in [fuchsia.ui.input/input_events.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_events.fidl#147)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>event_time</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td> Time the event was delivered. The time is in nanoseconds and corresponds
+ to the uptime of the machine.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>focused</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Whether the view has gained input focused or not.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Range {:#Range}
+*Defined in [fuchsia.ui.input/input_reports.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_reports.fidl#19)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>min</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>max</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### RangeF {:#RangeF}
+*Defined in [fuchsia.ui.input/input_reports.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_reports.fidl#24)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>min</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>max</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Axis {:#Axis}
+*Defined in [fuchsia.ui.input/input_reports.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_reports.fidl#35)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>range</code></td>
+            <td>
+                <code><a class='link' href='#Range'>Range</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>resolution</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td></td>
+            <td>1</td>
+        </tr><tr>
+            <td><code>scale</code></td>
+            <td>
+                <code><a class='link' href='#AxisScale'>AxisScale</a></code>
+            </td>
+            <td></td>
+            <td><a class='link' href='#AxisScale.LINEAR'>AxisScale.LINEAR</a></td>
+        </tr>
+</table>
+
+### AxisF {:#AxisF}
+*Defined in [fuchsia.ui.input/input_reports.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_reports.fidl#41)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>range</code></td>
+            <td>
+                <code><a class='link' href='#RangeF'>RangeF</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>resolution</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td></td>
+            <td>1</td>
+        </tr><tr>
+            <td><code>scale</code></td>
+            <td>
+                <code><a class='link' href='#AxisScale'>AxisScale</a></code>
+            </td>
+            <td></td>
+            <td><a class='link' href='#AxisScale.LINEAR'>AxisScale.LINEAR</a></td>
+        </tr>
+</table>
+
+### MediaButtonsDescriptor {:#MediaButtonsDescriptor}
+*Defined in [fuchsia.ui.input/input_reports.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_reports.fidl#48)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>buttons</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### KeyboardDescriptor {:#KeyboardDescriptor}
+*Defined in [fuchsia.ui.input/input_reports.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_reports.fidl#57)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>keys</code></td>
+            <td>
+                <code>vector&lt;uint32&gt;</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### KeyboardReport {:#KeyboardReport}
+*Defined in [fuchsia.ui.input/input_reports.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_reports.fidl#63)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>pressed_keys</code></td>
+            <td>
+                <code>vector&lt;uint32&gt;</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### MouseDescriptor {:#MouseDescriptor}
+*Defined in [fuchsia.ui.input/input_reports.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_reports.fidl#72)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>rel_x</code></td>
+            <td>
+                <code><a class='link' href='#Axis'>Axis</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>rel_y</code></td>
+            <td>
+                <code><a class='link' href='#Axis'>Axis</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>vscroll</code></td>
+            <td>
+                <code><a class='link' href='#Axis'>Axis</a>?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>hscroll</code></td>
+            <td>
+                <code><a class='link' href='#Axis'>Axis</a>?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>buttons</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### MouseReport {:#MouseReport}
+*Defined in [fuchsia.ui.input/input_reports.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_reports.fidl#89)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>rel_x</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>rel_y</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>rel_hscroll</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>rel_vscroll</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>pressed_buttons</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### StylusDescriptor {:#StylusDescriptor}
+*Defined in [fuchsia.ui.input/input_reports.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_reports.fidl#105)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>x</code></td>
+            <td>
+                <code><a class='link' href='#Axis'>Axis</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>y</code></td>
+            <td>
+                <code><a class='link' href='#Axis'>Axis</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>pressure</code></td>
+            <td>
+                <code><a class='link' href='#Axis'>Axis</a>?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>is_invertible</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+            <td>false</td>
+        </tr><tr>
+            <td><code>buttons</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### StylusReport {:#StylusReport}
+*Defined in [fuchsia.ui.input/input_reports.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_reports.fidl#120)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>x</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>y</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>pressure</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>is_in_contact</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>in_range</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>is_inverted</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>pressed_buttons</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### TouchscreenDescriptor {:#TouchscreenDescriptor}
+*Defined in [fuchsia.ui.input/input_reports.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_reports.fidl#146)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>x</code></td>
+            <td>
+                <code><a class='link' href='#Axis'>Axis</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>y</code></td>
+            <td>
+                <code><a class='link' href='#Axis'>Axis</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>max_finger_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Touch {:#Touch}
+*Defined in [fuchsia.ui.input/input_reports.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_reports.fidl#155)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>finger_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>x</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>y</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>width</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>height</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### TouchscreenReport {:#TouchscreenReport}
+*Defined in [fuchsia.ui.input/input_reports.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_reports.fidl#172)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>touches</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#Touch'>Touch</a>&gt;</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SensorDescriptor {:#SensorDescriptor}
+*Defined in [fuchsia.ui.input/input_reports.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_reports.fidl#197)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>type</code></td>
+            <td>
+                <code><a class='link' href='#SensorType'>SensorType</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>loc</code></td>
+            <td>
+                <code><a class='link' href='#SensorLocation'>SensorLocation</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>min_sampling_freq</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>max_sampling_freq</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>fifo_max_event_count</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>phys_min</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>phys_max</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### MediaButtonsReport {:#MediaButtonsReport}
+*Defined in [fuchsia.ui.input/input_reports.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_reports.fidl#225)*
+
+
+
+ `MediaButtonsReport` describes the media buttons event delivered from the event stream.
+ Each bool in the report represents a single button where true means the button
+ is being pressed. A single report should be sent on every state change.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>volume_up</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>volume_down</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>mic_mute</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>reset</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### DeviceInfo {:#DeviceInfo}
+*Defined in [fuchsia.ui.input/input_reports.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_reports.fidl#234)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>vendor_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>product_id</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>version</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>name</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### DeviceDescriptor {:#DeviceDescriptor}
+*Defined in [fuchsia.ui.input/input_reports.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_reports.fidl#242)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>device_info</code></td>
+            <td>
+                <code><a class='link' href='#DeviceInfo'>DeviceInfo</a>?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>keyboard</code></td>
+            <td>
+                <code><a class='link' href='#KeyboardDescriptor'>KeyboardDescriptor</a>?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>media_buttons</code></td>
+            <td>
+                <code><a class='link' href='#MediaButtonsDescriptor'>MediaButtonsDescriptor</a>?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>mouse</code></td>
+            <td>
+                <code><a class='link' href='#MouseDescriptor'>MouseDescriptor</a>?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>stylus</code></td>
+            <td>
+                <code><a class='link' href='#StylusDescriptor'>StylusDescriptor</a>?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>touchscreen</code></td>
+            <td>
+                <code><a class='link' href='#TouchscreenDescriptor'>TouchscreenDescriptor</a>?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>sensor</code></td>
+            <td>
+                <code><a class='link' href='#SensorDescriptor'>SensorDescriptor</a>?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### InputReport {:#InputReport}
+*Defined in [fuchsia.ui.input/input_reports.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_reports.fidl#253)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>event_time</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>keyboard</code></td>
+            <td>
+                <code><a class='link' href='#KeyboardReport'>KeyboardReport</a>?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>media_buttons</code></td>
+            <td>
+                <code><a class='link' href='#MediaButtonsReport'>MediaButtonsReport</a>?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>mouse</code></td>
+            <td>
+                <code><a class='link' href='#MouseReport'>MouseReport</a>?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>stylus</code></td>
+            <td>
+                <code><a class='link' href='#StylusReport'>StylusReport</a>?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>touchscreen</code></td>
+            <td>
+                <code><a class='link' href='#TouchscreenReport'>TouchscreenReport</a>?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>sensor</code></td>
+            <td>
+                <code><a class='link' href='#SensorReport'>SensorReport</a>?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>trace_id</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td></td>
+            <td>0</td>
+        </tr>
+</table>
+
+### TextRange {:#TextRange}
+*Defined in [fuchsia.ui.input/text_editing.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/text_editing.fidl#32)*
+
+
+
+ A range of characters in a string of text. Although strings in FIDL's wire
+ format are UTF-8 encoded, these indices are measured in UTF-16 code units
+ for legacy reasons. These text input APIs will eventually be replaced by
+ fuchsia.ui.text, which uses code points instead.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>start</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+            <td> The index of the first UTF-16 code unit in the range.
+
+ If `start` and `end` are both -1, the text range is empty.
+</td>
+            <td>-1</td>
+        </tr><tr>
+            <td><code>end</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+            <td> The next index after the last UTF-16 code unit in this range.
+
+ If `start` and `end` are both -1, the text range is empty.
+</td>
+            <td>-1</td>
+        </tr>
+</table>
+
+### TextSelection {:#TextSelection}
+*Defined in [fuchsia.ui.input/text_editing.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/text_editing.fidl#51)*
+
+
+
+ A range of text that represents a selection. Although strings in FIDL's wire
+ format are UTF-8 encoded, these indices are measured in UTF-16 code units
+ for legacy reasons. These text input APIs will eventually be replaced by
+ fuchsia.ui.text, which uses code points instead.
+
+ Text selection is always directional. Direction should be determined by
+ comparing base and extent.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>base</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+            <td> The offset at which the selection originates, as measured in UTF-16 code units.
+
+ Might be larger than, smaller than, or equal to extent.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>extent</code></td>
+            <td>
+                <code>int64</code>
+            </td>
+            <td> The offset at which the selection terminates, as measured in UTF-16 code units.
+
+ When the user uses the arrow keys to adjust the selection, this is the
+ value that changes. Similarly, if the current theme paints a caret on one
+ side of the selection, this is the location at which to paint the caret.
+
+ Might be larger than, smaller than, or equal to base.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>affinity</code></td>
+            <td>
+                <code><a class='link' href='#TextAffinity'>TextAffinity</a></code>
+            </td>
+            <td> If the text range is collapsed and has more than one visual location
+ (e.g., occurs at a line break), which of the two locations to use when
+ painting the caret.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### TextInputState {:#TextInputState}
+*Defined in [fuchsia.ui.input/text_input.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/text_input.fidl#26)*
+
+
+
+ The current text, selection, and composing state for editing a run of text.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>revision</code></td>
+            <td>
+                <code>uint32</code>
+            </td>
+            <td> Current state revision to avoid race conditions.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>text</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> The current text being edited.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>selection</code></td>
+            <td>
+                <code><a class='link' href='#TextSelection'>TextSelection</a></code>
+            </td>
+            <td> The range of text that is currently selected.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>composing</code></td>
+            <td>
+                <code><a class='link' href='#TextRange'>TextRange</a></code>
+            </td>
+            <td> The range of text that is still being composed.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
 
 
 ## **ENUMS**
@@ -1459,23 +2893,19 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>PRESSED</code></td>
             <td><code>0</code></td>
-            <td> When key is pressed down.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>RELEASED</code></td>
             <td><code>1</code></td>
-            <td> When key is released.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>CANCELLED</code></td>
             <td><code>2</code></td>
-            <td> This key `PRESSED` is not directed to this input client anymore.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>REPEAT</code></td>
             <td><code>3</code></td>
-            <td> Whether this is an automatically generated key repeat
-</td>
+            <td></td>
         </tr></table>
 
 ### PointerEventType {:#PointerEventType}
@@ -1489,23 +2919,19 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>TOUCH</code></td>
             <td><code>0</code></td>
-            <td> A touch-based pointer device.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>STYLUS</code></td>
             <td><code>1</code></td>
-            <td> A pointer device with a stylus.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>INVERTED_STYLUS</code></td>
             <td><code>2</code></td>
-            <td> A pointer device with a stylus that has been inverted.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>MOUSE</code></td>
             <td><code>3</code></td>
-            <td> A pointer device without a stylus.
-</td>
+            <td></td>
         </tr></table>
 
 ### PointerEventPhase {:#PointerEventPhase}
@@ -1519,52 +2945,31 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>ADD</code></td>
             <td><code>0</code></td>
-            <td> The device has started tracking the pointer.
-
- For example, the pointer might be hovering above the device, having not yet
- made contact with the surface of the device.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>HOVER</code></td>
             <td><code>1</code></td>
-            <td> The pointer has moved with respect to the device while not in contact with
- the device.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>DOWN</code></td>
             <td><code>2</code></td>
-            <td> The pointer has made contact with the device.
-
- For `MOUSE` devices, this is triggered when the primary button is pressed
- down to emulate a touch on the screen.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>MOVE</code></td>
             <td><code>3</code></td>
-            <td> The pointer has moved with respect to the device while in contact with the
- device.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>UP</code></td>
             <td><code>4</code></td>
-            <td> The pointer has stopped making contact with the device.
-
- For `MOUSE` devices, this is triggered when the primary button is
- released.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>REMOVE</code></td>
             <td><code>5</code></td>
-            <td> The device is no longer tracking the pointer.
-
- For example, the pointer might have drifted out of the device's hover
- detection range or might have been disconnected from the system entirely.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>CANCEL</code></td>
             <td><code>6</code></td>
-            <td> The input from the pointer is no longer directed towards this receiver.
-</td>
+            <td></td>
         </tr></table>
 
 ### AxisScale {:#AxisScale}
@@ -1651,19 +3056,260 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>UPSTREAM</code></td>
             <td><code>0</code></td>
-            <td> The position has affinity for the upstream side of the text position.
-
- For example, if the offset of the text position is a line break, the
- position represents the end of the first line.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>DOWNSTREAM</code></td>
             <td><code>1</code></td>
-            <td> The position has affinity for the downstream side of the text position.
+            <td></td>
+        </tr></table>
 
- For example, if the offset of the text position is a line break, the
- position represents the start of the second line.
-</td>
+### KeyboardType {:#KeyboardType}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.ui.input/text_input.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/text_input.fidl#7)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>TEXT</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>NUMBER</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PHONE</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>DATETIME</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr></table>
+
+### InputMethodAction {:#InputMethodAction}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.ui.input/text_input.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/text_input.fidl#14)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>UNSPECIFIED</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>NONE</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>GO</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>SEARCH</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>SEND</code></td>
+            <td><code>4</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>NEXT</code></td>
+            <td><code>5</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>DONE</code></td>
+            <td><code>6</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PREVIOUS</code></td>
+            <td><code>7</code></td>
+            <td></td>
+        </tr></table>
+
+### KeyboardEventPhase {:#KeyboardEventPhase}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.ui.input/input_events.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_events.fidl#7)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>PRESSED</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>RELEASED</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>CANCELLED</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>REPEAT</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr></table>
+
+### PointerEventType {:#PointerEventType}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.ui.input/input_events.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_events.fidl#56)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>TOUCH</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>STYLUS</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>INVERTED_STYLUS</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>MOUSE</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr></table>
+
+### PointerEventPhase {:#PointerEventPhase}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.ui.input/input_events.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_events.fidl#70)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>ADD</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>HOVER</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>DOWN</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>MOVE</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>UP</code></td>
+            <td><code>4</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>REMOVE</code></td>
+            <td><code>5</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>CANCEL</code></td>
+            <td><code>6</code></td>
+            <td></td>
+        </tr></table>
+
+### AxisScale {:#AxisScale}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.ui.input/input_reports.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_reports.fidl#29)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>LINEAR</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>LOGARITHMIC</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr></table>
+
+### SensorType {:#SensorType}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.ui.input/input_reports.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_reports.fidl#181)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>ACCELEROMETER</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>GYROSCOPE</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>MAGNETOMETER</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>LIGHTMETER</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr></table>
+
+### SensorLocation {:#SensorLocation}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.ui.input/input_reports.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_reports.fidl#188)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>UNKNOWN</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>BASE</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>LID</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr></table>
+
+### TextAffinity {:#TextAffinity}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.ui.input/text_editing.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/text_editing.fidl#14)*
+
+ Whether a TextPosition is visually upstream or downstream of its offset.
+
+ For example, when a text position exists at a line break, a single offset has
+ two visual positions, one prior to the line break (at the end of the first
+ line) and one after the line break (at the start of the second line). A text
+ affinity disambiguates between those cases. (Something similar happens with
+ between runs of bidirectional text.)
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>UPSTREAM</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>DOWNSTREAM</code></td>
+            <td><code>1</code></td>
+            <td></td>
         </tr></table>
 
 ### KeyboardType {:#KeyboardType}
@@ -1763,6 +3409,31 @@
             <td></td>
         </tr></table>
 
+### MediaButtonsEvent {:#MediaButtonsEvent}
+
+
+*Defined in [fuchsia.ui.input/input_events.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_events.fidl#156)*
+
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>volume</code></td>
+            <td>
+                <code>int8</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>mic_mute</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+        </tr></table>
+
 
 
 ## **UNIONS**
@@ -1847,6 +3518,86 @@
             <td></td>
         </tr></table>
 
+### Command {:#Command}
+*Defined in [fuchsia.ui.input/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/commands.fidl#7)*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>send_keyboard_input</code></td>
+            <td>
+                <code><a class='link' href='#SendKeyboardInputCmd'>SendKeyboardInputCmd</a></code>
+            </td>
+            <td> Commands for conveying input events to a `Session`.
+ Structs defined in input_events.fidl.
+</td>
+        </tr><tr>
+            <td><code>send_pointer_input</code></td>
+            <td>
+                <code><a class='link' href='#SendPointerInputCmd'>SendPointerInputCmd</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>set_hard_keyboard_delivery</code></td>
+            <td>
+                <code><a class='link' href='#SetHardKeyboardDeliveryCmd'>SetHardKeyboardDeliveryCmd</a></code>
+            </td>
+            <td> Command to enable/disable delivery of hard keyboard events.
+</td>
+        </tr><tr>
+            <td><code>set_parallel_dispatch</code></td>
+            <td>
+                <code><a class='link' href='#SetParallelDispatchCmd'>SetParallelDispatchCmd</a></code>
+            </td>
+            <td> Command to enable/disable parallel delivery of input events.
+</td>
+        </tr></table>
+
+### InputEvent {:#InputEvent}
+*Defined in [fuchsia.ui.input/input_events.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_events.fidl#162)*
+
+ This union does not include MediaButtonsEvent because it's processed differently.
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>pointer</code></td>
+            <td>
+                <code><a class='link' href='#PointerEvent'>PointerEvent</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>keyboard</code></td>
+            <td>
+                <code><a class='link' href='#KeyboardEvent'>KeyboardEvent</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>focus</code></td>
+            <td>
+                <code><a class='link' href='#FocusEvent'>FocusEvent</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### SensorReport {:#SensorReport}
+*Defined in [fuchsia.ui.input/input_reports.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_reports.fidl#217)*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>vector</code></td>
+            <td>
+                <code>int16[3]</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>scalar</code></td>
+            <td>
+                <code>uint16</code>
+            </td>
+            <td></td>
+        </tr></table>
+
 
 
 
@@ -2078,6 +3829,228 @@
                 <td><code>uint32</code></td>
             <td></td>
         </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_event_constants.fidl#8">kModifierNone</a></td>
+            <td>
+                    <code>0</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Keyboard modifiers
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_event_constants.fidl#9">kModifierCapsLock</a></td>
+            <td>
+                    <code>1</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_event_constants.fidl#10">kModifierLeftShift</a></td>
+            <td>
+                    <code>2</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_event_constants.fidl#11">kModifierRightShift</a></td>
+            <td>
+                    <code>4</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_event_constants.fidl#12">kModifierShift</a></td>
+            <td>
+                    <code>6</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_event_constants.fidl#13">kModifierLeftControl</a></td>
+            <td>
+                    <code>8</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_event_constants.fidl#14">kModifierRightControl</a></td>
+            <td>
+                    <code>16</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_event_constants.fidl#15">kModifierControl</a></td>
+            <td>
+                    <code>24</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_event_constants.fidl#16">kModifierLeftAlt</a></td>
+            <td>
+                    <code>32</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_event_constants.fidl#17">kModifierRightAlt</a></td>
+            <td>
+                    <code>64</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_event_constants.fidl#18">kModifierAlt</a></td>
+            <td>
+                    <code>96</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_event_constants.fidl#19">kModifierLeftSuper</a></td>
+            <td>
+                    <code>128</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_event_constants.fidl#20">kModifierRightSuper</a></td>
+            <td>
+                    <code>256</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_event_constants.fidl#21">kModifierSuper</a></td>
+            <td>
+                    <code>384</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_event_constants.fidl#24">kMousePrimaryButton</a></td>
+            <td>
+                    <code>1</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Mouse buttons
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_event_constants.fidl#25">kMouseSecondaryButton</a></td>
+            <td>
+                    <code>2</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_event_constants.fidl#26">kMouseTertiaryButton</a></td>
+            <td>
+                    <code>4</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_event_constants.fidl#29">kStylusPrimaryButton</a></td>
+            <td>
+                    <code>1</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Stylus buttons
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/input_event_constants.fidl#30">kStylusSecondaryButton</a></td>
+            <td>
+                    <code>2</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/usages.fidl#8">kMouseButtonPrimary</a></td>
+            <td>
+                    <code>1</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Common mouse buttons report constants
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/usages.fidl#9">kMouseButtonSecondary</a></td>
+            <td>
+                    <code>2</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/usages.fidl#10">kMouseButtonTertiary</a></td>
+            <td>
+                    <code>4</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/usages.fidl#13">kStylusBarrel</a></td>
+            <td>
+                    <code>1</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Common stylus buttons report constants
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/usages.fidl#16">kVolumeUp</a></td>
+            <td>
+                    <code>1</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td> Used as mask bits (2^N) against ButtonDescriptor.buttons.
+</td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/usages.fidl#17">kVolumeDown</a></td>
+            <td>
+                    <code>2</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/usages.fidl#18">kMicMute</a></td>
+            <td>
+                    <code>4</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input/usages.fidl#19">kReset</a></td>
+            <td>
+                    <code>8</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
     
 </table>
 
diff --git a/sdk/fidl/fuchsia.ui.input2/index.md b/sdk/fidl/fuchsia.ui.input2/index.md
index ac5103b..68aff31 100644
--- a/sdk/fidl/fuchsia.ui.input2/index.md
+++ b/sdk/fidl/fuchsia.ui.input2/index.md
@@ -94,6 +94,94 @@
             </td>
         </tr></table>
 
+## Keyboard {:#Keyboard}
+*Defined in [fuchsia.ui.input2/keyboard.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input2/keyboard.fidl#12)*
+
+ Components may request this service from their namespace to
+ be notified of physical key events.
+
+### SetListener {:#SetListener}
+
+ Set key event listener for the specified View.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>view_ref</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.ui.views/index.html'>fuchsia.ui.views</a>/<a class='link' href='../fuchsia.ui.views/index.html#ViewRef'>ViewRef</a></code>
+            </td>
+        </tr><tr>
+            <td><code>listener</code></td>
+            <td>
+                <code><a class='link' href='#KeyListener'>KeyListener</a></code>
+            </td>
+        </tr></table>
+
+
+
+## KeyListener {:#KeyListener}
+*Defined in [fuchsia.ui.input2/keyboard.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input2/keyboard.fidl#23)*
+
+ Client should implement this protocol to get notified of key events.
+ Returning HANDLED will stop event propagation to other clients.
+ This notification is triggered on the following conditions:
+ 1. Component is focused (ViewRef is on FocusChain)
+ 2. Parent Views get the event first, child views last
+ 3. Client returning HANDLED stops the propagation to subsequent clients
+
+### OnKeyEvent {:#OnKeyEvent}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>event</code></td>
+            <td>
+                <code><a class='link' href='#KeyEvent'>KeyEvent</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#Status'>Status</a></code>
+            </td>
+        </tr></table>
+
+## KeyboardLayoutState {:#KeyboardLayoutState}
+*Defined in [fuchsia.ui.input2/layout.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input2/layout.fidl#13)*
+
+ Input method editors should implement this protocol to populate
+ `KeyEvent.symbol` field based on current key layout.
+
+### Watch {:#Watch}
+
+ Get current key layout. Returns immediately on first call;
+ subsequent calls return when the value changes.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>layout</code></td>
+            <td>
+                <code><a class='link' href='#KeyboardLayout'>KeyboardLayout</a></code>
+            </td>
+        </tr></table>
+
 
 
 ## **STRUCTS**
@@ -154,6 +242,62 @@
         </tr>
 </table>
 
+### PhysicalKeyMapEntry {:#PhysicalKeyMapEntry}
+*Defined in [fuchsia.ui.input2/layout.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input2/layout.fidl#42)*
+
+
+
+ A mapping of a physical key to a key.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>physical_key</code></td>
+            <td>
+                <code><a class='link' href='#Key'>Key</a></code>
+            </td>
+            <td> Physical key that's being mapped.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>key</code></td>
+            <td>
+                <code><a class='link' href='#Key'>Key</a></code>
+            </td>
+            <td> A key to which the physical key is mapped to.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### SemanticKeyMapEntry {:#SemanticKeyMapEntry}
+*Defined in [fuchsia.ui.input2/layout.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input2/layout.fidl#97)*
+
+
+
+ A mapping of a key to the semantic meaning.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>key</code></td>
+            <td>
+                <code><a class='link' href='#Key'>Key</a></code>
+            </td>
+            <td> Key that's being mapped.
+</td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>semantic_key</code></td>
+            <td>
+                <code><a class='link' href='#SemanticKey'>SemanticKey</a></code>
+            </td>
+            <td> Semantic key corresponding to the key.
+</td>
+            <td>No default</td>
+        </tr>
+</table>
+
 
 
 ## **ENUMS**
@@ -170,13 +314,11 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>PRESSED</code></td>
             <td><code>0</code></td>
-            <td> Key is pressed down.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>RELEASED</code></td>
             <td><code>1</code></td>
-            <td> Key is released.
-</td>
+            <td></td>
         </tr></table>
 
 ### Status {:#Status}
@@ -220,633 +362,423 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>A</code></td>
             <td><code>1</code></td>
-            <td> Keyboard a and A
- Corresponds to USB HID page 0x0007 usage 0x0004
-</td>
+            <td></td>
         </tr><tr>
             <td><code>B</code></td>
             <td><code>2</code></td>
-            <td> Keyboard b and B
- Corresponds to USB HID page 0x0007 usage 0x0005
-</td>
+            <td></td>
         </tr><tr>
             <td><code>C</code></td>
             <td><code>3</code></td>
-            <td> Keyboard c and C
- Corresponds to USB HID page 0x0007 usage 0x0006
-</td>
+            <td></td>
         </tr><tr>
             <td><code>D</code></td>
             <td><code>4</code></td>
-            <td> Keyboard d and D
- Corresponds to USB HID page 0x0007 usage 0x0007
-</td>
+            <td></td>
         </tr><tr>
             <td><code>E</code></td>
             <td><code>5</code></td>
-            <td> Keyboard e and E
- Corresponds to USB HID page 0x0007 usage 0x0008
-</td>
+            <td></td>
         </tr><tr>
             <td><code>F</code></td>
             <td><code>6</code></td>
-            <td> Keyboard f and F
- Corresponds to USB HID page 0x0007 usage 0x0009
-</td>
+            <td></td>
         </tr><tr>
             <td><code>G</code></td>
             <td><code>7</code></td>
-            <td> Keyboard g and G
- Corresponds to USB HID page 0x0007 usage 0x000a
-</td>
+            <td></td>
         </tr><tr>
             <td><code>H</code></td>
             <td><code>8</code></td>
-            <td> Keyboard h and H
- Corresponds to USB HID page 0x0007 usage 0x000b
-</td>
+            <td></td>
         </tr><tr>
             <td><code>I</code></td>
             <td><code>9</code></td>
-            <td> Keyboard i and I
- Corresponds to USB HID page 0x0007 usage 0x000c
-</td>
+            <td></td>
         </tr><tr>
             <td><code>J</code></td>
             <td><code>10</code></td>
-            <td> Keyboard j and J
- Corresponds to USB HID page 0x0007 usage 0x000d
-</td>
+            <td></td>
         </tr><tr>
             <td><code>K</code></td>
             <td><code>11</code></td>
-            <td> Keyboard k and K
- Corresponds to USB HID page 0x0007 usage 0x000e
-</td>
+            <td></td>
         </tr><tr>
             <td><code>L</code></td>
             <td><code>12</code></td>
-            <td> Keyboard l and L
- Corresponds to USB HID page 0x0007 usage 0x000f
-</td>
+            <td></td>
         </tr><tr>
             <td><code>M</code></td>
             <td><code>13</code></td>
-            <td> Keyboard m and M
- Corresponds to USB HID page 0x0007 usage 0x0010
-</td>
+            <td></td>
         </tr><tr>
             <td><code>N</code></td>
             <td><code>14</code></td>
-            <td> Keyboard n and N
- Corresponds to USB HID page 0x0007 usage 0x0011
-</td>
+            <td></td>
         </tr><tr>
             <td><code>O</code></td>
             <td><code>15</code></td>
-            <td> Keyboard o and O
- Corresponds to USB HID page 0x0007 usage 0x0012
-</td>
+            <td></td>
         </tr><tr>
             <td><code>P</code></td>
             <td><code>16</code></td>
-            <td> Keyboard p and P
- Corresponds to USB HID page 0x0007 usage 0x0013
-</td>
+            <td></td>
         </tr><tr>
             <td><code>Q</code></td>
             <td><code>17</code></td>
-            <td> Keyboard q and Q
- Corresponds to USB HID page 0x0007 usage 0x0014
-</td>
+            <td></td>
         </tr><tr>
             <td><code>R</code></td>
             <td><code>18</code></td>
-            <td> Keyboard r and R
- Corresponds to USB HID page 0x0007 usage 0x0015
-</td>
+            <td></td>
         </tr><tr>
             <td><code>S</code></td>
             <td><code>19</code></td>
-            <td> Keyboard s and S
- Corresponds to USB HID page 0x0007 usage 0x0016
-</td>
+            <td></td>
         </tr><tr>
             <td><code>T</code></td>
             <td><code>20</code></td>
-            <td> Keyboard t and T
- Corresponds to USB HID page 0x0007 usage 0x0017
-</td>
+            <td></td>
         </tr><tr>
             <td><code>U</code></td>
             <td><code>21</code></td>
-            <td> Keyboard u and U
- Corresponds to USB HID page 0x0007 usage 0x0018
-</td>
+            <td></td>
         </tr><tr>
             <td><code>V</code></td>
             <td><code>22</code></td>
-            <td> Keyboard v and V
- Corresponds to USB HID page 0x0007 usage 0x0019
-</td>
+            <td></td>
         </tr><tr>
             <td><code>W</code></td>
             <td><code>23</code></td>
-            <td> Keyboard w and W
- Corresponds to USB HID page 0x0007 usage 0x001a
-</td>
+            <td></td>
         </tr><tr>
             <td><code>X</code></td>
             <td><code>24</code></td>
-            <td> Keyboard x and X
- Corresponds to USB HID page 0x0007 usage 0x001b
-</td>
+            <td></td>
         </tr><tr>
             <td><code>Y</code></td>
             <td><code>25</code></td>
-            <td> Keyboard y and Y
- Corresponds to USB HID page 0x0007 usage 0x001c
-</td>
+            <td></td>
         </tr><tr>
             <td><code>Z</code></td>
             <td><code>26</code></td>
-            <td> Keyboard z and Z
- Corresponds to USB HID page 0x0007 usage 0x001d
-</td>
+            <td></td>
         </tr><tr>
             <td><code>KEY_1</code></td>
             <td><code>27</code></td>
-            <td> Keyboard 1 and !
- Corresponds to USB HID page 0x0007 usage 0x001e
-</td>
+            <td></td>
         </tr><tr>
             <td><code>KEY_2</code></td>
             <td><code>28</code></td>
-            <td> Keyboard 2 and @
- Corresponds to USB HID page 0x0007 usage 0x001f
-</td>
+            <td></td>
         </tr><tr>
             <td><code>KEY_3</code></td>
             <td><code>29</code></td>
-            <td> Keyboard 3 and #
- Corresponds to USB HID page 0x0007 usage 0x0020
-</td>
+            <td></td>
         </tr><tr>
             <td><code>KEY_4</code></td>
             <td><code>30</code></td>
-            <td> Keyboard 4 and $
- Corresponds to USB HID page 0x0007 usage 0x0021
-</td>
+            <td></td>
         </tr><tr>
             <td><code>KEY_5</code></td>
             <td><code>31</code></td>
-            <td> Keyboard 5 and %
- Corresponds to USB HID page 0x0007 usage 0x0022
-</td>
+            <td></td>
         </tr><tr>
             <td><code>KEY_6</code></td>
             <td><code>32</code></td>
-            <td> Keyboard 6 and ^
- Corresponds to USB HID page 0x0007 usage 0x0023
-</td>
+            <td></td>
         </tr><tr>
             <td><code>KEY_7</code></td>
             <td><code>33</code></td>
-            <td> Keyboard 7 and &
- Corresponds to USB HID page 0x0007 usage 0x0024
-</td>
+            <td></td>
         </tr><tr>
             <td><code>KEY_8</code></td>
             <td><code>34</code></td>
-            <td> Keyboard 8 and *
- Corresponds to USB HID page 0x0007 usage 0x0025
-</td>
+            <td></td>
         </tr><tr>
             <td><code>KEY_9</code></td>
             <td><code>35</code></td>
-            <td> Keyboard 9 and (
- Corresponds to USB HID page 0x0007 usage 0x0026
-</td>
+            <td></td>
         </tr><tr>
             <td><code>KEY_0</code></td>
             <td><code>36</code></td>
-            <td> Keyboard 0 and )
- Corresponds to USB HID page 0x0007 usage 0x0027
-</td>
+            <td></td>
         </tr><tr>
             <td><code>ENTER</code></td>
             <td><code>37</code></td>
-            <td> Keyboard Enter (Return)
- Corresponds to USB HID page 0x0007 usage 0x0028
-</td>
+            <td></td>
         </tr><tr>
             <td><code>ESCAPE</code></td>
             <td><code>38</code></td>
-            <td> Keyboard Escape
- Corresponds to USB HID page 0x0007 usage 0x0029
-</td>
+            <td></td>
         </tr><tr>
             <td><code>BACKSPACE</code></td>
             <td><code>39</code></td>
-            <td> Keyboard Backspace (Backward Delete)
- Corresponds to USB HID page 0x0007 usage 0x002a
-</td>
+            <td></td>
         </tr><tr>
             <td><code>TAB</code></td>
             <td><code>40</code></td>
-            <td> Keyboard Tab
- Corresponds to USB HID page 0x0007 usage 0x002b
-</td>
+            <td></td>
         </tr><tr>
             <td><code>SPACE</code></td>
             <td><code>41</code></td>
-            <td> Keyboard Spacebar
- Corresponds to USB HID page 0x0007 usage 0x002c
-</td>
+            <td></td>
         </tr><tr>
             <td><code>MINUS</code></td>
             <td><code>42</code></td>
-            <td> Keyboard - and (underscore)
- Corresponds to USB HID page 0x0007 usage 0x002d
-</td>
+            <td></td>
         </tr><tr>
             <td><code>EQUALS</code></td>
             <td><code>43</code></td>
-            <td> Keyboard = and +
- Corresponds to USB HID page 0x0007 usage 0x002e
-</td>
+            <td></td>
         </tr><tr>
             <td><code>LEFT_BRACE</code></td>
             <td><code>44</code></td>
-            <td> Keyboard [ and {
- Corresponds to USB HID page 0x0007 usage 0x002f
-</td>
+            <td></td>
         </tr><tr>
             <td><code>RIGHT_BRACE</code></td>
             <td><code>45</code></td>
-            <td> Keyboard ] and }
- Corresponds to USB HID page 0x0007 usage 0x0030
-</td>
+            <td></td>
         </tr><tr>
             <td><code>BACKSLASH</code></td>
             <td><code>46</code></td>
-            <td> Keyboard \ and |
- Corresponds to USB HID page 0x0007 usage 0x0031
-</td>
+            <td></td>
         </tr><tr>
             <td><code>NON_US_HASH</code></td>
             <td><code>47</code></td>
-            <td> Keyboard Non-US # and ~
- Corresponds to USB HID page 0x0007 usage 0x0032
-</td>
+            <td></td>
         </tr><tr>
             <td><code>SEMICOLON</code></td>
             <td><code>48</code></td>
-            <td> Keyboard ; and :
- Corresponds to USB HID page 0x0007 usage 0x0033
-</td>
+            <td></td>
         </tr><tr>
             <td><code>APOSTROPHE</code></td>
             <td><code>49</code></td>
-            <td> Keyboard ' and "
- Corresponds to USB HID page 0x0007 usage 0x0034
-</td>
+            <td></td>
         </tr><tr>
             <td><code>GRAVE_ACCENT</code></td>
             <td><code>50</code></td>
-            <td> Keyboard Grave Accent and Tilde
- Corresponds to USB HID page 0x0007 usage 0x0035
-</td>
+            <td></td>
         </tr><tr>
             <td><code>COMMA</code></td>
             <td><code>51</code></td>
-            <td> Keyboard , and <
- Corresponds to USB HID page 0x0007 usage 0x0036
-</td>
+            <td></td>
         </tr><tr>
             <td><code>DOT</code></td>
             <td><code>52</code></td>
-            <td> Keyboard . and >
- Corresponds to USB HID page 0x0007 usage 0x0037
-</td>
+            <td></td>
         </tr><tr>
             <td><code>SLASH</code></td>
             <td><code>53</code></td>
-            <td> Keyboard / and ?
- Corresponds to USB HID page 0x0007 usage 0x0038
-</td>
+            <td></td>
         </tr><tr>
             <td><code>CAPS_LOCK</code></td>
             <td><code>54</code></td>
-            <td> Keyboard Caps Lock
- Corresponds to USB HID page 0x0007 usage 0x0039
-</td>
+            <td></td>
         </tr><tr>
             <td><code>F1</code></td>
             <td><code>55</code></td>
-            <td> Keyboard F1
- Corresponds to USB HID page 0x0007 usage 0x003a
-</td>
+            <td></td>
         </tr><tr>
             <td><code>F2</code></td>
             <td><code>56</code></td>
-            <td> Keyboard F2
- Corresponds to USB HID page 0x0007 usage 0x003b
-</td>
+            <td></td>
         </tr><tr>
             <td><code>F3</code></td>
             <td><code>57</code></td>
-            <td> Keyboard F3
- Corresponds to USB HID page 0x0007 usage 0x003c
-</td>
+            <td></td>
         </tr><tr>
             <td><code>F4</code></td>
             <td><code>58</code></td>
-            <td> Keyboard F4
- Corresponds to USB HID page 0x0007 usage 0x003d
-</td>
+            <td></td>
         </tr><tr>
             <td><code>F5</code></td>
             <td><code>59</code></td>
-            <td> Keyboard F5
- Corresponds to USB HID page 0x0007 usage 0x003e
-</td>
+            <td></td>
         </tr><tr>
             <td><code>F6</code></td>
             <td><code>60</code></td>
-            <td> Keyboard F6
- Corresponds to USB HID page 0x0007 usage 0x003f
-</td>
+            <td></td>
         </tr><tr>
             <td><code>F7</code></td>
             <td><code>61</code></td>
-            <td> Keyboard F7
- Corresponds to USB HID page 0x0007 usage 0x0040
-</td>
+            <td></td>
         </tr><tr>
             <td><code>F8</code></td>
             <td><code>62</code></td>
-            <td> Keyboard F8
- Corresponds to USB HID page 0x0007 usage 0x0041
-</td>
+            <td></td>
         </tr><tr>
             <td><code>F9</code></td>
             <td><code>63</code></td>
-            <td> Keyboard F9
- Corresponds to USB HID page 0x0007 usage 0x0042
-</td>
+            <td></td>
         </tr><tr>
             <td><code>F10</code></td>
             <td><code>64</code></td>
-            <td> Keyboard F10
- Corresponds to USB HID page 0x0007 usage 0x0043
-</td>
+            <td></td>
         </tr><tr>
             <td><code>F11</code></td>
             <td><code>65</code></td>
-            <td> Keyboard F11
- Corresponds to USB HID page 0x0007 usage 0x0044
-</td>
+            <td></td>
         </tr><tr>
             <td><code>F12</code></td>
             <td><code>66</code></td>
-            <td> Keyboard F12
- Corresponds to USB HID page 0x0007 usage 0x0045
-</td>
+            <td></td>
         </tr><tr>
             <td><code>PRINT_SCREEN</code></td>
             <td><code>67</code></td>
-            <td> Keyboard Print Screen
- Corresponds to USB HID page 0x0007 usage 0x0046
-</td>
+            <td></td>
         </tr><tr>
             <td><code>SCROLL_LOCK</code></td>
             <td><code>68</code></td>
-            <td> Keyboard Scroll Lock
- Corresponds to USB HID page 0x0007 usage 0x0047
-</td>
+            <td></td>
         </tr><tr>
             <td><code>PAUSE</code></td>
             <td><code>69</code></td>
-            <td> Keyboard Pause
- Corresponds to USB HID page 0x0007 usage 0x0048
-</td>
+            <td></td>
         </tr><tr>
             <td><code>INSERT</code></td>
             <td><code>70</code></td>
-            <td> Keyboard Insert
- Corresponds to USB HID page 0x0007 usage 0x0049
-</td>
+            <td></td>
         </tr><tr>
             <td><code>HOME</code></td>
             <td><code>71</code></td>
-            <td> Keyboard Home
- Corresponds to USB HID page 0x0007 usage 0x004a
-</td>
+            <td></td>
         </tr><tr>
             <td><code>PAGE_UP</code></td>
             <td><code>72</code></td>
-            <td> Keyboard Page Up
- Corresponds to USB HID page 0x0007 usage 0x004b
-</td>
+            <td></td>
         </tr><tr>
             <td><code>DELETE</code></td>
             <td><code>73</code></td>
-            <td> Keyboard Forward Delete
- Corresponds to USB HID page 0x0007 usage 0x004c
-</td>
+            <td></td>
         </tr><tr>
             <td><code>END</code></td>
             <td><code>74</code></td>
-            <td> Keyboard End
- Corresponds to USB HID page 0x0007 usage 0x004d
-</td>
+            <td></td>
         </tr><tr>
             <td><code>PAGE_DOWN</code></td>
             <td><code>75</code></td>
-            <td> Keyboard Page Down
- Corresponds to USB HID page 0x0007 usage 0x004e
-</td>
+            <td></td>
         </tr><tr>
             <td><code>RIGHT</code></td>
             <td><code>76</code></td>
-            <td> Keyboard Right Arrow
- Corresponds to USB HID page 0x0007 usage 0x004f
-</td>
+            <td></td>
         </tr><tr>
             <td><code>LEFT</code></td>
             <td><code>77</code></td>
-            <td> Keyboard Left Arrow
- Corresponds to USB HID page 0x0007 usage 0x0050
-</td>
+            <td></td>
         </tr><tr>
             <td><code>DOWN</code></td>
             <td><code>78</code></td>
-            <td> Keyboard Down Arrow
- Corresponds to USB HID page 0x0007 usage 0x0051
-</td>
+            <td></td>
         </tr><tr>
             <td><code>UP</code></td>
             <td><code>79</code></td>
-            <td> Keyboard Up Arrow
- Corresponds to USB HID page 0x0007 usage 0x0052
-</td>
+            <td></td>
         </tr><tr>
             <td><code>NON_US_BACKSLASH</code></td>
             <td><code>80</code></td>
-            <td> Keyboard Non-US \ and |
- Corresponds to USB HID page 0x0007 usage 0x0064
-</td>
+            <td></td>
         </tr><tr>
             <td><code>LEFT_CTRL</code></td>
             <td><code>81</code></td>
-            <td> Keyboard Left Control
- Corresponds to USB HID page 0x0007 usage 0x00e0
-</td>
+            <td></td>
         </tr><tr>
             <td><code>LEFT_SHIFT</code></td>
             <td><code>82</code></td>
-            <td> Keyboard Left Shift
- Corresponds to USB HID page 0x0007 usage 0x00e1
-</td>
+            <td></td>
         </tr><tr>
             <td><code>LEFT_ALT</code></td>
             <td><code>83</code></td>
-            <td> Keyboard Left Alt
- Corresponds to USB HID page 0x0007 usage 0x00e2
-</td>
+            <td></td>
         </tr><tr>
             <td><code>LEFT_META</code></td>
             <td><code>84</code></td>
-            <td> Keyboard Left GUI (Meta, Windows)
- Corresponds to USB HID page 0x0007 usage 0x00e3
-</td>
+            <td></td>
         </tr><tr>
             <td><code>RIGHT_CTRL</code></td>
             <td><code>85</code></td>
-            <td> Keyboard Right Control
- Corresponds to USB HID page 0x0007 usage 0x00e4
-</td>
+            <td></td>
         </tr><tr>
             <td><code>RIGHT_SHIFT</code></td>
             <td><code>86</code></td>
-            <td> Keyboard Right Shift
- Corresponds to USB HID page 0x0007 usage 0x00e5
-</td>
+            <td></td>
         </tr><tr>
             <td><code>RIGHT_ALT</code></td>
             <td><code>87</code></td>
-            <td> Keyboard Right Alt
- Corresponds to USB HID page 0x0007 usage 0x00e6
-</td>
+            <td></td>
         </tr><tr>
             <td><code>RIGHT_META</code></td>
             <td><code>88</code></td>
-            <td> Keyboard Right GUI (Meta, Windows)
- Corresponds to USB HID page 0x0007 usage 0x00e7
-</td>
+            <td></td>
         </tr><tr>
             <td><code>NUM_LOCK</code></td>
             <td><code>512</code></td>
-            <td> Keypad Num Lock and Clear
- Corresponds to USB HID page 0x0007 usage 0x0053
-</td>
+            <td></td>
         </tr><tr>
             <td><code>KEYPAD_SLASH</code></td>
             <td><code>513</code></td>
-            <td> Keypad /
- Corresponds to USB HID page 0x0007 usage 0x0054
-</td>
+            <td></td>
         </tr><tr>
             <td><code>KEYPAD_ASTERISK</code></td>
             <td><code>514</code></td>
-            <td> Keypad *
- Corresponds to USB HID page 0x0007 usage 0x0055
-</td>
+            <td></td>
         </tr><tr>
             <td><code>KEYPAD_MINUS</code></td>
             <td><code>515</code></td>
-            <td> Keypad -
- Corresponds to USB HID page 0x0007 usage 0x0056
-</td>
+            <td></td>
         </tr><tr>
             <td><code>KEYPAD_PLUS</code></td>
             <td><code>516</code></td>
-            <td> Keypad +
- Corresponds to USB HID page 0x0007 usage 0x0057
-</td>
+            <td></td>
         </tr><tr>
             <td><code>KEYPAD_ENTER</code></td>
             <td><code>517</code></td>
-            <td> Keypad ENTER
- Corresponds to USB HID page 0x0007 usage 0x0058
-</td>
+            <td></td>
         </tr><tr>
             <td><code>KEYPAD_1</code></td>
             <td><code>518</code></td>
-            <td> Keypad 1 and End
- Corresponds to USB HID page 0x0007 usage 0x0059
-</td>
+            <td></td>
         </tr><tr>
             <td><code>KEYPAD_2</code></td>
             <td><code>519</code></td>
-            <td> Keypad 2 and Down Arrow
- Corresponds to USB HID page 0x0007 usage 0x005a
-</td>
+            <td></td>
         </tr><tr>
             <td><code>KEYPAD_3</code></td>
             <td><code>520</code></td>
-            <td> Keypad 3 and Page Down
- Corresponds to USB HID page 0x0007 usage 0x005b
-</td>
+            <td></td>
         </tr><tr>
             <td><code>KEYPAD_4</code></td>
             <td><code>521</code></td>
-            <td> Keypad 4 and Left Arrow
- Corresponds to USB HID page 0x0007 usage 0x005c
-</td>
+            <td></td>
         </tr><tr>
             <td><code>KEYPAD_5</code></td>
             <td><code>522</code></td>
-            <td> Keypad 5
- Corresponds to USB HID page 0x0007 usage 0x005d
-</td>
+            <td></td>
         </tr><tr>
             <td><code>KEYPAD_6</code></td>
             <td><code>523</code></td>
-            <td> Keypad 6 and Right Arrow
- Corresponds to USB HID page 0x0007 usage 0x005e
-</td>
+            <td></td>
         </tr><tr>
             <td><code>KEYPAD_7</code></td>
             <td><code>524</code></td>
-            <td> Keypad 7 and Home
- Corresponds to USB HID page 0x0007 usage 0x005f
-</td>
+            <td></td>
         </tr><tr>
             <td><code>KEYPAD_8</code></td>
             <td><code>525</code></td>
-            <td> Keypad 8 and Up Arrow
- Corresponds to USB HID page 0x0007 usage 0x0060
-</td>
+            <td></td>
         </tr><tr>
             <td><code>KEYPAD_9</code></td>
             <td><code>526</code></td>
-            <td> Keypad 9 and Page Up
- Corresponds to USB HID page 0x0007 usage 0x0061
-</td>
+            <td></td>
         </tr><tr>
             <td><code>KEYPAD_0</code></td>
             <td><code>527</code></td>
-            <td> Keypad 0 and Insert
- Corresponds to USB HID page 0x0007 usage 0x0062
-</td>
+            <td></td>
         </tr><tr>
             <td><code>KEYPAD_DOT</code></td>
             <td><code>528</code></td>
-            <td> Keypad . and Delete
- Corresponds to USB HID page 0x0007 usage 0x0063
-</td>
+            <td></td>
         </tr><tr>
             <td><code>MEDIA_MUTE</code></td>
             <td><code>768</code></td>
@@ -876,89 +808,59 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>ALT</code></td>
             <td><code>1</code></td>
-            <td> The Alt (Alternative) key.
- This key enables the alternate modifier function for interpreting
- concurrent or subsequent keyboard input.
- This key value is also used for the Apple Option key.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>ALT_GRAPH</code></td>
             <td><code>2</code></td>
-            <td> The Alternate Graphics (AltGr or AltGraph) key.
- This key is used enable the ISO Level 3 shift modifier (the standard
- Shift key is the level 2 modifier). See [ISO9995-1].
-</td>
+            <td></td>
         </tr><tr>
             <td><code>CAPS_LOCK</code></td>
             <td><code>3</code></td>
-            <td> The Caps Lock (Capital) key.
- Toggle capital character lock function for interpreting subsequent
- keyboard input event.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>CONTROL</code></td>
             <td><code>4</code></td>
-            <td> The Control or Ctrl key, to enable control modifier function for
- interpreting concurrent or subsequent keyboard input.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>META</code></td>
             <td><code>5</code></td>
-            <td> The Meta key, to enable meta modifier function for interpreting
- concurrent or subsequent keyboard input.
- This key value is used for the Windows Logo key and the Apple Command
- or ⌘ key.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>NUM_LOCK</code></td>
             <td><code>6</code></td>
-            <td> The NumLock or Number Lock key, to toggle numpad mode function for
- interpreting subsequent keyboard input.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>SCROLL_LOCK</code></td>
             <td><code>7</code></td>
-            <td> "ScrollLock" The Scroll Lock key, to toggle between scrolling and cursor
- movement modes.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>SHIFT</code></td>
             <td><code>8</code></td>
-            <td> The Shift key, to enable shift modifier function for interpreting
- concurrent or subsequent keyboard input.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>ARROW_DOWN</code></td>
             <td><code>33</code></td>
-            <td> The down arrow key, to navigate or traverse downward.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>ARROW_LEFT</code></td>
             <td><code>34</code></td>
-            <td> The left arrow key, to navigate or traverse leftward.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>ARROW_RIGHT</code></td>
             <td><code>35</code></td>
-            <td> The right arrow key, to navigate or traverse rightward.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>ARROW_UP</code></td>
             <td><code>36</code></td>
-            <td> The up arrow key, to navigate or traverse upward.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>END</code></td>
             <td><code>37</code></td>
-            <td> The End key, used with keyboard entry to go to the end of content.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>HOME</code></td>
             <td><code>38</code></td>
-            <td> The Home key, used with keyboard entry, to go to start of content.
- For the mobile phone Home key (which goes to the phone’s main screen),
- use "GO_HOME".
-</td>
+            <td></td>
         </tr><tr>
             <td><code>PAGE_DOWN</code></td>
             <td><code>39</code></td>
@@ -970,33 +872,23 @@
         </tr><tr>
             <td><code>ENTER</code></td>
             <td><code>49</code></td>
-            <td> The Enter or ↵ key, to activate current selection or accept current input.
- This key value is also used for the Return (Macintosh numpad) key.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>TAB</code></td>
             <td><code>50</code></td>
-            <td> The Horizontal Tabulation Tab key.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>BACKSPACE</code></td>
             <td><code>65</code></td>
-            <td> The Backspace key. This key value is also used for the key labeled Delete
- on MacOS keyboards.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>DELETE</code></td>
             <td><code>66</code></td>
-            <td> The Delete (Del) Key.
- This key value is also used for the key labeled Delete on MacOS keyboards
- when modified by the Fn key.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>INSERT</code></td>
             <td><code>67</code></td>
-            <td> The Insert (Ins) key, to toggle between text modes for insertion or
- overtyping.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>F1</code></td>
             <td><code>97</code></td>
@@ -1048,27 +940,672 @@
         </tr><tr>
             <td><code>CONTEXT_MENU</code></td>
             <td><code>129</code></td>
-            <td> Show the application’s context menu.
- This key is commonly found between the right Meta key and the right
- Control key.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>ESCAPE</code></td>
             <td><code>130</code></td>
-            <td> The Esc key. This key was originally used to initiate an escape sequence,
- but is now more generally used to exit or "escape" the current context,
- such as closing a dialog or exiting full screen mode.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>GO_BACK</code></td>
             <td><code>177</code></td>
-            <td> The Back key.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>GO_HOME</code></td>
             <td><code>178</code></td>
-            <td> The Home key, which goes to the phone’s main screen.
-</td>
+            <td></td>
+        </tr></table>
+
+### KeyEventPhase {:#KeyEventPhase}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.ui.input2/events.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input2/events.fidl#8)*
+
+ Phase of the keyboard key input.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>PRESSED</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>RELEASED</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr></table>
+
+### Status {:#Status}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.ui.input2/keyboard.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input2/keyboard.fidl#28)*
+
+ Return type for clients key events listener.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>HANDLED</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>NOT_HANDLED</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr></table>
+
+### Key {:#Key}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.ui.input2/keys.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input2/keys.fidl#18)*
+
+ A Fuchsia key represents a control that can be pressed or released
+ such as a button on a keyboard.
+
+ Where applicable, the definition of each key is derived from one of the
+ following sources albeit with a Fuchsia-specific numeric value:
+ - USB HID usage codes for usage page 0x0007 (Keyboard/Keypad)
+ - USB HID usage codes for usage page 0x000c (Consumer)
+ - Common but non-standard keys (vendor defined)
+
+ The example key mappings included in this documentation assume a
+ US English keyboard layout. Actual behavior varies by layout.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>A</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>B</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>C</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>D</code></td>
+            <td><code>4</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>E</code></td>
+            <td><code>5</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>F</code></td>
+            <td><code>6</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>G</code></td>
+            <td><code>7</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>H</code></td>
+            <td><code>8</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>I</code></td>
+            <td><code>9</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>J</code></td>
+            <td><code>10</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>K</code></td>
+            <td><code>11</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>L</code></td>
+            <td><code>12</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>M</code></td>
+            <td><code>13</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>N</code></td>
+            <td><code>14</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>O</code></td>
+            <td><code>15</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>P</code></td>
+            <td><code>16</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>Q</code></td>
+            <td><code>17</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>R</code></td>
+            <td><code>18</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>S</code></td>
+            <td><code>19</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>T</code></td>
+            <td><code>20</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>U</code></td>
+            <td><code>21</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>V</code></td>
+            <td><code>22</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>W</code></td>
+            <td><code>23</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>X</code></td>
+            <td><code>24</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>Y</code></td>
+            <td><code>25</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>Z</code></td>
+            <td><code>26</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>KEY_1</code></td>
+            <td><code>27</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>KEY_2</code></td>
+            <td><code>28</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>KEY_3</code></td>
+            <td><code>29</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>KEY_4</code></td>
+            <td><code>30</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>KEY_5</code></td>
+            <td><code>31</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>KEY_6</code></td>
+            <td><code>32</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>KEY_7</code></td>
+            <td><code>33</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>KEY_8</code></td>
+            <td><code>34</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>KEY_9</code></td>
+            <td><code>35</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>KEY_0</code></td>
+            <td><code>36</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>ENTER</code></td>
+            <td><code>37</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>ESCAPE</code></td>
+            <td><code>38</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>BACKSPACE</code></td>
+            <td><code>39</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>TAB</code></td>
+            <td><code>40</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>SPACE</code></td>
+            <td><code>41</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>MINUS</code></td>
+            <td><code>42</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>EQUALS</code></td>
+            <td><code>43</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>LEFT_BRACE</code></td>
+            <td><code>44</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>RIGHT_BRACE</code></td>
+            <td><code>45</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>BACKSLASH</code></td>
+            <td><code>46</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>NON_US_HASH</code></td>
+            <td><code>47</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>SEMICOLON</code></td>
+            <td><code>48</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>APOSTROPHE</code></td>
+            <td><code>49</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>GRAVE_ACCENT</code></td>
+            <td><code>50</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>COMMA</code></td>
+            <td><code>51</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>DOT</code></td>
+            <td><code>52</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>SLASH</code></td>
+            <td><code>53</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>CAPS_LOCK</code></td>
+            <td><code>54</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>F1</code></td>
+            <td><code>55</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>F2</code></td>
+            <td><code>56</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>F3</code></td>
+            <td><code>57</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>F4</code></td>
+            <td><code>58</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>F5</code></td>
+            <td><code>59</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>F6</code></td>
+            <td><code>60</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>F7</code></td>
+            <td><code>61</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>F8</code></td>
+            <td><code>62</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>F9</code></td>
+            <td><code>63</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>F10</code></td>
+            <td><code>64</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>F11</code></td>
+            <td><code>65</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>F12</code></td>
+            <td><code>66</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PRINT_SCREEN</code></td>
+            <td><code>67</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>SCROLL_LOCK</code></td>
+            <td><code>68</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PAUSE</code></td>
+            <td><code>69</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>INSERT</code></td>
+            <td><code>70</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>HOME</code></td>
+            <td><code>71</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PAGE_UP</code></td>
+            <td><code>72</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>DELETE</code></td>
+            <td><code>73</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>END</code></td>
+            <td><code>74</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PAGE_DOWN</code></td>
+            <td><code>75</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>RIGHT</code></td>
+            <td><code>76</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>LEFT</code></td>
+            <td><code>77</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>DOWN</code></td>
+            <td><code>78</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>UP</code></td>
+            <td><code>79</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>NON_US_BACKSLASH</code></td>
+            <td><code>80</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>LEFT_CTRL</code></td>
+            <td><code>81</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>LEFT_SHIFT</code></td>
+            <td><code>82</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>LEFT_ALT</code></td>
+            <td><code>83</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>LEFT_META</code></td>
+            <td><code>84</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>RIGHT_CTRL</code></td>
+            <td><code>85</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>RIGHT_SHIFT</code></td>
+            <td><code>86</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>RIGHT_ALT</code></td>
+            <td><code>87</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>RIGHT_META</code></td>
+            <td><code>88</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>NUM_LOCK</code></td>
+            <td><code>512</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>KEYPAD_SLASH</code></td>
+            <td><code>513</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>KEYPAD_ASTERISK</code></td>
+            <td><code>514</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>KEYPAD_MINUS</code></td>
+            <td><code>515</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>KEYPAD_PLUS</code></td>
+            <td><code>516</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>KEYPAD_ENTER</code></td>
+            <td><code>517</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>KEYPAD_1</code></td>
+            <td><code>518</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>KEYPAD_2</code></td>
+            <td><code>519</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>KEYPAD_3</code></td>
+            <td><code>520</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>KEYPAD_4</code></td>
+            <td><code>521</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>KEYPAD_5</code></td>
+            <td><code>522</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>KEYPAD_6</code></td>
+            <td><code>523</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>KEYPAD_7</code></td>
+            <td><code>524</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>KEYPAD_8</code></td>
+            <td><code>525</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>KEYPAD_9</code></td>
+            <td><code>526</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>KEYPAD_0</code></td>
+            <td><code>527</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>KEYPAD_DOT</code></td>
+            <td><code>528</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>MEDIA_MUTE</code></td>
+            <td><code>768</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>MEDIA_VOLUME_INCREMENT</code></td>
+            <td><code>769</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>MEDIA_VOLUME_DECREMENT</code></td>
+            <td><code>770</code></td>
+            <td></td>
+        </tr></table>
+
+### SemanticKeyAction {:#SemanticKeyAction}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.ui.input2/semantic_keys.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input2/semantic_keys.fidl#11)*
+
+ Semantic Key represents the meaning of a non-symbolic key on a keyboard.
+
+ Definition of each key is derived from W3C named values of a key attribute:
+ https://www.w3.org/TR/uievents-key/#named-key-attribute-values
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>ALT</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>ALT_GRAPH</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>CAPS_LOCK</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>CONTROL</code></td>
+            <td><code>4</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>META</code></td>
+            <td><code>5</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>NUM_LOCK</code></td>
+            <td><code>6</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>SCROLL_LOCK</code></td>
+            <td><code>7</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>SHIFT</code></td>
+            <td><code>8</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>ARROW_DOWN</code></td>
+            <td><code>33</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>ARROW_LEFT</code></td>
+            <td><code>34</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>ARROW_RIGHT</code></td>
+            <td><code>35</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>ARROW_UP</code></td>
+            <td><code>36</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>END</code></td>
+            <td><code>37</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>HOME</code></td>
+            <td><code>38</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PAGE_DOWN</code></td>
+            <td><code>39</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PAGE_UP</code></td>
+            <td><code>40</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>ENTER</code></td>
+            <td><code>49</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>TAB</code></td>
+            <td><code>50</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>BACKSPACE</code></td>
+            <td><code>65</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>DELETE</code></td>
+            <td><code>66</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>INSERT</code></td>
+            <td><code>67</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>F1</code></td>
+            <td><code>97</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>F2</code></td>
+            <td><code>98</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>F3</code></td>
+            <td><code>99</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>F4</code></td>
+            <td><code>100</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>F5</code></td>
+            <td><code>101</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>F6</code></td>
+            <td><code>102</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>F7</code></td>
+            <td><code>103</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>F8</code></td>
+            <td><code>104</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>F9</code></td>
+            <td><code>105</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>F10</code></td>
+            <td><code>106</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>F11</code></td>
+            <td><code>107</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>F12</code></td>
+            <td><code>108</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>CONTEXT_MENU</code></td>
+            <td><code>129</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>ESCAPE</code></td>
+            <td><code>130</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>GO_BACK</code></td>
+            <td><code>177</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>GO_HOME</code></td>
+            <td><code>178</code></td>
+            <td></td>
         </tr></table>
 
 
@@ -1279,6 +1816,210 @@
 </td>
         </tr></table>
 
+### KeyEvent {:#KeyEvent}
+
+
+*Defined in [fuchsia.ui.input2/events.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input2/events.fidl#44)*
+
+ Keyboard event is generated to reflect key input.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>key</code></td>
+            <td>
+                <code><a class='link' href='#Key'>Key</a></code>
+            </td>
+            <td> The key that was pressed or released, taking the keyboard layout into account.
+
+ Use this value for the following purposes:
+ -  interpreting keyboard shortcuts such as CTRL+C
+
+ The input system derives this value from `physical_key` by consulting the
+ physical key map of the `KeyboardLayout` that was active for the keyboard when
+ when the key was pressed.  Note that the same value will be reported when
+ the key is released even if the keyboard layout changes in the interim between press
+ and release.
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>phase</code></td>
+            <td>
+                <code><a class='link' href='#KeyEventPhase'>KeyEventPhase</a></code>
+            </td>
+            <td> Phase of input.
+</td>
+        </tr><tr>
+            <td>3</td>
+            <td><code>modifiers</code></td>
+            <td>
+                <code><a class='link' href='#Modifiers'>Modifiers</a></code>
+            </td>
+            <td> Modifier keys being held.
+</td>
+        </tr><tr>
+            <td>4</td>
+            <td><code>semantic_key</code></td>
+            <td>
+                <code><a class='link' href='#SemanticKey'>SemanticKey</a></code>
+            </td>
+            <td> The semantic meaning of the key that was pressed or released, taking the keyboard
+ layout and modifiers into account.
+
+ Use this value for the following purposes:
+ - typing text when implementing an input method editor (IME) or when IME services
+   are not available (this won’t work for languages that require composition)
+
+ The input system derives this value from the combination of `physical_key` and
+ `modifiers` by consulting the key symbol map of `KeyboardLayout` that was active
+ for the keyboard when the key was pressed. Note that the same value will be reported
+ when the key is released even if the keyboard layout or modifiers change in the
+ interim between press and release.
+</td>
+        </tr><tr>
+            <td>5</td>
+            <td><code>physical_key</code></td>
+            <td>
+                <code><a class='link' href='#Key'>Key</a></code>
+            </td>
+            <td> Identifies the physical key, ignoring modifiers and layout.
+
+ Use this value for the following purposes:
+ - applying keyboard layout translations
+ - synthesizing input events into virtual machines, since VMs will do own layout mapping
+
+ The input system derives this value from the data reported by the keyboard itself
+ without taking into account the keyboard’s current `KeyboardLayout` or modifiers.
+</td>
+        </tr></table>
+
+### KeyboardLayout {:#KeyboardLayout}
+
+
+*Defined in [fuchsia.ui.input2/layout.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input2/layout.fidl#28)*
+
+ Collection of key maps.
+
+ A physical key is first converted to key using `key_map`.
+ The key is then used to populate `symbol` using `symbol_map`.
+ Maps in `KeySymbolMap` should be searched for the key mapping in the order
+ they are included.
+ First key mapping found in an applicable map should be used.
+ Only maps with matching modifiers should be used.
+ See `KeySymbolMap` for modifiers matching criteria and examples.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>key_map</code></td>
+            <td>
+                <code><a class='link' href='#PhysicalKeyMap'>PhysicalKeyMap</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>semantic_key_map</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#SemanticKeyMap'>SemanticKeyMap</a>&gt;[64]</code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### PhysicalKeyMap {:#PhysicalKeyMap}
+
+
+*Defined in [fuchsia.ui.input2/layout.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input2/layout.fidl#36)*
+
+ Key map describes a conversion of a physical key to a key.
+ Physical keys not included here are translated directly into keys.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>entries</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#PhysicalKeyMapEntry'>PhysicalKeyMapEntry</a>&gt;[1024]</code>
+            </td>
+            <td> Collection of keys that should be explicitly mapped.
+</td>
+        </tr></table>
+
+### SemanticKeyMap {:#SemanticKeyMap}
+
+
+*Defined in [fuchsia.ui.input2/layout.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input2/layout.fidl#79)*
+
+ Key map describes a conversion of a key to symbol representation.
+
+ The map should be validated using key event modifier states.
+ Map is applied if every modifier in the 'modifiers' list is active,
+ and all other active modifiers are members of the 'optional_modifiers' list.
+ If a modifier is enabled and not listed in neither `modifiers` nor
+ `optional_modifiers`, the map should be ignored.
+
+ Example:
+   Keyboard has NumLock and CapsLock enabled, and user presses Shift + Key.A
+
+   Map1:
+     modifiers: "CapsLock"
+     optional_modifiers: "NumLock"
+   Map2:
+     modifiers: "Shift",
+     optional_modifiers: "NumLock", "CapsLock", "ScrollLock"
+   Map3:
+     modifiers: None
+     optional_modifiers: "Shift", "CapsLock"
+
+ Map1 should be ignored, since "Shift" is pressed but is not included in
+ `modifiers` or `optional_modifiers`.
+
+ Map2 should be searched, since required "Shift" is enabled, and all other
+ enabled modifiers are included in `optional_modifiers`.
+
+ Map3 should be ignored, since "NumLock" is enabled but not included in
+ `modifiers` or `optional_modifiers`.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>modifiers</code></td>
+            <td>
+                <code><a class='link' href='#Modifiers'>Modifiers</a></code>
+            </td>
+            <td> Combination of modifiers required for this map to be applied.
+ E.g. if CAPS_LOCK bit is set for this map, the map will be
+ applied if the Caps Lock state is ON.
+ Otherwise this map will be ignored if Caps Lock is off.
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>optional_modifiers</code></td>
+            <td>
+                <code><a class='link' href='#Modifiers'>Modifiers</a></code>
+            </td>
+            <td> Combination of modifiers that may be enabled for this map to be applied.
+ E.g. if CAPS_LOCK bit is set for this map, the map will be
+ applied if Caps Lock state is ON.
+ Also it may be applied if Caps Lock is off.
+</td>
+        </tr><tr>
+            <td>3</td>
+            <td><code>entries</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#SemanticKeyMapEntry'>SemanticKeyMapEntry</a>&gt;[1024]</code>
+            </td>
+            <td> Collection of key to semantic meaning mappings.
+</td>
+        </tr></table>
+
 
 
 
@@ -1319,6 +2060,40 @@
 </td>
         </tr></table>
 
+### SemanticKey {:#SemanticKey}
+*Defined in [fuchsia.ui.input2/events.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input2/events.fidl#29)*
+
+ Semantic for a physical key typed by the user.
+ For letter or symbolic keys, is a string representation of the key typed.
+ For non-symbolic keys, is a SemanticKeyAction value corresponding to the key pressed.
+
+ Examples:
+   Key.A:
+     "a" or "A" in US key layout, depending on CapsLock and Shift
+   Key.SPACE:
+     " "
+   Key.TAB:
+     SemanticKeyAction.TAB
+   Key.GRAVE_ACCENT:
+     "`" or "]" or "<", depending on key layout
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>symbol</code></td>
+            <td>
+                <code>string[16]</code>
+            </td>
+            <td> For symbolic keys: string representing character typed.
+</td>
+        </tr><tr>
+            <td><code>action</code></td>
+            <td>
+                <code><a class='link' href='#SemanticKeyAction'>SemanticKeyAction</a></code>
+            </td>
+            <td> For non-symbolic keys: meaning of the key pressed.
+</td>
+        </tr></table>
+
 
 
 ## **BITS**
@@ -1405,6 +2180,88 @@
 </td>
         </tr></table>
 
+### Modifiers {:#Modifiers}
+Type: <code>uint32</code>
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td>SHIFT</td>
+            <td>1</td>
+            <td> Applies when either the `LEFT_SHIFT` or `RIGHT_SHIFT` modifier is pressed.
+</td>
+        </tr><tr>
+            <td>LEFT_SHIFT</td>
+            <td>2</td>
+            <td> Applies when the `LEFT_SHIFT` modifier is pressed.
+</td>
+        </tr><tr>
+            <td>RIGHT_SHIFT</td>
+            <td>4</td>
+            <td> Applies when the `RIGHT_SHIFT` modifier is pressed.
+</td>
+        </tr><tr>
+            <td>CONTROL</td>
+            <td>8</td>
+            <td> Applies when either the `LEFT_CONTROL` or `RIGHT_CONTROL` modifier is pressed.
+</td>
+        </tr><tr>
+            <td>LEFT_CONTROL</td>
+            <td>16</td>
+            <td> Applies when the `LEFT_CONTROL` modifier is pressed.
+</td>
+        </tr><tr>
+            <td>RIGHT_CONTROL</td>
+            <td>32</td>
+            <td> Applies when the `RIGHT_CONTROL` modifier is pressed.
+</td>
+        </tr><tr>
+            <td>ALT</td>
+            <td>64</td>
+            <td> Applies when either the `LEFT_ALT` or `RIGHT_ALT` modifier is pressed.
+</td>
+        </tr><tr>
+            <td>LEFT_ALT</td>
+            <td>128</td>
+            <td> Applies when the `LEFT_ALT` modifier is pressed.
+</td>
+        </tr><tr>
+            <td>RIGHT_ALT</td>
+            <td>256</td>
+            <td> Applies when the `RIGHT_ALT` modifier is pressed.
+</td>
+        </tr><tr>
+            <td>META</td>
+            <td>512</td>
+            <td> Applies when either the `LEFT_META` or `RIGHT_META` modifier is pressed.
+</td>
+        </tr><tr>
+            <td>LEFT_META</td>
+            <td>1024</td>
+            <td> Applies when the `LEFT_META` modifier is pressed.
+</td>
+        </tr><tr>
+            <td>RIGHT_META</td>
+            <td>2048</td>
+            <td> Applies when the `RIGHT_META` modifier is pressed.
+</td>
+        </tr><tr>
+            <td>CAPS_LOCK</td>
+            <td>4096</td>
+            <td> Applies when the `CAPS_LOCK` modifier is locked.
+</td>
+        </tr><tr>
+            <td>NUM_LOCK</td>
+            <td>8192</td>
+            <td> Applies when the `NUM_LOCK` modifier is locked.
+</td>
+        </tr><tr>
+            <td>SCROLL_LOCK</td>
+            <td>16384</td>
+            <td> Applies when the `SCROLL_LOCK` modifier is locked.
+</td>
+        </tr></table>
+
 
 
 ## **CONSTANTS**
@@ -1426,6 +2283,22 @@
                 <td><code>uint64</code></td>
             <td></td>
         </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input2/layout.fidl#7">MAX_ENTRIES_PER_MAP</a></td>
+            <td>
+                    <code>1024</code>
+                </td>
+                <td><code>uint64</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.input2/layout.fidl#8">MAX_MAPS_PER_LAYOUT</a></td>
+            <td>
+                    <code>64</code>
+                </td>
+                <td><code>uint64</code></td>
+            <td></td>
+        </tr>
     
 </table>
 
diff --git a/sdk/fidl/fuchsia.ui.policy/index.md b/sdk/fidl/fuchsia.ui.policy/index.md
index 12ba271..4f1d202 100644
--- a/sdk/fidl/fuchsia.ui.policy/index.md
+++ b/sdk/fidl/fuchsia.ui.policy/index.md
@@ -389,6 +389,389 @@
 
 
 
+## DeviceListenerRegistry {:#DeviceListenerRegistry}
+*Defined in [fuchsia.ui.policy/device_listener.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.policy/device_listener.fidl#9)*
+
+ Service for exposing state and events of devices, such as media buttons.
+
+### RegisterMediaButtonsListener {:#RegisterMediaButtonsListener}
+
+ Registers a listener to receive media button related events, such as
+ changes from volume buttons and mute switches.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>listener</code></td>
+            <td>
+                <code><a class='link' href='#MediaButtonsListener'>MediaButtonsListener</a></code>
+            </td>
+        </tr></table>
+
+
+
+## KeyboardCaptureListenerHACK {:#KeyboardCaptureListenerHACK}
+*Defined in [fuchsia.ui.policy/presentation.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.policy/presentation.fidl#12)*
+
+ `Presentation.CaptureKeyboardEvent` will consume this listener interface and
+ call `OnEvent` when the registered keyboard event occurs.
+
+### OnEvent {:#OnEvent}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>event</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.ui.input/index.html'>fuchsia.ui.input</a>/<a class='link' href='../fuchsia.ui.input/index.html#KeyboardEvent'>KeyboardEvent</a></code>
+            </td>
+        </tr></table>
+
+
+
+## PointerCaptureListenerHACK {:#PointerCaptureListenerHACK}
+*Defined in [fuchsia.ui.policy/presentation.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.policy/presentation.fidl#18)*
+
+ `Presentation.CapturePointerEvent` will consume this listener interface and
+ call `OnEvent` when a pointer event occurs.
+
+### OnPointerEvent {:#OnPointerEvent}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>event</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.ui.input/index.html'>fuchsia.ui.input</a>/<a class='link' href='../fuchsia.ui.input/index.html#PointerEvent'>PointerEvent</a></code>
+            </td>
+        </tr></table>
+
+
+
+## MediaButtonsListener {:#MediaButtonsListener}
+*Defined in [fuchsia.ui.policy/presentation.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.policy/presentation.fidl#24)*
+
+ `Presentation.RegisterMediaButtonsListener` will consume this listener interface
+ and call `OnMediaButtonsEvent` when the registered media buttons event occurs.
+
+### OnMediaButtonsEvent {:#OnMediaButtonsEvent}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>event</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.ui.input/index.html'>fuchsia.ui.input</a>/<a class='link' href='../fuchsia.ui.input/index.html#MediaButtonsEvent'>MediaButtonsEvent</a></code>
+            </td>
+        </tr></table>
+
+
+
+## Presentation {:#Presentation}
+*Defined in [fuchsia.ui.policy/presentation.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.policy/presentation.fidl#31)*
+
+ Allows clients of Presenter.Present() to control a presentation.
+ Experimental.
+
+### EnableClipping {:#EnableClipping}
+
+ Enable or disable clipping for the Scenic renderer associated with the
+ presentation.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>enabled</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr></table>
+
+
+
+### UseOrthographicView {:#UseOrthographicView}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### UsePerspectiveView {:#UsePerspectiveView}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### SetRendererParams {:#SetRendererParams}
+
+ Set parameters such as the shadow algorithm used to render the scene.
+ NOTE: a single param would be better than an array; see TO-529.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>params</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='../fuchsia.ui.gfx/index.html'>fuchsia.ui.gfx</a>/<a class='link' href='../fuchsia.ui.gfx/index.html#RendererParam'>RendererParam</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### SetDisplayUsage {:#SetDisplayUsage}
+
+ Override the intended usage of the display.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>usage</code></td>
+            <td>
+                <code><a class='link' href='#DisplayUsage'>DisplayUsage</a></code>
+            </td>
+        </tr></table>
+
+
+
+### SetDisplayRotation {:#SetDisplayRotation}
+
+ Rotates the display.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>display_rotation_degrees</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+        </tr><tr>
+            <td><code>animate</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr></table>
+
+
+
+### SetDisplaySizeInMm {:#SetDisplaySizeInMm}
+
+ Override the dimensions of the display. Values must be less than the actual
+ size of the display. If either of the values are 0, then they are ignored
+ and the actual size of the display is used.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>width_in_mm</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+        </tr><tr>
+            <td><code>height_in_mm</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+        </tr></table>
+
+
+
+### CaptureKeyboardEventHACK {:#CaptureKeyboardEventHACK}
+
+ This call exists so that base shell can capture hotkeys and do special
+ things with it (e.g., switch a session shell). Phase and modifiers are always
+ matched, and valid (non-zero) code points are matched. If there is no
+ valid code point, the filter will match against the hid usage value.
+ The full KeyboardEvent is supplied to `listener`'s OnEvent.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>event_to_capture</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.ui.input/index.html'>fuchsia.ui.input</a>/<a class='link' href='../fuchsia.ui.input/index.html#KeyboardEvent'>KeyboardEvent</a></code>
+            </td>
+        </tr><tr>
+            <td><code>listener</code></td>
+            <td>
+                <code><a class='link' href='#KeyboardCaptureListenerHACK'>KeyboardCaptureListenerHACK</a></code>
+            </td>
+        </tr></table>
+
+
+
+### CapturePointerEventsHACK {:#CapturePointerEventsHACK}
+
+ This call exists so that base shell can capture pointer events.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>listener</code></td>
+            <td>
+                <code><a class='link' href='#PointerCaptureListenerHACK'>PointerCaptureListenerHACK</a></code>
+            </td>
+        </tr></table>
+
+
+
+### GetPresentationMode {:#GetPresentationMode}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>mode</code></td>
+            <td>
+                <code><a class='link' href='#PresentationMode'>PresentationMode</a></code>
+            </td>
+        </tr></table>
+
+### SetPresentationModeListener {:#SetPresentationModeListener}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>listener</code></td>
+            <td>
+                <code><a class='link' href='#PresentationModeListener'>PresentationModeListener</a></code>
+            </td>
+        </tr></table>
+
+
+
+### RegisterMediaButtonsListener {:#RegisterMediaButtonsListener}
+
+ Registers a listener for media buttons events.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>listener</code></td>
+            <td>
+                <code><a class='link' href='#MediaButtonsListener'>MediaButtonsListener</a></code>
+            </td>
+        </tr></table>
+
+
+
+### InjectPointerEventHACK {:#InjectPointerEventHACK}
+
+ EXPERIMENTAL. Inject pointer events into input stream. This WILL go
+ away. Used exclusively by Session Shells to test focus navigation.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>event</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.ui.input/index.html'>fuchsia.ui.input</a>/<a class='link' href='../fuchsia.ui.input/index.html#PointerEvent'>PointerEvent</a></code>
+            </td>
+        </tr></table>
+
+
+
+## PresentationModeListener {:#PresentationModeListener}
+*Defined in [fuchsia.ui.policy/presentation.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.policy/presentation.fidl#97)*
+
+ Tell client that the screen mode has changed, according to sensors.
+ N.B. There can be a race where the actual mode continues to change, after
+ the listener has been notified. The client must call GetPresentationMode(),
+ which will return the latest detected mode.
+
+### OnModeChanged {:#OnModeChanged}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+## Presenter {:#Presenter}
+*Defined in [fuchsia.ui.policy/presenter.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.policy/presenter.fidl#14)*
+
+ The Presenter service provides a way for applications to ask that a view be
+ added to a view tree, leaving any window management concerns up to the
+ discretion of the presenter implementation.
+
+### PresentView {:#PresentView}
+
+ Request that the View's contents be displayed on the screen as a
+ `Presentation`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>view_holder_token</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.ui.views/index.html'>fuchsia.ui.views</a>/<a class='link' href='../fuchsia.ui.views/index.html#ViewHolderToken'>ViewHolderToken</a></code>
+            </td>
+        </tr><tr>
+            <td><code>presentation_request</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#Presentation'>Presentation</a>&gt;?</code>
+            </td>
+        </tr></table>
+
+
+
+### HACK_SetRendererParams {:#HACK_SetRendererParams}
+
+ Sets new default renderer params and forces them on for the duration of the
+ presenter's lifetime. Only applies to any subsequent calls to Present().
+ Used for testing.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>enable_clipping</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr><tr>
+            <td><code>params</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='../fuchsia.ui.gfx/index.html'>fuchsia.ui.gfx</a>/<a class='link' href='../fuchsia.ui.gfx/index.html#RendererParam'>RendererParam</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
 
 
 
@@ -411,28 +794,87 @@
         </tr><tr>
             <td><code>kHandheld</code></td>
             <td><code>1</code></td>
-            <td> Display is held in one or both hands.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>kClose</code></td>
             <td><code>2</code></td>
-            <td> Display is used well within arm's reach.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>kNear</code></td>
             <td><code>3</code></td>
-            <td> Display is used at arm's reach.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>kMidrange</code></td>
             <td><code>4</code></td>
-            <td> Display is used beyond arm's reach.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>kFar</code></td>
             <td><code>5</code></td>
-            <td> Display is used well beyond arm's reach.
-</td>
+            <td></td>
+        </tr></table>
+
+### PresentationMode {:#PresentationMode}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.ui.policy/presentation.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.policy/presentation.fidl#86)*
+
+ Screen modes that can be detected via sensor data.
+ N.B. We use accelerometers to measure gravity when at rest, so detection is
+ limited to earth-relative orientations.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>CLOSED</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>LAPTOP</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>TABLET</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>TENT</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr></table>
+
+### DisplayUsage {:#DisplayUsage}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.ui.policy/display_usage.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.policy/display_usage.fidl#8)*
+
+ Describes the intended usage of the display.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>kUnknown</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>kHandheld</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>kClose</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>kNear</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>kMidrange</code></td>
+            <td><code>4</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>kFar</code></td>
+            <td><code>5</code></td>
+            <td></td>
         </tr></table>
 
 ### PresentationMode {:#PresentationMode}
diff --git a/sdk/fidl/fuchsia.ui.scenic.internal/index.md b/sdk/fidl/fuchsia.ui.scenic.internal/index.md
index b788b41..d31825c 100644
--- a/sdk/fidl/fuchsia.ui.scenic.internal/index.md
+++ b/sdk/fidl/fuchsia.ui.scenic.internal/index.md
@@ -520,9 +520,7 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>CONTENT_HAS_PRESENTED</code></td>
             <td><code>0</code></td>
-            <td> The underlying Graph has connected its Link, called Present(), and the acquisition fences of
- the Present() call have all be reached.
-</td>
+            <td></td>
         </tr></table>
 
 
diff --git a/sdk/fidl/fuchsia.ui.scenic/index.md b/sdk/fidl/fuchsia.ui.scenic/index.md
index 37a7700..546a92a 100644
--- a/sdk/fidl/fuchsia.ui.scenic/index.md
+++ b/sdk/fidl/fuchsia.ui.scenic/index.md
@@ -344,6 +344,344 @@
 
  Defines an interface to take view snapshots.
 
+## Scenic {:#Scenic}
+*Defined in [fuchsia.ui.scenic/scenic.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.scenic/scenic.fidl#18)*
+
+
+### CreateSession {:#CreateSession}
+
+ Create a new Session, which is the primary way to interact with Scenic.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>session</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#Session'>Session</a>&gt;</code>
+            </td>
+        </tr><tr>
+            <td><code>listener</code></td>
+            <td>
+                <code><a class='link' href='#SessionListener'>SessionListener</a>?</code>
+            </td>
+        </tr></table>
+
+
+
+### GetDisplayInfo {:#GetDisplayInfo}
+
+ Get information about the Scenic's primary display.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>info</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.ui.gfx/index.html'>fuchsia.ui.gfx</a>/<a class='link' href='../fuchsia.ui.gfx/index.html#DisplayInfo'>DisplayInfo</a></code>
+            </td>
+        </tr></table>
+
+### GetDisplayOwnershipEvent {:#GetDisplayOwnershipEvent}
+
+ Gets an event signaled with displayOwnedSignal or displayNotOwnedSignal
+ when display ownership changes.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>ownership_event</code></td>
+            <td>
+                <code>handle&lt;event&gt;</code>
+            </td>
+        </tr></table>
+
+### TakeScreenshot {:#TakeScreenshot}
+
+ Take a screenshot and return the data in `img_data`. `img_data` will
+ not contain BGRA data if `success` is false.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>img_data</code></td>
+            <td>
+                <code><a class='link' href='#ScreenshotData'>ScreenshotData</a></code>
+            </td>
+        </tr><tr>
+            <td><code>success</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr></table>
+
+## Session {:#Session}
+*Defined in [fuchsia.ui.scenic/session.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.scenic/session.fidl#12)*
+
+ Client use Sessions to interact with a Scenic instance by enqueuing commands
+ that create or modify resources.
+
+### Enqueue {:#Enqueue}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>cmds</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#Command'>Command</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### Present {:#Present}
+
+ Present all previously enqueued operations.  In order to pipeline the
+ preparation of the resources required to render the scene, two lists of
+ fences (implemented as events) are passed.
+
+ SCHEDULING PRESENTATION
+
+ `presentation_time` specifies the time on or after which the
+ client would like the enqueued operations should take visible effect
+ (light up pixels on the screen), expressed in nanoseconds in the
+ `CLOCK_MONOTONIC` timebase.  Desired presentation times must be
+ monotonically non-decreasing.
+
+ Using a desired presentation time in the present or past (such as 0)
+ schedules enqueued operations to take visible effect as soon as possible
+ (during the next frame to be prepared).
+
+ Using a desired presentation time in the future schedules the enqueued
+ operations to take visible effect as closely as possible to or after
+ the stated time (but no earlier).
+
+ Each rendered frame has a target presentation time.  Before rendering
+ a frame, the scene manager applies all enqueued operations associated
+ with all prior calls to `Present()` whose desired presentation time
+ is on or before the frame's target presentation time.
+
+ The `Present()` method does not return until the scene manager begins
+ preparing the first frame which includes its presented content.
+ Upon return, the `PresentationInfo` provides timing information for the
+ frame which includes the presented content.
+
+ To present new content on each successive frame, wait for `Present()`
+ to return before calling `Present()` again with content for the next
+ frame.
+
+ It is also possible to enqueue and present successive frames of content
+ all at once with increasing desired presentation times, incrementing by
+ `PresentationInfo.presentation_interval` for each one.
+
+ Animation updates are also coordinated in terms of presentation time.
+
+ SYNCHRONIZATION
+
+ `acquire_fences` are used by Scenic to wait until all of the session's
+ resources are ready to render (or to allow downstream components, such as
+ the Vulkan driver, to wait for these resources).
+
+ For example, Fuchsia's Vulkan driver allows an zx::event to be obtained
+ from a VkSemaphore.  This allows a Scenic client to submit a Vulkan command
+ buffer to generate images/meshes/etc., and instructing Vulkan to signal a
+ VkSemaphore when it is done.  By inserting the zx::event corresponding to
+ this semaphore into `acquire_fences`, the client allows Scenic to submit work
+ to the Vulkan driver without waiting on the CPU for the event to be
+ signalled.
+
+ `release_fences` is a list of events that will be signalled by Scenic when
+ the updated session state has been fully committed: future frames will be
+ rendered using this state, and all frames generated using previous session
+ states have been fully-rendered and presented to the display.
+
+ Together, `acquire_fences` and `release_fences` are intended to allow clients
+ to implement strategies such as double-buffering.  For example, a client
+ might do the following in the Scenic subsystem:
+   1) create two Image with resource IDs #1 and #2.
+   2) create two Materials with resource IDs #3 and #4, which respectively
+      use Images #1 and #2 as their texture.
+   3) create a tree of Nodes and attach them to the scene.
+   4) set one of the nodes above, say #5, to use Material #3.
+   5) submit a Vulkan command-buffer which renders into Image #1, and
+      will signal a VkSemaphore.
+   6) call Present() with one acquire-fence (obtained from the VkSemaphore
+      above) and one newly-created release-fence.
+
+ After the steps above, Scenic will use the committed session state to render
+ frames whenever necessary.  When the client wants to display something
+ different than Image #1, it would do something similar to steps 4) to 6):
+   7) set Node #5 to use Material #4.
+   8) submit a Vulkan command-buffer which renders into Image #1, and
+      will signal a VkSemaphore.
+   9) call Present() with one acquire-fence (obtained from the VkSemaphore
+      above) and one newly-created release-fence.
+
+ Finally, to continually draw new content, the client could repeat steps
+ 4) to 9), with one important difference: step 5) must wait on the event
+ signalled by step 9).  Otherwise, it might render into Image #1 while that
+ image is still being used by Scenic to render a frame.  Similarly, step 8)
+ must wait on the event signalled by step 6).
+
+ The scenario described above uses one acquire-fence and one release-fence,
+ but it is easy to imagine cases that require more.  For example, in addition
+ to using Vulkan to render into Images #1 and #2, the client might also
+ upload other resources to Vulkan on a different VkQueue, which would
+ would signal a separate semaphore, and therefore require an additional
+ acquire-fence.
+
+ Note: `acquire_fences` and `release_fences` are only necessary to synchronize
+ access to memory (and other external resources).  Any modification to
+ resources made via the Session API are automatically synchronized.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>presentation_time</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr><tr>
+            <td><code>acquire_fences</code></td>
+            <td>
+                <code>vector&lt;event&gt;</code>
+            </td>
+        </tr><tr>
+            <td><code>release_fences</code></td>
+            <td>
+                <code>vector&lt;event&gt;</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>presentation_info</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.images/index.html'>fuchsia.images</a>/<a class='link' href='../fuchsia.images/index.html#PresentationInfo'>PresentationInfo</a></code>
+            </td>
+        </tr></table>
+
+### RequestPresentationTimes {:#RequestPresentationTimes}
+
+ Returns information about future presentation times, and their
+ respective latch points. Clients can use the returned information to
+ make informed scheduling decisions: if a client wants their frame to be
+ displayed at a given presentation time, they should aim to have all of
+ their work finished before that presentation time's associated latch point.
+
+ Scenic will attempt to return predictions that span a duration equal to
+ |requested_prediction_span|, up to a limit.
+
+ A value of 0 is guaranteed to give at least one future presentation info.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>requested_prediction_span</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>request_presentation_times_info</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.scenic.scheduling/index.html'>fuchsia.scenic.scheduling</a>/<a class='link' href='../fuchsia.scenic.scheduling/index.html#FuturePresentationTimes'>FuturePresentationTimes</a></code>
+            </td>
+        </tr></table>
+
+### SetDebugName {:#SetDebugName}
+
+ Set an optional debug name for the session. The debug name will be
+ output in things such as logging and trace events.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>debug_name</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr></table>
+
+
+
+## SessionListener {:#SessionListener}
+*Defined in [fuchsia.ui.scenic/session.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.scenic/session.fidl#147)*
+
+ Listens for events which occur within the session.
+
+### OnScenicError {:#OnScenicError}
+
+ Called when an error has occurred and the session will be torn down.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>error</code></td>
+            <td>
+                <code>string</code>
+            </td>
+        </tr></table>
+
+
+
+### OnScenicEvent {:#OnScenicEvent}
+
+ Called to deliver a batch of one or more events to the listener.
+ Use `SetEventMaskCmd` to enable event delivery for a resource.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>events</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#Event'>Event</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+## Snapshot {:#Snapshot}
+*Defined in [fuchsia.ui.scenic/snapshot.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.scenic/snapshot.fidl#9)*
+
+ Defines an interface to take view snapshots.
+
 
 
 ## **STRUCTS**
@@ -374,6 +712,32 @@
         </tr>
 </table>
 
+### ScreenshotData {:#ScreenshotData}
+*Defined in [fuchsia.ui.scenic/scenic.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.scenic/scenic.fidl#12)*
+
+
+
+ Scenic.TakeScreenshot() returns a raw BGRA formatted image in this struct.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>info</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.images/index.html'>fuchsia.images</a>/<a class='link' href='../fuchsia.images/index.html#ImageInfo'>ImageInfo</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>data</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.mem/index.html'>fuchsia.mem</a>/<a class='link' href='../fuchsia.mem/index.html#Buffer'>Buffer</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
 
 
 
@@ -438,6 +802,62 @@
             <td></td>
         </tr></table>
 
+### Command {:#Command}
+*Defined in [fuchsia.ui.scenic/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.scenic/commands.fidl#12)*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>gfx</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.ui.gfx/index.html'>fuchsia.ui.gfx</a>/<a class='link' href='../fuchsia.ui.gfx/index.html#Command'>Command</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>vectorial</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.ui.vectorial/index.html'>fuchsia.ui.vectorial</a>/<a class='link' href='../fuchsia.ui.vectorial/index.html#Command'>Command</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>views</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.ui.views/index.html'>fuchsia.ui.views</a>/<a class='link' href='../fuchsia.ui.views/index.html#Command'>Command</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>input</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.ui.input/index.html'>fuchsia.ui.input</a>/<a class='link' href='../fuchsia.ui.input/index.html#Command'>Command</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### Event {:#Event}
+*Defined in [fuchsia.ui.scenic/events.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.scenic/events.fidl#10)*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>gfx</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.ui.gfx/index.html'>fuchsia.ui.gfx</a>/<a class='link' href='../fuchsia.ui.gfx/index.html#Event'>Event</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>input</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.ui.input/index.html'>fuchsia.ui.input</a>/<a class='link' href='../fuchsia.ui.input/index.html#InputEvent'>InputEvent</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>unhandled</code></td>
+            <td>
+                <code><a class='link' href='#Command'>Command</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
 
 
 
@@ -463,6 +883,22 @@
                 <td><code>uint32</code></td>
             <td></td>
         </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.scenic/scenic.fidl#37">displayOwnedSignal</a></td>
+            <td>
+                    <code>33554432</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.scenic/scenic.fidl#38">displayNotOwnedSignal</a></td>
+            <td>
+                    <code>16777216</code>
+                </td>
+                <td><code>uint32</code></td>
+            <td></td>
+        </tr>
     
 </table>
 
diff --git a/sdk/fidl/fuchsia.ui.types/index.md b/sdk/fidl/fuchsia.ui.types/index.md
index df530fd..9d780f5 100644
--- a/sdk/fidl/fuchsia.ui.types/index.md
+++ b/sdk/fidl/fuchsia.ui.types/index.md
@@ -84,6 +84,82 @@
         </tr>
 </table>
 
+### ColorRgba {:#ColorRgba}
+*Defined in [fuchsia.ui.types/types.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.types/types.fidl#10)*
+
+
+
+ Represents a color. Interfaces that use this struct should document whether
+ or not the floats have been premultiplied by alpha. Range per channel is
+ usually between 0.0 and 1.0.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>red</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>green</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>blue</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>alpha</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ColorRgb {:#ColorRgb}
+*Defined in [fuchsia.ui.types/types.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.types/types.fidl#19)*
+
+
+
+ Represents a color without alpha channel. Range per channel is usually
+ between 0.0 and 1.0.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>red</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>green</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>blue</code></td>
+            <td>
+                <code>float32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
 
 
 
diff --git a/sdk/fidl/fuchsia.ui.vectorial/index.md b/sdk/fidl/fuchsia.ui.vectorial/index.md
index afbaa6c..fa9a983 100644
--- a/sdk/fidl/fuchsia.ui.vectorial/index.md
+++ b/sdk/fidl/fuchsia.ui.vectorial/index.md
@@ -40,6 +40,32 @@
             <td></td>
         </tr></table>
 
+### Command {:#Command}
+*Defined in [fuchsia.ui.vectorial/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.vectorial/commands.fidl#7)*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>placeHolder</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### Event {:#Event}
+*Defined in [fuchsia.ui.vectorial/events.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.vectorial/events.fidl#7)*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>placeHolder</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+        </tr></table>
+
 
 
 
diff --git a/sdk/fidl/fuchsia.ui.views/index.md b/sdk/fidl/fuchsia.ui.views/index.md
index fa9012b..cbac97b 100644
--- a/sdk/fidl/fuchsia.ui.views/index.md
+++ b/sdk/fidl/fuchsia.ui.views/index.md
@@ -110,6 +110,110 @@
 
 
 
+## View {:#View}
+*Defined in [fuchsia.ui.views/view.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.views/view.fidl#79)*
+
+ A View is an interface that a component implements to offer Scenic view(s)
+ to its clients.
+
+ A Scenic view contains a tree of Scenic graph nodes which is used to render
+ a graphical user interface, such as a module, shell, or on-screen keyboard.
+ Other Scenic views can be embedded within this tree of nodes.  This creates
+ a scene graph describing the UI of the entire system, rooted at the
+ top-most view.  Different processes can contribute branches to the scene
+ graph, and their content will be rendered together in a shared space.
+
+ # Offering a View
+
+ A component that wishes to offer a `View` can do so in one of two ways:
+
+ 1. Expose a `View` interface as a service. This is usually done by components
+    that provide a single view, or have a clearly defined "main" view.
+    In this case, the component may obtain relevant properties for configuring
+    the view using services that may be available in its namespace, such as:
+    - `fuchsia.intl.PropertyProvider`
+    - `fuchsia.accessibility.PropertyProvider`
+
+ 2. Offer a domain-specific interface that provides `View`s using a
+    `request<View>` parameter.  In this case, the component may obtain relevant
+    properties for configuring the view using services that may be provided by its
+    client as part of the request.
+
+    For example, an encyclopedia component might offer a method to expose article views:
+
+      GetArticleView(string article_id,
+                     fuchsia.intl.PropertyProvider intl_properties,
+                     fuchsia.accessibility.PropertyProvider accessibility_properties,
+                     request<View> view_request);
+
+    This latter case is probably less common, as controlling domain-specific
+    views tends to be the job of the component that creates them.
+
+ # Presenting a View
+
+ A client of the `View` interface will:
+
+ 1. Launch (or bind to) the component that provides the interface.
+ 2. Connect to the component's `View` interface.
+ 3. Call `Present()` to give the `View` an attachment point into the scene graph
+    via the `view_token`.  Subsequent calls to `Present()` will generate an error
+    and cause the connection to be closed.
+
+ When the client no longer needs the View, it should disconnect from the
+ interface.
+
+ NOTE: The client owns the `View` instance and must retain it for the
+ lifetime of the UI that it displays. If the `View` instance is destroyed,
+ the connection will be dropped and all UI content will be destroyed.
+
+ # Implementing a View
+
+ On the implementation side, a component that exposes the `View` interface
+ has the following responsibilities:
+
+ * When `Present()` is called, create a root for the `View`'s content in the
+   Scenic scene graph by passing the provided `view_token`.
+ * Provide graphical content for the view and attach it to the root.
+ * Adjust the appearance and/or contents of the view's content based on
+   relevant internationalization and/or accessibility properties as described
+   above.
+ * Handle user interface events such as touches, key presses, and
+   `fuchsia.ui.gfx.ViewProperty` changes using other Scenic interfaces such
+   as `fuchsia.ui.Scenic` and `fuchsia.ui.SessionListener`.
+
+ See also: `fuchsia.intl.PropertyProvider`, `fuchsia.accessibility.PropertyProvider`.
+
+ TODO(SCN-1198): Migrate all implementations of `ViewProvider` to use `View`.
+
+### Present {:#Present}
+
+ Provides the View with an attachment point to Scenic's scene graph.
+
+ When `Present()` is called the View's implementation should create a
+ View resource within Scenic by providing it with the `view_token` (using
+ a `fuchsia.ui.gfx.CreateResourceCmd` and `fuchsia.ui.gfx.ViewArgs`).
+
+ Then the implementation should attach its graphical content to the
+ newly-created View resource using a `fuchsia.ui.gfx.AddChildCmd`.
+
+ If the implementation already owns a View resource (because `Present()`
+ had already been called before), then it should terminate the connection
+ with an error.
+
+ TODO(SCN-1271): Allow re-parenting `View`s with a new `Present()` call.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>view_token</code></td>
+            <td>
+                <code><a class='link' href='#ViewToken'>ViewToken</a></code>
+            </td>
+        </tr></table>
+
+
+
 
 
 ## **STRUCTS**
@@ -235,6 +339,127 @@
         </tr>
 </table>
 
+### ViewRef {:#ViewRef}
+*Defined in [fuchsia.ui.views/view.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.views/view.fidl#120)*
+
+
+
+ A ViewRef is a handle to a kernel object which identifies a unique View
+ across the system. Two ViewRefs to the same View have the same KOID.
+
+ Clients use a ViewRef to identify a View, to validate a View, and to
+ receive a View invalidation signal.
+
+ As part of View creation, the client creates a linked
+ ViewRef/ViewRefControl pair and hands the pair to Scenic (ViewRefControl is
+ described below).  The client must remove the ViewRef's signal
+ capabilities; otherwise the View is not created.
+
+ The client may freely clone its ViewRef and share it, even before sending
+ it to Scenic.
+
+ Example 1. Accessibility accepts a ViewRef from a client to group the
+ semantic nodes, and semantic operations, associated with a client's View.
+ It must validate a client's ViewRef with Scenic.
+
+ Example 2. We use ViewRefs to create a FocusChain, which identifies Views
+ considered as "in-focus" down the View hierarchy. When a View is destroyed,
+ Scenic signals to all FocusChain holders that the ViewRef is now invalid.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>reference</code></td>
+            <td>
+                <code>handle&lt;eventpair&gt;</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ViewRefControl {:#ViewRefControl}
+*Defined in [fuchsia.ui.views/view.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.views/view.fidl#138)*
+
+
+
+ A ViewRefControl is the peer to a ViewRef. Their `reference`s are linked.
+
+ Like ViewRef, a ViewRefControl is a typed handle to an eventpair.  Unlike
+ ViewRef, a ViewRefControl's handle is unique. Scenic uses this property
+ when it ties a ViewRefControl to a View, arranged to share fate.  When a
+ View is destroyed, the associated destruction of its ViewRefControl
+ triggers an automatic `ZX_ERR_PEER_CLOSED` signal sent to all ViewRef
+ holders; hence ViewRef holders may track View lifetime.
+
+ As part of View creation, the client creates a linked
+ ViewRef/ViewRefControl pair and hands the pair to Scenic (ViewRef is
+ described above).  The client must not clone the ViewRefControl. It must
+ not remove or modify the ViewRefControl's capabilities; otherwise the View
+ is not created.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>reference</code></td>
+            <td>
+                <code>handle&lt;eventpair&gt;</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ViewHolderToken {:#ViewHolderToken}
+*Defined in [fuchsia.ui.views/view_token.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.views/view_token.fidl#14)*
+
+
+
+ Token that uniquely identifies an attachment point for a `View` in the
+ global scene graph.  Each `ViewHolderToken` has exactly one corresponding
+ `ViewToken`.
+
+ A Scenic client can reference contents from another client by creating a
+ `ViewHolder` resource using this token.  The other client must also create
+ a `View` resource using the corresponding `ViewToken`.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code>handle&lt;eventpair&gt;</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ViewToken {:#ViewToken}
+*Defined in [fuchsia.ui.views/view_token.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.views/view_token.fidl#25)*
+
+
+
+ Token that uniquely identifies a `View`, which is the root point for a
+ subgraph in the global scene graph. Each `ViewToken` has exactly one
+ corresponding `ViewHolderToken`.
+
+ A Scenic client can have its contents referenced from another client by
+ creating a `View` resource using this token.  The other client must also
+ create a `ViewHolder` resource using the corresponding `ViewHolderToken`.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>value</code></td>
+            <td>
+                <code>handle&lt;eventpair&gt;</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
 
 
 
@@ -259,6 +484,22 @@
             <td></td>
         </tr></table>
 
+### Command {:#Command}
+*Defined in [fuchsia.ui.views/commands.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.ui.views/commands.fidl#10)*
+
+ DO NOT USE - Retained for ABI stability in fuchsia.ui.scenic.Command
+
+ DO NOT USE
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>empty</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td></td>
+        </tr></table>
+
 
 
 
diff --git a/sdk/fidl/fuchsia.update.channel/index.md b/sdk/fidl/fuchsia.update.channel/index.md
index bfe115a..05ec0d7 100644
--- a/sdk/fidl/fuchsia.update.channel/index.md
+++ b/sdk/fidl/fuchsia.update.channel/index.md
@@ -33,6 +33,33 @@
             </td>
         </tr></table>
 
+## Provider {:#Provider}
+*Defined in [fuchsia.update.channel/channel.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.update.channel/channel.fidl#9)*
+
+ Information about the state of the update system.
+
+### GetCurrent {:#GetCurrent}
+
+ Retrieve the currently active update channel.
+
+ - response `channel` the currently active update channel.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>channel</code></td>
+            <td>
+                <code>string[128]</code>
+            </td>
+        </tr></table>
+
 
 
 
diff --git a/sdk/fidl/fuchsia.update/index.md b/sdk/fidl/fuchsia.update/index.md
index d1e193d..23cb3be 100644
--- a/sdk/fidl/fuchsia.update/index.md
+++ b/sdk/fidl/fuchsia.update/index.md
@@ -125,14 +125,11 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>USER</code></td>
             <td><code>0</code></td>
-            <td> The update check was initiated by an interactive user, or the user is
- otherwise blocked and waiting for the result of this update check.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>SERVICE</code></td>
             <td><code>1</code></td>
-            <td> The update check was initiated by a service, in the background.
-</td>
+            <td></td>
         </tr></table>
 
 ### ManagerState {:#ManagerState}
@@ -173,67 +170,31 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>IDLE</code></td>
             <td><code>0</code></td>
-            <td> The Manager is currently idle (in between updates).
-
- Next states:
- * `CHECKING_FOR_UPDATES`
-</td>
+            <td></td>
         </tr><tr>
             <td><code>CHECKING_FOR_UPDATES</code></td>
             <td><code>1</code></td>
-            <td> The Manager is currently checking for an update.
-
- Next states:
- * `IDLE` update is not available
- * `UPDATE_AVAILABLE` update is available but not allowed by policy
- * `PERFORMING_UPDATE` update is available and allowed by policy
- * `ENCOUNTERED_ERROR` on error
-</td>
+            <td></td>
         </tr><tr>
             <td><code>UPDATE_AVAILABLE</code></td>
             <td><code>2</code></td>
-            <td> The Manager has found an available update but is not allowed to update
- due to policy.
-
- Next states:
- * `CHECKING_FOR_UPDATES` when CheckNow() is called or a background update starts
-</td>
+            <td></td>
         </tr><tr>
             <td><code>PERFORMING_UPDATE</code></td>
             <td><code>3</code></td>
-            <td> The Manager has started the available update.
-
- Next states:
- * `WAITING_FOR_REBOOT` on success
- * `ENCOUNTERED_ERROR` on error
-</td>
+            <td></td>
         </tr><tr>
             <td><code>WAITING_FOR_REBOOT</code></td>
             <td><code>4</code></td>
-            <td> The update has been performed, and the device is waiting to be rebooted.
-
- Next states:
- * `FINALIZING_UPDATE` after device reboot
- * `ENCOUNTERED_ERROR` on error
-</td>
+            <td></td>
         </tr><tr>
             <td><code>FINALIZING_UPDATE</code></td>
             <td><code>5</code></td>
-            <td> The update is being finalized after reboot.
-
- Next states:
- * `IDLE` on success
- * `ENCOUNTERED_ERROR` on error
-</td>
+            <td></td>
         </tr><tr>
             <td><code>ENCOUNTERED_ERROR</code></td>
             <td><code>6</code></td>
-            <td> The Manager is reporting to Omaha that an error has occurred during the
- update.
-
- Next states:
- * `IDLE`
-</td>
+            <td></td>
         </tr></table>
 
 ### CheckStartedResult {:#CheckStartedResult}
@@ -247,20 +208,15 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>STARTED</code></td>
             <td><code>0</code></td>
-            <td> The update check has been started.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>IN_PROGRESS</code></td>
             <td><code>1</code></td>
-            <td> The update check was not started, as an update is already in progress, `monitor` is
- attached to that update and will immediately get a OnState() call on current state.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>THROTTLED</code></td>
             <td><code>2</code></td>
-            <td> The update check was not started, because too many requests to check have
- been made in a short period of time.
-</td>
+            <td></td>
         </tr></table>
 
 
diff --git a/sdk/fidl/fuchsia.web/index.md b/sdk/fidl/fuchsia.web/index.md
index 8b09d2b..92fd586 100644
--- a/sdk/fidl/fuchsia.web/index.md
+++ b/sdk/fidl/fuchsia.web/index.md
@@ -884,6 +884,884 @@
             </td>
         </tr></table>
 
+## ContextProvider {:#ContextProvider}
+*Defined in [fuchsia.web/context.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.web/context.fidl#17)*
+
+ The top-level service interface which allows for the creation of Context resources.
+
+### Create {:#Create}
+
+ Creates a new browser <a class='link' href='#fuchsia.web.Context'>fuchsia.web.Context</a> whose state is wholly independent and
+ isolated from other Contexts.
+
+ - `context`: An interface request which will receive a bound <a class='link' href='#fuchsia.web.Context'>fuchsia.web.Context</a>
+   service.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>params</code></td>
+            <td>
+                <code><a class='link' href='#CreateContextParams'>CreateContextParams</a></code>
+            </td>
+        </tr><tr>
+            <td><code>context</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#Context'>Context</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+## Context {:#Context}
+*Defined in [fuchsia.web/context.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.web/context.fidl#139)*
+
+ Manages browsing state (e.g. LocalStorage, cookies, etc) associated with a set of
+ <a class='link' href='#fuchsia.web.Frame'>fuchsia.web.Frame</a>.
+
+### CreateFrame {:#CreateFrame}
+
+ Creates a new <a class='link' href='#fuchsia.web.Frame'>fuchsia.web.Frame</a> under this <a class='link' href='#fuchsia.web.Context'>fuchsia.web.Context</a>. Destruction of a
+ <a class='link' href='#fuchsia.web.Context'>fuchsia.web.Context</a> triggers the destruction of all of its associated
+ <a class='link' href='#fuchsia.web.Frame'>fuchsia.web.Frame</a>. <a class='link' href='#fuchsia.web.Frame'>fuchsia.web.Frame</a> can be transferred to another component but
+ cannot be shared across multiple components.
+
+ - `frame`: An interface request that will be bound to the created <a class='link' href='#fuchsia.web.Frame'>fuchsia.web.Frame</a>.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>frame</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#Frame'>Frame</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### CreateFrameWithParams {:#CreateFrameWithParams}
+
+ Similar to <a class='link' href='../fuchsia.web.Context/index.html'>fuchsia.web.Context</a>/<a class='link' href='../fuchsia.web.Context/index.html#CreateFrame'>CreateFrame</a>, with extra parameters.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>params</code></td>
+            <td>
+                <code><a class='link' href='#CreateFrameParams'>CreateFrameParams</a></code>
+            </td>
+        </tr><tr>
+            <td><code>frame</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#Frame'>Frame</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### GetCookieManager {:#GetCookieManager}
+
+ Used to observe cookies for sites hosted under this Context.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>manager</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#CookieManager'>CookieManager</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### GetRemoteDebuggingPort {:#GetRemoteDebuggingPort}
+
+ Waits until debugging is available on one or more Frames, and returns the DevTools port
+ number. Multiple calls may be queued to received the port number.
+
+ If an error occured, the <a class='link' href='#fuchsia.web.ContextError'>fuchsia.web.ContextError</a> will be set to this value:
+ - `REMOTE_DEBUGGING_PORT_NOT_OPENED`: |remote_debugging_port| was not set in
+   <a class='link' href='#fuchsia.web.CreateContextParams'>fuchsia.web.CreateContextParams</a> or the remote debugging service failed to start.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#Context_GetRemoteDebuggingPort_Result'>Context_GetRemoteDebuggingPort_Result</a></code>
+            </td>
+        </tr></table>
+
+## CookieManager {:#CookieManager}
+*Defined in [fuchsia.web/cookie.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.web/cookie.fidl#10)*
+
+ Provides methods for monitoring and accessing browser cookie state.
+
+### ObserveCookieChanges {:#ObserveCookieChanges}
+
+ Observe changes to all cookies named `name` that would be sent in a request to `url`.
+
+ If neither `url` nor `name` are set then all cookies are observed. If only `url` is set
+ then all cookies for that URL are observed. If both are set then only cookies matching both
+ fields are observed.
+
+ |changes| iterates over a stream of cookie changes. Additions or updates are expressed as
+ complete cookies, while deletions are expressed as cookies with no `value` set.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>url</code></td>
+            <td>
+                <code>string[65536]?</code>
+            </td>
+        </tr><tr>
+            <td><code>name</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+        </tr><tr>
+            <td><code>changes</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#CookiesIterator'>CookiesIterator</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### GetCookieList {:#GetCookieList}
+
+ Returns a list of Cookies, optionally limited to those matching `url`, and optionally
+ `name`. `cookies` iterates over the matching cookies, including their `value`s.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>url</code></td>
+            <td>
+                <code>string[65536]?</code>
+            </td>
+        </tr><tr>
+            <td><code>name</code></td>
+            <td>
+                <code>string?</code>
+            </td>
+        </tr><tr>
+            <td><code>cookies</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#CookiesIterator'>CookiesIterator</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+## CookiesIterator {:#CookiesIterator}
+*Defined in [fuchsia.web/cookie.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.web/cookie.fidl#32)*
+
+ Used to iterator over a set of cookies, or a stream of changes to cookies.
+
+### GetNext {:#GetNext}
+
+ Fetches the next batch of cookies, or of changes to cookies.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>changed_cookies</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#Cookie'>Cookie</a>&gt;</code>
+            </td>
+        </tr></table>
+
+## Debug {:#Debug}
+*Defined in [fuchsia.web/debug.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.web/debug.fidl#9)*
+
+ The debug service which allows to enable the DevTools service on Contexts.
+
+### EnableDevTools {:#EnableDevTools}
+
+ Enables the DevTools service on every subsequent Context creation and
+ and delivers subsequent DevTools events to the supplied `listener`.
+ The callback indicates when the WebEngine is in a debuggable state.
+ Events will be sent to every `listener` registered with this method.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>listener</code></td>
+            <td>
+                <code><a class='link' href='#DevToolsListener'>DevToolsListener</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+## DevToolsListener {:#DevToolsListener}
+*Defined in [fuchsia.web/debug.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.web/debug.fidl#18)*
+
+ Interface used to observe DevTools service availability events.
+
+### OnContextDevToolsAvailable {:#OnContextDevToolsAvailable}
+
+ Called when the DevTools service is available on a new Context.
+
+ `listener`: Channel over which DevTools events for the new Context will
+             be delivered. This channel will disconnect when the Context
+             is detroyed.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>listener</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#DevToolsPerContextListener'>DevToolsPerContextListener</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+## DevToolsPerContextListener {:#DevToolsPerContextListener}
+*Defined in [fuchsia.web/debug.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.web/debug.fidl#29)*
+
+ Interface supplied by the debugging component to observe the DevTools
+ service opening event.
+
+### OnHttpPortOpen {:#OnHttpPortOpen}
+
+ Called when the DevTools service starts accepting TCP connections on
+ `port`. `port` will remain open until the Context is destroyed.
+
+ `port`: The port used by the service.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>port</code></td>
+            <td>
+                <code>uint16</code>
+            </td>
+        </tr></table>
+
+
+
+## Frame {:#Frame}
+*Defined in [fuchsia.web/frame.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.web/frame.fidl#44)*
+
+
+### CreateView {:#CreateView}
+
+ Creates a new view using the specified `view_token`. Caller should pass the other end of
+ the token to <a class='link' href='../fuchsia.ui.gfx.ViewHolderArgs/index.html'>fuchsia.ui.gfx.ViewHolderArgs</a>/<a class='link' href='../fuchsia.ui.gfx.ViewHolderArgs/index.html#token'>token</a> to attach the new view to a view tree.
+
+ - `view_token`: Token for the new view.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>view_token</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.ui.views/index.html'>fuchsia.ui.views</a>/<a class='link' href='../fuchsia.ui.views/index.html#ViewToken'>ViewToken</a></code>
+            </td>
+        </tr></table>
+
+
+
+### GetMediaPlayer {:#GetMediaPlayer}
+
+ Returns a <a class='link' href='#fuchsia.media.sessions2.Player'>fuchsia.media.sessions2.Player</a> interface through which media (i.e.
+ video/audio) playback in the frame may be observed, and/or controlled. Only one
+ <a class='link' href='#fuchsia.media.sessions2.Player'>fuchsia.media.sessions2.Player</a> may be active at a time, for each <a class='link' href='#fuchsia.web.Frame'>fuchsia.web.Frame</a>.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>player</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='../fuchsia.media.sessions2/index.html'>fuchsia.media.sessions2</a>/<a class='link' href='../fuchsia.media.sessions2/index.html#Player'>Player</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### GetNavigationController {:#GetNavigationController}
+
+ Returns an interface through which the <a class='link' href='#fuchsia.web.Frame'>fuchsia.web.Frame</a> may be navigated to a desired
+ URL, reloaded, etc.
+
+ - `controller`: An asynchronous interface request for the <a class='link' href='#fuchsia.web.Frame'>fuchsia.web.Frame</a>'s
+ <a class='link' href='#fuchsia.web.NavigationController'>fuchsia.web.NavigationController</a>.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>controller</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#NavigationController'>NavigationController</a>&gt;</code>
+            </td>
+        </tr></table>
+
+
+
+### ExecuteJavaScript {:#ExecuteJavaScript}
+
+ Executes a UTF-8 encoded `script` in the <a class='link' href='#fuchsia.web.Frame'>fuchsia.web.Frame</a> if the
+ <a class='link' href='#fuchsia.web.Frame'>fuchsia.web.Frame</a>'s URL has an origin which matches entries in `origins`.
+
+ At least one `origins` entry must be specified. If a wildcard `"*"` is specified in
+ `origins`, then the script will be evaluated unconditionally.
+
+ Returns the result of executing `script`, as a JSON-encoded string.
+
+ Note that scripts share the same execution context as the document,
+ meaning that document may modify variables, classes, or objects set by
+ the script in arbitrary or unpredictable ways.
+
+ If an error occured, the FrameError will be set to one of these values:
+ - `BUFFER_NOT_UTF8`: `script` is not UTF-8 encoded.
+ - `INVALID_ORIGIN`: The <a class='link' href='#fuchsia.web.Frame'>fuchsia.web.Frame</a>'s current URL does not match any of the
+    values in `origins` or `origins` is an empty vector.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>origins</code></td>
+            <td>
+                <code>vector&lt;string&gt;</code>
+            </td>
+        </tr><tr>
+            <td><code>script</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.mem/index.html'>fuchsia.mem</a>/<a class='link' href='../fuchsia.mem/index.html#Buffer'>Buffer</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#Frame_ExecuteJavaScript_Result'>Frame_ExecuteJavaScript_Result</a></code>
+            </td>
+        </tr></table>
+
+### ExecuteJavaScriptNoResult {:#ExecuteJavaScriptNoResult}
+
+ Variant of <a class='link' href='../fuchsia.web.Frame/index.html'>fuchsia.web.Frame</a>/<a class='link' href='../fuchsia.web.Frame/index.html#ExecuteJavaScript'>ExecuteJavaScript</a> which executes the supplied script
+ without returning a result.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>origins</code></td>
+            <td>
+                <code>vector&lt;string&gt;</code>
+            </td>
+        </tr><tr>
+            <td><code>script</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.mem/index.html'>fuchsia.mem</a>/<a class='link' href='../fuchsia.mem/index.html#Buffer'>Buffer</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#Frame_ExecuteJavaScriptNoResult_Result'>Frame_ExecuteJavaScriptNoResult_Result</a></code>
+            </td>
+        </tr></table>
+
+### AddBeforeLoadJavaScript {:#AddBeforeLoadJavaScript}
+
+ Executes a UTF-8 encoded `script` for every subsequent page load where the
+ <a class='link' href='#fuchsia.web.Frame'>fuchsia.web.Frame</a>'s URL has an origin reflected in `origins`. The script is executed
+ early, prior to the execution of the document's scripts.
+
+ Scripts are identified by a client-managed identifier `id`. Any script previously injected
+ using the same `id` will be replaced.
+
+ The order in which multiple bindings are executed is the same as the order in which the
+ bindings were added. If a script is added which clobbers an existing script of the same
+ `id`, the previous script's precedence in the injection order will be preserved.
+
+ At least one `origins` entry must be specified. If a wildcard `"*"` is specified in
+ `origins`, then the script will be evaluated unconditionally.
+
+ If an error occured, the <a class='link' href='#fuchsia.web.FrameError'>fuchsia.web.FrameError</a> will be set to one of these values:
+ - `BUFFER_NOT_UTF8`: `script` is not UTF-8 encoded.
+ - `INVALID_ORIGIN`: `origins` is an empty vector.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr><tr>
+            <td><code>origins</code></td>
+            <td>
+                <code>vector&lt;string&gt;</code>
+            </td>
+        </tr><tr>
+            <td><code>script</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.mem/index.html'>fuchsia.mem</a>/<a class='link' href='../fuchsia.mem/index.html#Buffer'>Buffer</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#Frame_AddBeforeLoadJavaScript_Result'>Frame_AddBeforeLoadJavaScript_Result</a></code>
+            </td>
+        </tr></table>
+
+### RemoveBeforeLoadJavaScript {:#RemoveBeforeLoadJavaScript}
+
+ Removes a previously added JavaScript snippet identified by `id`. This is a no-op if there
+ is no JavaScript snippet identified by `id`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>id</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+        </tr></table>
+
+
+
+### PostMessage {:#PostMessage}
+
+ Posts a message to the frame's onMessage handler.
+
+ `target_origin` restricts message delivery to the specified origin. If `target_origin` is
+ `"*"`, then the message will be sent to the document regardless of its origin.
+ See the
+ [https://html.spec.whatwg.org/multipage/web-messaging.html#posting-messages](HTML spec)
+ section 9.4.3 for more details on how the target origin policy is applied.
+
+ If an error occured, the <a class='link' href='#fuchsia.web.FrameError'>fuchsia.web.FrameError</a> will be set to one of these values:
+ - `INTERNAL_ERROR`: The WebEngine failed to create a message pipe.
+ - `BUFFER_NOT_UTF8`: The script in `message`'s `data` property is not UTF-8 encoded.
+ - `INVALID_ORIGIN`: `origins` is an empty vector.
+ - `NO_DATA_IN_MESSAGE`: The `data` property is missing in `message`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>target_origin</code></td>
+            <td>
+                <code>string[65536]</code>
+            </td>
+        </tr><tr>
+            <td><code>message</code></td>
+            <td>
+                <code><a class='link' href='#WebMessage'>WebMessage</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#Frame_PostMessage_Result'>Frame_PostMessage_Result</a></code>
+            </td>
+        </tr></table>
+
+### SetNavigationEventListener {:#SetNavigationEventListener}
+
+ Sets the listener for handling page navigation events.
+
+ - `listener`: The observer to use. Unregisters any existing listener is null.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>listener</code></td>
+            <td>
+                <code><a class='link' href='#NavigationEventListener'>NavigationEventListener</a>?</code>
+            </td>
+        </tr></table>
+
+
+
+### SetJavaScriptLogLevel {:#SetJavaScriptLogLevel}
+
+ If set to a value other than <a class='link' href='../fuchsia.web.ConsoleLogLevel/index.html'>fuchsia.web.ConsoleLogLevel</a>/<a class='link' href='../fuchsia.web.ConsoleLogLevel/index.html#NONE'>NONE</a>, allows web content to
+ log messages to the system logger using the console APIs (`debug()`, `log()`, `info()`,
+ `warn()` and `error()`).
+
+ When logged to the system logger:
+ - `debug()`, `log()` and `info()` logs are logged with
+   <a class='link' href='../fuchsia.logger.LogLevelFilter/index.html'>fuchsia.logger.LogLevelFilter</a>/<a class='link' href='../fuchsia.logger.LogLevelFilter/index.html#INFO'>INFO</a> severity level.
+ - `warn()` logs are logged with <a class='link' href='../fuchsia.logger.LogLevelFilter/index.html'>fuchsia.logger.LogLevelFilter</a>/<a class='link' href='../fuchsia.logger.LogLevelFilter/index.html#INFO'>INFO</a> severity level.
+ - `error()` logs are logged with <a class='link' href='../fuchsia.logger.LogLevelFilter/index.html'>fuchsia.logger.LogLevelFilter</a>/<a class='link' href='../fuchsia.logger.LogLevelFilter/index.html#INFO'>INFO</a> severity level.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>level</code></td>
+            <td>
+                <code><a class='link' href='#ConsoleLogLevel'>ConsoleLogLevel</a></code>
+            </td>
+        </tr></table>
+
+
+
+### SetEnableInput {:#SetEnableInput}
+
+ Used at runtime to enable or disable user input processing (e.g. keyboard, mouse, touch) on
+ a <a class='link' href='#fuchsia.web.Frame'>fuchsia.web.Frame</a>.
+
+ Input is enabled by default.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>enable_input</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+        </tr></table>
+
+
+
+### SetPopupFrameCreationListener {:#SetPopupFrameCreationListener}
+
+ Sets the listener for handling popup frame opened by web content. If no listener is
+ present, then any new popup frame will be blocked.
+
+ - `listener`: The listener to use. Unregisters any existing listener if null.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>listener</code></td>
+            <td>
+                <code><a class='link' href='#PopupFrameCreationListener'>PopupFrameCreationListener</a>?</code>
+            </td>
+        </tr></table>
+
+
+
+### SetUrlRequestRewriteRules {:#SetUrlRequestRewriteRules}
+
+ Supplies a set of <a class='link' href='#fuchsia.web.UrlRequestRewriteRule'>fuchsia.web.UrlRequestRewriteRule</a> to apply on every subsequent URL
+ request.
+ - `rules` are cumulative and applied in order.
+ - `rules` will be validated before being applied. If `rules` are invalid, the
+   <a class='link' href='#fuchsia.web.Frame'>fuchsia.web.Frame</a> will be closed with `ERR_INVALID_ARGS`.
+ - <a class='link' href='../fuchsia.web.Frame/index.html'>fuchsia.web.Frame</a>/<a class='link' href='../fuchsia.web.Frame/index.html#SetUrlRequestRewriteRules'>SetUrlRequestRewriteRules</a> must not be called again until its
+   acknowledgement callback has been processed. If this happens, the <a class='link' href='#fuchsia.web.Frame'>fuchsia.web.Frame</a>
+   will be closed with `ERR_BAD_STATE`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>rules</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#UrlRequestRewriteRule'>UrlRequestRewriteRule</a>&gt;[4096]</code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+## MessagePort {:#MessagePort}
+*Defined in [fuchsia.web/frame.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.web/frame.fidl#199)*
+
+ Represents one end of an HTML5 MessageChannel. Can be used to send and exchange Messages with
+ the peered MessagePort in the Frame's script context. The port is destroyed when either end of
+ the MessagePort channel is torn down.
+
+### PostMessage {:#PostMessage}
+
+ Sends a <a class='link' href='#fuchsia.web.WebMessage'>fuchsia.web.WebMessage</a> to the peer. These are processed in order, one at a
+ time. It is not necessary for the caller to wait for the completion callback before calling
+ <a class='link' href='../fuchsia.web.MessagePort/index.html'>fuchsia.web.MessagePort</a>/<a class='link' href='../fuchsia.web.MessagePort/index.html#PostMessage'>PostMessage</a> again.
+
+ If an error occured, the <a class='link' href='#fuchsia.web.FrameError'>fuchsia.web.FrameError</a> will be set to one of these value:
+ - `BUFFER_NOT_UTF8`: The script in `message`'s `data` property is not UTF-8 encoded.
+ - `NO_DATA_IN_MESSAGE`: The `data` property is missing in `message`.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>message</code></td>
+            <td>
+                <code><a class='link' href='#WebMessage'>WebMessage</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#MessagePort_PostMessage_Result'>MessagePort_PostMessage_Result</a></code>
+            </td>
+        </tr></table>
+
+### ReceiveMessage {:#ReceiveMessage}
+
+ Asynchronously reads the next message from the channel. The client should invoke the
+ callback when it is ready to process another message. Unreceived messages are buffered
+ on the sender's side and bounded by its available resources.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>message</code></td>
+            <td>
+                <code><a class='link' href='#WebMessage'>WebMessage</a></code>
+            </td>
+        </tr></table>
+
+## PopupFrameCreationListener {:#PopupFrameCreationListener}
+*Defined in [fuchsia.web/frame.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.web/frame.fidl#225)*
+
+
+### OnPopupFrameCreated {:#OnPopupFrameCreated}
+
+ Called when a <a class='link' href='#fuchsia.web.Frame'>fuchsia.web.Frame</a> has created a new popup `frame`. Information about the
+ popup frame, and how it was created, is provided via `info`. Additional popup frames are
+ delivered after the the acknowledgement callback is invoked.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>frame</code></td>
+            <td>
+                <code><a class='link' href='#Frame'>Frame</a></code>
+            </td>
+        </tr><tr>
+            <td><code>info</code></td>
+            <td>
+                <code><a class='link' href='#PopupFrameCreationInfo'>PopupFrameCreationInfo</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+## NavigationEventListener {:#NavigationEventListener}
+*Defined in [fuchsia.web/navigation.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.web/navigation.fidl#11)*
+
+ Interface supplied by the embedder for receiving notifications about navigation events in a
+ <a class='link' href='#fuchsia.web.Frame'>fuchsia.web.Frame</a>.
+
+### OnNavigationStateChanged {:#OnNavigationStateChanged}
+
+ Called when user-visible navigation state has changed since <a class='link' href='#fuchsia.web.Frame'>fuchsia.web.Frame</a> creation
+ or the last acknowledgement callback, whichever occurred last. `change` will contain all
+ the differences in navigation state since the last acknowledgement. Any unchanged
+ properties will be left unset in `change`.
+
+ Implementer must call the acknowledgement callback to receive new navigation events.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>change</code></td>
+            <td>
+                <code><a class='link' href='#NavigationState'>NavigationState</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+## NavigationController {:#NavigationController}
+*Defined in [fuchsia.web/navigation.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.web/navigation.fidl#31)*
+
+ Provides methods for controlling and querying the navigation state of a <a class='link' href='#fuchsia.web.Frame'>fuchsia.web.Frame</a>.
+
+### LoadUrl {:#LoadUrl}
+
+ Tells the <a class='link' href='#fuchsia.web.Frame'>fuchsia.web.Frame</a> to navigate to a `url`.
+
+ - `url`:    The address to navigate to.
+ - `params`: Additional parameters that affect how the resource will be
+   loaded (e.g. cookies, HTTP headers, etc.)
+
+ If an error occured, the <a class='link' href='#fuchsia.web.NavigationControllerError'>fuchsia.web.NavigationControllerError</a> will be set to one of
+ these values:
+ - `INVALID_URL`: The `url` parameter is invalid.
+ - `INVALID_HEADER`: At least one of the headers in <a class='link' href='../fuchsia.web.LoadUrlParams/index.html'>fuchsia.web.LoadUrlParams</a>/<a class='link' href='../fuchsia.web.LoadUrlParams/index.html#headers'>headers</a>
+   is invalid.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>url</code></td>
+            <td>
+                <code>string[65536]</code>
+            </td>
+        </tr><tr>
+            <td><code>params</code></td>
+            <td>
+                <code><a class='link' href='#LoadUrlParams'>LoadUrlParams</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#NavigationController_LoadUrl_Result'>NavigationController_LoadUrl_Result</a></code>
+            </td>
+        </tr></table>
+
+### GoBack {:#GoBack}
+
+ Tells the <a class='link' href='#fuchsia.web.Frame'>fuchsia.web.Frame</a> to navigate to the previous page in its history, if any.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### GoForward {:#GoForward}
+
+ Tells the <a class='link' href='#fuchsia.web.Frame'>fuchsia.web.Frame</a> to navigate to the next page in its history, if any.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### Stop {:#Stop}
+
+ Tells the <a class='link' href='#fuchsia.web.Frame'>fuchsia.web.Frame</a> to stop the current navigation if a navigation is ongoing.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+
+### Reload {:#Reload}
+
+ Tells the <a class='link' href='#fuchsia.web.Frame'>fuchsia.web.Frame</a> to reload the current page.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>type</code></td>
+            <td>
+                <code><a class='link' href='#ReloadType'>ReloadType</a></code>
+            </td>
+        </tr></table>
+
+
+
+### GetVisibleEntry {:#GetVisibleEntry}
+
+ Returns information for the currently visible content regardless of loading state, or an
+ empty entry if no content is being displayed.
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>entry</code></td>
+            <td>
+                <code><a class='link' href='#NavigationState'>NavigationState</a></code>
+            </td>
+        </tr></table>
+
 
 
 ## **STRUCTS**
@@ -979,6 +1857,97 @@
     <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr>
 </table>
 
+### Context_GetRemoteDebuggingPort_Response {:#Context_GetRemoteDebuggingPort_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>port</code></td>
+            <td>
+                <code>uint16</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Frame_ExecuteJavaScript_Response {:#Frame_ExecuteJavaScript_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.mem/index.html'>fuchsia.mem</a>/<a class='link' href='../fuchsia.mem/index.html#Buffer'>Buffer</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### Frame_ExecuteJavaScriptNoResult_Response {:#Frame_ExecuteJavaScriptNoResult_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr>
+</table>
+
+### Frame_AddBeforeLoadJavaScript_Response {:#Frame_AddBeforeLoadJavaScript_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr>
+</table>
+
+### Frame_PostMessage_Response {:#Frame_PostMessage_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr>
+</table>
+
+### MessagePort_PostMessage_Response {:#MessagePort_PostMessage_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr>
+</table>
+
+### NavigationController_LoadUrl_Response {:#NavigationController_LoadUrl_Response}
+*generated*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr>
+</table>
+
 
 
 ## **ENUMS**
@@ -994,8 +1963,7 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>REMOTE_DEBUGGING_PORT_NOT_OPENED</code></td>
             <td><code>1</code></td>
-            <td> The remote debugging service was not opened.
-</td>
+            <td></td>
         </tr></table>
 
 ### ConsoleLogLevel {:#ConsoleLogLevel}
@@ -1009,28 +1977,23 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>NONE</code></td>
             <td><code>100</code></td>
-            <td> No logging.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>DEBUG</code></td>
             <td><code>-1</code></td>
-            <td> Outputs messages from `console.debug()` and above levels.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>INFO</code></td>
             <td><code>0</code></td>
-            <td> Outputs messages from `console.log()`, `console.info()` and above levels.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>WARN</code></td>
             <td><code>1</code></td>
-            <td> Outputs messages from `console.warn()` and `console.error()`.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>ERROR</code></td>
             <td><code>2</code></td>
-            <td> Outputs messages from `console.error()`.
-</td>
+            <td></td>
         </tr></table>
 
 ### FrameError {:#FrameError}
@@ -1045,23 +2008,19 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>INTERNAL_ERROR</code></td>
             <td><code>1</code></td>
-            <td> An internal error occured.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>BUFFER_NOT_UTF8</code></td>
             <td><code>2</code></td>
-            <td> The provided buffer is not UTF-8 encoded.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>INVALID_ORIGIN</code></td>
             <td><code>3</code></td>
-            <td> The Frame's URL does not match any of the origins provided by the caller.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>NO_DATA_IN_MESSAGE</code></td>
             <td><code>4</code></td>
-            <td> The required `data` property is missing from a <a class='link' href='#fuchsia.web.WebMessage'>fuchsia.web.WebMessage</a>.
-</td>
+            <td></td>
         </tr></table>
 
 ### NavigationControllerError {:#NavigationControllerError}
@@ -1076,13 +2035,11 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>INVALID_URL</code></td>
             <td><code>1</code></td>
-            <td> The provided URL is invalid.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>INVALID_HEADER</code></td>
             <td><code>2</code></td>
-            <td> At least one of the provided headers was invalid.
-</td>
+            <td></td>
         </tr></table>
 
 ### ReloadType {:#ReloadType}
@@ -1097,13 +2054,11 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>PARTIAL_CACHE</code></td>
             <td><code>0</code></td>
-            <td> Reloads the current entry, bypassing the cache for the main resource.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>NO_CACHE</code></td>
             <td><code>1</code></td>
-            <td> Reloads the current entry, bypassing the cache entirely.
-</td>
+            <td></td>
         </tr></table>
 
 ### LoadUrlReason {:#LoadUrlReason}
@@ -1118,13 +2073,11 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>LINK</code></td>
             <td><code>0</code></td>
-            <td> Navigation was initiated by the user following a link.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>TYPED</code></td>
             <td><code>1</code></td>
-            <td> Navigation was initiated by a user-provided URL.
-</td>
+            <td></td>
         </tr></table>
 
 ### PageType {:#PageType}
@@ -1139,13 +2092,158 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>NORMAL</code></td>
             <td><code>0</code></td>
-            <td> Regular web page.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>ERROR</code></td>
             <td><code>1</code></td>
-            <td> Error page.
-</td>
+            <td></td>
+        </tr></table>
+
+### ContextError {:#ContextError}
+Type: <code>int32</code>
+
+*Defined in [fuchsia.web/context.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.web/context.fidl#9)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>REMOTE_DEBUGGING_PORT_NOT_OPENED</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr></table>
+
+### ConsoleLogLevel {:#ConsoleLogLevel}
+Type: <code>int32</code>
+
+*Defined in [fuchsia.web/frame.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.web/frame.fidl#12)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>NONE</code></td>
+            <td><code>100</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>DEBUG</code></td>
+            <td><code>-1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>INFO</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>WARN</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>ERROR</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr></table>
+
+### FrameError {:#FrameError}
+Type: <code>int32</code>
+
+*Defined in [fuchsia.web/frame.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.web/frame.fidl#30)*
+
+ Represents the return status of a <a class='link' href='#fuchsia.web.Frame'>fuchsia.web.Frame</a> method.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>INTERNAL_ERROR</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>BUFFER_NOT_UTF8</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>INVALID_ORIGIN</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>NO_DATA_IN_MESSAGE</code></td>
+            <td><code>4</code></td>
+            <td></td>
+        </tr></table>
+
+### NavigationControllerError {:#NavigationControllerError}
+Type: <code>int32</code>
+
+*Defined in [fuchsia.web/navigation.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.web/navigation.fidl#22)*
+
+ Represents the return status of a <a class='link' href='#fuchsia.web.NavigationController'>fuchsia.web.NavigationController</a> method.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>INVALID_URL</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>INVALID_HEADER</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr></table>
+
+### ReloadType {:#ReloadType}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.web/navigation.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.web/navigation.fidl#104)*
+
+ Characterizes the type of reload.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>PARTIAL_CACHE</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>NO_CACHE</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr></table>
+
+### LoadUrlReason {:#LoadUrlReason}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.web/navigation.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.web/navigation.fidl#113)*
+
+ Characterizes the origin of a <a class='link' href='../fuchsia.web.NavigationController/index.html'>fuchsia.web.NavigationController</a>/<a class='link' href='../fuchsia.web.NavigationController/index.html#LoadUrl'>LoadUrl</a> request.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>LINK</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>TYPED</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr></table>
+
+### PageType {:#PageType}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.web/navigation.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.web/navigation.fidl#122)*
+
+ Characterizes the page type in a <a class='link' href='#fuchsia.web.NavigationState'>fuchsia.web.NavigationState</a>.
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>NORMAL</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>ERROR</code></td>
+            <td><code>1</code></td>
+            <td></td>
         </tr></table>
 
 
@@ -1704,6 +2802,558 @@
             <td></td>
         </tr></table>
 
+### ContentDirectoryProvider {:#ContentDirectoryProvider}
+
+
+*Defined in [fuchsia.web/context.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.web/context.fidl#46)*
+
+ Defines a provider which hosts resources from a <a class='link' href='#fuchsia.io.Directory'>fuchsia.io.Directory</a>. Content can `GET`
+ resource files via the provider, but not enumerate directories. Resources can be accessed by
+ their URLs: `fuchsia-dir://<provider-name>/<path/to/resource>`
+
+ By default the MIME types of files are determined automatically by "sniffing" the contents of
+ the files. No content encoding will be declared, which browsers will interpret as meaning
+ `"text/plain"`.
+
+ Content type and encoding metadata may optionally be specified explicitly by metadata files,
+ which reside alongside the file. Metadata is expressed in JSON files, named after the files
+ they describe with a `"._metadata"` suffix.
+
+ For example, the file `"index.html"` would have the a metadata file called
+ `"index.html._metadata"`, with the following contents:
+ ```
+ {
+   "charset": "utf-8",
+   "mime": "text/html"
+ }
+ ```
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>name</code></td>
+            <td>
+                <code>string[255]</code>
+            </td>
+            <td> Name of the provider. Must be non-empty and composed solely of alphanumerics, dots, and
+ dashes.
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>directory</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.io/index.html'>fuchsia.io</a>/<a class='link' href='../fuchsia.io/index.html#Directory'>Directory</a></code>
+            </td>
+            <td> Directory containing the files served by this provider.
+</td>
+        </tr></table>
+
+### CreateContextParams {:#CreateContextParams}
+
+
+*Defined in [fuchsia.web/context.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.web/context.fidl#87)*
+
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>service_directory</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.io/index.html'>fuchsia.io</a>/<a class='link' href='../fuchsia.io/index.html#Directory'>Directory</a></code>
+            </td>
+            <td> Service directory to be used by the context. The following services must be present in the
+ directory:
+ - <a class='link' href='#fuchsia.deprecatedtimezone.Timezone'>fuchsia.deprecatedtimezone.Timezone</a>
+ - <a class='link' href='#fuchsia.device.NameProvider'>fuchsia.device.NameProvider</a>
+ - <a class='link' href='#fuchsia.fonts.Provider'>fuchsia.fonts.Provider</a>
+ - <a class='link' href='#fuchsia.logger.LogSink'>fuchsia.logger.LogSink</a>
+ - <a class='link' href='#fuchsia.process.Launcher'>fuchsia.process.Launcher</a>
+
+ The following services must be present in order to present web content in a Scenic view
+ using <a class='link' href='../fuchsia.web.Frame/index.html'>fuchsia.web.Frame</a>/<a class='link' href='../fuchsia.web.Frame/index.html#CreateView'>CreateView</a>:
+ - <a class='link' href='#fuchsia.ui.scenic.Scenic'>fuchsia.ui.scenic.Scenic</a>
+ - <a class='link' href='#fuchsia.ui.input.ImeService'>fuchsia.ui.input.ImeService</a>
+ - <a class='link' href='#fuchsia.ui.input.ImeVisibilityService'>fuchsia.ui.input.ImeVisibilityService</a>
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>data_directory</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.io/index.html'>fuchsia.io</a>/<a class='link' href='../fuchsia.io/index.html#Directory'>Directory</a></code>
+            </td>
+            <td> Handle to the directory that will contain the <a class='link' href='#fuchsia.web.Context'>fuchsia.web.Context</a>'s persistent data. If
+ it is left unset, then the created <a class='link' href='#fuchsia.web.Context'>fuchsia.web.Context</a> will be stateless, with all of
+ its data discarded upon <a class='link' href='#fuchsia.web.Context'>fuchsia.web.Context</a> destruction.
+
+ If set, `data_directory` must not be shared with any other <a class='link' href='#fuchsia.web.Context'>fuchsia.web.Context</a>.
+</td>
+        </tr><tr>
+            <td>3</td>
+            <td><code>user_agent_product</code></td>
+            <td>
+                <code>string[128]</code>
+            </td>
+            <td> Optional suffix to append to the UserAgent string, to describe the
+ embedder's product & version. See the User-Agent HTTP header
+ specification at https://tools.ietf.org/html/rfc7231#section-5.5.3
+</td>
+        </tr><tr>
+            <td>4</td>
+            <td><code>user_agent_version</code></td>
+            <td>
+                <code>string[128]</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>5</td>
+            <td><code>remote_debugging_port</code></td>
+            <td>
+                <code>uint16</code>
+            </td>
+            <td> Enables Frames to be created with remote debugging enabled using the DevTools protocol. If
+ `port` is 0, then an ephemeral port will be used, which can be queried via the
+ <a class='link' href='../fuchsia.web.Context/index.html'>fuchsia.web.Context</a>/<a class='link' href='../fuchsia.web.Context/index.html#GetRemoteDebuggingPort'>GetRemoteDebuggingPort</a> API.
+</td>
+        </tr><tr>
+            <td>6</td>
+            <td><code>content_directories</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#ContentDirectoryProvider'>ContentDirectoryProvider</a>&gt;[100]</code>
+            </td>
+            <td> List of providers whose contents will be served by `fuchsia-dir://` URLs.
+</td>
+        </tr><tr>
+            <td>7</td>
+            <td><code>features</code></td>
+            <td>
+                <code><a class='link' href='#ContextFeatureFlags'>ContextFeatureFlags</a></code>
+            </td>
+            <td> Optional features that should be enabled for this context. Some features may also require
+ additional services in `service_directory`.
+</td>
+        </tr><tr>
+            <td>8</td>
+            <td><code>playready_key_system</code></td>
+            <td>
+                <code>string[128]</code>
+            </td>
+            <td> Enables PlayReady CDM for the Context using the specified string as a key system
+ string. The string should be a reverse domain name, as required by
+ [EME API](https://www.w3.org/TR/encrypted-media/#key-system). Requires
+ <a class='link' href='#fuchsia.media.drm.PlayReady'>fuchsia.media.drm.PlayReady</a> service.
+</td>
+        </tr></table>
+
+### CreateFrameParams {:#CreateFrameParams}
+
+
+*Defined in [fuchsia.web/context.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.web/context.fidl#165)*
+
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>enable_remote_debugging</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Set to true to enable remote debugging. The <a class='link' href='#fuchsia.web.Frame'>fuchsia.web.Frame</a> will be closed with
+ `ERR_INVALID_ARGS if |remote_debugging_port| was not set in
+ <a class='link' href='#fuchsia.web.CreateContextParams'>fuchsia.web.CreateContextParams</a>.
+</td>
+        </tr></table>
+
+### CookieId {:#CookieId}
+
+
+*Defined in [fuchsia.web/cookie.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.web/cookie.fidl#37)*
+
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>name</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> The name of the cookie. An arbitrary string defined by the website.
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>domain</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> Specifies the host that is allowed to receive the cookie.
+</td>
+        </tr><tr>
+            <td>3</td>
+            <td><code>path</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> Specifies the URL path prefix which is required to receive the cookie.
+</td>
+        </tr></table>
+
+### Cookie {:#Cookie}
+
+
+*Defined in [fuchsia.web/cookie.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.web/cookie.fidl#48)*
+
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>id</code></td>
+            <td>
+                <code><a class='link' href='#CookieId'>CookieId</a></code>
+            </td>
+            <td> A table with fields to identify a cookie.
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>value</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> The cookie value.
+</td>
+        </tr></table>
+
+### WebMessage {:#WebMessage}
+
+
+*Defined in [fuchsia.web/frame.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.web/frame.fidl#175)*
+
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>data</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.mem/index.html'>fuchsia.mem</a>/<a class='link' href='../fuchsia.mem/index.html#Buffer'>Buffer</a></code>
+            </td>
+            <td> The message payload, encoded as an UTF-8 string. This is a required property.
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>incoming_transfer</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#IncomingTransferable'>IncomingTransferable</a>&gt;</code>
+            </td>
+            <td> Optional list of objects transferred into the <a class='link' href='#fuchsia.web.MessagePort'>fuchsia.web.MessagePort</a> from the FIDL
+ client.
+</td>
+        </tr><tr>
+            <td>3</td>
+            <td><code>outgoing_transfer</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#OutgoingTransferable'>OutgoingTransferable</a>&gt;</code>
+            </td>
+            <td> Optional list of objects transferred out of the <a class='link' href='#fuchsia.web.MessagePort'>fuchsia.web.MessagePort</a> to the FIDL
+ client.
+</td>
+        </tr></table>
+
+### PopupFrameCreationInfo {:#PopupFrameCreationInfo}
+
+
+*Defined in [fuchsia.web/frame.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.web/frame.fidl#216)*
+
+ Specifies additional information about a newly created popup frame.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>initial_url</code></td>
+            <td>
+                <code>string[65536]</code>
+            </td>
+            <td> The URL to which the popup frame was initially navigated.
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>initiated_by_user</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Set if the popup frame was created in response to UI interaction from the user (e.g. a
+ link was clicked).
+</td>
+        </tr></table>
+
+### LoadUrlParams {:#LoadUrlParams}
+
+
+*Defined in [fuchsia.web/navigation.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.web/navigation.fidl#65)*
+
+ Additional parameters for modifying the behavior of
+ <a class='link' href='../fuchsia.web.NavigationController/index.html'>fuchsia.web.NavigationController</a>/<a class='link' href='../fuchsia.web.NavigationController/index.html#LoadUrl'>LoadUrl</a>.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>type</code></td>
+            <td>
+                <code><a class='link' href='#LoadUrlReason'>LoadUrlReason</a></code>
+            </td>
+            <td> Provides a hint to the browser UI about how <a class='link' href='../fuchsia.web.NavigationController/index.html'>fuchsia.web.NavigationController</a>/<a class='link' href='../fuchsia.web.NavigationController/index.html#LoadUrl'>LoadUrl</a>
+ was triggered.
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>referrer_url</code></td>
+            <td>
+                <code>string[65536]</code>
+            </td>
+            <td> The URL that linked to the resource being requested.
+</td>
+        </tr><tr>
+            <td>3</td>
+            <td><code>was_user_activated</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Should be set to true to propagate user activation to the frame. User activation implies
+ that the user is interacting with the web frame. It enables some web features that are not
+ available otherwise. For example, autoplay will work only when this flag is set to true.
+</td>
+        </tr><tr>
+            <td>4</td>
+            <td><code>headers</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='../fuchsia.net.http/index.html'>fuchsia.net.http</a>/<a class='link' href='../fuchsia.net.http/index.html#Header'>Header</a>&gt;</code>
+            </td>
+            <td> Custom HTTP headers.
+</td>
+        </tr></table>
+
+### NavigationState {:#NavigationState}
+
+
+*Defined in [fuchsia.web/navigation.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.web/navigation.fidl#83)*
+
+ Contains information about the <a class='link' href='#fuchsia.web.Frame'>fuchsia.web.Frame</a>'s navigation state.
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>url</code></td>
+            <td>
+                <code>string[65536]</code>
+            </td>
+            <td> The page's URL.
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>title</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td> The user-visible page title.
+</td>
+        </tr><tr>
+            <td>3</td>
+            <td><code>page_type</code></td>
+            <td>
+                <code><a class='link' href='#PageType'>PageType</a></code>
+            </td>
+            <td> Indicates whether this was a navigation to an error page.
+</td>
+        </tr><tr>
+            <td>4</td>
+            <td><code>can_go_forward</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Indicates if there is a following navigation.
+</td>
+        </tr><tr>
+            <td>5</td>
+            <td><code>can_go_back</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Indicates if there is a previous navigation.
+</td>
+        </tr><tr>
+            <td>6</td>
+            <td><code>is_main_document_loaded</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td> Indicates that the main document's statically declared resources have been loaded.
+</td>
+        </tr></table>
+
+### UrlRequestRewriteRule {:#UrlRequestRewriteRule}
+
+
+*Defined in [fuchsia.web/url_request_rewrite_rules.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.web/url_request_rewrite_rules.fidl#9)*
+
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>hosts_filter</code></td>
+            <td>
+                <code>vector&lt;string&gt;[4096]</code>
+            </td>
+            <td> Set of hosts to apply the rules to. If not set, the rule will apply to every request,
+ independent of host.
+</td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>schemes_filter</code></td>
+            <td>
+                <code>vector&lt;string&gt;[4096]</code>
+            </td>
+            <td> Set of schemes to apply the rules to. If not set, the rule will apply to every request,
+ independent of scheme.
+</td>
+        </tr><tr>
+            <td>3</td>
+            <td><code>rewrites</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#UrlRequestRewrite'>UrlRequestRewrite</a>&gt;[4096]</code>
+            </td>
+            <td> URL request rewrites to apply.
+</td>
+        </tr></table>
+
+### UrlRequestRewriteAddHeaders {:#UrlRequestRewriteAddHeaders}
+
+
+*Defined in [fuchsia.web/url_request_rewrite_rules.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.web/url_request_rewrite_rules.fidl#41)*
+
+ Adds `headers` to the URL request. If a header is already present in the original URL request,
+ it will be overwritten.
+ - `headers` must be set.
+ - Each <a class='link' href='#fuchsia.net.http.Header'>fuchsia.net.http.Header</a> in `headers` must have a valid HTTP header name and value,
+   per [RFC 7230 section  3.2](https://tools.ietf.org/html/rfc7230#section-3.2).
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>headers</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='../fuchsia.net.http/index.html'>fuchsia.net.http</a>/<a class='link' href='../fuchsia.net.http/index.html#Header'>Header</a>&gt;[4096]</code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### UrlRequestRewriteRemoveHeader {:#UrlRequestRewriteRemoveHeader}
+
+
+*Defined in [fuchsia.web/url_request_rewrite_rules.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.web/url_request_rewrite_rules.fidl#50)*
+
+ If `query_pattern` in the URL query, removes `header_name` from the list of headers. If
+ `query_pattern` is not set, removes `header_name` from the list of headers unconditionally.
+ - `header_name` must be set.
+ - `header_name` must be a valid HTTP header name, per
+   [RFC 7230 section 3.2](https://tools.ietf.org/html/rfc7230#section-3.2).
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>query_pattern</code></td>
+            <td>
+                <code>string[65536]</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>header_name</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;[4096]</code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### UrlRequestRewriteSubstituteQueryPattern {:#UrlRequestRewriteSubstituteQueryPattern}
+
+
+*Defined in [fuchsia.web/url_request_rewrite_rules.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.web/url_request_rewrite_rules.fidl#59)*
+
+ If `pattern` is found in the URL request query, replaces it with `substitution`.
+ - `pattern` and `substitution` must be set.
+ - `substitution` must be a valid
+   [URL-query string](https://url.spec.whatwg.org/#url-query-string).
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>pattern</code></td>
+            <td>
+                <code>string[65536]</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>substitution</code></td>
+            <td>
+                <code>string[65536]</code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### UrlRequestRewriteReplaceUrl {:#UrlRequestRewriteReplaceUrl}
+
+
+*Defined in [fuchsia.web/url_request_rewrite_rules.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.web/url_request_rewrite_rules.fidl#69)*
+
+ If the URL in the URL request ends with `url_ends_with`, rewrites the URL to `new_url`.
+ - `url_ends_with` and `new_url` must be set.
+ - `url_ends_with` must be a valid
+   [path-relative-URL string](https://url.spec.whatwg.org/#path-relative-url-string).
+ - `new_url` must be a [valid URL string](https://url.spec.whatwg.org/#valid-url-string).
+
+
+<table>
+    <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr>
+    <tr>
+            <td>1</td>
+            <td><code>url_ends_with</code></td>
+            <td>
+                <code>string[65536]</code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td>2</td>
+            <td><code>new_url</code></td>
+            <td>
+                <code>string[65536]</code>
+            </td>
+            <td></td>
+        </tr></table>
+
 
 
 ## **UNIONS**
@@ -1841,6 +3491,139 @@
             <td></td>
         </tr></table>
 
+### Context_GetRemoteDebuggingPort_Result {:#Context_GetRemoteDebuggingPort_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#Context_GetRemoteDebuggingPort_Response'>Context_GetRemoteDebuggingPort_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code><a class='link' href='#ContextError'>ContextError</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### Frame_ExecuteJavaScript_Result {:#Frame_ExecuteJavaScript_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#Frame_ExecuteJavaScript_Response'>Frame_ExecuteJavaScript_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code><a class='link' href='#FrameError'>FrameError</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### Frame_ExecuteJavaScriptNoResult_Result {:#Frame_ExecuteJavaScriptNoResult_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#Frame_ExecuteJavaScriptNoResult_Response'>Frame_ExecuteJavaScriptNoResult_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code><a class='link' href='#FrameError'>FrameError</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### Frame_AddBeforeLoadJavaScript_Result {:#Frame_AddBeforeLoadJavaScript_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#Frame_AddBeforeLoadJavaScript_Response'>Frame_AddBeforeLoadJavaScript_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code><a class='link' href='#FrameError'>FrameError</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### Frame_PostMessage_Result {:#Frame_PostMessage_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#Frame_PostMessage_Response'>Frame_PostMessage_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code><a class='link' href='#FrameError'>FrameError</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### MessagePort_PostMessage_Result {:#MessagePort_PostMessage_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#MessagePort_PostMessage_Response'>MessagePort_PostMessage_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code><a class='link' href='#FrameError'>FrameError</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### NavigationController_LoadUrl_Result {:#NavigationController_LoadUrl_Result}
+*generated*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>response</code></td>
+            <td>
+                <code><a class='link' href='#NavigationController_LoadUrl_Response'>NavigationController_LoadUrl_Response</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>err</code></td>
+            <td>
+                <code><a class='link' href='#NavigationControllerError'>NavigationControllerError</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
 
 
 ## **XUNIONS**
@@ -1906,6 +3689,67 @@
 </td>
         </tr></table>
 
+### OutgoingTransferable {:#OutgoingTransferable}
+*Defined in [fuchsia.web/frame.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.web/frame.fidl#188)*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>message_port</code></td>
+            <td>
+                <code>request&lt;<a class='link' href='#MessagePort'>MessagePort</a>&gt;</code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### IncomingTransferable {:#IncomingTransferable}
+*Defined in [fuchsia.web/frame.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.web/frame.fidl#192)*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>message_port</code></td>
+            <td>
+                <code><a class='link' href='#MessagePort'>MessagePort</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
+### UrlRequestRewrite {:#UrlRequestRewrite}
+*Defined in [fuchsia.web/url_request_rewrite_rules.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.web/url_request_rewrite_rules.fidl#22)*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>add_headers</code></td>
+            <td>
+                <code><a class='link' href='#UrlRequestRewriteAddHeaders'>UrlRequestRewriteAddHeaders</a></code>
+            </td>
+            <td> Adds a set of headers to a URL request.
+</td>
+        </tr><tr>
+            <td><code>remove_header</code></td>
+            <td>
+                <code><a class='link' href='#UrlRequestRewriteRemoveHeader'>UrlRequestRewriteRemoveHeader</a></code>
+            </td>
+            <td> Removes a header based on the presence of a pattern in the URL query.
+</td>
+        </tr><tr>
+            <td><code>substitute_query_pattern</code></td>
+            <td>
+                <code><a class='link' href='#UrlRequestRewriteSubstituteQueryPattern'>UrlRequestRewriteSubstituteQueryPattern</a></code>
+            </td>
+            <td> Substitutes a pattern in the URL query.
+</td>
+        </tr><tr>
+            <td><code>replace_url</code></td>
+            <td>
+                <code><a class='link' href='#UrlRequestRewriteReplaceUrl'>UrlRequestRewriteReplaceUrl</a></code>
+            </td>
+            <td> Replaces a URL if the original URL ends with a pattern.
+</td>
+        </tr></table>
+
 
 
 ## **BITS**
@@ -1956,6 +3800,52 @@
 </td>
         </tr></table>
 
+### ContextFeatureFlags {:#ContextFeatureFlags}
+Type: <code>uint64</code>
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td>NETWORK</td>
+            <td>1</td>
+            <td> Enables network access. Requires the following services:
+ - <a class='link' href='#fuchsia.net.NameLookup'>fuchsia.net.NameLookup</a>
+ - <a class='link' href='#fuchsia.netstack.Netstack'>fuchsia.netstack.Netstack</a>
+ - <a class='link' href='#fuchsia.posix.socket.Provider'>fuchsia.posix.socket.Provider</a>
+</td>
+        </tr><tr>
+            <td>AUDIO</td>
+            <td>2</td>
+            <td> Enables audio input and output. Requires <a class='link' href='#fuchsia.media.Audio'>fuchsia.media.Audio</a> service.
+</td>
+        </tr><tr>
+            <td>VULKAN</td>
+            <td>4</td>
+            <td> Enables GPU-accelerated rendering of the web content. Requires the following services:
+ - <a class='link' href='#fuchsia.sysmem.Allocator'>fuchsia.sysmem.Allocator</a>
+ - <a class='link' href='#fuchsia.vulkan.loader.Loader'>fuchsia.vulkan.loader.Loader</a>
+</td>
+        </tr><tr>
+            <td>HARDWARE_VIDEO_DECODER</td>
+            <td>8</td>
+            <td> Enables hardware video decoding. `VULKAN` must be enabled as well. Requires
+ <a class='link' href='#fuchsia.mediacodec.CodecFactory'>fuchsia.mediacodec.CodecFactory</a> service.
+</td>
+        </tr><tr>
+            <td>HARDWARE_VIDEO_DECODER_ONLY</td>
+            <td>16</td>
+            <td> Disables all software video decoders. Videos will be rendered only if they can be decoded
+ in hardware using <a class='link' href='#fuchsia.mediacodec.CodecFactory'>fuchsia.mediacodec.CodecFactory</a>.
+ Requires the <a class='link' href='#HARDWARE_VIDEO_DECODER'>HARDWARE_VIDEO_DECODER</a> flag.
+</td>
+        </tr><tr>
+            <td>WIDEVINE_CDM</td>
+            <td>32</td>
+            <td> Enables Widevine CDM modules for EME API. `VULKAN` feature must be enabled as well.
+ Requires <a class='link' href='#fuchsia.media.drm.Widevine'>fuchsia.media.drm.Widevine</a> service.
+</td>
+        </tr></table>
+
 
 
 ## **CONSTANTS**
@@ -2001,6 +3891,46 @@
                 <td><code>int32</code></td>
             <td></td>
         </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.web/constants.fidl#8">MAX_URL_LENGTH</a></td>
+            <td>
+                    <code>65536</code>
+                </td>
+                <td><code>int32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.web/constants.fidl#12">MAX_URL_SCHEME_NAME_LENGTH</a></td>
+            <td>
+                    <code>255</code>
+                </td>
+                <td><code>int32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.web/constants.fidl#16">MAX_HOST_LENGTH</a></td>
+            <td>
+                    <code>255</code>
+                </td>
+                <td><code>int32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.web/constants.fidl#20">MAX_HEADERS_COUNT</a></td>
+            <td>
+                    <code>4096</code>
+                </td>
+                <td><code>int32</code></td>
+            <td></td>
+        </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.web/constants.fidl#23">MAX_RULE_COUNT</a></td>
+            <td>
+                    <code>4096</code>
+                </td>
+                <td><code>int32</code></td>
+            <td></td>
+        </tr>
     
 </table>
 
diff --git a/sdk/fidl/fuchsia.wlan.ap.policy/index.md b/sdk/fidl/fuchsia.wlan.ap.policy/index.md
index dccd2a7..ff81288 100644
--- a/sdk/fidl/fuchsia.wlan.ap.policy/index.md
+++ b/sdk/fidl/fuchsia.wlan.ap.policy/index.md
@@ -225,19 +225,15 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>BAND_ANY</code></td>
             <td><code>0</code></td>
-            <td> allows the band to switch depending on device
- operating mode and environment
-</td>
+            <td></td>
         </tr><tr>
             <td><code>BAND_2_4GHZ</code></td>
             <td><code>1</code></td>
-            <td> restricted to 2.4ghz bands only
-</td>
+            <td></td>
         </tr><tr>
             <td><code>BAND_5GHZ</code></td>
             <td><code>2</code></td>
-            <td> restricted to 5ghz bands only
-</td>
+            <td></td>
         </tr></table>
 
 ### ApState {:#ApState}
@@ -251,9 +247,7 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>STARTING</code></td>
             <td><code>0</code></td>
-            <td> confirmation that the softap interface will attempt to be
- created (this can take seconds on some devices)
-</td>
+            <td></td>
         </tr><tr>
             <td><code>UP</code></td>
             <td><code>1</code></td>
diff --git a/sdk/fidl/fuchsia.wlan.common/index.md b/sdk/fidl/fuchsia.wlan.common/index.md
index 716bd29..32d1369 100644
--- a/sdk/fidl/fuchsia.wlan.common/index.md
+++ b/sdk/fidl/fuchsia.wlan.common/index.md
@@ -40,6 +40,38 @@
         </tr>
 </table>
 
+### WlanChan {:#WlanChan}
+*Defined in [fuchsia.wlan.common/wlan_common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.wlan.common/wlan_common.fidl#41)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>primary</code></td>
+            <td>
+                <code>uint8</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>cbw</code></td>
+            <td>
+                <code><a class='link' href='#CBW'>CBW</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>secondary80</code></td>
+            <td>
+                <code>uint8</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
 
 
 ## **ENUMS**
@@ -85,28 +117,23 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>HR</code></td>
             <td><code>1</code></td>
-            <td> IEEE 802.11b, used for DSSS, HR/DSSS, ERP-DSSS/CCK
-</td>
+            <td></td>
         </tr><tr>
             <td><code>ERP</code></td>
             <td><code>2</code></td>
-            <td> IEEE 802.11a/g, used for ERP-OFDM
-</td>
+            <td></td>
         </tr><tr>
             <td><code>HT</code></td>
             <td><code>3</code></td>
-            <td> IEEE 802.11n
-</td>
+            <td></td>
         </tr><tr>
             <td><code>VHT</code></td>
             <td><code>4</code></td>
-            <td> IEEE 802.11ac
-</td>
+            <td></td>
         </tr><tr>
             <td><code>HEW</code></td>
             <td><code>5</code></td>
-            <td> IEEE 802.11ax
-</td>
+            <td></td>
         </tr></table>
 
 ### CBW {:#CBW}
@@ -214,9 +241,175 @@
         </tr><tr>
             <td><code>TEMP_DIRECT_SME_CHANNEL</code></td>
             <td><code>3141592</code></td>
-            <td> Temporary feature flag for incrementally transitioning drivers to use
- SME channel on iface creation.
-</td>
+            <td></td>
+        </tr></table>
+
+### RequestStatus {:#RequestStatus}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.wlan.common/wlan_common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.wlan.common/wlan_common.fidl#7)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>ACKNOWLEDGED</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>REJECTED_NOT_SUPPORTED</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>REJECTED_INCOMPATIBLE_MODE</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>REJECTED_ALREADY_IN_USE</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>REJECTED_DUPLICATE_REQUEST</code></td>
+            <td><code>4</code></td>
+            <td></td>
+        </tr></table>
+
+### PHY {:#PHY}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.wlan.common/wlan_common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.wlan.common/wlan_common.fidl#18)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>HR</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>ERP</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>HT</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>VHT</code></td>
+            <td><code>4</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>HEW</code></td>
+            <td><code>5</code></td>
+            <td></td>
+        </tr></table>
+
+### CBW {:#CBW}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.wlan.common/wlan_common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.wlan.common/wlan_common.fidl#31)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>CBW20</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>CBW40</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>CBW40BELOW</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>CBW80</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>CBW160</code></td>
+            <td><code>4</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>CBW80P80</code></td>
+            <td><code>5</code></td>
+            <td></td>
+        </tr></table>
+
+### Band {:#Band}
+Type: <code>uint8</code>
+
+*Defined in [fuchsia.wlan.common/wlan_common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.wlan.common/wlan_common.fidl#47)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>WLAN_BAND_2GHZ</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>WLAN_BAND_5GHZ</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>WLAN_BAND_COUNT</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr></table>
+
+### ScanType {:#ScanType}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.wlan.common/wlan_common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.wlan.common/wlan_common.fidl#55)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>ACTIVE</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>PASSIVE</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr></table>
+
+### DriverFeature {:#DriverFeature}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.wlan.common/wlan_common.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.wlan.common/wlan_common.fidl#60)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>SCAN_OFFLOAD</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>RATE_SELECTION</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>SYNTH</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>TX_STATUS_REPORT</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>DFS</code></td>
+            <td><code>4</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>TEMP_DIRECT_SME_CHANNEL</code></td>
+            <td><code>3141592</code></td>
+            <td></td>
         </tr></table>
 
 
diff --git a/sdk/fidl/fuchsia.wlan.policy/index.md b/sdk/fidl/fuchsia.wlan.policy/index.md
index 20df43a..49350de 100644
--- a/sdk/fidl/fuchsia.wlan.policy/index.md
+++ b/sdk/fidl/fuchsia.wlan.policy/index.md
@@ -600,15 +600,11 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>LOCAL_ONLY</code></td>
             <td><code>1</code></td>
-            <td> Allows for connectivity between co-located devices.  Local only access points do not
- forward traffic to other network connections.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>UNRESTRICTED</code></td>
             <td><code>2</code></td>
-            <td> Allows for full connectivity with traffic potentially being forwarded
- to other network connections (ex., tethering mode).
-</td>
+            <td></td>
         </tr></table>
 
 ### OperatingState {:#OperatingState}
@@ -623,20 +619,15 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>FAILED</code></td>
             <td><code>1</code></td>
-            <td> Access point operation failed.  Access points that enter the failed state will
- have one update informing registered listeners of the failure and then an
- additional update with the access point removed from the list.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>STARTING</code></td>
             <td><code>2</code></td>
-            <td> Access point operation is starting up.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>ACTIVE</code></td>
             <td><code>3</code></td>
-            <td> Access point operation is active.
-</td>
+            <td></td>
         </tr></table>
 
 ### ScanErrorCode {:#ScanErrorCode}
@@ -651,14 +642,11 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>GENERAL_ERROR</code></td>
             <td><code>1</code></td>
-            <td> Unexpected scan error without a specific cause.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>CANCELLED</code></td>
             <td><code>2</code></td>
-            <td> Scan was cancelled and stopped.  This can happen due to operating state changes,
- higher priority operations or conflicting requests.
-</td>
+            <td></td>
         </tr></table>
 
 ### WlanClientState {:#WlanClientState}
@@ -695,19 +683,15 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>SUPPORTED</code></td>
             <td><code>1</code></td>
-            <td> Denotes that the network is supported and connections can be attempted (given
- appropriate credentials when required).
-</td>
+            <td></td>
         </tr><tr>
             <td><code>DISALLOWED_INSECURE</code></td>
             <td><code>2</code></td>
-            <td> The network uses a deprecated security protocol and is explicitly not supported.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>DISALLOWED_NOT_SUPPORTED</code></td>
             <td><code>3</code></td>
-            <td> The network uses a currently unsupported security protocol.
-</td>
+            <td></td>
         </tr></table>
 
 ### NetworkConfigChangeError {:#NetworkConfigChangeError}
@@ -738,24 +722,19 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>FAILED</code></td>
             <td><code>1</code></td>
-            <td> The connection attempt was terminated due to an error.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>DISCONNECTED</code></td>
             <td><code>2</code></td>
-            <td> The network is disconnected.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>CONNECTING</code></td>
             <td><code>3</code></td>
-            <td> The device is attempting a connection to a network.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>CONNECTED</code></td>
             <td><code>4</code></td>
-            <td> The connection is now established.  Note: This does not make any guarantees
- about higher level network reachability.
-</td>
+            <td></td>
         </tr></table>
 
 ### DisconnectStatus {:#DisconnectStatus}
@@ -770,29 +749,19 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>TIMED_OUT</code></td>
             <td><code>1</code></td>
-            <td> The requested connection attempt failed due to timeout.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>CREDENTIALS_FAILED</code></td>
             <td><code>2</code></td>
-            <td> The requested connection attempt failed due to suspected credential failure.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>CONNECTION_STOPPED</code></td>
             <td><code>3</code></td>
-            <td> The existing connection was explicitly disconnected by an action of wlan
- service on this device.  This can be the result of wlan connections being
- disabled, network configuration being removed or a connection attempt to a
- different network (as examples).
-</td>
+            <td></td>
         </tr><tr>
             <td><code>CONNECTION_FAILED</code></td>
             <td><code>4</code></td>
-            <td> The existing connection failed unexpectedly in a way that is not an
- explicitly triggered disconnect by the device (or user).  Examples
- of unexpected disconnections include: an underlying error (driver,
- firmware, etc.), beacon loss, access point failure.
-</td>
+            <td></td>
         </tr></table>
 
 ### SecurityType {:#SecurityType}
@@ -840,18 +809,15 @@
     <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
             <td><code>ANY</code></td>
             <td><code>1</code></td>
-            <td> Allows for band switching depending on device operating mode and environment.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>ONLY_2_4GHZ</code></td>
             <td><code>2</code></td>
-            <td> Restricted to 2.4 GHz bands only.
-</td>
+            <td></td>
         </tr><tr>
             <td><code>ONLY_5GHZ</code></td>
             <td><code>3</code></td>
-            <td> Restricted to 5 GHz bands only.
-</td>
+            <td></td>
         </tr></table>
 
 
diff --git a/sdk/fidl/fuchsia.wlan.service/index.md b/sdk/fidl/fuchsia.wlan.service/index.md
index 4f53e6a..2b7dc3a 100644
--- a/sdk/fidl/fuchsia.wlan.service/index.md
+++ b/sdk/fidl/fuchsia.wlan.service/index.md
@@ -174,6 +174,174 @@
     <tr><th>Name</th><th>Type</th></tr>
     </table>
 
+## Wlan {:#Wlan}
+*Defined in [fuchsia.wlan.service/wlan_service.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.wlan.service/wlan_service.fidl#81)*
+
+ Stub interface; eventually to be replaced by something based on the 802.11
+ SME / MSGCF.
+
+### Scan {:#Scan}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>req</code></td>
+            <td>
+                <code><a class='link' href='#ScanRequest'>ScanRequest</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>result</code></td>
+            <td>
+                <code><a class='link' href='#ScanResult'>ScanResult</a></code>
+            </td>
+        </tr></table>
+
+### Connect {:#Connect}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>req</code></td>
+            <td>
+                <code><a class='link' href='#ConnectConfig'>ConnectConfig</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>error</code></td>
+            <td>
+                <code><a class='link' href='#Error'>Error</a></code>
+            </td>
+        </tr></table>
+
+### Disconnect {:#Disconnect}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>error</code></td>
+            <td>
+                <code><a class='link' href='#Error'>Error</a></code>
+            </td>
+        </tr></table>
+
+### Status {:#Status}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>status</code></td>
+            <td>
+                <code><a class='link' href='#WlanStatus'>WlanStatus</a></code>
+            </td>
+        </tr></table>
+
+### StartBss {:#StartBss}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>cfg</code></td>
+            <td>
+                <code><a class='link' href='#BssConfig'>BssConfig</a></code>
+            </td>
+        </tr></table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>error</code></td>
+            <td>
+                <code><a class='link' href='#Error'>Error</a></code>
+            </td>
+        </tr></table>
+
+### StopBss {:#StopBss}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>error</code></td>
+            <td>
+                <code><a class='link' href='#Error'>Error</a></code>
+            </td>
+        </tr></table>
+
+### Stats {:#Stats}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    <tr>
+            <td><code>stats</code></td>
+            <td>
+                <code><a class='link' href='#WlanStats'>WlanStats</a></code>
+            </td>
+        </tr></table>
+
+### ClearSavedNetworks {:#ClearSavedNetworks}
+
+
+#### Request
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
+
+#### Response
+<table>
+    <tr><th>Name</th><th>Type</th></tr>
+    </table>
+
 
 
 ## **STRUCTS**
@@ -434,6 +602,262 @@
         </tr>
 </table>
 
+### Error {:#Error}
+*Defined in [fuchsia.wlan.service/wlan_service.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.wlan.service/wlan_service.fidl#18)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>code</code></td>
+            <td>
+                <code><a class='link' href='#ErrCode'>ErrCode</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>description</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### AP {:#AP}
+*Defined in [fuchsia.wlan.service/wlan_service.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.wlan.service/wlan_service.fidl#23)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>bssid</code></td>
+            <td>
+                <code>vector&lt;uint8&gt;</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>ssid</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>rssi_dbm</code></td>
+            <td>
+                <code>int8</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>is_secure</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>is_compatible</code></td>
+            <td>
+                <code>bool</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>chan</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.wlan.common/index.html'>fuchsia.wlan.common</a>/<a class='link' href='../fuchsia.wlan.common/index.html#WlanChan'>WlanChan</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ScanRequest {:#ScanRequest}
+*Defined in [fuchsia.wlan.service/wlan_service.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.wlan.service/wlan_service.fidl#32)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>timeout</code></td>
+            <td>
+                <code>uint8</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ScanResult {:#ScanResult}
+*Defined in [fuchsia.wlan.service/wlan_service.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.wlan.service/wlan_service.fidl#37)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>error</code></td>
+            <td>
+                <code><a class='link' href='#Error'>Error</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>aps</code></td>
+            <td>
+                <code>vector&lt;<a class='link' href='#AP'>AP</a>&gt;?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ConnectConfig {:#ConnectConfig}
+*Defined in [fuchsia.wlan.service/wlan_service.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.wlan.service/wlan_service.fidl#42)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>ssid</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>passPhrase</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>scanInterval</code></td>
+            <td>
+                <code>uint8</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>bssid</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### WlanStatus {:#WlanStatus}
+*Defined in [fuchsia.wlan.service/wlan_service.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.wlan.service/wlan_service.fidl#60)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>error</code></td>
+            <td>
+                <code><a class='link' href='#Error'>Error</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>state</code></td>
+            <td>
+                <code><a class='link' href='#State'>State</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>current_ap</code></td>
+            <td>
+                <code><a class='link' href='#AP'>AP</a>?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### BssConfig {:#BssConfig}
+*Defined in [fuchsia.wlan.service/wlan_service.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.wlan.service/wlan_service.fidl#66)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>ssid</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>beaconPeriod</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>dtimPeriod</code></td>
+            <td>
+                <code>int32</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>channel</code></td>
+            <td>
+                <code>uint8</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### WlanStats {:#WlanStats}
+*Defined in [fuchsia.wlan.service/wlan_service.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.wlan.service/wlan_service.fidl#73)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>error</code></td>
+            <td>
+                <code><a class='link' href='#Error'>Error</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>stats</code></td>
+            <td>
+                <code><a class='link' href='../fuchsia.wlan.stats/index.html'>fuchsia.wlan.stats</a>/<a class='link' href='../fuchsia.wlan.stats/index.html#IfaceStats'>IfaceStats</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
 
 
 ## **ENUMS**
@@ -510,6 +934,78 @@
             <td></td>
         </tr></table>
 
+### ErrCode {:#ErrCode}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.wlan.service/wlan_service.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.wlan.service/wlan_service.fidl#10)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>OK</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>INTERNAL</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>NOT_FOUND</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>NOT_SUPPORTED</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>INVALID_ARGS</code></td>
+            <td><code>4</code></td>
+            <td></td>
+        </tr></table>
+
+### State {:#State}
+Type: <code>uint32</code>
+
+*Defined in [fuchsia.wlan.service/wlan_service.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.wlan.service/wlan_service.fidl#49)*
+
+
+
+<table>
+    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr>
+            <td><code>UNKNOWN</code></td>
+            <td><code>0</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>BSS</code></td>
+            <td><code>1</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>QUERYING</code></td>
+            <td><code>2</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>SCANNING</code></td>
+            <td><code>3</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>JOINING</code></td>
+            <td><code>4</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>AUTHENTICATING</code></td>
+            <td><code>5</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>ASSOCIATING</code></td>
+            <td><code>6</code></td>
+            <td></td>
+        </tr><tr>
+            <td><code>ASSOCIATED</code></td>
+            <td><code>7</code></td>
+            <td></td>
+        </tr></table>
+
 
 
 
diff --git a/sdk/fidl/fuchsia.wlan.stats/index.md b/sdk/fidl/fuchsia.wlan.stats/index.md
index 2726de3..832dd30 100644
--- a/sdk/fidl/fuchsia.wlan.stats/index.md
+++ b/sdk/fidl/fuchsia.wlan.stats/index.md
@@ -249,6 +249,247 @@
         </tr>
 </table>
 
+### Counter {:#Counter}
+*Defined in [fuchsia.wlan.stats/wlan_stats.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.wlan.stats/wlan_stats.fidl#7)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>count</code></td>
+            <td>
+                <code>uint64</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>name</code></td>
+            <td>
+                <code>string</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### PacketCounter {:#PacketCounter}
+*Defined in [fuchsia.wlan.stats/wlan_stats.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.wlan.stats/wlan_stats.fidl#12)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>in</code></td>
+            <td>
+                <code><a class='link' href='#Counter'>Counter</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>out</code></td>
+            <td>
+                <code><a class='link' href='#Counter'>Counter</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>drop</code></td>
+            <td>
+                <code><a class='link' href='#Counter'>Counter</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>in_bytes</code></td>
+            <td>
+                <code><a class='link' href='#Counter'>Counter</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>out_bytes</code></td>
+            <td>
+                <code><a class='link' href='#Counter'>Counter</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>drop_bytes</code></td>
+            <td>
+                <code><a class='link' href='#Counter'>Counter</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### DispatcherStats {:#DispatcherStats}
+*Defined in [fuchsia.wlan.stats/wlan_stats.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.wlan.stats/wlan_stats.fidl#22)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>any_packet</code></td>
+            <td>
+                <code><a class='link' href='#PacketCounter'>PacketCounter</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>mgmt_frame</code></td>
+            <td>
+                <code><a class='link' href='#PacketCounter'>PacketCounter</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>ctrl_frame</code></td>
+            <td>
+                <code><a class='link' href='#PacketCounter'>PacketCounter</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>data_frame</code></td>
+            <td>
+                <code><a class='link' href='#PacketCounter'>PacketCounter</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### RssiStats {:#RssiStats}
+*Defined in [fuchsia.wlan.stats/wlan_stats.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.wlan.stats/wlan_stats.fidl#34)*
+
+
+
+ RssiStats count the occurrence of the RSSIs.
+ RSSI value r's occurrence is counted in the bin[-r],
+ where r is defined in [-128, 0] in dBm.
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>hist</code></td>
+            <td>
+                <code>vector&lt;uint64&gt;[129]</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ClientMlmeStats {:#ClientMlmeStats}
+*Defined in [fuchsia.wlan.stats/wlan_stats.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.wlan.stats/wlan_stats.fidl#39)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>svc_msg</code></td>
+            <td>
+                <code><a class='link' href='#PacketCounter'>PacketCounter</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>data_frame</code></td>
+            <td>
+                <code><a class='link' href='#PacketCounter'>PacketCounter</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>mgmt_frame</code></td>
+            <td>
+                <code><a class='link' href='#PacketCounter'>PacketCounter</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>tx_frame</code></td>
+            <td>
+                <code><a class='link' href='#PacketCounter'>PacketCounter</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>rx_frame</code></td>
+            <td>
+                <code><a class='link' href='#PacketCounter'>PacketCounter</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>assoc_data_rssi</code></td>
+            <td>
+                <code><a class='link' href='#RssiStats'>RssiStats</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>beacon_rssi</code></td>
+            <td>
+                <code><a class='link' href='#RssiStats'>RssiStats</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### ApMlmeStats {:#ApMlmeStats}
+*Defined in [fuchsia.wlan.stats/wlan_stats.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.wlan.stats/wlan_stats.fidl#49)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>not_used</code></td>
+            <td>
+                <code><a class='link' href='#PacketCounter'>PacketCounter</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
+### IfaceStats {:#IfaceStats}
+*Defined in [fuchsia.wlan.stats/wlan_stats.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.wlan.stats/wlan_stats.fidl#60)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>dispatcher_stats</code></td>
+            <td>
+                <code><a class='link' href='#DispatcherStats'>DispatcherStats</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr><tr>
+            <td><code>mlme_stats</code></td>
+            <td>
+                <code><a class='link' href='#MlmeStats'>MlmeStats</a>?</code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
 
 
 
@@ -276,6 +517,25 @@
             <td></td>
         </tr></table>
 
+### MlmeStats {:#MlmeStats}
+*Defined in [fuchsia.wlan.stats/wlan_stats.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.wlan.stats/wlan_stats.fidl#55)*
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr>
+            <td><code>client_mlme_stats</code></td>
+            <td>
+                <code><a class='link' href='#ClientMlmeStats'>ClientMlmeStats</a></code>
+            </td>
+            <td></td>
+        </tr><tr>
+            <td><code>ap_mlme_stats</code></td>
+            <td>
+                <code><a class='link' href='#ApMlmeStats'>ApMlmeStats</a></code>
+            </td>
+            <td></td>
+        </tr></table>
+
 
 
 
@@ -293,6 +553,14 @@
                 <td><code>uint8</code></td>
             <td></td>
         </tr>
+    <tr>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.wlan.stats/wlan_stats.fidl#29">RSSI_BINS</a></td>
+            <td>
+                    <code>129</code>
+                </td>
+                <td><code>uint8</code></td>
+            <td></td>
+        </tr>
     
 </table>