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,97 @@
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
+ *
18
+ * @export
19
+ * @interface MeetingType
20
+ */
21
+ export interface MeetingType {
22
+ /**
23
+ *
24
+ * @type {number}
25
+ * @memberof MeetingType
26
+ */
27
+ id?: number;
28
+ /**
29
+ *
30
+ * @type {number}
31
+ * @memberof MeetingType
32
+ */
33
+ programId?: number;
34
+ /**
35
+ *
36
+ * @type {string}
37
+ * @memberof MeetingType
38
+ */
39
+ code?: string;
40
+ /**
41
+ *
42
+ * @type {string}
43
+ * @memberof MeetingType
44
+ */
45
+ name?: string;
46
+ /**
47
+ * True if the type was inserted on ingest because no curated seed matched.
48
+ * @type {boolean}
49
+ * @memberof MeetingType
50
+ */
51
+ autoDiscovered?: boolean;
52
+ }
53
+
54
+ /**
55
+ * Check if a given object implements the MeetingType interface.
56
+ */
57
+ export function instanceOfMeetingType(value: object): value is MeetingType {
58
+ return true;
59
+ }
60
+
61
+ export function MeetingTypeFromJSON(json: any): MeetingType {
62
+ return MeetingTypeFromJSONTyped(json, false);
63
+ }
64
+
65
+ export function MeetingTypeFromJSONTyped(json: any, ignoreDiscriminator: boolean): MeetingType {
66
+ if (json == null) {
67
+ return json;
68
+ }
69
+ return {
70
+
71
+ 'id': json['id'] == null ? undefined : json['id'],
72
+ 'programId': json['program_id'] == null ? undefined : json['program_id'],
73
+ 'code': json['code'] == null ? undefined : json['code'],
74
+ 'name': json['name'] == null ? undefined : json['name'],
75
+ 'autoDiscovered': json['auto_discovered'] == null ? undefined : json['auto_discovered'],
76
+ };
77
+ }
78
+
79
+ export function MeetingTypeToJSON(json: any): MeetingType {
80
+ return MeetingTypeToJSONTyped(json, false);
81
+ }
82
+
83
+ export function MeetingTypeToJSONTyped(value?: MeetingType | null, ignoreDiscriminator: boolean = false): any {
84
+ if (value == null) {
85
+ return value;
86
+ }
87
+
88
+ return {
89
+
90
+ 'id': value['id'],
91
+ 'program_id': value['programId'],
92
+ 'code': value['code'],
93
+ 'name': value['name'],
94
+ 'auto_discovered': value['autoDiscovered'],
95
+ };
96
+ }
97
+
@@ -0,0 +1,81 @@
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 `GET /meetings` when no filter is supplied
18
+ * @export
19
+ * @interface MeetingsFilterError
20
+ */
21
+ export interface MeetingsFilterError {
22
+ /**
23
+ *
24
+ * @type {string}
25
+ * @memberof MeetingsFilterError
26
+ */
27
+ error?: string;
28
+ /**
29
+ *
30
+ * @type {string}
31
+ * @memberof MeetingsFilterError
32
+ */
33
+ message?: string;
34
+ /**
35
+ *
36
+ * @type {Array<string>}
37
+ * @memberof MeetingsFilterError
38
+ */
39
+ availableFilters?: Array<string>;
40
+ }
41
+
42
+ /**
43
+ * Check if a given object implements the MeetingsFilterError interface.
44
+ */
45
+ export function instanceOfMeetingsFilterError(value: object): value is MeetingsFilterError {
46
+ return true;
47
+ }
48
+
49
+ export function MeetingsFilterErrorFromJSON(json: any): MeetingsFilterError {
50
+ return MeetingsFilterErrorFromJSONTyped(json, false);
51
+ }
52
+
53
+ export function MeetingsFilterErrorFromJSONTyped(json: any, ignoreDiscriminator: boolean): MeetingsFilterError {
54
+ if (json == null) {
55
+ return json;
56
+ }
57
+ return {
58
+
59
+ 'error': json['error'] == null ? undefined : json['error'],
60
+ 'message': json['message'] == null ? undefined : json['message'],
61
+ 'availableFilters': json['available_filters'] == null ? undefined : json['available_filters'],
62
+ };
63
+ }
64
+
65
+ export function MeetingsFilterErrorToJSON(json: any): MeetingsFilterError {
66
+ return MeetingsFilterErrorToJSONTyped(json, false);
67
+ }
68
+
69
+ export function MeetingsFilterErrorToJSONTyped(value?: MeetingsFilterError | null, ignoreDiscriminator: boolean = false): any {
70
+ if (value == null) {
71
+ return value;
72
+ }
73
+
74
+ return {
75
+
76
+ 'error': value['error'],
77
+ 'message': value['message'],
78
+ 'available_filters': value['availableFilters'],
79
+ };
80
+ }
81
+
@@ -0,0 +1,81 @@
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
+ *
18
+ * @export
19
+ * @interface Program
20
+ */
21
+ export interface Program {
22
+ /**
23
+ *
24
+ * @type {number}
25
+ * @memberof Program
26
+ */
27
+ id?: number;
28
+ /**
29
+ *
30
+ * @type {string}
31
+ * @memberof Program
32
+ */
33
+ code?: string;
34
+ /**
35
+ *
36
+ * @type {string}
37
+ * @memberof Program
38
+ */
39
+ name?: string;
40
+ }
41
+
42
+ /**
43
+ * Check if a given object implements the Program interface.
44
+ */
45
+ export function instanceOfProgram(value: object): value is Program {
46
+ return true;
47
+ }
48
+
49
+ export function ProgramFromJSON(json: any): Program {
50
+ return ProgramFromJSONTyped(json, false);
51
+ }
52
+
53
+ export function ProgramFromJSONTyped(json: any, ignoreDiscriminator: boolean): Program {
54
+ if (json == null) {
55
+ return json;
56
+ }
57
+ return {
58
+
59
+ 'id': json['id'] == null ? undefined : json['id'],
60
+ 'code': json['code'] == null ? undefined : json['code'],
61
+ 'name': json['name'] == null ? undefined : json['name'],
62
+ };
63
+ }
64
+
65
+ export function ProgramToJSON(json: any): Program {
66
+ return ProgramToJSONTyped(json, false);
67
+ }
68
+
69
+ export function ProgramToJSONTyped(value?: Program | null, ignoreDiscriminator: boolean = false): any {
70
+ if (value == null) {
71
+ return value;
72
+ }
73
+
74
+ return {
75
+
76
+ 'id': value['id'],
77
+ 'code': value['code'],
78
+ 'name': value['name'],
79
+ };
80
+ }
81
+
@@ -0,0 +1,170 @@
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
+ * Public view of a registered feed. Sharing keys and admin internals are hidden.
18
+ * @export
19
+ * @interface PublicSource
20
+ */
21
+ export interface PublicSource {
22
+ /**
23
+ *
24
+ * @type {number}
25
+ * @memberof PublicSource
26
+ */
27
+ id?: number;
28
+ /**
29
+ *
30
+ * @type {string}
31
+ * @memberof PublicSource
32
+ */
33
+ name?: string;
34
+ /**
35
+ *
36
+ * @type {string}
37
+ * @memberof PublicSource
38
+ */
39
+ program?: string;
40
+ /**
41
+ *
42
+ * @type {string}
43
+ * @memberof PublicSource
44
+ */
45
+ feedUrl?: string;
46
+ /**
47
+ *
48
+ * @type {PublicSourceFeedKindEnum}
49
+ * @memberof PublicSource
50
+ */
51
+ feedKind?: PublicSourceFeedKindEnum;
52
+ /**
53
+ *
54
+ * @type {string}
55
+ * @memberof PublicSource
56
+ */
57
+ entity?: string | null;
58
+ /**
59
+ *
60
+ * @type {string}
61
+ * @memberof PublicSource
62
+ */
63
+ entityUrl?: string | null;
64
+ /**
65
+ *
66
+ * @type {string}
67
+ * @memberof PublicSource
68
+ */
69
+ entityLocation?: string | null;
70
+ /**
71
+ *
72
+ * @type {PublicSourceStateEnum}
73
+ * @memberof PublicSource
74
+ */
75
+ state?: PublicSourceStateEnum;
76
+ /**
77
+ *
78
+ * @type {Date}
79
+ * @memberof PublicSource
80
+ */
81
+ lastSuccessAt?: Date | null;
82
+ /**
83
+ *
84
+ * @type {number}
85
+ * @memberof PublicSource
86
+ */
87
+ meetingCount?: number | null;
88
+ }
89
+
90
+
91
+ /**
92
+ * @export
93
+ */
94
+ export const PublicSourceFeedKindEnum = {
95
+ TsmlJson: 'tsml_json',
96
+ GoogleSheet: 'google_sheet'
97
+ } as const;
98
+ export type PublicSourceFeedKindEnum = typeof PublicSourceFeedKindEnum[keyof typeof PublicSourceFeedKindEnum];
99
+
100
+ /**
101
+ * @export
102
+ */
103
+ export const PublicSourceStateEnum = {
104
+ Pending: 'pending',
105
+ Active: 'active',
106
+ Degraded: 'degraded',
107
+ Failing: 'failing',
108
+ Dormant: 'dormant',
109
+ Paused: 'paused',
110
+ Deleted: 'deleted'
111
+ } as const;
112
+ export type PublicSourceStateEnum = typeof PublicSourceStateEnum[keyof typeof PublicSourceStateEnum];
113
+
114
+
115
+ /**
116
+ * Check if a given object implements the PublicSource interface.
117
+ */
118
+ export function instanceOfPublicSource(value: object): value is PublicSource {
119
+ return true;
120
+ }
121
+
122
+ export function PublicSourceFromJSON(json: any): PublicSource {
123
+ return PublicSourceFromJSONTyped(json, false);
124
+ }
125
+
126
+ export function PublicSourceFromJSONTyped(json: any, ignoreDiscriminator: boolean): PublicSource {
127
+ if (json == null) {
128
+ return json;
129
+ }
130
+ return {
131
+
132
+ 'id': json['id'] == null ? undefined : json['id'],
133
+ 'name': json['name'] == null ? undefined : json['name'],
134
+ 'program': json['program'] == null ? undefined : json['program'],
135
+ 'feedUrl': json['feed_url'] == null ? undefined : json['feed_url'],
136
+ 'feedKind': json['feed_kind'] == null ? undefined : json['feed_kind'],
137
+ 'entity': json['entity'] == null ? undefined : json['entity'],
138
+ 'entityUrl': json['entity_url'] == null ? undefined : json['entity_url'],
139
+ 'entityLocation': json['entity_location'] == null ? undefined : json['entity_location'],
140
+ 'state': json['state'] == null ? undefined : json['state'],
141
+ 'lastSuccessAt': json['last_success_at'] == null ? undefined : (new Date(json['last_success_at'])),
142
+ 'meetingCount': json['meeting_count'] == null ? undefined : json['meeting_count'],
143
+ };
144
+ }
145
+
146
+ export function PublicSourceToJSON(json: any): PublicSource {
147
+ return PublicSourceToJSONTyped(json, false);
148
+ }
149
+
150
+ export function PublicSourceToJSONTyped(value?: PublicSource | null, ignoreDiscriminator: boolean = false): any {
151
+ if (value == null) {
152
+ return value;
153
+ }
154
+
155
+ return {
156
+
157
+ 'id': value['id'],
158
+ 'name': value['name'],
159
+ 'program': value['program'],
160
+ 'feed_url': value['feedUrl'],
161
+ 'feed_kind': value['feedKind'],
162
+ 'entity': value['entity'],
163
+ 'entity_url': value['entityUrl'],
164
+ 'entity_location': value['entityLocation'],
165
+ 'state': value['state'],
166
+ 'last_success_at': value['lastSuccessAt'] == null ? value['lastSuccessAt'] : value['lastSuccessAt'].toISOString(),
167
+ 'meeting_count': value['meetingCount'],
168
+ };
169
+ }
170
+
@@ -0,0 +1,73 @@
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 { AdminSource } from './AdminSource';
17
+ import {
18
+ AdminSourceFromJSON,
19
+ AdminSourceFromJSONTyped,
20
+ AdminSourceToJSON,
21
+ AdminSourceToJSONTyped,
22
+ } from './AdminSource';
23
+
24
+ /**
25
+ * {source: AdminSource} wrapper returned by patch/delete/restore/pause/resume.
26
+ * @export
27
+ * @interface SourceEnvelope
28
+ */
29
+ export interface SourceEnvelope {
30
+ /**
31
+ *
32
+ * @type {AdminSource}
33
+ * @memberof SourceEnvelope
34
+ */
35
+ source?: AdminSource;
36
+ }
37
+
38
+ /**
39
+ * Check if a given object implements the SourceEnvelope interface.
40
+ */
41
+ export function instanceOfSourceEnvelope(value: object): value is SourceEnvelope {
42
+ return true;
43
+ }
44
+
45
+ export function SourceEnvelopeFromJSON(json: any): SourceEnvelope {
46
+ return SourceEnvelopeFromJSONTyped(json, false);
47
+ }
48
+
49
+ export function SourceEnvelopeFromJSONTyped(json: any, ignoreDiscriminator: boolean): SourceEnvelope {
50
+ if (json == null) {
51
+ return json;
52
+ }
53
+ return {
54
+
55
+ 'source': json['source'] == null ? undefined : AdminSourceFromJSON(json['source']),
56
+ };
57
+ }
58
+
59
+ export function SourceEnvelopeToJSON(json: any): SourceEnvelope {
60
+ return SourceEnvelopeToJSONTyped(json, false);
61
+ }
62
+
63
+ export function SourceEnvelopeToJSONTyped(value?: SourceEnvelope | null, ignoreDiscriminator: boolean = false): any {
64
+ if (value == null) {
65
+ return value;
66
+ }
67
+
68
+ return {
69
+
70
+ 'source': AdminSourceToJSON(value['source']),
71
+ };
72
+ }
73
+
@@ -0,0 +1,81 @@
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 { AdminSource } from './AdminSource';
17
+ import {
18
+ AdminSourceFromJSON,
19
+ AdminSourceFromJSONTyped,
20
+ AdminSourceToJSON,
21
+ AdminSourceToJSONTyped,
22
+ } from './AdminSource';
23
+
24
+ /**
25
+ * Result of queueing an immediate re-fetch for a source.
26
+ * @export
27
+ * @interface SourceRefreshResponse
28
+ */
29
+ export interface SourceRefreshResponse {
30
+ /**
31
+ *
32
+ * @type {AdminSource}
33
+ * @memberof SourceRefreshResponse
34
+ */
35
+ source?: AdminSource;
36
+ /**
37
+ *
38
+ * @type {boolean}
39
+ * @memberof SourceRefreshResponse
40
+ */
41
+ dispatched?: boolean;
42
+ }
43
+
44
+ /**
45
+ * Check if a given object implements the SourceRefreshResponse interface.
46
+ */
47
+ export function instanceOfSourceRefreshResponse(value: object): value is SourceRefreshResponse {
48
+ return true;
49
+ }
50
+
51
+ export function SourceRefreshResponseFromJSON(json: any): SourceRefreshResponse {
52
+ return SourceRefreshResponseFromJSONTyped(json, false);
53
+ }
54
+
55
+ export function SourceRefreshResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): SourceRefreshResponse {
56
+ if (json == null) {
57
+ return json;
58
+ }
59
+ return {
60
+
61
+ 'source': json['source'] == null ? undefined : AdminSourceFromJSON(json['source']),
62
+ 'dispatched': json['dispatched'] == null ? undefined : json['dispatched'],
63
+ };
64
+ }
65
+
66
+ export function SourceRefreshResponseToJSON(json: any): SourceRefreshResponse {
67
+ return SourceRefreshResponseToJSONTyped(json, false);
68
+ }
69
+
70
+ export function SourceRefreshResponseToJSONTyped(value?: SourceRefreshResponse | null, ignoreDiscriminator: boolean = false): any {
71
+ if (value == null) {
72
+ return value;
73
+ }
74
+
75
+ return {
76
+
77
+ 'source': AdminSourceToJSON(value['source']),
78
+ 'dispatched': value['dispatched'],
79
+ };
80
+ }
81
+