diff --git a/all/fidl/fidl.llcpp.types.test/README.md b/all/fidl/fidl.llcpp.types.test/README.md
index e66150f..2180d7c 100644
--- a/all/fidl/fidl.llcpp.types.test/README.md
+++ b/all/fidl/fidl.llcpp.types.test/README.md
@@ -6,7 +6,7 @@
 ## **PROTOCOLS**
 
 ## TestInterface {#TestInterface}
-*Defined in [fidl.llcpp.types.test/types.test.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/garnet/public/lib/fidl/llcpp/types.test.fidl#53)*
+*Defined in [fidl.llcpp.types.test/types.test.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/garnet/public/lib/fidl/llcpp/types.test.fidl#54)*
 
 
 ### TestMethod {#TestMethod}
@@ -34,7 +34,7 @@
         </tr></table>
 
 ## Baz {#Baz}
-*Defined in [fidl.llcpp.types.test/types.test.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/garnet/public/lib/fidl/llcpp/types.test.fidl#66)*
+*Defined in [fidl.llcpp.types.test/types.test.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/garnet/public/lib/fidl/llcpp/types.test.fidl#67)*
 
 
 ### Foo {#Foo}
@@ -102,7 +102,7 @@
 </table>
 
 ### FooRequest {#FooRequest}
-*Defined in [fidl.llcpp.types.test/types.test.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/garnet/public/lib/fidl/llcpp/types.test.fidl#58)*
+*Defined in [fidl.llcpp.types.test/types.test.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/garnet/public/lib/fidl/llcpp/types.test.fidl#59)*
 
 
 
@@ -121,7 +121,7 @@
 </table>
 
 ### FooResponse {#FooResponse}
-*Defined in [fidl.llcpp.types.test/types.test.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/garnet/public/lib/fidl/llcpp/types.test.fidl#62)*
+*Defined in [fidl.llcpp.types.test/types.test.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/garnet/public/lib/fidl/llcpp/types.test.fidl#63)*
 
 
 
@@ -138,6 +138,24 @@
         </tr>
 </table>
 
+### TestXUnionStruct {#TestXUnionStruct}
+*Defined in [fidl.llcpp.types.test/types.test.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/garnet/public/lib/fidl/llcpp/types.test.fidl#71)*
+
+
+
+
+
+<table>
+    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr><tr>
+            <td><code>xu</code></td>
+            <td>
+                <code><a class='link' href='#TestXUnion'>TestXUnion</a></code>
+            </td>
+            <td></td>
+            <td>No default</td>
+        </tr>
+</table>
+
 
 
 
@@ -147,7 +165,7 @@
 ### SampleTable {#SampleTable}
 
 
-*Defined in [fidl.llcpp.types.test/types.test.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/garnet/public/lib/fidl/llcpp/types.test.fidl#43)*
+*Defined in [fidl.llcpp.types.test/types.test.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/garnet/public/lib/fidl/llcpp/types.test.fidl#44)*
 
 <p>Verifies that user code can build and access tables.</p>
 
@@ -180,7 +198,7 @@
 ### SampleEmptyTable {#SampleEmptyTable}
 
 
-*Defined in [fidl.llcpp.types.test/types.test.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/garnet/public/lib/fidl/llcpp/types.test.fidl#50)*
+*Defined in [fidl.llcpp.types.test/types.test.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/garnet/public/lib/fidl/llcpp/types.test.fidl#51)*
 
 <p>Verifies that an empty table compiles.</p>
 
@@ -240,10 +258,16 @@
                 <code><a class='link' href='#CopyableStruct'>CopyableStruct</a></code>
             </td>
             <td></td>
+        </tr><tr>
+            <td><code>h</code></td>
+            <td>
+                <code>handle&lt;handle&gt;</code>
+            </td>
+            <td></td>
         </tr></table>
 
 ### TestStrictXUnion {#TestStrictXUnion}
-*Defined in [fidl.llcpp.types.test/types.test.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/garnet/public/lib/fidl/llcpp/types.test.fidl#27)*
+*Defined in [fidl.llcpp.types.test/types.test.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/garnet/public/lib/fidl/llcpp/types.test.fidl#28)*
 
 
 <table>
diff --git a/all/fidl/fuchsia.auth/README.md b/all/fidl/fuchsia.auth/README.md
index dc754d0..e08a05c 100644
--- a/all/fidl/fuchsia.auth/README.md
+++ b/all/fidl/fuchsia.auth/README.md
@@ -43,7 +43,7 @@
         </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)*
+*Defined in [fuchsia.auth/auth_provider.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.auth/auth_provider.fidl#61)*
 
 <p>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.</p>
@@ -77,323 +77,6 @@
 
 
 
-## AuthProvider {#AuthProvider}
-*Defined in [fuchsia.auth/auth_provider.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.auth/auth_provider.fidl#161)*
-
-<p>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.</p>
-
-### GetPersistentCredential {#GetPersistentCredential}
-
-<p>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.</p>
-<p>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 <code>auth_ui_context</code> overlay provided by the base_shell.</p>
-<p>An optional <code>user_profile_id</code> is provided for simplifying reauthorization
-flow.</p>
-
-#### 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}
-
-<p>Exchanges a persistent user <code>credential</code> for a short lived app specific
-OAuth access token for the specified <code>client_id</code> and <code>scopes</code>. The
-<code>credential</code> 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.</p>
-<p>Access tokens are used by applications to make API requests against
-services offered by the Auth Provider.</p>
-<p>Returns an <code>auth_token</code> response containing an access token, if successful.
-Otherwise, an error status is returned.</p>
-
-#### 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>
-
-### GetAppFirebaseToken {#GetAppFirebaseToken}
-
-<p>Gets a firebase auth token for the user identified by <code>id_token</code> and the
-requested |firebase_api key|. The <code>id_token</code> is a JWT Identity token
-returned from GetAppIdToken() call above.</p>
-<p>Returns a <code>firebase_token</code> from the server if successful. Otherwise, an
-error status is returned.</p>
-
-#### 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}
-
-<p>Revokes user's grants at the Auth Provider by revoking a credential. The
-<code>credential</code> 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.</p>
-
-#### 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}
-
-<p>Authenticates and authorizes a user against a remote attestation based
-auth provider backend system that mints bound persistent credentials.</p>
-<p>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 <code>jwt_params</code>. 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 <code>auth_ui_context</code> overlay provided by the
-base_shell. An optional <code>user_profile_id</code> is provided for simplifying
-reauthorization flow.</p>
-<p>The authorization code is exchanged to a bound refresh token using an
-attestation JWT constructed from <code>jwt_params</code> and is signed by the
-<code>attestation_signer</code> component passed in the request.</p>
-<p>If the operation is successful, a long-lived <code>credential</code> that is bound to
-the originating device is returned along with an optional <code>auth_token</code>
-containing short-lived access token and an optional <code>nonce</code> that is used on
-next token exchange request. An optional <code>user_profile_info</code> containing
-user profile attributes is also returned if successful. Otherwise, an error
-status is returned.</p>
-
-#### 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}
-
-<p>Exchanges a bound persistent user <code>credential</code> for a short lived app
-specific OAuth access token using the specified assertion JWT. The
-assertion JWT is constructed from <code>jwt_params</code> and is signed by the
-<code>attestation_signer</code> component passed in the request.</p>
-<p>Access tokens are used by applications to make API requests against
-services offered by the Auth Provider.</p>
-<p>Returns an <code>auth_token</code> response containing an access token and an optional
-<code>updated_credential</code> and <code>auth_challenge</code> to be used on next token refresh
-request, if successful. Otherwise, an error status is returned.</p>
-
-#### 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>
-
 ## AuthenticationContextProvider {#AuthenticationContextProvider}
 *Defined in [fuchsia.auth/token_manager.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.auth/token_manager.fidl#95)*
 
@@ -786,45 +469,8 @@
 
 ## **STRUCTS**
 
-### AuthToken {#AuthToken}
-*Defined in [fuchsia.auth/auth_provider.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.auth/auth_provider.fidl#35)*
-
-
-
-<p>OAuth token response populated after parsing JSON object that contains
-short-lived access token or id token returned by the auth provider.</p>
-
-
-<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><p>Type of token.</p>
-</td>
-            <td>No default</td>
-        </tr><tr>
-            <td><code>token</code></td>
-            <td>
-                <code>string</code>
-            </td>
-            <td><p>Contains access token or a JWT identity token.</p>
-</td>
-            <td>No default</td>
-        </tr><tr>
-            <td><code>expires_in</code></td>
-            <td>
-                <code>uint64</code>
-            </td>
-            <td><p>The remaining lifetime of the token in seconds.</p>
-</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)*
+*Defined in [fuchsia.auth/auth_provider.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.auth/auth_provider.fidl#18)*
 
 
 
@@ -871,152 +517,8 @@
         </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)*
-
-
-
-<p>Challenge response returned by the auth provider during remote attestation
-based authentication.</p>
-
-
-<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><p>The value of nonce to be used for the next token refresh request</p>
-</td>
-            <td>No default</td>
-        </tr><tr>
-            <td><code>expires_in</code></td>
-            <td>
-                <code>uint64</code>
-            </td>
-            <td><p>The lifetime of <code>challenge</code> in seconds.</p>
-</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)*
-
-
-
-<p>Stores Elliptic Curve public key parameters of the credential key.</p>
-
-
-<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><p>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)</p>
-</td>
-            <td>No default</td>
-        </tr><tr>
-            <td><code>key_x_val</code></td>
-            <td>
-                <code>string</code>
-            </td>
-            <td><p>Value of x of the generated EC key</p>
-</td>
-            <td>No default</td>
-        </tr><tr>
-            <td><code>key_y_val</code></td>
-            <td>
-                <code>string</code>
-            </td>
-            <td><p>Value of y of the generated EC key</p>
-</td>
-            <td>No default</td>
-        </tr><tr>
-            <td><code>fingerprint_sha_256</code></td>
-            <td>
-                <code>string</code>
-            </td>
-            <td><p>Base64 encoded SHA256 hash of the EC public key</p>
-</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)*
-
-
-
-<p>Contains parameters required by the auth provider component to build
-attestation JWTs.</p>
-
-
-<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><p>Contains the ephemeral Elliptic curve credential public key which will be
-bound to the newly generated refresh token grant.</p>
-</td>
-            <td>No default</td>
-        </tr><tr>
-            <td><code>certificate_chain</code></td>
-            <td>
-                <code>vector&lt;string&gt;</code>
-            </td>
-            <td><p>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.</p>
-</td>
-            <td>No default</td>
-        </tr><tr>
-            <td><code>auth_code</code></td>
-            <td>
-                <code>string</code>
-            </td>
-            <td><p>OAuth authorization code bound to the given user and device</p>
-</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)*
-
-
-
-<p>Contains parameters required by the auth provider to build assertion JWTs.</p>
-
-
-<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><p>Contains Elliptic curve credential public key which is bound to existing
-refresh token.</p>
-</td>
-            <td>No default</td>
-        </tr><tr>
-            <td><code>challenge</code></td>
-            <td>
-                <code>string?</code>
-            </td>
-            <td><p>An optional challenge that could be used for the next token refresh request</p>
-</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)*
+*Defined in [fuchsia.auth/auth_provider.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/sdk/fidl/fuchsia.auth/auth_provider.fidl#36)*
 
 
 
@@ -1231,76 +733,6 @@
 </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)*
-
-<p>Specifies the success/failure status from auth provider.</p>
-
-
-<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)*
-
-<p>The type of token returned.</p>
-
-
-<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>
-
 ### Status {#Status}
 Type: <code>uint32</code>
 
diff --git a/all/fidl/fuchsia.identity.internal/README.md b/all/fidl/fuchsia.identity.internal/README.md
index 8ea98ef..da9a9d7 100644
--- a/all/fidl/fuchsia.identity.internal/README.md
+++ b/all/fidl/fuchsia.identity.internal/README.md
@@ -417,41 +417,6 @@
 <p>This service is supplied into the namespace of AccountHandler by the
 component that launches it (i.e. the AccountManager).</p>
 
-### GetAuthProvider {#GetAuthProvider}
-
-<p>Connects to the <code>AuthProvider</code> implementation for a particular service
-provider, launching it if necessary.  This method will soon be removed
-along with the <code>AuthProvider</code> protocol.</p>
-<p><code>auth_provider_type</code> An OAuth identity provider matching a configuration
-set in an AuthProviderConfig.auth_provider_type
-<code>auth_provider</code> The server end of an <code>AuthProvider</code> channel</p>
-
-#### Request
-<table>
-    <tr><th>Name</th><th>Type</th></tr>
-    <tr>
-            <td><code>auth_provider_type</code></td>
-            <td>
-                <code>string</code>
-            </td>
-        </tr><tr>
-            <td><code>auth_provider</code></td>
-            <td>
-                <code>request&lt;<a class='link' href='../fuchsia.auth/'>fuchsia.auth</a>/<a class='link' href='../fuchsia.auth/#AuthProvider'>AuthProvider</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='#AccountHandlerContext_GetAuthProvider_Result'>AccountHandlerContext_GetAuthProvider_Result</a></code>
-            </td>
-        </tr></table>
-
 ### GetOauth {#GetOauth}
 
 <p>Connects to the <code>Oauth</code> implementation for a particular service provider,
@@ -691,17 +656,6 @@
         </tr>
 </table>
 
-### AccountHandlerContext_GetAuthProvider_Response {#AccountHandlerContext_GetAuthProvider_Response}
-*generated*
-
-
-
-
-
-<table>
-    <tr><th>Name</th><th>Type</th><th>Description</th><th>Default</th></tr>
-</table>
-
 ### AccountHandlerContext_GetOauth_Response {#AccountHandlerContext_GetOauth_Response}
 *generated*
 
@@ -744,7 +698,7 @@
 ### AccountData {#AccountData}
 
 
-*Defined in [fuchsia.identity.internal/account_handler.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/src/identity/fidl/account_handler.fidl#300)*
+*Defined in [fuchsia.identity.internal/account_handler.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/src/identity/fidl/account_handler.fidl#289)*
 
 <p>Contents of an account, used for serialization during account transfer.</p>
 
@@ -955,25 +909,6 @@
             <td></td>
         </tr></table>
 
-### AccountHandlerContext_GetAuthProvider_Result {#AccountHandlerContext_GetAuthProvider_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='#AccountHandlerContext_GetAuthProvider_Response'>AccountHandlerContext_GetAuthProvider_Response</a></code>
-            </td>
-            <td></td>
-        </tr><tr>
-            <td><code>err</code></td>
-            <td>
-                <code><a class='link' href='../fuchsia.identity.account/'>fuchsia.identity.account</a>/<a class='link' href='../fuchsia.identity.account/#Error'>Error</a></code>
-            </td>
-            <td></td>
-        </tr></table>
-
 ### AccountHandlerContext_GetOauth_Result {#AccountHandlerContext_GetOauth_Result}
 *generated*
 
@@ -1075,7 +1010,7 @@
                 <code>array</code>[<code><a class='link' href='#HASH_SALT_SIZE'>HASH_SALT_SIZE</a></code>]</td>
             <td></td>
         </tr><tr id="EncryptedAccountData">
-            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/src/identity/fidl/account_handler.fidl#306">EncryptedAccountData</a></td>
+            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/src/identity/fidl/account_handler.fidl#295">EncryptedAccountData</a></td>
             <td>
                 <code>vector</code></td>
             <td><p>Encrypted form of AccountData.</p>
