c4r-aggregator-client 1.0.0

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 (271) hide show
  1. package/.idea/misc.xml +6 -0
  2. package/.idea/modules.xml +8 -0
  3. package/.idea/ts.iml +9 -0
  4. package/.idea/vcs.xml +6 -0
  5. package/.openapi-generator/FILES +91 -0
  6. package/.openapi-generator/VERSION +1 -0
  7. package/.openapi-generator-ignore +23 -0
  8. package/README.md +174 -0
  9. package/dist/apis/AdminApi.d.ts +187 -0
  10. package/dist/apis/AdminApi.js +515 -0
  11. package/dist/apis/CatalogApi.d.ts +84 -0
  12. package/dist/apis/CatalogApi.js +191 -0
  13. package/dist/apis/MeetingsApi.d.ts +98 -0
  14. package/dist/apis/MeetingsApi.js +235 -0
  15. package/dist/apis/SourcesApi.d.ts +35 -0
  16. package/dist/apis/SourcesApi.js +73 -0
  17. package/dist/apis/index.d.ts +4 -0
  18. package/dist/apis/index.js +22 -0
  19. package/dist/esm/apis/AdminApi.d.ts +187 -0
  20. package/dist/esm/apis/AdminApi.js +511 -0
  21. package/dist/esm/apis/CatalogApi.d.ts +84 -0
  22. package/dist/esm/apis/CatalogApi.js +187 -0
  23. package/dist/esm/apis/MeetingsApi.d.ts +98 -0
  24. package/dist/esm/apis/MeetingsApi.js +231 -0
  25. package/dist/esm/apis/SourcesApi.d.ts +35 -0
  26. package/dist/esm/apis/SourcesApi.js +69 -0
  27. package/dist/esm/apis/index.d.ts +4 -0
  28. package/dist/esm/apis/index.js +6 -0
  29. package/dist/esm/index.d.ts +3 -0
  30. package/dist/esm/index.js +5 -0
  31. package/dist/esm/models/AdminSource.d.ts +190 -0
  32. package/dist/esm/models/AdminSource.js +112 -0
  33. package/dist/esm/models/AuthError.d.ts +32 -0
  34. package/dist/esm/models/AuthError.js +41 -0
  35. package/dist/esm/models/CreateSourceRequest.d.ts +76 -0
  36. package/dist/esm/models/CreateSourceRequest.js +64 -0
  37. package/dist/esm/models/CreateSourceResponse.d.ts +45 -0
  38. package/dist/esm/models/CreateSourceResponse.js +46 -0
  39. package/dist/esm/models/DedupCounters.d.ts +86 -0
  40. package/dist/esm/models/DedupCounters.js +59 -0
  41. package/dist/esm/models/DedupStats.d.ts +65 -0
  42. package/dist/esm/models/DedupStats.js +54 -0
  43. package/dist/esm/models/DedupStatsLatestRun.d.ts +60 -0
  44. package/dist/esm/models/DedupStatsLatestRun.js +56 -0
  45. package/dist/esm/models/DedupStatsRecentRunsInner.d.ts +45 -0
  46. package/dist/esm/models/DedupStatsRecentRunsInner.js +46 -0
  47. package/dist/esm/models/FeedValidationError.d.ts +54 -0
  48. package/dist/esm/models/FeedValidationError.js +54 -0
  49. package/dist/esm/models/IngestRun.d.ts +107 -0
  50. package/dist/esm/models/IngestRun.js +71 -0
  51. package/dist/esm/models/MapFeature.d.ts +46 -0
  52. package/dist/esm/models/MapFeature.js +47 -0
  53. package/dist/esm/models/MapFeatureCollection.d.ts +45 -0
  54. package/dist/esm/models/MapFeatureCollection.js +46 -0
  55. package/dist/esm/models/MapFeatureGeometry.d.ts +38 -0
  56. package/dist/esm/models/MapFeatureGeometry.js +43 -0
  57. package/dist/esm/models/MapFeatureProperties.d.ts +69 -0
  58. package/dist/esm/models/MapFeatureProperties.js +54 -0
  59. package/dist/esm/models/MapMeeting.d.ts +50 -0
  60. package/dist/esm/models/MapMeeting.js +47 -0
  61. package/dist/esm/models/Meeting.d.ts +272 -0
  62. package/dist/esm/models/Meeting.js +131 -0
  63. package/dist/esm/models/MeetingPage.d.ts +47 -0
  64. package/dist/esm/models/MeetingPage.js +48 -0
  65. package/dist/esm/models/MeetingPageLinks.d.ts +50 -0
  66. package/dist/esm/models/MeetingPageLinks.js +47 -0
  67. package/dist/esm/models/MeetingPageMeta.d.ts +50 -0
  68. package/dist/esm/models/MeetingPageMeta.js +47 -0
  69. package/dist/esm/models/MeetingType.d.ts +56 -0
  70. package/dist/esm/models/MeetingType.js +49 -0
  71. package/dist/esm/models/MeetingsFilterError.d.ts +44 -0
  72. package/dist/esm/models/MeetingsFilterError.js +45 -0
  73. package/dist/esm/models/Program.d.ts +44 -0
  74. package/dist/esm/models/Program.js +45 -0
  75. package/dist/esm/models/PublicSource.d.ts +113 -0
  76. package/dist/esm/models/PublicSource.js +80 -0
  77. package/dist/esm/models/SourceEnvelope.d.ts +33 -0
  78. package/dist/esm/models/SourceEnvelope.js +42 -0
  79. package/dist/esm/models/SourceRefreshResponse.d.ts +39 -0
  80. package/dist/esm/models/SourceRefreshResponse.js +44 -0
  81. package/dist/esm/models/Stats.d.ts +86 -0
  82. package/dist/esm/models/Stats.js +63 -0
  83. package/dist/esm/models/StatsGroups.d.ts +32 -0
  84. package/dist/esm/models/StatsGroups.js +41 -0
  85. package/dist/esm/models/StatsLocations.d.ts +38 -0
  86. package/dist/esm/models/StatsLocations.js +43 -0
  87. package/dist/esm/models/StatsMeetingTypes.d.ts +32 -0
  88. package/dist/esm/models/StatsMeetingTypes.js +41 -0
  89. package/dist/esm/models/StatsMeetings.d.ts +68 -0
  90. package/dist/esm/models/StatsMeetings.js +51 -0
  91. package/dist/esm/models/StatsProgramsBreakdownInner.d.ts +62 -0
  92. package/dist/esm/models/StatsProgramsBreakdownInner.js +51 -0
  93. package/dist/esm/models/StatsSources.d.ts +47 -0
  94. package/dist/esm/models/StatsSources.js +46 -0
  95. package/dist/esm/models/StatsSourcesTopByMeetingCountInner.d.ts +44 -0
  96. package/dist/esm/models/StatsSourcesTopByMeetingCountInner.js +45 -0
  97. package/dist/esm/models/StoreSourceValidationError.d.ts +23 -0
  98. package/dist/esm/models/StoreSourceValidationError.js +51 -0
  99. package/dist/esm/models/UpdateSourceRequest.d.ts +70 -0
  100. package/dist/esm/models/UpdateSourceRequest.js +58 -0
  101. package/dist/esm/models/ValidationError.d.ts +40 -0
  102. package/dist/esm/models/ValidationError.js +43 -0
  103. package/dist/esm/models/index.d.ts +36 -0
  104. package/dist/esm/models/index.js +38 -0
  105. package/dist/esm/runtime.d.ts +184 -0
  106. package/dist/esm/runtime.js +349 -0
  107. package/dist/index.d.ts +3 -0
  108. package/dist/index.js +21 -0
  109. package/dist/models/AdminSource.d.ts +190 -0
  110. package/dist/models/AdminSource.js +120 -0
  111. package/dist/models/AuthError.d.ts +32 -0
  112. package/dist/models/AuthError.js +48 -0
  113. package/dist/models/CreateSourceRequest.d.ts +76 -0
  114. package/dist/models/CreateSourceRequest.js +72 -0
  115. package/dist/models/CreateSourceResponse.d.ts +45 -0
  116. package/dist/models/CreateSourceResponse.js +53 -0
  117. package/dist/models/DedupCounters.d.ts +86 -0
  118. package/dist/models/DedupCounters.js +66 -0
  119. package/dist/models/DedupStats.d.ts +65 -0
  120. package/dist/models/DedupStats.js +61 -0
  121. package/dist/models/DedupStatsLatestRun.d.ts +60 -0
  122. package/dist/models/DedupStatsLatestRun.js +64 -0
  123. package/dist/models/DedupStatsRecentRunsInner.d.ts +45 -0
  124. package/dist/models/DedupStatsRecentRunsInner.js +53 -0
  125. package/dist/models/FeedValidationError.d.ts +54 -0
  126. package/dist/models/FeedValidationError.js +62 -0
  127. package/dist/models/IngestRun.d.ts +107 -0
  128. package/dist/models/IngestRun.js +79 -0
  129. package/dist/models/MapFeature.d.ts +46 -0
  130. package/dist/models/MapFeature.js +54 -0
  131. package/dist/models/MapFeatureCollection.d.ts +45 -0
  132. package/dist/models/MapFeatureCollection.js +53 -0
  133. package/dist/models/MapFeatureGeometry.d.ts +38 -0
  134. package/dist/models/MapFeatureGeometry.js +50 -0
  135. package/dist/models/MapFeatureProperties.d.ts +69 -0
  136. package/dist/models/MapFeatureProperties.js +61 -0
  137. package/dist/models/MapMeeting.d.ts +50 -0
  138. package/dist/models/MapMeeting.js +54 -0
  139. package/dist/models/Meeting.d.ts +272 -0
  140. package/dist/models/Meeting.js +139 -0
  141. package/dist/models/MeetingPage.d.ts +47 -0
  142. package/dist/models/MeetingPage.js +55 -0
  143. package/dist/models/MeetingPageLinks.d.ts +50 -0
  144. package/dist/models/MeetingPageLinks.js +54 -0
  145. package/dist/models/MeetingPageMeta.d.ts +50 -0
  146. package/dist/models/MeetingPageMeta.js +54 -0
  147. package/dist/models/MeetingType.d.ts +56 -0
  148. package/dist/models/MeetingType.js +56 -0
  149. package/dist/models/MeetingsFilterError.d.ts +44 -0
  150. package/dist/models/MeetingsFilterError.js +52 -0
  151. package/dist/models/Program.d.ts +44 -0
  152. package/dist/models/Program.js +52 -0
  153. package/dist/models/PublicSource.d.ts +113 -0
  154. package/dist/models/PublicSource.js +88 -0
  155. package/dist/models/SourceEnvelope.d.ts +33 -0
  156. package/dist/models/SourceEnvelope.js +49 -0
  157. package/dist/models/SourceRefreshResponse.d.ts +39 -0
  158. package/dist/models/SourceRefreshResponse.js +51 -0
  159. package/dist/models/Stats.d.ts +86 -0
  160. package/dist/models/Stats.js +70 -0
  161. package/dist/models/StatsGroups.d.ts +32 -0
  162. package/dist/models/StatsGroups.js +48 -0
  163. package/dist/models/StatsLocations.d.ts +38 -0
  164. package/dist/models/StatsLocations.js +50 -0
  165. package/dist/models/StatsMeetingTypes.d.ts +32 -0
  166. package/dist/models/StatsMeetingTypes.js +48 -0
  167. package/dist/models/StatsMeetings.d.ts +68 -0
  168. package/dist/models/StatsMeetings.js +58 -0
  169. package/dist/models/StatsProgramsBreakdownInner.d.ts +62 -0
  170. package/dist/models/StatsProgramsBreakdownInner.js +58 -0
  171. package/dist/models/StatsSources.d.ts +47 -0
  172. package/dist/models/StatsSources.js +53 -0
  173. package/dist/models/StatsSourcesTopByMeetingCountInner.d.ts +44 -0
  174. package/dist/models/StatsSourcesTopByMeetingCountInner.js +52 -0
  175. package/dist/models/StoreSourceValidationError.d.ts +23 -0
  176. package/dist/models/StoreSourceValidationError.js +57 -0
  177. package/dist/models/UpdateSourceRequest.d.ts +70 -0
  178. package/dist/models/UpdateSourceRequest.js +66 -0
  179. package/dist/models/ValidationError.d.ts +40 -0
  180. package/dist/models/ValidationError.js +50 -0
  181. package/dist/models/index.d.ts +36 -0
  182. package/dist/models/index.js +54 -0
  183. package/dist/runtime.d.ts +184 -0
  184. package/dist/runtime.js +365 -0
  185. package/docs/AdminApi.md +734 -0
  186. package/docs/AdminSource.md +77 -0
  187. package/docs/AuthError.md +34 -0
  188. package/docs/CatalogApi.md +270 -0
  189. package/docs/CreateSourceRequest.md +46 -0
  190. package/docs/CreateSourceResponse.md +38 -0
  191. package/docs/DedupCounters.md +53 -0
  192. package/docs/DedupStats.md +45 -0
  193. package/docs/DedupStatsLatestRun.md +41 -0
  194. package/docs/DedupStatsRecentRunsInner.md +39 -0
  195. package/docs/FeedValidationError.md +39 -0
  196. package/docs/IngestRun.md +57 -0
  197. package/docs/MapFeature.md +39 -0
  198. package/docs/MapFeatureCollection.md +39 -0
  199. package/docs/MapFeatureGeometry.md +37 -0
  200. package/docs/MapFeatureProperties.md +47 -0
  201. package/docs/MapMeeting.md +41 -0
  202. package/docs/Meeting.md +109 -0
  203. package/docs/MeetingPage.md +39 -0
  204. package/docs/MeetingPageLinks.md +41 -0
  205. package/docs/MeetingPageMeta.md +41 -0
  206. package/docs/MeetingType.md +42 -0
  207. package/docs/MeetingsApi.md +323 -0
  208. package/docs/MeetingsFilterError.md +39 -0
  209. package/docs/Program.md +38 -0
  210. package/docs/PublicSource.md +55 -0
  211. package/docs/SourceEnvelope.md +35 -0
  212. package/docs/SourceRefreshResponse.md +37 -0
  213. package/docs/SourcesApi.md +76 -0
  214. package/docs/Stats.md +51 -0
  215. package/docs/StatsGroups.md +35 -0
  216. package/docs/StatsLocations.md +37 -0
  217. package/docs/StatsMeetingTypes.md +35 -0
  218. package/docs/StatsMeetings.md +45 -0
  219. package/docs/StatsProgramsBreakdownInner.md +45 -0
  220. package/docs/StatsSources.md +39 -0
  221. package/docs/StatsSourcesTopByMeetingCountInner.md +39 -0
  222. package/docs/StoreSourceValidationError.md +41 -0
  223. package/docs/UpdateSourceRequest.md +44 -0
  224. package/docs/ValidationError.md +36 -0
  225. package/package.json +21 -0
  226. package/src/apis/AdminApi.ts +659 -0
  227. package/src/apis/CatalogApi.ts +220 -0
  228. package/src/apis/MeetingsApi.ts +305 -0
  229. package/src/apis/SourcesApi.ts +74 -0
  230. package/src/apis/index.ts +6 -0
  231. package/src/index.ts +5 -0
  232. package/src/models/AdminSource.ts +270 -0
  233. package/src/models/AuthError.ts +65 -0
  234. package/src/models/CreateSourceRequest.ts +126 -0
  235. package/src/models/CreateSourceResponse.ts +89 -0
  236. package/src/models/DedupCounters.ts +137 -0
  237. package/src/models/DedupStats.ts +127 -0
  238. package/src/models/DedupStatsLatestRun.ts +109 -0
  239. package/src/models/DedupStatsRecentRunsInner.ts +89 -0
  240. package/src/models/FeedValidationError.ts +94 -0
  241. package/src/models/IngestRun.ts +165 -0
  242. package/src/models/MapFeature.ts +96 -0
  243. package/src/models/MapFeatureCollection.ts +89 -0
  244. package/src/models/MapFeatureGeometry.ts +73 -0
  245. package/src/models/MapFeatureProperties.ts +121 -0
  246. package/src/models/MapMeeting.ts +89 -0
  247. package/src/models/Meeting.ts +383 -0
  248. package/src/models/MeetingPage.ts +103 -0
  249. package/src/models/MeetingPageLinks.ts +89 -0
  250. package/src/models/MeetingPageMeta.ts +89 -0
  251. package/src/models/MeetingType.ts +97 -0
  252. package/src/models/MeetingsFilterError.ts +81 -0
  253. package/src/models/Program.ts +81 -0
  254. package/src/models/PublicSource.ts +170 -0
  255. package/src/models/SourceEnvelope.ts +73 -0
  256. package/src/models/SourceRefreshResponse.ts +81 -0
  257. package/src/models/Stats.ts +172 -0
  258. package/src/models/StatsGroups.ts +65 -0
  259. package/src/models/StatsLocations.ts +73 -0
  260. package/src/models/StatsMeetingTypes.ts +65 -0
  261. package/src/models/StatsMeetings.ts +105 -0
  262. package/src/models/StatsProgramsBreakdownInner.ts +105 -0
  263. package/src/models/StatsSources.ts +89 -0
  264. package/src/models/StatsSourcesTopByMeetingCountInner.ts +81 -0
  265. package/src/models/StoreSourceValidationError.ts +76 -0
  266. package/src/models/UpdateSourceRequest.ts +116 -0
  267. package/src/models/ValidationError.ts +73 -0
  268. package/src/models/index.ts +38 -0
  269. package/src/runtime.ts +449 -0
  270. package/tsconfig.esm.json +7 -0
  271. package/tsconfig.json +16 -0
@@ -0,0 +1,515 @@
1
+ "use strict";
2
+ /* tslint:disable */
3
+ /* eslint-disable */
4
+ /**
5
+ * C4R Aggregator API
6
+ * Aggregator for public [12-Step Meeting List](https://wordpress.org/plugins/12-step-meeting-list/) WordPress feeds. Ingests registered sources on a schedule, normalizes duplicates across feeds, and exposes a unified read API whose responses follow the [Meeting Guide API spec](https://github.com/code4recovery/spec) for drop-in client compatibility. - **Public endpoints** return Meeting Guide-shape data. `/meetings` requires at least one filter (bounding box, radius, region, source, program, day, or type) and is cursor-paginated. - **Per-source and per-region feeds** return bare JSON arrays — safe drop-in replacements for the upstream TSML endpoint. - **Admin endpoints** under `/admin/_*` require a Sanctum bearer token.
7
+ *
8
+ * The version of the OpenAPI document: 1.0.0
9
+ *
10
+ *
11
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
12
+ * https://openapi-generator.tech
13
+ * Do not edit the class manually.
14
+ */
15
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
16
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
17
+ return new (P || (P = Promise))(function (resolve, reject) {
18
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
19
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
20
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
21
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
22
+ });
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.AdminApi = void 0;
26
+ const runtime = require("../runtime");
27
+ const AdminSource_1 = require("../models/AdminSource");
28
+ const CreateSourceRequest_1 = require("../models/CreateSourceRequest");
29
+ const CreateSourceResponse_1 = require("../models/CreateSourceResponse");
30
+ const DedupStats_1 = require("../models/DedupStats");
31
+ const IngestRun_1 = require("../models/IngestRun");
32
+ const SourceEnvelope_1 = require("../models/SourceEnvelope");
33
+ const SourceRefreshResponse_1 = require("../models/SourceRefreshResponse");
34
+ const UpdateSourceRequest_1 = require("../models/UpdateSourceRequest");
35
+ /**
36
+ *
37
+ */
38
+ class AdminApi extends runtime.BaseAPI {
39
+ /**
40
+ * Creates request options for adminCreateSource without sending the request
41
+ */
42
+ adminCreateSourceRequestOpts(requestParameters) {
43
+ return __awaiter(this, void 0, void 0, function* () {
44
+ if (requestParameters['createSourceRequest'] == null) {
45
+ throw new runtime.RequiredError('createSourceRequest', 'Required parameter "createSourceRequest" was null or undefined when calling adminCreateSource().');
46
+ }
47
+ const queryParameters = {};
48
+ const headerParameters = {};
49
+ headerParameters['Content-Type'] = 'application/json';
50
+ if (this.configuration && this.configuration.accessToken) {
51
+ const token = this.configuration.accessToken;
52
+ const tokenString = yield token("bearerAuth", []);
53
+ if (tokenString) {
54
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
55
+ }
56
+ }
57
+ let urlPath = `/api/v1/admin/sources`;
58
+ return {
59
+ path: urlPath,
60
+ method: 'POST',
61
+ headers: headerParameters,
62
+ query: queryParameters,
63
+ body: (0, CreateSourceRequest_1.CreateSourceRequestToJSON)(requestParameters['createSourceRequest']),
64
+ };
65
+ });
66
+ }
67
+ /**
68
+ * Synchronously fetches the upstream feed and validates it has at least one meeting with `slug`, `day`, and `time`. If valid, persists the source in `pending` state and returns a 10-row preview. If invalid, returns 422 with the error type.
69
+ * Register a new feed
70
+ */
71
+ adminCreateSourceRaw(requestParameters, initOverrides) {
72
+ return __awaiter(this, void 0, void 0, function* () {
73
+ const requestOptions = yield this.adminCreateSourceRequestOpts(requestParameters);
74
+ const response = yield this.request(requestOptions, initOverrides);
75
+ return new runtime.JSONApiResponse(response, (jsonValue) => (0, CreateSourceResponse_1.CreateSourceResponseFromJSON)(jsonValue));
76
+ });
77
+ }
78
+ /**
79
+ * Synchronously fetches the upstream feed and validates it has at least one meeting with `slug`, `day`, and `time`. If valid, persists the source in `pending` state and returns a 10-row preview. If invalid, returns 422 with the error type.
80
+ * Register a new feed
81
+ */
82
+ adminCreateSource(requestParameters, initOverrides) {
83
+ return __awaiter(this, void 0, void 0, function* () {
84
+ const response = yield this.adminCreateSourceRaw(requestParameters, initOverrides);
85
+ return yield response.value();
86
+ });
87
+ }
88
+ /**
89
+ * Creates request options for adminDeleteSource without sending the request
90
+ */
91
+ adminDeleteSourceRequestOpts(requestParameters) {
92
+ return __awaiter(this, void 0, void 0, function* () {
93
+ if (requestParameters['source'] == null) {
94
+ throw new runtime.RequiredError('source', 'Required parameter "source" was null or undefined when calling adminDeleteSource().');
95
+ }
96
+ const queryParameters = {};
97
+ const headerParameters = {};
98
+ if (this.configuration && this.configuration.accessToken) {
99
+ const token = this.configuration.accessToken;
100
+ const tokenString = yield token("bearerAuth", []);
101
+ if (tokenString) {
102
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
103
+ }
104
+ }
105
+ let urlPath = `/api/v1/admin/sources/{source}`;
106
+ urlPath = urlPath.replace('{source}', encodeURIComponent(String(requestParameters['source'])));
107
+ return {
108
+ path: urlPath,
109
+ method: 'DELETE',
110
+ headers: headerParameters,
111
+ query: queryParameters,
112
+ };
113
+ });
114
+ }
115
+ /**
116
+ * Stops future fetches and marks meetings for stale-sweep. Reversible via `/restore` within 30 days.
117
+ * Soft-delete a source
118
+ */
119
+ adminDeleteSourceRaw(requestParameters, initOverrides) {
120
+ return __awaiter(this, void 0, void 0, function* () {
121
+ const requestOptions = yield this.adminDeleteSourceRequestOpts(requestParameters);
122
+ const response = yield this.request(requestOptions, initOverrides);
123
+ return new runtime.JSONApiResponse(response, (jsonValue) => (0, SourceEnvelope_1.SourceEnvelopeFromJSON)(jsonValue));
124
+ });
125
+ }
126
+ /**
127
+ * Stops future fetches and marks meetings for stale-sweep. Reversible via `/restore` within 30 days.
128
+ * Soft-delete a source
129
+ */
130
+ adminDeleteSource(requestParameters, initOverrides) {
131
+ return __awaiter(this, void 0, void 0, function* () {
132
+ const response = yield this.adminDeleteSourceRaw(requestParameters, initOverrides);
133
+ return yield response.value();
134
+ });
135
+ }
136
+ /**
137
+ * Creates request options for adminGetSourceDedupStats without sending the request
138
+ */
139
+ adminGetSourceDedupStatsRequestOpts(requestParameters) {
140
+ return __awaiter(this, void 0, void 0, function* () {
141
+ if (requestParameters['source'] == null) {
142
+ throw new runtime.RequiredError('source', 'Required parameter "source" was null or undefined when calling adminGetSourceDedupStats().');
143
+ }
144
+ const queryParameters = {};
145
+ const headerParameters = {};
146
+ if (this.configuration && this.configuration.accessToken) {
147
+ const token = this.configuration.accessToken;
148
+ const tokenString = yield token("bearerAuth", []);
149
+ if (tokenString) {
150
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
151
+ }
152
+ }
153
+ let urlPath = `/api/v1/admin/sources/{source}/dedup-stats`;
154
+ urlPath = urlPath.replace('{source}', encodeURIComponent(String(requestParameters['source'])));
155
+ return {
156
+ path: urlPath,
157
+ method: 'GET',
158
+ headers: headerParameters,
159
+ query: queryParameters,
160
+ };
161
+ });
162
+ }
163
+ /**
164
+ * Per-layer dedup counters (locations / groups / meetings / types). Returns aggregate totals across every ingest run for this source, plus the counters from the most recent run and the last 10 runs.
165
+ * Deduplication counters for a source
166
+ */
167
+ adminGetSourceDedupStatsRaw(requestParameters, initOverrides) {
168
+ return __awaiter(this, void 0, void 0, function* () {
169
+ const requestOptions = yield this.adminGetSourceDedupStatsRequestOpts(requestParameters);
170
+ const response = yield this.request(requestOptions, initOverrides);
171
+ return new runtime.JSONApiResponse(response, (jsonValue) => (0, DedupStats_1.DedupStatsFromJSON)(jsonValue));
172
+ });
173
+ }
174
+ /**
175
+ * Per-layer dedup counters (locations / groups / meetings / types). Returns aggregate totals across every ingest run for this source, plus the counters from the most recent run and the last 10 runs.
176
+ * Deduplication counters for a source
177
+ */
178
+ adminGetSourceDedupStats(requestParameters, initOverrides) {
179
+ return __awaiter(this, void 0, void 0, function* () {
180
+ const response = yield this.adminGetSourceDedupStatsRaw(requestParameters, initOverrides);
181
+ return yield response.value();
182
+ });
183
+ }
184
+ /**
185
+ * Creates request options for adminListSourceRuns without sending the request
186
+ */
187
+ adminListSourceRunsRequestOpts(requestParameters) {
188
+ return __awaiter(this, void 0, void 0, function* () {
189
+ if (requestParameters['source'] == null) {
190
+ throw new runtime.RequiredError('source', 'Required parameter "source" was null or undefined when calling adminListSourceRuns().');
191
+ }
192
+ const queryParameters = {};
193
+ if (requestParameters['limit'] != null) {
194
+ queryParameters['limit'] = requestParameters['limit'];
195
+ }
196
+ const headerParameters = {};
197
+ if (this.configuration && this.configuration.accessToken) {
198
+ const token = this.configuration.accessToken;
199
+ const tokenString = yield token("bearerAuth", []);
200
+ if (tokenString) {
201
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
202
+ }
203
+ }
204
+ let urlPath = `/api/v1/admin/sources/{source}/runs`;
205
+ urlPath = urlPath.replace('{source}', encodeURIComponent(String(requestParameters['source'])));
206
+ return {
207
+ path: urlPath,
208
+ method: 'GET',
209
+ headers: headerParameters,
210
+ query: queryParameters,
211
+ };
212
+ });
213
+ }
214
+ /**
215
+ * Recent ingest runs for a source
216
+ */
217
+ adminListSourceRunsRaw(requestParameters, initOverrides) {
218
+ return __awaiter(this, void 0, void 0, function* () {
219
+ const requestOptions = yield this.adminListSourceRunsRequestOpts(requestParameters);
220
+ const response = yield this.request(requestOptions, initOverrides);
221
+ return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(IngestRun_1.IngestRunFromJSON));
222
+ });
223
+ }
224
+ /**
225
+ * Recent ingest runs for a source
226
+ */
227
+ adminListSourceRuns(requestParameters, initOverrides) {
228
+ return __awaiter(this, void 0, void 0, function* () {
229
+ const response = yield this.adminListSourceRunsRaw(requestParameters, initOverrides);
230
+ return yield response.value();
231
+ });
232
+ }
233
+ /**
234
+ * Creates request options for adminListSources without sending the request
235
+ */
236
+ adminListSourcesRequestOpts(requestParameters) {
237
+ return __awaiter(this, void 0, void 0, function* () {
238
+ const queryParameters = {};
239
+ if (requestParameters['program'] != null) {
240
+ queryParameters['program'] = requestParameters['program'];
241
+ }
242
+ const headerParameters = {};
243
+ if (this.configuration && this.configuration.accessToken) {
244
+ const token = this.configuration.accessToken;
245
+ const tokenString = yield token("bearerAuth", []);
246
+ if (tokenString) {
247
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
248
+ }
249
+ }
250
+ let urlPath = `/api/v1/admin/sources`;
251
+ return {
252
+ path: urlPath,
253
+ method: 'GET',
254
+ headers: headerParameters,
255
+ query: queryParameters,
256
+ };
257
+ });
258
+ }
259
+ /**
260
+ * Returns every source (including soft-deleted). Filter by `program` to scope to one program; unknown codes return an empty array.
261
+ * Admin source list with operational metadata
262
+ */
263
+ adminListSourcesRaw(requestParameters, initOverrides) {
264
+ return __awaiter(this, void 0, void 0, function* () {
265
+ const requestOptions = yield this.adminListSourcesRequestOpts(requestParameters);
266
+ const response = yield this.request(requestOptions, initOverrides);
267
+ return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(AdminSource_1.AdminSourceFromJSON));
268
+ });
269
+ }
270
+ /**
271
+ * Returns every source (including soft-deleted). Filter by `program` to scope to one program; unknown codes return an empty array.
272
+ * Admin source list with operational metadata
273
+ */
274
+ adminListSources() {
275
+ return __awaiter(this, arguments, void 0, function* (requestParameters = {}, initOverrides) {
276
+ const response = yield this.adminListSourcesRaw(requestParameters, initOverrides);
277
+ return yield response.value();
278
+ });
279
+ }
280
+ /**
281
+ * Creates request options for adminPauseSource without sending the request
282
+ */
283
+ adminPauseSourceRequestOpts(requestParameters) {
284
+ return __awaiter(this, void 0, void 0, function* () {
285
+ if (requestParameters['source'] == null) {
286
+ throw new runtime.RequiredError('source', 'Required parameter "source" was null or undefined when calling adminPauseSource().');
287
+ }
288
+ const queryParameters = {};
289
+ const headerParameters = {};
290
+ if (this.configuration && this.configuration.accessToken) {
291
+ const token = this.configuration.accessToken;
292
+ const tokenString = yield token("bearerAuth", []);
293
+ if (tokenString) {
294
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
295
+ }
296
+ }
297
+ let urlPath = `/api/v1/admin/sources/{source}/pause`;
298
+ urlPath = urlPath.replace('{source}', encodeURIComponent(String(requestParameters['source'])));
299
+ return {
300
+ path: urlPath,
301
+ method: 'POST',
302
+ headers: headerParameters,
303
+ query: queryParameters,
304
+ };
305
+ });
306
+ }
307
+ /**
308
+ * Meetings remain visible; fetches stop. Use for known temporary upstream outages.
309
+ * Pause ingestion (manual operator action)
310
+ */
311
+ adminPauseSourceRaw(requestParameters, initOverrides) {
312
+ return __awaiter(this, void 0, void 0, function* () {
313
+ const requestOptions = yield this.adminPauseSourceRequestOpts(requestParameters);
314
+ const response = yield this.request(requestOptions, initOverrides);
315
+ return new runtime.JSONApiResponse(response, (jsonValue) => (0, SourceEnvelope_1.SourceEnvelopeFromJSON)(jsonValue));
316
+ });
317
+ }
318
+ /**
319
+ * Meetings remain visible; fetches stop. Use for known temporary upstream outages.
320
+ * Pause ingestion (manual operator action)
321
+ */
322
+ adminPauseSource(requestParameters, initOverrides) {
323
+ return __awaiter(this, void 0, void 0, function* () {
324
+ const response = yield this.adminPauseSourceRaw(requestParameters, initOverrides);
325
+ return yield response.value();
326
+ });
327
+ }
328
+ /**
329
+ * Creates request options for adminRefreshSource without sending the request
330
+ */
331
+ adminRefreshSourceRequestOpts(requestParameters) {
332
+ return __awaiter(this, void 0, void 0, function* () {
333
+ if (requestParameters['source'] == null) {
334
+ throw new runtime.RequiredError('source', 'Required parameter "source" was null or undefined when calling adminRefreshSource().');
335
+ }
336
+ const queryParameters = {};
337
+ const headerParameters = {};
338
+ if (this.configuration && this.configuration.accessToken) {
339
+ const token = this.configuration.accessToken;
340
+ const tokenString = yield token("bearerAuth", []);
341
+ if (tokenString) {
342
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
343
+ }
344
+ }
345
+ let urlPath = `/api/v1/admin/sources/{source}/refresh`;
346
+ urlPath = urlPath.replace('{source}', encodeURIComponent(String(requestParameters['source'])));
347
+ return {
348
+ path: urlPath,
349
+ method: 'POST',
350
+ headers: headerParameters,
351
+ query: queryParameters,
352
+ };
353
+ });
354
+ }
355
+ /**
356
+ * Force-dispatch an immediate ingest job
357
+ */
358
+ adminRefreshSourceRaw(requestParameters, initOverrides) {
359
+ return __awaiter(this, void 0, void 0, function* () {
360
+ const requestOptions = yield this.adminRefreshSourceRequestOpts(requestParameters);
361
+ const response = yield this.request(requestOptions, initOverrides);
362
+ return new runtime.JSONApiResponse(response, (jsonValue) => (0, SourceRefreshResponse_1.SourceRefreshResponseFromJSON)(jsonValue));
363
+ });
364
+ }
365
+ /**
366
+ * Force-dispatch an immediate ingest job
367
+ */
368
+ adminRefreshSource(requestParameters, initOverrides) {
369
+ return __awaiter(this, void 0, void 0, function* () {
370
+ const response = yield this.adminRefreshSourceRaw(requestParameters, initOverrides);
371
+ return yield response.value();
372
+ });
373
+ }
374
+ /**
375
+ * Creates request options for adminRestoreSource without sending the request
376
+ */
377
+ adminRestoreSourceRequestOpts(requestParameters) {
378
+ return __awaiter(this, void 0, void 0, function* () {
379
+ if (requestParameters['source'] == null) {
380
+ throw new runtime.RequiredError('source', 'Required parameter "source" was null or undefined when calling adminRestoreSource().');
381
+ }
382
+ const queryParameters = {};
383
+ const headerParameters = {};
384
+ if (this.configuration && this.configuration.accessToken) {
385
+ const token = this.configuration.accessToken;
386
+ const tokenString = yield token("bearerAuth", []);
387
+ if (tokenString) {
388
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
389
+ }
390
+ }
391
+ let urlPath = `/api/v1/admin/sources/{source}/restore`;
392
+ urlPath = urlPath.replace('{source}', encodeURIComponent(String(requestParameters['source'])));
393
+ return {
394
+ path: urlPath,
395
+ method: 'POST',
396
+ headers: headerParameters,
397
+ query: queryParameters,
398
+ };
399
+ });
400
+ }
401
+ /**
402
+ * Restore a soft-deleted source within the 30-day window
403
+ */
404
+ adminRestoreSourceRaw(requestParameters, initOverrides) {
405
+ return __awaiter(this, void 0, void 0, function* () {
406
+ const requestOptions = yield this.adminRestoreSourceRequestOpts(requestParameters);
407
+ const response = yield this.request(requestOptions, initOverrides);
408
+ return new runtime.JSONApiResponse(response, (jsonValue) => (0, SourceEnvelope_1.SourceEnvelopeFromJSON)(jsonValue));
409
+ });
410
+ }
411
+ /**
412
+ * Restore a soft-deleted source within the 30-day window
413
+ */
414
+ adminRestoreSource(requestParameters, initOverrides) {
415
+ return __awaiter(this, void 0, void 0, function* () {
416
+ const response = yield this.adminRestoreSourceRaw(requestParameters, initOverrides);
417
+ return yield response.value();
418
+ });
419
+ }
420
+ /**
421
+ * Creates request options for adminResumeSource without sending the request
422
+ */
423
+ adminResumeSourceRequestOpts(requestParameters) {
424
+ return __awaiter(this, void 0, void 0, function* () {
425
+ if (requestParameters['source'] == null) {
426
+ throw new runtime.RequiredError('source', 'Required parameter "source" was null or undefined when calling adminResumeSource().');
427
+ }
428
+ const queryParameters = {};
429
+ const headerParameters = {};
430
+ if (this.configuration && this.configuration.accessToken) {
431
+ const token = this.configuration.accessToken;
432
+ const tokenString = yield token("bearerAuth", []);
433
+ if (tokenString) {
434
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
435
+ }
436
+ }
437
+ let urlPath = `/api/v1/admin/sources/{source}/resume`;
438
+ urlPath = urlPath.replace('{source}', encodeURIComponent(String(requestParameters['source'])));
439
+ return {
440
+ path: urlPath,
441
+ method: 'POST',
442
+ headers: headerParameters,
443
+ query: queryParameters,
444
+ };
445
+ });
446
+ }
447
+ /**
448
+ * Resume ingestion from paused or dormant
449
+ */
450
+ adminResumeSourceRaw(requestParameters, initOverrides) {
451
+ return __awaiter(this, void 0, void 0, function* () {
452
+ const requestOptions = yield this.adminResumeSourceRequestOpts(requestParameters);
453
+ const response = yield this.request(requestOptions, initOverrides);
454
+ return new runtime.JSONApiResponse(response, (jsonValue) => (0, SourceEnvelope_1.SourceEnvelopeFromJSON)(jsonValue));
455
+ });
456
+ }
457
+ /**
458
+ * Resume ingestion from paused or dormant
459
+ */
460
+ adminResumeSource(requestParameters, initOverrides) {
461
+ return __awaiter(this, void 0, void 0, function* () {
462
+ const response = yield this.adminResumeSourceRaw(requestParameters, initOverrides);
463
+ return yield response.value();
464
+ });
465
+ }
466
+ /**
467
+ * Creates request options for adminUpdateSource without sending the request
468
+ */
469
+ adminUpdateSourceRequestOpts(requestParameters) {
470
+ return __awaiter(this, void 0, void 0, function* () {
471
+ if (requestParameters['source'] == null) {
472
+ throw new runtime.RequiredError('source', 'Required parameter "source" was null or undefined when calling adminUpdateSource().');
473
+ }
474
+ const queryParameters = {};
475
+ const headerParameters = {};
476
+ headerParameters['Content-Type'] = 'application/json';
477
+ if (this.configuration && this.configuration.accessToken) {
478
+ const token = this.configuration.accessToken;
479
+ const tokenString = yield token("bearerAuth", []);
480
+ if (tokenString) {
481
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
482
+ }
483
+ }
484
+ let urlPath = `/api/v1/admin/sources/{source}`;
485
+ urlPath = urlPath.replace('{source}', encodeURIComponent(String(requestParameters['source'])));
486
+ return {
487
+ path: urlPath,
488
+ method: 'PATCH',
489
+ headers: headerParameters,
490
+ query: queryParameters,
491
+ body: (0, UpdateSourceRequest_1.UpdateSourceRequestToJSON)(requestParameters['updateSourceRequest']),
492
+ };
493
+ });
494
+ }
495
+ /**
496
+ * Update source metadata
497
+ */
498
+ adminUpdateSourceRaw(requestParameters, initOverrides) {
499
+ return __awaiter(this, void 0, void 0, function* () {
500
+ const requestOptions = yield this.adminUpdateSourceRequestOpts(requestParameters);
501
+ const response = yield this.request(requestOptions, initOverrides);
502
+ return new runtime.JSONApiResponse(response, (jsonValue) => (0, SourceEnvelope_1.SourceEnvelopeFromJSON)(jsonValue));
503
+ });
504
+ }
505
+ /**
506
+ * Update source metadata
507
+ */
508
+ adminUpdateSource(requestParameters, initOverrides) {
509
+ return __awaiter(this, void 0, void 0, function* () {
510
+ const response = yield this.adminUpdateSourceRaw(requestParameters, initOverrides);
511
+ return yield response.value();
512
+ });
513
+ }
514
+ }
515
+ exports.AdminApi = AdminApi;
@@ -0,0 +1,84 @@
1
+ /**
2
+ * C4R Aggregator API
3
+ * Aggregator for public [12-Step Meeting List](https://wordpress.org/plugins/12-step-meeting-list/) WordPress feeds. Ingests registered sources on a schedule, normalizes duplicates across feeds, and exposes a unified read API whose responses follow the [Meeting Guide API spec](https://github.com/code4recovery/spec) for drop-in client compatibility. - **Public endpoints** return Meeting Guide-shape data. `/meetings` requires at least one filter (bounding box, radius, region, source, program, day, or type) and is cursor-paginated. - **Per-source and per-region feeds** return bare JSON arrays — safe drop-in replacements for the upstream TSML endpoint. - **Admin endpoints** under `/admin/_*` require a Sanctum bearer token.
4
+ *
5
+ * The version of the OpenAPI document: 1.0.0
6
+ *
7
+ *
8
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9
+ * https://openapi-generator.tech
10
+ * Do not edit the class manually.
11
+ */
12
+ import * as runtime from '../runtime';
13
+ import { type MapFeatureCollection } from '../models/MapFeatureCollection';
14
+ import { type MeetingType } from '../models/MeetingType';
15
+ import { type Program } from '../models/Program';
16
+ import { type Stats } from '../models/Stats';
17
+ export interface GetMapRequest {
18
+ program?: string;
19
+ }
20
+ export interface GetStatsRequest {
21
+ program?: string;
22
+ }
23
+ export interface ListMeetingTypesRequest {
24
+ program?: string;
25
+ }
26
+ /**
27
+ *
28
+ */
29
+ export declare class CatalogApi extends runtime.BaseAPI {
30
+ /**
31
+ * Creates request options for getMap without sending the request
32
+ */
33
+ getMapRequestOpts(requestParameters: GetMapRequest): Promise<runtime.RequestOpts>;
34
+ /**
35
+ * One Feature per Location (not per meeting), with the list of meetings-at-that-location in the properties. Intended for a coverage-map view — show pins, click to see meeting names. Cached for 5 minutes (per program filter).
36
+ * All geocoded locations with active meetings, as GeoJSON
37
+ */
38
+ getMapRaw(requestParameters: GetMapRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<MapFeatureCollection>>;
39
+ /**
40
+ * One Feature per Location (not per meeting), with the list of meetings-at-that-location in the properties. Intended for a coverage-map view — show pins, click to see meeting names. Cached for 5 minutes (per program filter).
41
+ * All geocoded locations with active meetings, as GeoJSON
42
+ */
43
+ getMap(requestParameters?: GetMapRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<MapFeatureCollection>;
44
+ /**
45
+ * Creates request options for getStats without sending the request
46
+ */
47
+ getStatsRequestOpts(requestParameters: GetStatsRequest): Promise<runtime.RequestOpts>;
48
+ /**
49
+ * Cached for 60s in Redis (per program filter). Useful for dashboards, transparency pages, and monitoring. Pass `?program=AA` to scope every count to a single program; `programs_breakdown` is always included so you can see per-program slices alongside the totals.
50
+ * Aggregator-wide counts and health snapshot
51
+ */
52
+ getStatsRaw(requestParameters: GetStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Stats>>;
53
+ /**
54
+ * Cached for 60s in Redis (per program filter). Useful for dashboards, transparency pages, and monitoring. Pass `?program=AA` to scope every count to a single program; `programs_breakdown` is always included so you can see per-program slices alongside the totals.
55
+ * Aggregator-wide counts and health snapshot
56
+ */
57
+ getStats(requestParameters?: GetStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Stats>;
58
+ /**
59
+ * Creates request options for listMeetingTypes without sending the request
60
+ */
61
+ listMeetingTypesRequestOpts(requestParameters: ListMeetingTypesRequest): Promise<runtime.RequestOpts>;
62
+ /**
63
+ * Returns all known meeting-type codes. Filter by `program` to scope to one program (e.g. AA).
64
+ * Meeting-type dictionary
65
+ */
66
+ listMeetingTypesRaw(requestParameters: ListMeetingTypesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<MeetingType>>>;
67
+ /**
68
+ * Returns all known meeting-type codes. Filter by `program` to scope to one program (e.g. AA).
69
+ * Meeting-type dictionary
70
+ */
71
+ listMeetingTypes(requestParameters?: ListMeetingTypesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<MeetingType>>;
72
+ /**
73
+ * Creates request options for listPrograms without sending the request
74
+ */
75
+ listProgramsRequestOpts(): Promise<runtime.RequestOpts>;
76
+ /**
77
+ * List supported programs
78
+ */
79
+ listProgramsRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<Program>>>;
80
+ /**
81
+ * List supported programs
82
+ */
83
+ listPrograms(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<Program>>;
84
+ }