import { notionRequest, type JsonRecord } from './request.ts'
import { inputRecord, optionalString, requiredString } from './validation.ts'
type DataSourceResponse = {
id?: string
title?: unknown[]
properties?: JsonRecord
parent?: JsonRecord
database_parent?: JsonRecord
[key: string]: unknown
}
/**
* Read a Notion data source (schema/properties) by data source id.
*
* Databases are containers; the schema lives on their data sources. Get a data
* source id from get-database, then call this helper.
*/
export default async function getDataSource(params: Record<string, unknown>) {
const input = inputRecord(params)
const dataSourceId = requiredString(input, 'dataSourceId')
const result = await notionRequest<DataSourceResponse>(
'/data_sources/' + encodeURIComponent(dataSourceId),
{
account: optionalString(input, 'account'),
integration: optionalString(input, 'integration'),
},
)
return {
id: result.id ?? null,
title: result.title ?? [],
properties: result.properties ?? {},
parent: result.parent ?? null,
databaseParent: result.database_parent ?? null,
}
}