import {z} from 'zod' export type GetApiBasicPatentDataBibliographyArgs = {patent_id?: string | undefined, patent_number?: string | undefined}; export type GetApiBasicPatentDataBibliographyOptions = {baseUrl?: string | undefined, bearerAuth?: string | undefined, fetch?: typeof fetch | undefined}; export const p012BasicPatentDataBibliographyPatentBasePerson = z.object({num: z.string().optional(), lang: z.string().optional(), name: z.string().optional(), text: z.string().optional(), address: z.string().optional(), rep_type: z.string().optional(), sequence: z.number().int().optional(), data_format: z.string().optional()}); export const p012BasicPatentDataBibliographyParties = z.object({agency: z.array(p012BasicPatentDataBibliographyPatentBasePerson).optional(), agents: z.array(p012BasicPatentDataBibliographyPatentBasePerson).optional(), assignees: z.array(p012BasicPatentDataBibliographyPatentBasePerson).optional(), examiners: z.array(p012BasicPatentDataBibliographyPatentBasePerson).optional(), inventors: z.array(p012BasicPatentDataBibliographyPatentBasePerson).optional(), applicants: z.array(p012BasicPatentDataBibliographyPatentBasePerson).optional()}); export const p012BasicPatentDataBibliographyPatentAbstract = z.object({lang: z.string().optional(), text: z.string().optional(), data_format: z.string().optional()}); export const p012BasicPatentDataBibliographyPatentTitle = z.object({lang: z.string().optional(), text: z.string().optional(), data_format: z.string().optional()}); export const p012BasicPatentDataBibliographyPatentBaseInfo = z.object({num: z.string().optional(), date: z.number().int().optional(), kind: z.string().optional(), year: z.number().int().optional(), month: z.number().int().optional(), country: z.string().optional(), sequence: z.number().int().optional(), doc_number: z.string().optional()}); export const p012BasicPatentDataBibliographyAuthor = z.object({lang: z.string().optional(), name: z.string().optional(), sequence: z.number().int().optional()}); export const p012BasicPatentDataBibliographyCitedOthers = z.object({doi: z.string().optional(), num: z.string().optional(), lang: z.string().optional(), text: z.string().optional(), title: z.string().optional(), author: z.array(p012BasicPatentDataBibliographyAuthor).optional(), copyright: z.string().optional()}); export const p012BasicPatentDataBibliographyReferenceCited = z.object({cited_others: z.array(p012BasicPatentDataBibliographyCitedOthers).optional(), cited_patents: z.array(p012BasicPatentDataBibliographyPatentBaseInfo).optional()}); export const p012BasicPatentDataBibliographyRelatedDocuments = z.object({num: z.string().optional(), date: z.number().int().optional(), kind: z.string().optional(), year: z.number().int().optional(), month: z.number().int().optional(), country: z.string().optional(), sequence: z.number().int().optional(), doc_number: z.string().optional(), relation_type: z.string().optional()}); export const p012BasicPatentDataBibliographyClassifiationCode = z.object({class: z.string().optional(), section: z.string().optional(), sub_class: z.string().optional(), sub_group: z.string().optional(), main_group: z.string().optional()}); export const p012BasicPatentDataBibliographyClassificationDoc = z.object({main_classification: p012BasicPatentDataBibliographyClassifiationCode.optional(), further_classification: z.array(p012BasicPatentDataBibliographyClassifiationCode).optional()}); export const p012BasicPatentDataBibliographyClassifiationSymbolCode = z.object({class: z.string().optional(), category: z.string().optional(), mid_class: z.string().optional(), sub_class: z.string().optional()}); export const p012BasicPatentDataBibliographyClassificationGbc = z.object({classification_symbol: z.array(p012BasicPatentDataBibliographyClassifiationSymbolCode).optional()}); export const p012BasicPatentDataBibliographyClassifiationUpc = z.object({classification_symbol: z.array(p012BasicPatentDataBibliographyClassifiationCode).optional()}); export const p012BasicPatentDataBibliographyClassificationData = z.object({classification_fi: z.array(z.unknown()).optional(), classification_cpc: p012BasicPatentDataBibliographyClassificationDoc.optional(), classification_gbc: p012BasicPatentDataBibliographyClassificationGbc.optional(), classification_loc: z.array(z.unknown()).optional(), classification_upc: p012BasicPatentDataBibliographyClassifiationUpc.optional(), classification_ipcr: p012BasicPatentDataBibliographyClassificationDoc.optional(), classification_fterm: z.array(z.unknown()).optional()}); export const p012BasicPatentDataBibliographyPctOrRegionalFilingData = z.object({date: z.number().int().optional(), doc_number: z.string().optional(), entry_date: z.number().int().optional()}); export const p012BasicPatentDataBibliographyDatesOfPublicAvailability = z.object({year: z.number().int().optional(), month: z.number().int().optional(), printed_with_granted: z.number().int().optional()}); export const p012BasicPatentDataBibliographyBibliographicData = z.object({exdt: z.number().int().optional(), parties: p012BasicPatentDataBibliographyParties.optional(), abstracts: z.array(p012BasicPatentDataBibliographyPatentAbstract).optional(), patent_type: z.string().optional(), invention_title: z.array(p012BasicPatentDataBibliographyPatentTitle).optional(), priority_claims: z.array(p012BasicPatentDataBibliographyPatentBaseInfo).optional(), reference_cited: p012BasicPatentDataBibliographyReferenceCited.optional(), related_documents: z.array(p012BasicPatentDataBibliographyRelatedDocuments).optional(), classification_data: p012BasicPatentDataBibliographyClassificationData.optional(), application_reference: p012BasicPatentDataBibliographyPatentBaseInfo.optional(), publication_reference: p012BasicPatentDataBibliographyPatentBaseInfo.optional(), pct_or_regional_filing_data: p012BasicPatentDataBibliographyPctOrRegionalFilingData.optional(), dates_of_public_availability: p012BasicPatentDataBibliographyDatesOfPublicAvailability.optional(), pct_or_regional_publishing_data: p012BasicPatentDataBibliographyPatentBaseInfo.optional()}); export const p012BasicPatentDataBibliographyPatentBibliographicResponse = z.object({pn: z.string().optional(), patent_id: z.string().optional(), bibliographic_data: p012BasicPatentDataBibliographyBibliographicData.optional()}); export const p012BasicPatentDataBibliographyResponse = z.object({data: z.array(p012BasicPatentDataBibliographyPatentBibliographicResponse).optional(), status: z.boolean(), error_msg: z.string().optional(), error_code: z.number().int()}); export const validateResponse = async ( schema: { readonly '~standard': { readonly validate: (value: unknown) => ({ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }) | Promise<{ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }> } }, value: unknown ): Promise => { const result = await schema['~standard'].validate(value) if (result.issues !== undefined) { const detail = result.issues .map(({ message, path }) => path?.length ? `${path.map((segment) => String(typeof segment === 'object' ? segment.key : segment)).join('.')}: ${message}` : message ) .join('; ') throw new Error(`Response does not match the schema: ${detail}`, { cause: { issues: result.issues } }) } return result.value }; /** * P012 Biblio * * GET /basic-patent-data/bibliography */ export const getApiBasicPatentDataBibliography = async (args: GetApiBasicPatentDataBibliographyArgs, options?: GetApiBasicPatentDataBibliographyOptions) => { const {baseUrl = "https://connect.patsnap.com", fetch: fetchFn = fetch, bearerAuth} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json") if (args.patent_id != null) query.append("patent_id", String(args.patent_id)) if (args.patent_number != null) query.append("patent_number", String(args.patent_number)) if (bearerAuth !== undefined) headers.set('authorization', `Bearer ${bearerAuth}`) const url = `${baseUrl.replace(/\/+$/, '')}/basic-patent-data/bibliography${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "GET", headers}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(p012BasicPatentDataBibliographyResponse, await res.json()) };