@pdfvector/instance-contract 0.2.7 → 0.2.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/.tsc/lib/index.d.ts +1 -11
  2. package/.tsc/lib/index.d.ts.map +1 -1
  3. package/.tsc/lib/index.js +1 -7
  4. package/CHANGELOG.md +23 -0
  5. package/package.json +6 -6
  6. package/.tsc/lib/fetchable-url-schema.d.ts +0 -3
  7. package/.tsc/lib/fetchable-url-schema.d.ts.map +0 -1
  8. package/.tsc/lib/fetchable-url-schema.js +0 -13
  9. package/.tsc/lib/json-schema-input.d.ts +0 -3
  10. package/.tsc/lib/json-schema-input.d.ts.map +0 -1
  11. package/.tsc/lib/json-schema-input.js +0 -25
  12. package/.tsc/lib/page-markdown-schema.d.ts +0 -6
  13. package/.tsc/lib/page-markdown-schema.d.ts.map +0 -1
  14. package/.tsc/lib/page-markdown-schema.js +0 -9
  15. package/.tsc/lib/pdfvector-model-schema.d.ts +0 -8
  16. package/.tsc/lib/pdfvector-model-schema.d.ts.map +0 -1
  17. package/.tsc/lib/pdfvector-model-schema.js +0 -4
  18. package/.tsc/lib/pdfvector-model.d.ts +0 -4
  19. package/.tsc/lib/pdfvector-model.d.ts.map +0 -1
  20. package/.tsc/lib/pdfvector-model.js +0 -0
  21. package/.tsc/lib/router/academic/fetch.d.ts +0 -69
  22. package/.tsc/lib/router/academic/fetch.d.ts.map +0 -1
  23. package/.tsc/lib/router/academic/fetch.js +0 -119
  24. package/.tsc/lib/router/academic/find-citations.d.ts +0 -70
  25. package/.tsc/lib/router/academic/find-citations.d.ts.map +0 -1
  26. package/.tsc/lib/router/academic/find-citations.js +0 -116
  27. package/.tsc/lib/router/academic/index.d.ts +0 -8
  28. package/.tsc/lib/router/academic/index.d.ts.map +0 -1
  29. package/.tsc/lib/router/academic/index.js +0 -7
  30. package/.tsc/lib/router/academic/paper-graph.d.ts +0 -113
  31. package/.tsc/lib/router/academic/paper-graph.d.ts.map +0 -1
  32. package/.tsc/lib/router/academic/paper-graph.js +0 -144
  33. package/.tsc/lib/router/academic/parse.d.ts +0 -50
  34. package/.tsc/lib/router/academic/parse.d.ts.map +0 -1
  35. package/.tsc/lib/router/academic/parse.js +0 -146
  36. package/.tsc/lib/router/academic/provider.d.ts +0 -18
  37. package/.tsc/lib/router/academic/provider.d.ts.map +0 -1
  38. package/.tsc/lib/router/academic/provider.js +0 -16
  39. package/.tsc/lib/router/academic/search-grants.d.ts +0 -84
  40. package/.tsc/lib/router/academic/search-grants.d.ts.map +0 -1
  41. package/.tsc/lib/router/academic/search-grants.js +0 -171
  42. package/.tsc/lib/router/academic/search.d.ts +0 -83
  43. package/.tsc/lib/router/academic/search.d.ts.map +0 -1
  44. package/.tsc/lib/router/academic/search.js +0 -154
  45. package/.tsc/lib/router/academic/similar-papers.d.ts +0 -89
  46. package/.tsc/lib/router/academic/similar-papers.d.ts.map +0 -1
  47. package/.tsc/lib/router/academic/similar-papers.js +0 -143
  48. package/.tsc/lib/router/admin/get-environment.d.ts +0 -5
  49. package/.tsc/lib/router/admin/get-environment.d.ts.map +0 -1
  50. package/.tsc/lib/router/admin/get-environment.js +0 -13
  51. package/.tsc/lib/router/admin/get-free-usage-records.d.ts +0 -34
  52. package/.tsc/lib/router/admin/get-free-usage-records.d.ts.map +0 -1
  53. package/.tsc/lib/router/admin/get-free-usage-records.js +0 -38
  54. package/.tsc/lib/router/admin/get-provider-usage-records.d.ts +0 -36
  55. package/.tsc/lib/router/admin/get-provider-usage-records.d.ts.map +0 -1
  56. package/.tsc/lib/router/admin/get-provider-usage-records.js +0 -45
  57. package/.tsc/lib/router/admin/get-usage-records.d.ts +0 -48
  58. package/.tsc/lib/router/admin/get-usage-records.d.ts.map +0 -1
  59. package/.tsc/lib/router/admin/get-usage-records.js +0 -44
  60. package/.tsc/lib/router/admin/health-check.d.ts +0 -5
  61. package/.tsc/lib/router/admin/health-check.d.ts.map +0 -1
  62. package/.tsc/lib/router/admin/health-check.js +0 -14
  63. package/.tsc/lib/router/admin/index.d.ts +0 -9
  64. package/.tsc/lib/router/admin/index.d.ts.map +0 -1
  65. package/.tsc/lib/router/admin/index.js +0 -8
  66. package/.tsc/lib/router/admin/set-domain.d.ts +0 -7
  67. package/.tsc/lib/router/admin/set-domain.d.ts.map +0 -1
  68. package/.tsc/lib/router/admin/set-domain.js +0 -20
  69. package/.tsc/lib/router/admin/set-environment.d.ts +0 -7
  70. package/.tsc/lib/router/admin/set-environment.d.ts.map +0 -1
  71. package/.tsc/lib/router/admin/set-environment.js +0 -41
  72. package/.tsc/lib/router/admin/set-version.d.ts +0 -7
  73. package/.tsc/lib/router/admin/set-version.d.ts.map +0 -1
  74. package/.tsc/lib/router/admin/set-version.js +0 -21
  75. package/.tsc/lib/router/authenticate/index.d.ts +0 -2
  76. package/.tsc/lib/router/authenticate/index.d.ts.map +0 -1
  77. package/.tsc/lib/router/authenticate/index.js +0 -1
  78. package/.tsc/lib/router/authenticate/validate-credential.d.ts +0 -7
  79. package/.tsc/lib/router/authenticate/validate-credential.d.ts.map +0 -1
  80. package/.tsc/lib/router/authenticate/validate-credential.js +0 -20
  81. package/.tsc/lib/router/bankStatement/ask.d.ts +0 -32
  82. package/.tsc/lib/router/bankStatement/ask.d.ts.map +0 -1
  83. package/.tsc/lib/router/bankStatement/ask.js +0 -88
  84. package/.tsc/lib/router/bankStatement/extract.d.ts +0 -33
  85. package/.tsc/lib/router/bankStatement/extract.d.ts.map +0 -1
  86. package/.tsc/lib/router/bankStatement/extract.js +0 -113
  87. package/.tsc/lib/router/bankStatement/get-default-spec.d.ts +0 -2
  88. package/.tsc/lib/router/bankStatement/get-default-spec.d.ts.map +0 -1
  89. package/.tsc/lib/router/bankStatement/get-default-spec.js +0 -19
  90. package/.tsc/lib/router/bankStatement/index.d.ts +0 -4
  91. package/.tsc/lib/router/bankStatement/index.d.ts.map +0 -1
  92. package/.tsc/lib/router/bankStatement/index.js +0 -3
  93. package/.tsc/lib/router/bankStatement/parse.d.ts +0 -28
  94. package/.tsc/lib/router/bankStatement/parse.d.ts.map +0 -1
  95. package/.tsc/lib/router/bankStatement/parse.js +0 -105
  96. package/.tsc/lib/router/document/ask.d.ts +0 -32
  97. package/.tsc/lib/router/document/ask.d.ts.map +0 -1
  98. package/.tsc/lib/router/document/ask.js +0 -134
  99. package/.tsc/lib/router/document/extract.d.ts +0 -33
  100. package/.tsc/lib/router/document/extract.d.ts.map +0 -1
  101. package/.tsc/lib/router/document/extract.js +0 -152
  102. package/.tsc/lib/router/document/get-default-spec.d.ts +0 -2
  103. package/.tsc/lib/router/document/get-default-spec.d.ts.map +0 -1
  104. package/.tsc/lib/router/document/get-default-spec.js +0 -19
  105. package/.tsc/lib/router/document/index.d.ts +0 -4
  106. package/.tsc/lib/router/document/index.d.ts.map +0 -1
  107. package/.tsc/lib/router/document/index.js +0 -3
  108. package/.tsc/lib/router/document/parse.d.ts +0 -40
  109. package/.tsc/lib/router/document/parse.d.ts.map +0 -1
  110. package/.tsc/lib/router/document/parse.js +0 -142
  111. package/.tsc/lib/router/free/bank-statement-parse.d.ts +0 -16
  112. package/.tsc/lib/router/free/bank-statement-parse.d.ts.map +0 -1
  113. package/.tsc/lib/router/free/bank-statement-parse.js +0 -87
  114. package/.tsc/lib/router/free/generate-schema.d.ts +0 -8
  115. package/.tsc/lib/router/free/generate-schema.d.ts.map +0 -1
  116. package/.tsc/lib/router/free/generate-schema.js +0 -110
  117. package/.tsc/lib/router/free/index.d.ts +0 -5
  118. package/.tsc/lib/router/free/index.d.ts.map +0 -1
  119. package/.tsc/lib/router/free/index.js +0 -4
  120. package/.tsc/lib/router/free/publication-pdf-url.d.ts +0 -12
  121. package/.tsc/lib/router/free/publication-pdf-url.d.ts.map +0 -1
  122. package/.tsc/lib/router/free/publication-pdf-url.js +0 -86
  123. package/.tsc/lib/router/free/rate-limit-status.d.ts +0 -19
  124. package/.tsc/lib/router/free/rate-limit-status.d.ts.map +0 -1
  125. package/.tsc/lib/router/free/rate-limit-status.js +0 -36
  126. package/.tsc/lib/router/identity/ask.d.ts +0 -32
  127. package/.tsc/lib/router/identity/ask.d.ts.map +0 -1
  128. package/.tsc/lib/router/identity/ask.js +0 -95
  129. package/.tsc/lib/router/identity/extract.d.ts +0 -33
  130. package/.tsc/lib/router/identity/extract.d.ts.map +0 -1
  131. package/.tsc/lib/router/identity/extract.js +0 -103
  132. package/.tsc/lib/router/identity/get-default-spec.d.ts +0 -2
  133. package/.tsc/lib/router/identity/get-default-spec.d.ts.map +0 -1
  134. package/.tsc/lib/router/identity/get-default-spec.js +0 -19
  135. package/.tsc/lib/router/identity/index.d.ts +0 -4
  136. package/.tsc/lib/router/identity/index.d.ts.map +0 -1
  137. package/.tsc/lib/router/identity/index.js +0 -3
  138. package/.tsc/lib/router/identity/parse.d.ts +0 -29
  139. package/.tsc/lib/router/identity/parse.d.ts.map +0 -1
  140. package/.tsc/lib/router/identity/parse.js +0 -109
  141. package/.tsc/lib/router/index.d.ts +0 -9
  142. package/.tsc/lib/router/index.d.ts.map +0 -1
  143. package/.tsc/lib/router/index.js +0 -8
  144. package/.tsc/lib/router/invoice/ask.d.ts +0 -32
  145. package/.tsc/lib/router/invoice/ask.d.ts.map +0 -1
  146. package/.tsc/lib/router/invoice/ask.js +0 -85
  147. package/.tsc/lib/router/invoice/extract.d.ts +0 -33
  148. package/.tsc/lib/router/invoice/extract.d.ts.map +0 -1
  149. package/.tsc/lib/router/invoice/extract.js +0 -109
  150. package/.tsc/lib/router/invoice/get-default-spec.d.ts +0 -2
  151. package/.tsc/lib/router/invoice/get-default-spec.d.ts.map +0 -1
  152. package/.tsc/lib/router/invoice/get-default-spec.js +0 -19
  153. package/.tsc/lib/router/invoice/index.d.ts +0 -4
  154. package/.tsc/lib/router/invoice/index.d.ts.map +0 -1
  155. package/.tsc/lib/router/invoice/index.js +0 -3
  156. package/.tsc/lib/router/invoice/parse.d.ts +0 -28
  157. package/.tsc/lib/router/invoice/parse.d.ts.map +0 -1
  158. package/.tsc/lib/router/invoice/parse.js +0 -100
  159. package/.tsc/lib/supported-mimes.d.ts +0 -35
  160. package/.tsc/lib/supported-mimes.d.ts.map +0 -1
  161. package/.tsc/lib/supported-mimes.js +0 -130
@@ -1,171 +0,0 @@
1
- import { oc } from "@orpc/contract";
2
- import { getOpenApiCodeSamples } from "@pdfvector/api-docs";
3
- import { academicCreditCosts } from "@pdfvector/util";
4
- import { z } from "zod";
5
- import { grantProviderSchema } from "./provider.js";
6
- const grantSchema = z.object({
7
- sourceId: z.string().nullish(),
8
- title: z.string().nullish(),
9
- url: z.string().nullish(),
10
- agency: z.string().nullish(),
11
- program: z.string().nullish(),
12
- description: z.string().nullish(),
13
- eligibility: z.string().nullish(),
14
- fundingAmountMin: z.number().nullish(),
15
- fundingAmountMax: z.number().nullish(),
16
- currency: z.string().nullish(),
17
- deadlineDate: z.string().nullish(),
18
- openDate: z.string().nullish(),
19
- closeDate: z.string().nullish(),
20
- grantType: z.string().nullish(),
21
- region: z.string().nullish(),
22
- keywords: z.array(z.string()).nullish(),
23
- piName: z.string().nullish(),
24
- organizationName: z.string().nullish(),
25
- provider: grantProviderSchema.nullish(),
26
- providerData: z.record(z.string(), z.unknown()).nullish(),
27
- });
28
- const providerErrorSchema = z.object({
29
- provider: grantProviderSchema,
30
- message: z.string(),
31
- code: z.string().nullish(),
32
- details: z.record(z.string(), z.unknown()).nullish(),
33
- });
34
- const requestExamples = {
35
- "Search all providers": {
36
- summary: "Search grants across all funding databases",
37
- value: {
38
- query: "machine learning healthcare",
39
- },
40
- },
41
- "Search with filters": {
42
- summary: "Search with funding and deadline filters",
43
- value: {
44
- query: "climate change research",
45
- providers: ["grants-gov", "cordis"],
46
- fundingMin: 50000,
47
- fundingMax: 500000,
48
- deadlineFrom: "2026-01-01",
49
- deadlineTo: "2026-12-31",
50
- limit: 20,
51
- },
52
- },
53
- "Search specific provider": {
54
- summary: "Search NIH grants only",
55
- value: {
56
- query: "CRISPR gene therapy",
57
- providers: ["nih-reporter"],
58
- limit: 10,
59
- },
60
- },
61
- };
62
- export const searchGrants = oc
63
- .input(z.object({
64
- query: z
65
- .string({ message: "query is required and must be a string" })
66
- .min(1, "query must not be empty")
67
- .max(400, "query must be at most 400 characters")
68
- .describe("Search query string for grants"),
69
- providers: z
70
- .array(grantProviderSchema, {
71
- message: "providers must be an array of valid grant provider names",
72
- })
73
- .default(["grants-gov", "nih-reporter", "cordis", "ukri"])
74
- .describe("Grant databases to search. Defaults to all providers."),
75
- offset: z
76
- .number({ message: "offset must be a number" })
77
- .int("offset must be a whole number")
78
- .min(0, "offset must be 0 or greater")
79
- .default(0)
80
- .describe("Results offset for pagination"),
81
- limit: z
82
- .number({ message: "limit must be a number" })
83
- .int("limit must be a whole number")
84
- .min(1, "limit must be at least 1")
85
- .max(50, "limit must be at most 50")
86
- .default(10)
87
- .describe("Maximum results per provider"),
88
- deadlineFrom: z
89
- .string()
90
- .regex(/^\d{4}-\d{2}-\d{2}$/, "deadlineFrom must be in ISO date format (YYYY-MM-DD)")
91
- .nullish()
92
- .describe("Filter grants with deadlines from this date (ISO format, e.g. 2026-01-01)"),
93
- deadlineTo: z
94
- .string()
95
- .regex(/^\d{4}-\d{2}-\d{2}$/, "deadlineTo must be in ISO date format (YYYY-MM-DD)")
96
- .nullish()
97
- .describe("Filter grants with deadlines up to this date (ISO format, e.g. 2026-12-31)"),
98
- fundingMin: z
99
- .number({ message: "fundingMin must be a number" })
100
- .min(0, "fundingMin must be 0 or greater")
101
- .nullish()
102
- .describe("Minimum funding amount filter"),
103
- fundingMax: z
104
- .number({ message: "fundingMax must be a number" })
105
- .min(0, "fundingMax must be 0 or greater")
106
- .nullish()
107
- .describe("Maximum funding amount filter"),
108
- fields: z
109
- .array(z.enum([
110
- "sourceId",
111
- "title",
112
- "url",
113
- "agency",
114
- "program",
115
- "description",
116
- "eligibility",
117
- "fundingAmountMin",
118
- "fundingAmountMax",
119
- "currency",
120
- "deadlineDate",
121
- "openDate",
122
- "closeDate",
123
- "grantType",
124
- "region",
125
- "keywords",
126
- "piName",
127
- "organizationName",
128
- "provider",
129
- "providerData",
130
- ]), {
131
- message: "fields must be an array of valid grant field names",
132
- })
133
- .nullish()
134
- .describe("Specific grant fields to return. If omitted, returns all fields except providerData."),
135
- callback: z
136
- .object({
137
- url: z
138
- .url()
139
- .describe("Webhook URL where results will be POSTed when processing completes"),
140
- type: z
141
- .string()
142
- .optional()
143
- .describe("Callback type identifier (e.g. 'zapier')"),
144
- })
145
- .optional()
146
- .describe("Optional webhook callback for async processing. " +
147
- "When provided, the server returns 202 immediately and POSTs the full response payload to the callback URL when processing completes. " +
148
- "On error, the callback receives a POST with X-Pdfvector-Callback-Failed: true header and error details in the body."),
149
- }))
150
- .output(z.object({
151
- estimatedTotalResults: z.number(),
152
- results: z.array(grantSchema),
153
- errors: z.array(providerErrorSchema).nullish(),
154
- requestId: z.number().int(),
155
- }))
156
- .route({
157
- summary: "Search grants",
158
- description: `Search for research grants and funding opportunities across multiple databases (Grants.gov, NIH RePORTER, CORDIS, UKRI) with unified results, relevance ranking, and filtering by deadline and funding amount. Costs ${academicCreditCosts.grantSearch} credits per request.`,
159
- tags: ["Academic"],
160
- spec: (op) => {
161
- op.security = [{ bearerAuth: [] }];
162
- const reqBody = op.requestBody;
163
- if (reqBody?.content) {
164
- for (const mediaType of Object.values(reqBody.content)) {
165
- mediaType["examples"] = requestExamples;
166
- }
167
- }
168
- op["x-codeSamples"] = getOpenApiCodeSamples("academic-search-grants");
169
- return op;
170
- },
171
- });
@@ -1,83 +0,0 @@
1
- import { z } from "zod";
2
- export declare const search: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
3
- query: z.ZodString;
4
- providers: z.ZodDefault<z.ZodArray<z.ZodEnum<{
5
- arxiv: "arxiv";
6
- crossref: "crossref";
7
- eric: "eric";
8
- "europe-pmc": "europe-pmc";
9
- "google-scholar": "google-scholar";
10
- openalex: "openalex";
11
- pubmed: "pubmed";
12
- "semantic-scholar": "semantic-scholar";
13
- }>>>;
14
- offset: z.ZodDefault<z.ZodNumber>;
15
- limit: z.ZodDefault<z.ZodNumber>;
16
- yearFrom: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
17
- yearTo: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
18
- fields: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodEnum<{
19
- abstract: "abstract";
20
- authors: "authors";
21
- date: "date";
22
- doi: "doi";
23
- pdfURL: "pdfURL";
24
- provider: "provider";
25
- providerData: "providerData";
26
- providerURL: "providerURL";
27
- title: "title";
28
- totalCitations: "totalCitations";
29
- totalReferences: "totalReferences";
30
- url: "url";
31
- year: "year";
32
- }>>>>;
33
- callback: z.ZodOptional<z.ZodObject<{
34
- url: z.ZodURL;
35
- type: z.ZodOptional<z.ZodString>;
36
- }, z.core.$strip>>;
37
- }, z.core.$strip>, z.ZodObject<{
38
- estimatedTotalResults: z.ZodNumber;
39
- results: z.ZodArray<z.ZodObject<{
40
- doi: z.ZodOptional<z.ZodNullable<z.ZodString>>;
41
- title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
42
- url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
43
- providerURL: z.ZodOptional<z.ZodNullable<z.ZodString>>;
44
- authors: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
45
- name: z.ZodString;
46
- url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
47
- }, z.core.$strip>>>>;
48
- date: z.ZodOptional<z.ZodNullable<z.ZodString>>;
49
- year: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
50
- totalCitations: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
51
- totalReferences: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
52
- abstract: z.ZodOptional<z.ZodNullable<z.ZodString>>;
53
- pdfURL: z.ZodOptional<z.ZodNullable<z.ZodString>>;
54
- provider: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
55
- arxiv: "arxiv";
56
- crossref: "crossref";
57
- eric: "eric";
58
- "europe-pmc": "europe-pmc";
59
- "google-scholar": "google-scholar";
60
- openalex: "openalex";
61
- pubmed: "pubmed";
62
- "semantic-scholar": "semantic-scholar";
63
- }>>>;
64
- providerData: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
65
- }, z.core.$strip>>;
66
- errors: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
67
- provider: z.ZodEnum<{
68
- arxiv: "arxiv";
69
- crossref: "crossref";
70
- eric: "eric";
71
- "europe-pmc": "europe-pmc";
72
- "google-scholar": "google-scholar";
73
- openalex: "openalex";
74
- pubmed: "pubmed";
75
- "semantic-scholar": "semantic-scholar";
76
- }>;
77
- message: z.ZodString;
78
- code: z.ZodOptional<z.ZodNullable<z.ZodString>>;
79
- details: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
80
- }, z.core.$strip>>>>;
81
- requestId: z.ZodNumber;
82
- }, z.core.$strip>, Record<never, never>, Record<never, never>>;
83
- //# sourceMappingURL=search.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../../lib/router/academic/search.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA0DxB,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8DAkHhB,CAAC"}
@@ -1,154 +0,0 @@
1
- import { oc } from "@orpc/contract";
2
- import { getOpenApiCodeSamples } from "@pdfvector/api-docs";
3
- import { academicCreditCosts } from "@pdfvector/util";
4
- import { z } from "zod";
5
- import { providerSchema } from "./provider.js";
6
- const authorSchema = z.object({
7
- name: z.string(),
8
- url: z.string().nullish(),
9
- });
10
- const publicationSchema = z.object({
11
- doi: z.string().nullish(),
12
- title: z.string().nullish(),
13
- url: z.string().nullish(),
14
- providerURL: z.string().nullish(),
15
- authors: z.array(authorSchema).nullish(),
16
- date: z.string().nullish(),
17
- year: z.number().nullish(),
18
- totalCitations: z.number().nullish(),
19
- totalReferences: z.number().nullish(),
20
- abstract: z.string().nullish(),
21
- pdfURL: z.string().nullish(),
22
- provider: providerSchema.nullish(),
23
- providerData: z.record(z.string(), z.unknown()).nullish(),
24
- });
25
- const providerErrorSchema = z.object({
26
- provider: providerSchema,
27
- message: z.string(),
28
- code: z.string().nullish(),
29
- details: z.record(z.string(), z.unknown()).nullish(),
30
- });
31
- const requestExamples = {
32
- "Search with default provider": {
33
- summary: "Search with Semantic Scholar",
34
- value: {
35
- query: "deep learning for natural language processing",
36
- },
37
- },
38
- "Search multiple providers": {
39
- summary: "Search across multiple databases",
40
- value: {
41
- query: "CRISPR gene editing",
42
- providers: ["semantic-scholar", "pubmed", "openalex"],
43
- limit: 10,
44
- },
45
- },
46
- "Search with year filter": {
47
- summary: "Search recent papers",
48
- value: {
49
- query: "large language models",
50
- providers: ["semantic-scholar"],
51
- yearFrom: 2023,
52
- yearTo: 2026,
53
- limit: 20,
54
- },
55
- },
56
- };
57
- export const search = oc
58
- .input(z.object({
59
- query: z
60
- .string({ message: "query is required and must be a string" })
61
- .min(1, "query must not be empty")
62
- .max(400, "query must be at most 400 characters")
63
- .describe("Search query string for academic papers"),
64
- providers: z
65
- .array(providerSchema, {
66
- message: "providers must be an array of valid provider names",
67
- })
68
- .default(["semantic-scholar"])
69
- .describe("Academic databases to search"),
70
- offset: z
71
- .number({ message: "offset must be a number" })
72
- .int("offset must be a whole number")
73
- .min(0, "offset must be 0 or greater")
74
- .default(0)
75
- .describe("Results offset"),
76
- limit: z
77
- .number({ message: "limit must be a number" })
78
- .int("limit must be a whole number")
79
- .min(1, "limit must be at least 1")
80
- .max(100, "limit must be at most 100")
81
- .default(20)
82
- .describe("Results per provider"),
83
- yearFrom: z
84
- .number({ message: "yearFrom must be a number" })
85
- .int("yearFrom must be a whole number")
86
- .min(1900, "yearFrom must be 1900 or later")
87
- .max(2100, "yearFrom must be 2100 or earlier")
88
- .nullish()
89
- .describe("Filter papers published from this year"),
90
- yearTo: z
91
- .number({ message: "yearTo must be a number" })
92
- .int("yearTo must be a whole number")
93
- .min(1900, "yearTo must be 1900 or later")
94
- .max(2100, "yearTo must be 2100 or earlier")
95
- .nullish()
96
- .describe("Filter papers published up to this year"),
97
- fields: z
98
- .array(z.enum([
99
- "doi",
100
- "title",
101
- "url",
102
- "providerURL",
103
- "authors",
104
- "date",
105
- "year",
106
- "totalCitations",
107
- "totalReferences",
108
- "abstract",
109
- "pdfURL",
110
- "provider",
111
- "providerData",
112
- ]), {
113
- message: "fields must be an array of valid publication field names",
114
- })
115
- .nullish()
116
- .describe("Specific publication fields to return. If omitted, returns all fields except providerData."),
117
- callback: z
118
- .object({
119
- url: z
120
- .url()
121
- .describe("Webhook URL where results will be POSTed when processing completes"),
122
- type: z
123
- .string()
124
- .optional()
125
- .describe("Callback type identifier (e.g. 'zapier')"),
126
- })
127
- .optional()
128
- .describe("Optional webhook callback for async processing. " +
129
- "When provided, the server returns 202 immediately and POSTs the full response payload to the callback URL when processing completes. " +
130
- "On error, the callback receives a POST with X-Pdfvector-Callback-Failed: true header and error details in the body. " +
131
- "Useful for long-running operations that may exceed client timeout limits."),
132
- }))
133
- .output(z.object({
134
- estimatedTotalResults: z.number(),
135
- results: z.array(publicationSchema),
136
- errors: z.array(providerErrorSchema).nullish(),
137
- requestId: z.number().int(),
138
- }))
139
- .route({
140
- summary: "Search academic papers",
141
- description: `Search for academic publications across multiple databases with relevance ranking. Costs ${academicCreditCosts.academicSearch} credits per request.`,
142
- tags: ["Academic"],
143
- spec: (op) => {
144
- op.security = [{ bearerAuth: [] }];
145
- const reqBody = op.requestBody;
146
- if (reqBody?.content) {
147
- for (const mediaType of Object.values(reqBody.content)) {
148
- mediaType["examples"] = requestExamples;
149
- }
150
- }
151
- op["x-codeSamples"] = getOpenApiCodeSamples("academic-search");
152
- return op;
153
- },
154
- });
@@ -1,89 +0,0 @@
1
- import { z } from "zod";
2
- export declare const similarPapers: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
3
- id: z.ZodString;
4
- limit: z.ZodDefault<z.ZodNumber>;
5
- includeEdges: z.ZodDefault<z.ZodBoolean>;
6
- fields: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodEnum<{
7
- abstract: "abstract";
8
- authors: "authors";
9
- date: "date";
10
- doi: "doi";
11
- pdfURL: "pdfURL";
12
- provider: "provider";
13
- providerData: "providerData";
14
- providerURL: "providerURL";
15
- title: "title";
16
- totalCitations: "totalCitations";
17
- totalReferences: "totalReferences";
18
- url: "url";
19
- year: "year";
20
- }>>>>;
21
- callback: z.ZodOptional<z.ZodObject<{
22
- url: z.ZodURL;
23
- type: z.ZodOptional<z.ZodString>;
24
- }, z.core.$strip>>;
25
- }, z.core.$strip>, z.ZodObject<{
26
- seed: z.ZodObject<{
27
- doi: z.ZodOptional<z.ZodNullable<z.ZodString>>;
28
- title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
29
- url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
30
- providerURL: z.ZodOptional<z.ZodNullable<z.ZodString>>;
31
- authors: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
32
- name: z.ZodString;
33
- url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
34
- }, z.core.$strip>>>>;
35
- date: z.ZodOptional<z.ZodNullable<z.ZodString>>;
36
- year: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
37
- totalCitations: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
38
- totalReferences: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
39
- abstract: z.ZodOptional<z.ZodNullable<z.ZodString>>;
40
- pdfURL: z.ZodOptional<z.ZodNullable<z.ZodString>>;
41
- provider: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
42
- arxiv: "arxiv";
43
- crossref: "crossref";
44
- eric: "eric";
45
- "europe-pmc": "europe-pmc";
46
- "google-scholar": "google-scholar";
47
- openalex: "openalex";
48
- pubmed: "pubmed";
49
- "semantic-scholar": "semantic-scholar";
50
- }>>>;
51
- providerData: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
52
- }, z.core.$strip>;
53
- results: z.ZodArray<z.ZodObject<{
54
- publication: z.ZodObject<{
55
- doi: z.ZodOptional<z.ZodNullable<z.ZodString>>;
56
- title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
57
- url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
58
- providerURL: z.ZodOptional<z.ZodNullable<z.ZodString>>;
59
- authors: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
60
- name: z.ZodString;
61
- url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
62
- }, z.core.$strip>>>>;
63
- date: z.ZodOptional<z.ZodNullable<z.ZodString>>;
64
- year: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
65
- totalCitations: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
66
- totalReferences: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
67
- abstract: z.ZodOptional<z.ZodNullable<z.ZodString>>;
68
- pdfURL: z.ZodOptional<z.ZodNullable<z.ZodString>>;
69
- provider: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
70
- arxiv: "arxiv";
71
- crossref: "crossref";
72
- eric: "eric";
73
- "europe-pmc": "europe-pmc";
74
- "google-scholar": "google-scholar";
75
- openalex: "openalex";
76
- pubmed: "pubmed";
77
- "semantic-scholar": "semantic-scholar";
78
- }>>>;
79
- providerData: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
80
- }, z.core.$strip>;
81
- similarity: z.ZodNumber;
82
- pageRank: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
83
- distance: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
84
- citingIds: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
85
- citedByIds: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
86
- }, z.core.$strip>>;
87
- requestId: z.ZodNumber;
88
- }, z.core.$strip>, Record<never, never>, Record<never, never>>;
89
- //# sourceMappingURL=similar-papers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"similar-papers.d.ts","sourceRoot":"","sources":["../../../../lib/router/academic/similar-papers.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA0ExB,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8DA+FvB,CAAC"}
@@ -1,143 +0,0 @@
1
- import { oc } from "@orpc/contract";
2
- import { getOpenApiCodeSamples } from "@pdfvector/api-docs";
3
- import { academicCreditCosts } from "@pdfvector/util";
4
- import { z } from "zod";
5
- import { providerSchema } from "./provider.js";
6
- const authorSchema = z.object({
7
- name: z.string(),
8
- url: z.string().nullish(),
9
- });
10
- const publicationSchema = z.object({
11
- doi: z.string().nullish(),
12
- title: z.string().nullish(),
13
- url: z.string().nullish(),
14
- providerURL: z.string().nullish(),
15
- authors: z.array(authorSchema).nullish(),
16
- date: z.string().nullish(),
17
- year: z.number().nullish(),
18
- totalCitations: z.number().nullish(),
19
- totalReferences: z.number().nullish(),
20
- abstract: z.string().nullish(),
21
- pdfURL: z.string().nullish(),
22
- provider: providerSchema.nullish(),
23
- providerData: z.record(z.string(), z.unknown()).nullish(),
24
- });
25
- const similarPaperSchema = z.object({
26
- publication: publicationSchema,
27
- similarity: z
28
- .number()
29
- .describe("Combined similarity score from citation network analysis"),
30
- pageRank: z.number().nullish().describe("Citation network importance score"),
31
- distance: z
32
- .number()
33
- .int()
34
- .nullish()
35
- .describe("Graph distance from seed paper"),
36
- citingIds: z
37
- .array(z.string())
38
- .nullish()
39
- .describe("OpenAlex IDs of papers in result set that cite this paper (only if includeEdges=true)"),
40
- citedByIds: z
41
- .array(z.string())
42
- .nullish()
43
- .describe("OpenAlex IDs of papers in result set cited by this paper (only if includeEdges=true)"),
44
- });
45
- const requestExamples = {
46
- "Find similar papers by DOI": {
47
- summary: "Find papers similar to a given paper",
48
- value: {
49
- id: "10.1038/nature12373",
50
- limit: 20,
51
- },
52
- },
53
- "Find similar with edges": {
54
- summary: "Find similar papers with citation graph edges",
55
- value: {
56
- id: "10.1038/nature12373",
57
- limit: 20,
58
- includeEdges: true,
59
- },
60
- },
61
- "Find similar by OpenAlex ID": {
62
- summary: "Find similar papers using an OpenAlex ID",
63
- value: {
64
- id: "W2963403868",
65
- limit: 10,
66
- },
67
- },
68
- };
69
- export const similarPapers = oc
70
- .input(z.object({
71
- id: z
72
- .string({ message: "id is required and must be a string" })
73
- .min(1, "id must not be empty")
74
- .max(500, "id must be at most 500 characters")
75
- .describe("Seed paper identifier. Supports DOI, Semantic Scholar ID, ArXiv ID, PubMed ID, OpenAlex ID, or URL."),
76
- limit: z
77
- .number({ message: "limit must be a number" })
78
- .int("limit must be a whole number")
79
- .min(1, "limit must be at least 1")
80
- .max(100, "limit must be at most 100")
81
- .default(30)
82
- .describe("Maximum number of similar papers to return"),
83
- includeEdges: z
84
- .boolean({ message: "includeEdges must be a boolean" })
85
- .default(false)
86
- .describe("Whether to include citing/cited_by edge data for graph construction"),
87
- fields: z
88
- .array(z.enum([
89
- "doi",
90
- "title",
91
- "url",
92
- "providerURL",
93
- "authors",
94
- "date",
95
- "year",
96
- "totalCitations",
97
- "totalReferences",
98
- "abstract",
99
- "pdfURL",
100
- "provider",
101
- "providerData",
102
- ]), {
103
- message: "fields must be an array of valid publication field names",
104
- })
105
- .nullish()
106
- .describe("Specific publication fields to return. If omitted, returns all fields except providerData."),
107
- callback: z
108
- .object({
109
- url: z
110
- .url()
111
- .describe("Webhook URL where results will be POSTed when processing completes"),
112
- type: z
113
- .string()
114
- .optional()
115
- .describe("Callback type identifier (e.g. 'zapier')"),
116
- })
117
- .optional()
118
- .describe("Optional webhook callback for async processing. " +
119
- "When provided, the server returns 202 immediately and POSTs the full response payload to the callback URL when processing completes. " +
120
- "On error, the callback receives a POST with X-Pdfvector-Callback-Failed: true header and error details in the body. " +
121
- "Useful for long-running operations that may exceed client timeout limits."),
122
- }))
123
- .output(z.object({
124
- seed: publicationSchema,
125
- results: z.array(similarPaperSchema),
126
- requestId: z.number().int(),
127
- }))
128
- .route({
129
- summary: "Find similar papers",
130
- description: `Find papers similar to a seed paper using citation network analysis. Returns papers ranked by similarity with optional graph edge data for visualization. Costs ${academicCreditCosts.academicSimilarPapers} credits per request.`,
131
- tags: ["Academic"],
132
- spec: (op) => {
133
- op.security = [{ bearerAuth: [] }];
134
- const reqBody = op.requestBody;
135
- if (reqBody?.content) {
136
- for (const mediaType of Object.values(reqBody.content)) {
137
- mediaType["examples"] = requestExamples;
138
- }
139
- }
140
- op["x-codeSamples"] = getOpenApiCodeSamples("academic-similar-papers");
141
- return op;
142
- },
143
- });
@@ -1,5 +0,0 @@
1
- import { z } from "zod";
2
- export declare const getEnvironment: import("@orpc/contract").ContractProcedureBuilderWithOutput<import("@orpc/contract").Schema<unknown, unknown>, z.ZodObject<{
3
- environment: z.ZodRecord<z.ZodString, z.ZodString>;
4
- }, z.core.$strip>, Record<never, never>, Record<never, never>>;
5
- //# sourceMappingURL=get-environment.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-environment.d.ts","sourceRoot":"","sources":["../../../../lib/router/admin/get-environment.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,cAAc;;8DAW0C,CAAC"}
@@ -1,13 +0,0 @@
1
- import { oc } from "@orpc/contract";
2
- import { z } from "zod";
3
- export const getEnvironment = oc
4
- .route({
5
- summary: "Get instance server's environment",
6
- description: "Return all environment variables available to the instance server process",
7
- tags: ["Admin"],
8
- spec: (op) => {
9
- op.security = [{ bearerAuth: [] }];
10
- return op;
11
- },
12
- })
13
- .output(z.object({ environment: z.record(z.string(), z.string()) }));