# Manage an OAuth Named Credential

Here are some examples of things that you can do with named and external credentials.

- Refresh a token
- Delete user external credentials

## Example: Refresh a Token

Here’s how to programmatically refresh a token.

```apex
String externalCredential = 'GitHubOAuth';
String principalName = 'Markdown Access';
ConnectApi.CredentialPrincipalType principalType = ConnectApi.CredentialPrincipalType.NamedPrincipal;

ConnectApi.CredentialInput credentialInput = new ConnectApi.CredentialInput();
credentialInput.externalCredential = externalCredential;
credentialInput.principalName = principalName;
credentialInput.principalType = principalType;
credentialInput.authenticationProtocol = ConnectApi.CredentialAuthenticationProtocol.OAuth;
credentialInput.credentials = new Map<String, ConnectApi.CredentialValueInput>();

ConnectApi.Credential refreshedCredential = ConnectApi.NamedCredentials.createCredential(credentialInput, ConnectApi.CreateCredentialAction.Refresh);
```

## Example: Delete User External Credentials

This method deletes the user external credentials, which store the encrypted access tokens used for named credential callouts. It doesn't delete the external credential itself. Apex can be used only to create a named credential, not edit or delete one.

```apex
ConnectApi.NamedCredentials.deleteCredential('GitHubOAuth', 'Markdown Access', principalType);
```

### See Also

- *Apex Reference Guide*: [deleteCredential](https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_ConnectAPI_NamedCredentials_static_methods.htm#apex_ConnectAPI_NamedCredentials_deleteCredential\_1)
- *Blog*: [Understanding Named Credentials](https://unofficialsf.com/understanding-named-credentials/)
