> ## Documentation Index
> Fetch the complete documentation index at: https://omss.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# OMSSProvider

> Core provider interface.

## Properties

<ResponseField name={"catalog"} type={"() => NonEmptyArray<string> | Promise<NonEmptyArray<string>>"}>
  Catalog of media this provider supports. It does not have to exist. If it does, it should be a list of media IDs.
  This does not get queried for source resolving, but more metadata about the provider.
</ResponseField>

<ResponseField name={"enabled"} type={"boolean"} required>
  Whether the provider will be used.
</ResponseField>

<ResponseField name={"id"} type={"string"} required>
  Provider ID. Must be unique.
</ResponseField>

<ResponseField name={"name"} type={"string"} required>
  Friendly name of the provider.
</ResponseField>

<ResponseField name={"resolver"} type={"P"} required>
  Resolver that this provider is bound to.
</ResponseField>

<ResponseField name={"supportsId"} type={"(id: ParsedOMSSId) => boolean | Promise<boolean>"} required>
  Provide a method that checks whether this provider supports a certain ID.
</ResponseField>

## Methods

### getSources()

```typescript
getSources(request: ProviderSourcesMeta<ResolverMetadata<P>>, result: ProviderResultEmitter): Promise<ProviderResult>
```

Fetch sources for a certain request.
The shape of `request.meta` is derived from the resolver's resolve() return type.

#### Parameters

<ResponseField name={"request"} type={"ProviderSourcesMeta<ResolverMetadata<P>>"} required />

<ResponseField name={"result"} type={"ProviderResultEmitter"} required />

#### Returns

`Promise<ProviderResult>`


## Related topics

- [OMSSProviderError](/sdk-artifacts/classes/OMSSProviderError.md)
- [OMSSProviderResult](/sdk-artifacts/interfaces/OMSSProviderResult.md)
- [BaseProvider](/sdk-artifacts/classes/BaseProvider.md)
