> ## 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.

# BaseProvider

> Base class for all providers.

```typescript
class BaseProvider implements OMSSProvider<P>
```

## Constructor

```typescript
BaseProvider(): BaseProvider<P>
```

### Returns

`BaseProvider<P>`

## 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>
  Resolvers that this provider supports.
</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(media: ProviderSourcesMeta<ResolverMetadata<P>>, result: ProviderResultEmitter): Promise<ProviderResult>
```

Fetch sources for a certain media.

#### Parameters

<ResponseField name={"media"} type={"ProviderSourcesMeta<ResolverMetadata<P>>"} required>
  Return object of the resolver's resolve() method.
</ResponseField>

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

#### Returns

`Promise<ProviderResult>`


## Related topics

- [BaseResolver](/sdk-artifacts/classes/BaseResolver.md)
- [BaseSource](/sdk-artifacts/interfaces/BaseSource.md)
- [OMSS v1.1 Specification](/spec/latest/ref/spec.md)
