# DID Discovery plugin
## Naming
### Plugin name
- QueryDID
- DIDSearch
- DIDDiscovery 👍
- ...
### Method name
- queryDid
- findDid
- discoverDid 👍
## Types
```typescript
export interface IDIDDiscoveryDiscoverDidArgs extends Record<string, any>{
generic?: string
}
export interface IDIDDiscoverMatch {
did: string
metaData: Record<string, any>
}
export interface IDIDDiscoveryProviderResult {
provider: string
matches: IDIDDiscoverMatch[]
}
export interface IDIDSearchFindDidResult extends Partial<IDIDDiscoveryDiscoverDidArgs> {
results: IDIDDiscoveryProviderResult[]
}
export interface IDIDDiscovery extends IPluginMethodMap {
discoverDid(
args: IDIDDiscoveryDiscoverDidArgs,
context: IAgentContext<IDIDManager & IDataStoreORM>,
): Promise<IDIDSearchFindDidResult>
}
```
## Example
```typescript
const results = await agent.discoverDid({ query: 'alice' })
const results2 = await agent.discoverDid({
query: 'alice',
options: {
providers: ['didManagerAlias', 'ens'],
managed: true
}
})
const results3 = await agent.discoverDid({
query: 'alice',
options: {
providers: ['github'],
isRegex: false,
managed: false
}
})
```
```json=
{
"query": "alice",
"results": [
{
"provider": "didManagerAlias",
"matches": [
{
"did": "did:web:pulsar.veramo.io:alice",
"metaData": {
"alias": "alice"
}
},
{
"did": "did:web:pulsar.veramo.io:alice-in-wonderland",
"metaData": {
"alias": "alice-in-wonderland"
}
},
]
},
{
"provider": "ens",
"matches": [
{
"did": "did:ethr:0x1234",
"metaData": {
"domain": "alice.eth"
}
}
]
},
{
"provider": "profileVC",
"matches": [
{
"did": "did:ethr:0x83723",
"metaData": {
"verifiableCredential": {
//...
"credentialSubject": {
"id": "did:ethr:0x83723"
"name": "Alice"
},
"proof": "..."
}
}
}
]
}
]
}
```