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,383 @@
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
+ * Meeting Guide API-compliant meeting row. Location and group fields are denormalized for drop-in client compatibility. Adds non-spec `data_freshness_days`.
18
+ * @export
19
+ * @interface Meeting
20
+ */
21
+ export interface Meeting {
22
+ /**
23
+ *
24
+ * @type {number}
25
+ * @memberof Meeting
26
+ */
27
+ id?: number;
28
+ /**
29
+ *
30
+ * @type {string}
31
+ * @memberof Meeting
32
+ */
33
+ name?: string;
34
+ /**
35
+ *
36
+ * @type {string}
37
+ * @memberof Meeting
38
+ */
39
+ slug?: string;
40
+ /**
41
+ *
42
+ * @type {number}
43
+ * @memberof Meeting
44
+ */
45
+ day?: number | null;
46
+ /**
47
+ *
48
+ * @type {string}
49
+ * @memberof Meeting
50
+ */
51
+ time?: string | null;
52
+ /**
53
+ *
54
+ * @type {string}
55
+ * @memberof Meeting
56
+ */
57
+ endTime?: string | null;
58
+ /**
59
+ *
60
+ * @type {string}
61
+ * @memberof Meeting
62
+ */
63
+ timeFormatted?: string | null;
64
+ /**
65
+ *
66
+ * @type {Date}
67
+ * @memberof Meeting
68
+ */
69
+ updated?: Date | null;
70
+ /**
71
+ *
72
+ * @type {Array<string>}
73
+ * @memberof Meeting
74
+ */
75
+ types?: Array<string>;
76
+ /**
77
+ *
78
+ * @type {string}
79
+ * @memberof Meeting
80
+ */
81
+ notes?: string | null;
82
+ /**
83
+ *
84
+ * @type {MeetingApproximateEnum}
85
+ * @memberof Meeting
86
+ */
87
+ approximate?: MeetingApproximateEnum;
88
+ /**
89
+ *
90
+ * @type {MeetingAttendanceOptionEnum}
91
+ * @memberof Meeting
92
+ */
93
+ attendanceOption?: MeetingAttendanceOptionEnum;
94
+ /**
95
+ *
96
+ * @type {string}
97
+ * @memberof Meeting
98
+ */
99
+ conferenceUrl?: string | null;
100
+ /**
101
+ *
102
+ * @type {string}
103
+ * @memberof Meeting
104
+ */
105
+ conferenceUrlNotes?: string | null;
106
+ /**
107
+ *
108
+ * @type {string}
109
+ * @memberof Meeting
110
+ */
111
+ conferencePhone?: string | null;
112
+ /**
113
+ *
114
+ * @type {string}
115
+ * @memberof Meeting
116
+ */
117
+ conferencePhoneNotes?: string | null;
118
+ /**
119
+ *
120
+ * @type {string}
121
+ * @memberof Meeting
122
+ */
123
+ location?: string | null;
124
+ /**
125
+ *
126
+ * @type {string}
127
+ * @memberof Meeting
128
+ */
129
+ locationNotes?: string | null;
130
+ /**
131
+ *
132
+ * @type {string}
133
+ * @memberof Meeting
134
+ */
135
+ formattedAddress?: string | null;
136
+ /**
137
+ *
138
+ * @type {string}
139
+ * @memberof Meeting
140
+ */
141
+ address?: string | null;
142
+ /**
143
+ *
144
+ * @type {string}
145
+ * @memberof Meeting
146
+ */
147
+ city?: string | null;
148
+ /**
149
+ *
150
+ * @type {string}
151
+ * @memberof Meeting
152
+ */
153
+ state?: string | null;
154
+ /**
155
+ *
156
+ * @type {string}
157
+ * @memberof Meeting
158
+ */
159
+ postalCode?: string | null;
160
+ /**
161
+ *
162
+ * @type {string}
163
+ * @memberof Meeting
164
+ */
165
+ country?: string | null;
166
+ /**
167
+ *
168
+ * @type {number}
169
+ * @memberof Meeting
170
+ */
171
+ latitude?: number | null;
172
+ /**
173
+ *
174
+ * @type {number}
175
+ * @memberof Meeting
176
+ */
177
+ longitude?: number | null;
178
+ /**
179
+ *
180
+ * @type {string}
181
+ * @memberof Meeting
182
+ */
183
+ timezone?: string | null;
184
+ /**
185
+ *
186
+ * @type {string}
187
+ * @memberof Meeting
188
+ */
189
+ region?: string | null;
190
+ /**
191
+ *
192
+ * @type {string}
193
+ * @memberof Meeting
194
+ */
195
+ group?: string | null;
196
+ /**
197
+ *
198
+ * @type {string}
199
+ * @memberof Meeting
200
+ */
201
+ district?: string | null;
202
+ /**
203
+ *
204
+ * @type {string}
205
+ * @memberof Meeting
206
+ */
207
+ subDistrict?: string | null;
208
+ /**
209
+ *
210
+ * @type {string}
211
+ * @memberof Meeting
212
+ */
213
+ website?: string | null;
214
+ /**
215
+ *
216
+ * @type {string}
217
+ * @memberof Meeting
218
+ */
219
+ email?: string | null;
220
+ /**
221
+ *
222
+ * @type {string}
223
+ * @memberof Meeting
224
+ */
225
+ phone?: string | null;
226
+ /**
227
+ *
228
+ * @type {string}
229
+ * @memberof Meeting
230
+ */
231
+ venmo?: string | null;
232
+ /**
233
+ *
234
+ * @type {string}
235
+ * @memberof Meeting
236
+ */
237
+ paypal?: string | null;
238
+ /**
239
+ *
240
+ * @type {string}
241
+ * @memberof Meeting
242
+ */
243
+ square?: string | null;
244
+ /**
245
+ * Days since the meeting was last seen from an `active`-state source. Null if never seen from active.
246
+ * @type {number}
247
+ * @memberof Meeting
248
+ */
249
+ dataFreshnessDays?: number | null;
250
+ }
251
+
252
+
253
+ /**
254
+ * @export
255
+ */
256
+ export const MeetingApproximateEnum = {
257
+ Yes: 'yes',
258
+ No: 'no'
259
+ } as const;
260
+ export type MeetingApproximateEnum = typeof MeetingApproximateEnum[keyof typeof MeetingApproximateEnum];
261
+
262
+ /**
263
+ * @export
264
+ */
265
+ export const MeetingAttendanceOptionEnum = {
266
+ InPerson: 'in_person',
267
+ Online: 'online',
268
+ Hybrid: 'hybrid',
269
+ Inactive: 'inactive'
270
+ } as const;
271
+ export type MeetingAttendanceOptionEnum = typeof MeetingAttendanceOptionEnum[keyof typeof MeetingAttendanceOptionEnum];
272
+
273
+
274
+ /**
275
+ * Check if a given object implements the Meeting interface.
276
+ */
277
+ export function instanceOfMeeting(value: object): value is Meeting {
278
+ return true;
279
+ }
280
+
281
+ export function MeetingFromJSON(json: any): Meeting {
282
+ return MeetingFromJSONTyped(json, false);
283
+ }
284
+
285
+ export function MeetingFromJSONTyped(json: any, ignoreDiscriminator: boolean): Meeting {
286
+ if (json == null) {
287
+ return json;
288
+ }
289
+ return {
290
+
291
+ 'id': json['id'] == null ? undefined : json['id'],
292
+ 'name': json['name'] == null ? undefined : json['name'],
293
+ 'slug': json['slug'] == null ? undefined : json['slug'],
294
+ 'day': json['day'] == null ? undefined : json['day'],
295
+ 'time': json['time'] == null ? undefined : json['time'],
296
+ 'endTime': json['end_time'] == null ? undefined : json['end_time'],
297
+ 'timeFormatted': json['time_formatted'] == null ? undefined : json['time_formatted'],
298
+ 'updated': json['updated'] == null ? undefined : (new Date(json['updated'])),
299
+ 'types': json['types'] == null ? undefined : json['types'],
300
+ 'notes': json['notes'] == null ? undefined : json['notes'],
301
+ 'approximate': json['approximate'] == null ? undefined : json['approximate'],
302
+ 'attendanceOption': json['attendance_option'] == null ? undefined : json['attendance_option'],
303
+ 'conferenceUrl': json['conference_url'] == null ? undefined : json['conference_url'],
304
+ 'conferenceUrlNotes': json['conference_url_notes'] == null ? undefined : json['conference_url_notes'],
305
+ 'conferencePhone': json['conference_phone'] == null ? undefined : json['conference_phone'],
306
+ 'conferencePhoneNotes': json['conference_phone_notes'] == null ? undefined : json['conference_phone_notes'],
307
+ 'location': json['location'] == null ? undefined : json['location'],
308
+ 'locationNotes': json['location_notes'] == null ? undefined : json['location_notes'],
309
+ 'formattedAddress': json['formatted_address'] == null ? undefined : json['formatted_address'],
310
+ 'address': json['address'] == null ? undefined : json['address'],
311
+ 'city': json['city'] == null ? undefined : json['city'],
312
+ 'state': json['state'] == null ? undefined : json['state'],
313
+ 'postalCode': json['postal_code'] == null ? undefined : json['postal_code'],
314
+ 'country': json['country'] == null ? undefined : json['country'],
315
+ 'latitude': json['latitude'] == null ? undefined : json['latitude'],
316
+ 'longitude': json['longitude'] == null ? undefined : json['longitude'],
317
+ 'timezone': json['timezone'] == null ? undefined : json['timezone'],
318
+ 'region': json['region'] == null ? undefined : json['region'],
319
+ 'group': json['group'] == null ? undefined : json['group'],
320
+ 'district': json['district'] == null ? undefined : json['district'],
321
+ 'subDistrict': json['sub_district'] == null ? undefined : json['sub_district'],
322
+ 'website': json['website'] == null ? undefined : json['website'],
323
+ 'email': json['email'] == null ? undefined : json['email'],
324
+ 'phone': json['phone'] == null ? undefined : json['phone'],
325
+ 'venmo': json['venmo'] == null ? undefined : json['venmo'],
326
+ 'paypal': json['paypal'] == null ? undefined : json['paypal'],
327
+ 'square': json['square'] == null ? undefined : json['square'],
328
+ 'dataFreshnessDays': json['data_freshness_days'] == null ? undefined : json['data_freshness_days'],
329
+ };
330
+ }
331
+
332
+ export function MeetingToJSON(json: any): Meeting {
333
+ return MeetingToJSONTyped(json, false);
334
+ }
335
+
336
+ export function MeetingToJSONTyped(value?: Meeting | null, ignoreDiscriminator: boolean = false): any {
337
+ if (value == null) {
338
+ return value;
339
+ }
340
+
341
+ return {
342
+
343
+ 'id': value['id'],
344
+ 'name': value['name'],
345
+ 'slug': value['slug'],
346
+ 'day': value['day'],
347
+ 'time': value['time'],
348
+ 'end_time': value['endTime'],
349
+ 'time_formatted': value['timeFormatted'],
350
+ 'updated': value['updated'] == null ? value['updated'] : value['updated'].toISOString(),
351
+ 'types': value['types'],
352
+ 'notes': value['notes'],
353
+ 'approximate': value['approximate'],
354
+ 'attendance_option': value['attendanceOption'],
355
+ 'conference_url': value['conferenceUrl'],
356
+ 'conference_url_notes': value['conferenceUrlNotes'],
357
+ 'conference_phone': value['conferencePhone'],
358
+ 'conference_phone_notes': value['conferencePhoneNotes'],
359
+ 'location': value['location'],
360
+ 'location_notes': value['locationNotes'],
361
+ 'formatted_address': value['formattedAddress'],
362
+ 'address': value['address'],
363
+ 'city': value['city'],
364
+ 'state': value['state'],
365
+ 'postal_code': value['postalCode'],
366
+ 'country': value['country'],
367
+ 'latitude': value['latitude'],
368
+ 'longitude': value['longitude'],
369
+ 'timezone': value['timezone'],
370
+ 'region': value['region'],
371
+ 'group': value['group'],
372
+ 'district': value['district'],
373
+ 'sub_district': value['subDistrict'],
374
+ 'website': value['website'],
375
+ 'email': value['email'],
376
+ 'phone': value['phone'],
377
+ 'venmo': value['venmo'],
378
+ 'paypal': value['paypal'],
379
+ 'square': value['square'],
380
+ 'data_freshness_days': value['dataFreshnessDays'],
381
+ };
382
+ }
383
+
@@ -0,0 +1,103 @@
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 { MeetingPageLinks } from './MeetingPageLinks';
17
+ import {
18
+ MeetingPageLinksFromJSON,
19
+ MeetingPageLinksFromJSONTyped,
20
+ MeetingPageLinksToJSON,
21
+ MeetingPageLinksToJSONTyped,
22
+ } from './MeetingPageLinks';
23
+ import type { Meeting } from './Meeting';
24
+ import {
25
+ MeetingFromJSON,
26
+ MeetingFromJSONTyped,
27
+ MeetingToJSON,
28
+ MeetingToJSONTyped,
29
+ } from './Meeting';
30
+ import type { MeetingPageMeta } from './MeetingPageMeta';
31
+ import {
32
+ MeetingPageMetaFromJSON,
33
+ MeetingPageMetaFromJSONTyped,
34
+ MeetingPageMetaToJSON,
35
+ MeetingPageMetaToJSONTyped,
36
+ } from './MeetingPageMeta';
37
+
38
+ /**
39
+ * Cursor-paginated envelope returned by `GET /meetings`
40
+ * @export
41
+ * @interface MeetingPage
42
+ */
43
+ export interface MeetingPage {
44
+ /**
45
+ *
46
+ * @type {Array<Meeting>}
47
+ * @memberof MeetingPage
48
+ */
49
+ data?: Array<Meeting>;
50
+ /**
51
+ *
52
+ * @type {MeetingPageLinks}
53
+ * @memberof MeetingPage
54
+ */
55
+ links?: MeetingPageLinks;
56
+ /**
57
+ *
58
+ * @type {MeetingPageMeta}
59
+ * @memberof MeetingPage
60
+ */
61
+ meta?: MeetingPageMeta;
62
+ }
63
+
64
+ /**
65
+ * Check if a given object implements the MeetingPage interface.
66
+ */
67
+ export function instanceOfMeetingPage(value: object): value is MeetingPage {
68
+ return true;
69
+ }
70
+
71
+ export function MeetingPageFromJSON(json: any): MeetingPage {
72
+ return MeetingPageFromJSONTyped(json, false);
73
+ }
74
+
75
+ export function MeetingPageFromJSONTyped(json: any, ignoreDiscriminator: boolean): MeetingPage {
76
+ if (json == null) {
77
+ return json;
78
+ }
79
+ return {
80
+
81
+ 'data': json['data'] == null ? undefined : ((json['data'] as Array<any>).map(MeetingFromJSON)),
82
+ 'links': json['links'] == null ? undefined : MeetingPageLinksFromJSON(json['links']),
83
+ 'meta': json['meta'] == null ? undefined : MeetingPageMetaFromJSON(json['meta']),
84
+ };
85
+ }
86
+
87
+ export function MeetingPageToJSON(json: any): MeetingPage {
88
+ return MeetingPageToJSONTyped(json, false);
89
+ }
90
+
91
+ export function MeetingPageToJSONTyped(value?: MeetingPage | null, ignoreDiscriminator: boolean = false): any {
92
+ if (value == null) {
93
+ return value;
94
+ }
95
+
96
+ return {
97
+
98
+ 'data': value['data'] == null ? undefined : ((value['data'] as Array<any>).map(MeetingToJSON)),
99
+ 'links': MeetingPageLinksToJSON(value['links']),
100
+ 'meta': MeetingPageMetaToJSON(value['meta']),
101
+ };
102
+ }
103
+
@@ -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
+ /**
17
+ * Pagination cursor links for MeetingPage.
18
+ * @export
19
+ * @interface MeetingPageLinks
20
+ */
21
+ export interface MeetingPageLinks {
22
+ /**
23
+ *
24
+ * @type {string}
25
+ * @memberof MeetingPageLinks
26
+ */
27
+ first?: string | null;
28
+ /**
29
+ *
30
+ * @type {string}
31
+ * @memberof MeetingPageLinks
32
+ */
33
+ last?: string | null;
34
+ /**
35
+ *
36
+ * @type {string}
37
+ * @memberof MeetingPageLinks
38
+ */
39
+ prev?: string | null;
40
+ /**
41
+ *
42
+ * @type {string}
43
+ * @memberof MeetingPageLinks
44
+ */
45
+ next?: string | null;
46
+ }
47
+
48
+ /**
49
+ * Check if a given object implements the MeetingPageLinks interface.
50
+ */
51
+ export function instanceOfMeetingPageLinks(value: object): value is MeetingPageLinks {
52
+ return true;
53
+ }
54
+
55
+ export function MeetingPageLinksFromJSON(json: any): MeetingPageLinks {
56
+ return MeetingPageLinksFromJSONTyped(json, false);
57
+ }
58
+
59
+ export function MeetingPageLinksFromJSONTyped(json: any, ignoreDiscriminator: boolean): MeetingPageLinks {
60
+ if (json == null) {
61
+ return json;
62
+ }
63
+ return {
64
+
65
+ 'first': json['first'] == null ? undefined : json['first'],
66
+ 'last': json['last'] == null ? undefined : json['last'],
67
+ 'prev': json['prev'] == null ? undefined : json['prev'],
68
+ 'next': json['next'] == null ? undefined : json['next'],
69
+ };
70
+ }
71
+
72
+ export function MeetingPageLinksToJSON(json: any): MeetingPageLinks {
73
+ return MeetingPageLinksToJSONTyped(json, false);
74
+ }
75
+
76
+ export function MeetingPageLinksToJSONTyped(value?: MeetingPageLinks | null, ignoreDiscriminator: boolean = false): any {
77
+ if (value == null) {
78
+ return value;
79
+ }
80
+
81
+ return {
82
+
83
+ 'first': value['first'],
84
+ 'last': value['last'],
85
+ 'prev': value['prev'],
86
+ 'next': value['next'],
87
+ };
88
+ }
89
+
@@ -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
+ /**
17
+ * Pagination metadata for MeetingPage.
18
+ * @export
19
+ * @interface MeetingPageMeta
20
+ */
21
+ export interface MeetingPageMeta {
22
+ /**
23
+ *
24
+ * @type {string}
25
+ * @memberof MeetingPageMeta
26
+ */
27
+ path?: string;
28
+ /**
29
+ *
30
+ * @type {number}
31
+ * @memberof MeetingPageMeta
32
+ */
33
+ perPage?: number;
34
+ /**
35
+ *
36
+ * @type {string}
37
+ * @memberof MeetingPageMeta
38
+ */
39
+ nextCursor?: string | null;
40
+ /**
41
+ *
42
+ * @type {string}
43
+ * @memberof MeetingPageMeta
44
+ */
45
+ prevCursor?: string | null;
46
+ }
47
+
48
+ /**
49
+ * Check if a given object implements the MeetingPageMeta interface.
50
+ */
51
+ export function instanceOfMeetingPageMeta(value: object): value is MeetingPageMeta {
52
+ return true;
53
+ }
54
+
55
+ export function MeetingPageMetaFromJSON(json: any): MeetingPageMeta {
56
+ return MeetingPageMetaFromJSONTyped(json, false);
57
+ }
58
+
59
+ export function MeetingPageMetaFromJSONTyped(json: any, ignoreDiscriminator: boolean): MeetingPageMeta {
60
+ if (json == null) {
61
+ return json;
62
+ }
63
+ return {
64
+
65
+ 'path': json['path'] == null ? undefined : json['path'],
66
+ 'perPage': json['per_page'] == null ? undefined : json['per_page'],
67
+ 'nextCursor': json['next_cursor'] == null ? undefined : json['next_cursor'],
68
+ 'prevCursor': json['prev_cursor'] == null ? undefined : json['prev_cursor'],
69
+ };
70
+ }
71
+
72
+ export function MeetingPageMetaToJSON(json: any): MeetingPageMeta {
73
+ return MeetingPageMetaToJSONTyped(json, false);
74
+ }
75
+
76
+ export function MeetingPageMetaToJSONTyped(value?: MeetingPageMeta | null, ignoreDiscriminator: boolean = false): any {
77
+ if (value == null) {
78
+ return value;
79
+ }
80
+
81
+ return {
82
+
83
+ 'path': value['path'],
84
+ 'per_page': value['perPage'],
85
+ 'next_cursor': value['nextCursor'],
86
+ 'prev_cursor': value['prevCursor'],
87
+ };
88
+ }
89
+