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,127 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * C4R Aggregator API
5
+ * 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.
6
+ *
7
+ * The version of the OpenAPI document: 1.0.0
8
+ *
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+
15
+ import { mapValues } from '../runtime';
16
+ import type { DedupStatsLatestRun } from './DedupStatsLatestRun';
17
+ import {
18
+ DedupStatsLatestRunFromJSON,
19
+ DedupStatsLatestRunFromJSONTyped,
20
+ DedupStatsLatestRunToJSON,
21
+ DedupStatsLatestRunToJSONTyped,
22
+ } from './DedupStatsLatestRun';
23
+ import type { DedupCounters } from './DedupCounters';
24
+ import {
25
+ DedupCountersFromJSON,
26
+ DedupCountersFromJSONTyped,
27
+ DedupCountersToJSON,
28
+ DedupCountersToJSONTyped,
29
+ } from './DedupCounters';
30
+ import type { DedupStatsRecentRunsInner } from './DedupStatsRecentRunsInner';
31
+ import {
32
+ DedupStatsRecentRunsInnerFromJSON,
33
+ DedupStatsRecentRunsInnerFromJSONTyped,
34
+ DedupStatsRecentRunsInnerToJSON,
35
+ DedupStatsRecentRunsInnerToJSONTyped,
36
+ } from './DedupStatsRecentRunsInner';
37
+
38
+ /**
39
+ * Dedup activity for a source — aggregate totals, latest run, and recent-run history.
40
+ * @export
41
+ * @interface DedupStats
42
+ */
43
+ export interface DedupStats {
44
+ /**
45
+ *
46
+ * @type {number}
47
+ * @memberof DedupStats
48
+ */
49
+ sourceId?: number;
50
+ /**
51
+ *
52
+ * @type {string}
53
+ * @memberof DedupStats
54
+ */
55
+ sourceName?: string;
56
+ /**
57
+ *
58
+ * @type {number}
59
+ * @memberof DedupStats
60
+ */
61
+ runCount?: number;
62
+ /**
63
+ *
64
+ * @type {DedupCounters}
65
+ * @memberof DedupStats
66
+ */
67
+ totals?: DedupCounters;
68
+ /**
69
+ *
70
+ * @type {DedupStatsLatestRun}
71
+ * @memberof DedupStats
72
+ */
73
+ latestRun?: DedupStatsLatestRun | null;
74
+ /**
75
+ *
76
+ * @type {Array<DedupStatsRecentRunsInner>}
77
+ * @memberof DedupStats
78
+ */
79
+ recentRuns?: Array<DedupStatsRecentRunsInner>;
80
+ }
81
+
82
+ /**
83
+ * Check if a given object implements the DedupStats interface.
84
+ */
85
+ export function instanceOfDedupStats(value: object): value is DedupStats {
86
+ return true;
87
+ }
88
+
89
+ export function DedupStatsFromJSON(json: any): DedupStats {
90
+ return DedupStatsFromJSONTyped(json, false);
91
+ }
92
+
93
+ export function DedupStatsFromJSONTyped(json: any, ignoreDiscriminator: boolean): DedupStats {
94
+ if (json == null) {
95
+ return json;
96
+ }
97
+ return {
98
+
99
+ 'sourceId': json['source_id'] == null ? undefined : json['source_id'],
100
+ 'sourceName': json['source_name'] == null ? undefined : json['source_name'],
101
+ 'runCount': json['run_count'] == null ? undefined : json['run_count'],
102
+ 'totals': json['totals'] == null ? undefined : DedupCountersFromJSON(json['totals']),
103
+ 'latestRun': json['latest_run'] == null ? undefined : DedupStatsLatestRunFromJSON(json['latest_run']),
104
+ 'recentRuns': json['recent_runs'] == null ? undefined : ((json['recent_runs'] as Array<any>).map(DedupStatsRecentRunsInnerFromJSON)),
105
+ };
106
+ }
107
+
108
+ export function DedupStatsToJSON(json: any): DedupStats {
109
+ return DedupStatsToJSONTyped(json, false);
110
+ }
111
+
112
+ export function DedupStatsToJSONTyped(value?: DedupStats | null, ignoreDiscriminator: boolean = false): any {
113
+ if (value == null) {
114
+ return value;
115
+ }
116
+
117
+ return {
118
+
119
+ 'source_id': value['sourceId'],
120
+ 'source_name': value['sourceName'],
121
+ 'run_count': value['runCount'],
122
+ 'totals': DedupCountersToJSON(value['totals']),
123
+ 'latest_run': DedupStatsLatestRunToJSON(value['latestRun']),
124
+ 'recent_runs': value['recentRuns'] == null ? undefined : ((value['recentRuns'] as Array<any>).map(DedupStatsRecentRunsInnerToJSON)),
125
+ };
126
+ }
127
+
@@ -0,0 +1,109 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * C4R Aggregator API
5
+ * 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.
6
+ *
7
+ * The version of the OpenAPI document: 1.0.0
8
+ *
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+
15
+ import { mapValues } from '../runtime';
16
+ import type { DedupCounters } from './DedupCounters';
17
+ import {
18
+ DedupCountersFromJSON,
19
+ DedupCountersFromJSONTyped,
20
+ DedupCountersToJSON,
21
+ DedupCountersToJSONTyped,
22
+ } from './DedupCounters';
23
+
24
+ /**
25
+ * Most recent ingest run for a source, with its per-run dedup counters.
26
+ * @export
27
+ * @interface DedupStatsLatestRun
28
+ */
29
+ export interface DedupStatsLatestRun {
30
+ /**
31
+ *
32
+ * @type {Date}
33
+ * @memberof DedupStatsLatestRun
34
+ */
35
+ startedAt?: Date;
36
+ /**
37
+ *
38
+ * @type {Date}
39
+ * @memberof DedupStatsLatestRun
40
+ */
41
+ finishedAt?: Date | null;
42
+ /**
43
+ *
44
+ * @type {DedupStatsLatestRunStatusEnum}
45
+ * @memberof DedupStatsLatestRun
46
+ */
47
+ status?: DedupStatsLatestRunStatusEnum;
48
+ /**
49
+ *
50
+ * @type {DedupCounters}
51
+ * @memberof DedupStatsLatestRun
52
+ */
53
+ counters?: DedupCounters;
54
+ }
55
+
56
+
57
+ /**
58
+ * @export
59
+ */
60
+ export const DedupStatsLatestRunStatusEnum = {
61
+ Success: 'success',
62
+ Failed: 'failed',
63
+ Suspicious: 'suspicious'
64
+ } as const;
65
+ export type DedupStatsLatestRunStatusEnum = typeof DedupStatsLatestRunStatusEnum[keyof typeof DedupStatsLatestRunStatusEnum];
66
+
67
+
68
+ /**
69
+ * Check if a given object implements the DedupStatsLatestRun interface.
70
+ */
71
+ export function instanceOfDedupStatsLatestRun(value: object): value is DedupStatsLatestRun {
72
+ return true;
73
+ }
74
+
75
+ export function DedupStatsLatestRunFromJSON(json: any): DedupStatsLatestRun {
76
+ return DedupStatsLatestRunFromJSONTyped(json, false);
77
+ }
78
+
79
+ export function DedupStatsLatestRunFromJSONTyped(json: any, ignoreDiscriminator: boolean): DedupStatsLatestRun {
80
+ if (json == null) {
81
+ return json;
82
+ }
83
+ return {
84
+
85
+ 'startedAt': json['started_at'] == null ? undefined : (new Date(json['started_at'])),
86
+ 'finishedAt': json['finished_at'] == null ? undefined : (new Date(json['finished_at'])),
87
+ 'status': json['status'] == null ? undefined : json['status'],
88
+ 'counters': json['counters'] == null ? undefined : DedupCountersFromJSON(json['counters']),
89
+ };
90
+ }
91
+
92
+ export function DedupStatsLatestRunToJSON(json: any): DedupStatsLatestRun {
93
+ return DedupStatsLatestRunToJSONTyped(json, false);
94
+ }
95
+
96
+ export function DedupStatsLatestRunToJSONTyped(value?: DedupStatsLatestRun | null, ignoreDiscriminator: boolean = false): any {
97
+ if (value == null) {
98
+ return value;
99
+ }
100
+
101
+ return {
102
+
103
+ 'started_at': value['startedAt'] == null ? value['startedAt'] : value['startedAt'].toISOString(),
104
+ 'finished_at': value['finishedAt'] == null ? value['finishedAt'] : value['finishedAt'].toISOString(),
105
+ 'status': value['status'],
106
+ 'counters': DedupCountersToJSON(value['counters']),
107
+ };
108
+ }
109
+
@@ -0,0 +1,89 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * C4R Aggregator API
5
+ * 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.
6
+ *
7
+ * The version of the OpenAPI document: 1.0.0
8
+ *
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+
15
+ import { mapValues } from '../runtime';
16
+ import type { DedupCounters } from './DedupCounters';
17
+ import {
18
+ DedupCountersFromJSON,
19
+ DedupCountersFromJSONTyped,
20
+ DedupCountersToJSON,
21
+ DedupCountersToJSONTyped,
22
+ } from './DedupCounters';
23
+
24
+ /**
25
+ * Condensed entry in DedupStats.recent_runs[].
26
+ * @export
27
+ * @interface DedupStatsRecentRunsInner
28
+ */
29
+ export interface DedupStatsRecentRunsInner {
30
+ /**
31
+ *
32
+ * @type {Date}
33
+ * @memberof DedupStatsRecentRunsInner
34
+ */
35
+ startedAt?: Date;
36
+ /**
37
+ *
38
+ * @type {string}
39
+ * @memberof DedupStatsRecentRunsInner
40
+ */
41
+ status?: string;
42
+ /**
43
+ *
44
+ * @type {DedupCounters}
45
+ * @memberof DedupStatsRecentRunsInner
46
+ */
47
+ counters?: DedupCounters;
48
+ }
49
+
50
+ /**
51
+ * Check if a given object implements the DedupStatsRecentRunsInner interface.
52
+ */
53
+ export function instanceOfDedupStatsRecentRunsInner(value: object): value is DedupStatsRecentRunsInner {
54
+ return true;
55
+ }
56
+
57
+ export function DedupStatsRecentRunsInnerFromJSON(json: any): DedupStatsRecentRunsInner {
58
+ return DedupStatsRecentRunsInnerFromJSONTyped(json, false);
59
+ }
60
+
61
+ export function DedupStatsRecentRunsInnerFromJSONTyped(json: any, ignoreDiscriminator: boolean): DedupStatsRecentRunsInner {
62
+ if (json == null) {
63
+ return json;
64
+ }
65
+ return {
66
+
67
+ 'startedAt': json['started_at'] == null ? undefined : (new Date(json['started_at'])),
68
+ 'status': json['status'] == null ? undefined : json['status'],
69
+ 'counters': json['counters'] == null ? undefined : DedupCountersFromJSON(json['counters']),
70
+ };
71
+ }
72
+
73
+ export function DedupStatsRecentRunsInnerToJSON(json: any): DedupStatsRecentRunsInner {
74
+ return DedupStatsRecentRunsInnerToJSONTyped(json, false);
75
+ }
76
+
77
+ export function DedupStatsRecentRunsInnerToJSONTyped(value?: DedupStatsRecentRunsInner | null, ignoreDiscriminator: boolean = false): any {
78
+ if (value == null) {
79
+ return value;
80
+ }
81
+
82
+ return {
83
+
84
+ 'started_at': value['startedAt'] == null ? value['startedAt'] : value['startedAt'].toISOString(),
85
+ 'status': value['status'],
86
+ 'counters': DedupCountersToJSON(value['counters']),
87
+ };
88
+ }
89
+
@@ -0,0 +1,94 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * C4R Aggregator API
5
+ * 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.
6
+ *
7
+ * The version of the OpenAPI document: 1.0.0
8
+ *
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+
15
+ import { mapValues } from '../runtime';
16
+ /**
17
+ * Returned by `POST /admin/sources` when the upstream feed cannot be validated
18
+ * @export
19
+ * @interface FeedValidationError
20
+ */
21
+ export interface FeedValidationError {
22
+ /**
23
+ *
24
+ * @type {string}
25
+ * @memberof FeedValidationError
26
+ */
27
+ error?: string;
28
+ /**
29
+ *
30
+ * @type {FeedValidationErrorErrorTypeEnum}
31
+ * @memberof FeedValidationError
32
+ */
33
+ errorType?: FeedValidationErrorErrorTypeEnum;
34
+ /**
35
+ *
36
+ * @type {string}
37
+ * @memberof FeedValidationError
38
+ */
39
+ message?: string;
40
+ }
41
+
42
+
43
+ /**
44
+ * @export
45
+ */
46
+ export const FeedValidationErrorErrorTypeEnum = {
47
+ Network: 'network',
48
+ Http: 'http',
49
+ Parse: 'parse',
50
+ Empty: 'empty'
51
+ } as const;
52
+ export type FeedValidationErrorErrorTypeEnum = typeof FeedValidationErrorErrorTypeEnum[keyof typeof FeedValidationErrorErrorTypeEnum];
53
+
54
+
55
+ /**
56
+ * Check if a given object implements the FeedValidationError interface.
57
+ */
58
+ export function instanceOfFeedValidationError(value: object): value is FeedValidationError {
59
+ return true;
60
+ }
61
+
62
+ export function FeedValidationErrorFromJSON(json: any): FeedValidationError {
63
+ return FeedValidationErrorFromJSONTyped(json, false);
64
+ }
65
+
66
+ export function FeedValidationErrorFromJSONTyped(json: any, ignoreDiscriminator: boolean): FeedValidationError {
67
+ if (json == null) {
68
+ return json;
69
+ }
70
+ return {
71
+
72
+ 'error': json['error'] == null ? undefined : json['error'],
73
+ 'errorType': json['error_type'] == null ? undefined : json['error_type'],
74
+ 'message': json['message'] == null ? undefined : json['message'],
75
+ };
76
+ }
77
+
78
+ export function FeedValidationErrorToJSON(json: any): FeedValidationError {
79
+ return FeedValidationErrorToJSONTyped(json, false);
80
+ }
81
+
82
+ export function FeedValidationErrorToJSONTyped(value?: FeedValidationError | null, ignoreDiscriminator: boolean = false): any {
83
+ if (value == null) {
84
+ return value;
85
+ }
86
+
87
+ return {
88
+
89
+ 'error': value['error'],
90
+ 'error_type': value['errorType'],
91
+ 'message': value['message'],
92
+ };
93
+ }
94
+
@@ -0,0 +1,165 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * C4R Aggregator API
5
+ * 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.
6
+ *
7
+ * The version of the OpenAPI document: 1.0.0
8
+ *
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+
15
+ import { mapValues } from '../runtime';
16
+ /**
17
+ * A single fetch attempt against a source
18
+ * @export
19
+ * @interface IngestRun
20
+ */
21
+ export interface IngestRun {
22
+ /**
23
+ *
24
+ * @type {number}
25
+ * @memberof IngestRun
26
+ */
27
+ id?: number;
28
+ /**
29
+ *
30
+ * @type {number}
31
+ * @memberof IngestRun
32
+ */
33
+ sourceId?: number;
34
+ /**
35
+ *
36
+ * @type {Date}
37
+ * @memberof IngestRun
38
+ */
39
+ startedAt?: Date;
40
+ /**
41
+ *
42
+ * @type {Date}
43
+ * @memberof IngestRun
44
+ */
45
+ finishedAt?: Date | null;
46
+ /**
47
+ *
48
+ * @type {IngestRunStatusEnum}
49
+ * @memberof IngestRun
50
+ */
51
+ status?: IngestRunStatusEnum;
52
+ /**
53
+ *
54
+ * @type {boolean}
55
+ * @memberof IngestRun
56
+ */
57
+ wasSuspicious?: boolean;
58
+ /**
59
+ *
60
+ * @type {string}
61
+ * @memberof IngestRun
62
+ */
63
+ errorType?: string | null;
64
+ /**
65
+ *
66
+ * @type {string}
67
+ * @memberof IngestRun
68
+ */
69
+ errorMessage?: string | null;
70
+ /**
71
+ *
72
+ * @type {number}
73
+ * @memberof IngestRun
74
+ */
75
+ seen?: number;
76
+ /**
77
+ *
78
+ * @type {number}
79
+ * @memberof IngestRun
80
+ */
81
+ created?: number;
82
+ /**
83
+ *
84
+ * @type {number}
85
+ * @memberof IngestRun
86
+ */
87
+ updated?: number;
88
+ /**
89
+ *
90
+ * @type {number}
91
+ * @memberof IngestRun
92
+ */
93
+ removed?: number;
94
+ }
95
+
96
+
97
+ /**
98
+ * @export
99
+ */
100
+ export const IngestRunStatusEnum = {
101
+ Success: 'success',
102
+ Failed: 'failed',
103
+ Suspicious: 'suspicious'
104
+ } as const;
105
+ export type IngestRunStatusEnum = typeof IngestRunStatusEnum[keyof typeof IngestRunStatusEnum];
106
+
107
+
108
+ /**
109
+ * Check if a given object implements the IngestRun interface.
110
+ */
111
+ export function instanceOfIngestRun(value: object): value is IngestRun {
112
+ return true;
113
+ }
114
+
115
+ export function IngestRunFromJSON(json: any): IngestRun {
116
+ return IngestRunFromJSONTyped(json, false);
117
+ }
118
+
119
+ export function IngestRunFromJSONTyped(json: any, ignoreDiscriminator: boolean): IngestRun {
120
+ if (json == null) {
121
+ return json;
122
+ }
123
+ return {
124
+
125
+ 'id': json['id'] == null ? undefined : json['id'],
126
+ 'sourceId': json['source_id'] == null ? undefined : json['source_id'],
127
+ 'startedAt': json['started_at'] == null ? undefined : (new Date(json['started_at'])),
128
+ 'finishedAt': json['finished_at'] == null ? undefined : (new Date(json['finished_at'])),
129
+ 'status': json['status'] == null ? undefined : json['status'],
130
+ 'wasSuspicious': json['was_suspicious'] == null ? undefined : json['was_suspicious'],
131
+ 'errorType': json['error_type'] == null ? undefined : json['error_type'],
132
+ 'errorMessage': json['error_message'] == null ? undefined : json['error_message'],
133
+ 'seen': json['seen'] == null ? undefined : json['seen'],
134
+ 'created': json['created'] == null ? undefined : json['created'],
135
+ 'updated': json['updated'] == null ? undefined : json['updated'],
136
+ 'removed': json['removed'] == null ? undefined : json['removed'],
137
+ };
138
+ }
139
+
140
+ export function IngestRunToJSON(json: any): IngestRun {
141
+ return IngestRunToJSONTyped(json, false);
142
+ }
143
+
144
+ export function IngestRunToJSONTyped(value?: IngestRun | null, ignoreDiscriminator: boolean = false): any {
145
+ if (value == null) {
146
+ return value;
147
+ }
148
+
149
+ return {
150
+
151
+ 'id': value['id'],
152
+ 'source_id': value['sourceId'],
153
+ 'started_at': value['startedAt'] == null ? value['startedAt'] : value['startedAt'].toISOString(),
154
+ 'finished_at': value['finishedAt'] == null ? value['finishedAt'] : value['finishedAt'].toISOString(),
155
+ 'status': value['status'],
156
+ 'was_suspicious': value['wasSuspicious'],
157
+ 'error_type': value['errorType'],
158
+ 'error_message': value['errorMessage'],
159
+ 'seen': value['seen'],
160
+ 'created': value['created'],
161
+ 'updated': value['updated'],
162
+ 'removed': value['removed'],
163
+ };
164
+ }
165
+
@@ -0,0 +1,96 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * C4R Aggregator API
5
+ * 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.
6
+ *
7
+ * The version of the OpenAPI document: 1.0.0
8
+ *
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+
15
+ import { mapValues } from '../runtime';
16
+ import type { MapFeatureGeometry } from './MapFeatureGeometry';
17
+ import {
18
+ MapFeatureGeometryFromJSON,
19
+ MapFeatureGeometryFromJSONTyped,
20
+ MapFeatureGeometryToJSON,
21
+ MapFeatureGeometryToJSONTyped,
22
+ } from './MapFeatureGeometry';
23
+ import type { MapFeatureProperties } from './MapFeatureProperties';
24
+ import {
25
+ MapFeaturePropertiesFromJSON,
26
+ MapFeaturePropertiesFromJSONTyped,
27
+ MapFeaturePropertiesToJSON,
28
+ MapFeaturePropertiesToJSONTyped,
29
+ } from './MapFeatureProperties';
30
+
31
+ /**
32
+ * GeoJSON Feature: one per geocoded location with the list of active meetings at that location.
33
+ * @export
34
+ * @interface MapFeature
35
+ */
36
+ export interface MapFeature {
37
+ /**
38
+ *
39
+ * @type {string}
40
+ * @memberof MapFeature
41
+ */
42
+ type?: string;
43
+ /**
44
+ *
45
+ * @type {MapFeatureGeometry}
46
+ * @memberof MapFeature
47
+ */
48
+ geometry?: MapFeatureGeometry;
49
+ /**
50
+ *
51
+ * @type {MapFeatureProperties}
52
+ * @memberof MapFeature
53
+ */
54
+ properties?: MapFeatureProperties;
55
+ }
56
+
57
+ /**
58
+ * Check if a given object implements the MapFeature interface.
59
+ */
60
+ export function instanceOfMapFeature(value: object): value is MapFeature {
61
+ return true;
62
+ }
63
+
64
+ export function MapFeatureFromJSON(json: any): MapFeature {
65
+ return MapFeatureFromJSONTyped(json, false);
66
+ }
67
+
68
+ export function MapFeatureFromJSONTyped(json: any, ignoreDiscriminator: boolean): MapFeature {
69
+ if (json == null) {
70
+ return json;
71
+ }
72
+ return {
73
+
74
+ 'type': json['type'] == null ? undefined : json['type'],
75
+ 'geometry': json['geometry'] == null ? undefined : MapFeatureGeometryFromJSON(json['geometry']),
76
+ 'properties': json['properties'] == null ? undefined : MapFeaturePropertiesFromJSON(json['properties']),
77
+ };
78
+ }
79
+
80
+ export function MapFeatureToJSON(json: any): MapFeature {
81
+ return MapFeatureToJSONTyped(json, false);
82
+ }
83
+
84
+ export function MapFeatureToJSONTyped(value?: MapFeature | null, ignoreDiscriminator: boolean = false): any {
85
+ if (value == null) {
86
+ return value;
87
+ }
88
+
89
+ return {
90
+
91
+ 'type': value['type'],
92
+ 'geometry': MapFeatureGeometryToJSON(value['geometry']),
93
+ 'properties': MapFeaturePropertiesToJSON(value['properties']),
94
+ };
95
+ }
96
+