open-civics 0.1.3 → 0.2.2

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 (98) hide show
  1. package/data/sc/local/county-abbeville.json +56 -8
  2. package/data/sc/local/county-aiken.json +92 -20
  3. package/data/sc/local/county-allendale.json +47 -7
  4. package/data/sc/local/county-anderson.json +65 -9
  5. package/data/sc/local/county-bamberg.json +65 -9
  6. package/data/sc/local/county-barnwell.json +65 -9
  7. package/data/sc/local/county-beaufort.json +101 -13
  8. package/data/sc/local/county-berkeley.json +118 -46
  9. package/data/sc/local/county-calhoun.json +47 -7
  10. package/data/sc/local/county-charleston.json +83 -11
  11. package/data/sc/local/county-cherokee.json +56 -8
  12. package/data/sc/local/county-chester.json +65 -9
  13. package/data/sc/local/county-chesterfield.json +83 -11
  14. package/data/sc/local/county-clarendon.json +38 -6
  15. package/data/sc/local/county-colleton.json +47 -7
  16. package/data/sc/local/county-darlington.json +74 -10
  17. package/data/sc/local/county-dillon.json +65 -9
  18. package/data/sc/local/county-dorchester.json +56 -8
  19. package/data/sc/local/county-edgefield.json +47 -7
  20. package/data/sc/local/county-fairfield.json +65 -9
  21. package/data/sc/local/county-florence.json +83 -11
  22. package/data/sc/local/county-georgetown.json +65 -9
  23. package/data/sc/local/county-greenville.json +110 -14
  24. package/data/sc/local/county-greenwood.json +65 -9
  25. package/data/sc/local/county-hampton.json +47 -7
  26. package/data/sc/local/county-horry.json +110 -14
  27. package/data/sc/local/county-jasper.json +47 -7
  28. package/data/sc/local/county-kershaw.json +66 -8
  29. package/data/sc/local/county-lancaster.json +65 -9
  30. package/data/sc/local/county-laurens.json +65 -9
  31. package/data/sc/local/county-lee.json +74 -10
  32. package/data/sc/local/county-lexington.json +83 -11
  33. package/data/sc/local/county-marion.json +65 -9
  34. package/data/sc/local/county-marlboro.json +74 -10
  35. package/data/sc/local/county-mccormick.json +47 -7
  36. package/data/sc/local/county-newberry.json +65 -9
  37. package/data/sc/local/county-oconee.json +47 -7
  38. package/data/sc/local/county-orangeburg.json +38 -6
  39. package/data/sc/local/county-pickens.json +65 -9
  40. package/data/sc/local/county-richland.json +101 -13
  41. package/data/sc/local/county-saluda.json +47 -7
  42. package/data/sc/local/county-spartanburg.json +65 -9
  43. package/data/sc/local/county-sumter.json +65 -9
  44. package/data/sc/local/county-union.json +56 -8
  45. package/data/sc/local/county-williamsburg.json +65 -9
  46. package/data/sc/local/county-york.json +65 -9
  47. package/data/sc/local/place-abbeville.json +83 -11
  48. package/data/sc/local/place-aiken.json +94 -36
  49. package/data/sc/local/place-allendale.json +65 -9
  50. package/data/sc/local/place-anderson.json +74 -10
  51. package/data/sc/local/place-bamberg.json +56 -8
  52. package/data/sc/local/place-barnwell.json +65 -9
  53. package/data/sc/local/place-beaufort.json +47 -7
  54. package/data/sc/local/place-bennettsville.json +65 -9
  55. package/data/sc/local/place-bishopville.json +65 -9
  56. package/data/sc/local/place-camden.json +47 -7
  57. package/data/sc/local/place-charleston.json +92 -12
  58. package/data/sc/local/place-chester.json +83 -11
  59. package/data/sc/local/place-chesterfield.json +65 -9
  60. package/data/sc/local/place-columbia.json +65 -9
  61. package/data/sc/local/place-conway.json +65 -9
  62. package/data/sc/local/place-darlington.json +65 -9
  63. package/data/sc/local/place-dillon.json +65 -9
  64. package/data/sc/local/place-edgefield.json +65 -9
  65. package/data/sc/local/place-florence.json +65 -9
  66. package/data/sc/local/place-gaffney.json +56 -8
  67. package/data/sc/local/place-georgetown.json +65 -9
  68. package/data/sc/local/place-goose-creek.json +65 -9
  69. package/data/sc/local/place-greenville.json +65 -9
  70. package/data/sc/local/place-greenwood.json +65 -9
  71. package/data/sc/local/place-hampton.json +47 -7
  72. package/data/sc/local/place-hilton-head.json +65 -9
  73. package/data/sc/local/place-kingstree.json +65 -9
  74. package/data/sc/local/place-lancaster.json +65 -9
  75. package/data/sc/local/place-lexington.json +65 -9
  76. package/data/sc/local/place-manning.json +65 -9
  77. package/data/sc/local/place-marion.json +65 -9
  78. package/data/sc/local/place-mccormick.json +65 -9
  79. package/data/sc/local/place-moncks-corner.json +65 -9
  80. package/data/sc/local/place-mount-pleasant.json +83 -11
  81. package/data/sc/local/place-myrtle-beach.json +65 -9
  82. package/data/sc/local/place-newberry.json +65 -9
  83. package/data/sc/local/place-north-charleston.json +142 -46
  84. package/data/sc/local/place-orangeburg.json +65 -9
  85. package/data/sc/local/place-ridgeland.json +47 -7
  86. package/data/sc/local/place-rock-hill.json +65 -9
  87. package/data/sc/local/place-saluda.json +47 -7
  88. package/data/sc/local/place-spartanburg.json +65 -9
  89. package/data/sc/local/place-st-george.json +65 -9
  90. package/data/sc/local/place-st-matthews.json +65 -9
  91. package/data/sc/local/place-summerville.json +65 -9
  92. package/data/sc/local/place-sumter.json +65 -9
  93. package/data/sc/local/place-union.json +65 -9
  94. package/data/sc/local/place-walhalla.json +65 -9
  95. package/data/sc/local/place-walterboro.json +65 -9
  96. package/data/sc/local/place-winnsboro.json +47 -7
  97. package/data/sc/state.json +1718 -172
  98. package/package.json +1 -1
@@ -4,10 +4,10 @@
4
4
  "level": "local",
5
5
  "jurisdiction": "place:north-charleston",
6
6
  "label": "North Charleston City Council",
7
- "lastUpdated": "2026-03-14",
7
+ "lastUpdated": "2026-05-20",
8
8
  "adapter": "generic_mailto",
9
- "dataHash": "008932ba877758f5",
10
- "dataLastChanged": "2026-03-14"
9
+ "dataHash": "b094aca44bd7195d",
10
+ "dataLastChanged": "2026-05-20"
11
11
  },
12
12
  "members": [
13
13
  {
@@ -16,79 +16,175 @@
16
16
  "email": "",
17
17
  "phone": "(843) 740-2504",
18
18
  "source": "genericmailto",
19
- "lastUpdated": "2026-03-14"
19
+ "lastUpdated": "2026-05-20",
20
+ "vacant": false,
21
+ "office": "mayor",
22
+ "leadership": null,
23
+ "seatClass": "at-large",
24
+ "seatLabel": null,
25
+ "seatId": null,
26
+ "seatSource": "parsed-title",
27
+ "partisan": false
20
28
  },
21
29
  {
22
- "name": "Brandon Hudson",
23
- "title": "Council Member",
24
- "email": "bhudson@northcharleston.org",
25
- "phone": "(803) 292-6044",
30
+ "name": "Greg Perry",
31
+ "title": "Council Member, District 1",
32
+ "email": "gperry@northcharleston.org",
33
+ "phone": "(843) 557-5351",
26
34
  "source": "genericmailto",
27
- "lastUpdated": "2026-03-14"
35
+ "lastUpdated": "2026-05-20",
36
+ "vacant": false,
37
+ "office": "council-member",
38
+ "seatClass": "numbered",
39
+ "seatLabel": "district",
40
+ "seatId": "1",
41
+ "seatSource": "parsed-title",
42
+ "leadership": null,
43
+ "partisan": false
28
44
  },
29
45
  {
30
- "name": "Christopher Emde",
31
- "title": "Council Member",
32
- "email": "cemde@northcharleston.org",
33
- "phone": "(843) 751-6214",
34
- "source": "genericmailto",
35
- "lastUpdated": "2026-03-14"
36
- },
37
- {
38
- "name": "Dr. Charmaine Palmer-Roberts",
39
- "title": "Council Member",
40
- "email": "cpalmerroberts@northcharleston.org",
41
- "phone": "(843) 819-9170",
46
+ "name": "Rhonda Jerome",
47
+ "title": "Council Member, District 2",
48
+ "email": "rjerome@northcharleston.org",
49
+ "phone": "(843) 813-4404",
42
50
  "source": "genericmailto",
43
- "lastUpdated": "2026-03-14"
51
+ "lastUpdated": "2026-05-20",
52
+ "vacant": false,
53
+ "office": "council-member",
54
+ "seatClass": "numbered",
55
+ "seatLabel": "district",
56
+ "seatId": "2",
57
+ "seatSource": "parsed-title",
58
+ "leadership": null,
59
+ "partisan": false
44
60
  },
45
61
  {
46
62
  "name": "Dr. Stephanie Ganaway-Pasley",
47
- "title": "Council Member",
63
+ "title": "Council Member, District 3",
48
64
  "email": "sganawaypasley@northcharleston.org",
49
65
  "phone": "(843) 270-1961",
50
66
  "source": "genericmailto",
51
- "lastUpdated": "2026-03-14"
67
+ "lastUpdated": "2026-05-20",
68
+ "vacant": false,
69
+ "office": "council-member",
70
+ "seatClass": "numbered",
71
+ "seatLabel": "district",
72
+ "seatId": "3",
73
+ "seatSource": "parsed-title",
74
+ "leadership": null,
75
+ "partisan": false
52
76
  },
53
77
  {
54
- "name": "Kenny Skipper",
55
- "title": "Council Member",
56
- "email": "kskipper@northcharleston.org",
57
- "phone": "(843) 200-7520",
78
+ "name": "Dr. Charmaine Palmer-Roberts",
79
+ "title": "Council Member, District 4",
80
+ "email": "cpalmerroberts@northcharleston.org",
81
+ "phone": "(843) 819-9170",
58
82
  "source": "genericmailto",
59
- "lastUpdated": "2026-03-14"
83
+ "lastUpdated": "2026-05-20",
84
+ "vacant": false,
85
+ "office": "council-member",
86
+ "seatClass": "numbered",
87
+ "seatLabel": "district",
88
+ "seatId": "4",
89
+ "seatSource": "parsed-title",
90
+ "leadership": null,
91
+ "partisan": false
60
92
  },
61
93
  {
62
- "name": "Michael Brown",
63
- "title": "Council Member",
64
- "email": "bmichaelchr@aol.com",
65
- "phone": "(843) 747-3531",
94
+ "name": "Christopher Emde",
95
+ "title": "Council Member, District 5",
96
+ "email": "cemde@northcharleston.org",
97
+ "phone": "(843) 751-6214",
98
+ "source": "genericmailto",
99
+ "lastUpdated": "2026-05-20",
100
+ "vacant": false,
101
+ "office": "council-member",
102
+ "seatClass": "numbered",
103
+ "seatLabel": "district",
104
+ "seatId": "5",
105
+ "seatSource": "parsed-title",
106
+ "leadership": null,
107
+ "partisan": false
108
+ },
109
+ {
110
+ "name": "Nefertiti Brown",
111
+ "title": "Council Member, District 6",
112
+ "email": "nbrown@northcharleston.org",
113
+ "phone": "(843) 790-4098",
66
114
  "source": "genericmailto",
67
- "lastUpdated": "2026-03-14"
115
+ "lastUpdated": "2026-05-20",
116
+ "vacant": false,
117
+ "office": "council-member",
118
+ "seatClass": "numbered",
119
+ "seatLabel": "district",
120
+ "seatId": "6",
121
+ "seatSource": "parsed-title",
122
+ "leadership": null,
123
+ "partisan": false
68
124
  },
69
125
  {
70
126
  "name": "Michael Brown, Jr.",
71
- "title": "Council Member",
127
+ "title": "Council Member, District 7",
72
128
  "email": "mibrown@northcharleston.org",
73
129
  "phone": "(843) 367-3714",
74
130
  "source": "genericmailto",
75
- "lastUpdated": "2026-03-14"
131
+ "lastUpdated": "2026-05-20",
132
+ "vacant": false,
133
+ "office": "council-member",
134
+ "seatClass": "numbered",
135
+ "seatLabel": "district",
136
+ "seatId": "7",
137
+ "seatSource": "parsed-title",
138
+ "leadership": null,
139
+ "partisan": false
76
140
  },
77
141
  {
78
- "name": "Nefertiti Brown",
79
- "title": "Council Member",
80
- "email": "nbrown@northcharleston.org",
81
- "phone": "(843) 790-4098",
142
+ "name": "Brandon Hudson",
143
+ "title": "Council Member, District 8",
144
+ "email": "bhudson@northcharleston.org",
145
+ "phone": "(803) 292-6044",
82
146
  "source": "genericmailto",
83
- "lastUpdated": "2026-03-14"
147
+ "lastUpdated": "2026-05-20",
148
+ "vacant": false,
149
+ "office": "council-member",
150
+ "seatClass": "numbered",
151
+ "seatLabel": "district",
152
+ "seatId": "8",
153
+ "seatSource": "parsed-title",
154
+ "leadership": null,
155
+ "partisan": false
84
156
  },
85
157
  {
86
- "name": "Rhonda Jerome",
87
- "title": "Council Member",
88
- "email": "rjerome@northcharleston.org",
89
- "phone": "(843) 813-4404",
158
+ "name": "Kenny Skipper",
159
+ "title": "Council Member, District 9",
160
+ "email": "kskipper@northcharleston.org",
161
+ "phone": "(843) 200-7520",
162
+ "source": "genericmailto",
163
+ "lastUpdated": "2026-05-20",
164
+ "vacant": false,
165
+ "office": "council-member",
166
+ "seatClass": "numbered",
167
+ "seatLabel": "district",
168
+ "seatId": "9",
169
+ "seatSource": "parsed-title",
170
+ "leadership": null,
171
+ "partisan": false
172
+ },
173
+ {
174
+ "name": "Michael Brown",
175
+ "title": "Council Member, District 10",
176
+ "email": "bmichaelchr@aol.com",
177
+ "phone": "(843) 747-3531",
90
178
  "source": "genericmailto",
91
- "lastUpdated": "2026-03-14"
179
+ "lastUpdated": "2026-05-20",
180
+ "vacant": false,
181
+ "office": "council-member",
182
+ "seatClass": "numbered",
183
+ "seatLabel": "district",
184
+ "seatId": "10",
185
+ "seatSource": "parsed-title",
186
+ "leadership": null,
187
+ "partisan": false
92
188
  }
93
189
  ]
94
190
  }
@@ -6,8 +6,8 @@
6
6
  "label": "Orangeburg City Council",
7
7
  "lastUpdated": "2026-03-14",
8
8
  "adapter": "orangeburg_city",
9
- "dataHash": "955227703caaeae9",
10
- "dataLastChanged": "2026-03-14"
9
+ "dataHash": "34c757b71e17cf05",
10
+ "dataLastChanged": "2026-05-17"
11
11
  },
12
12
  "members": [
13
13
  {
@@ -16,7 +16,15 @@
16
16
  "email": "michael.butler@orangeburg.sc.us",
17
17
  "phone": "(803) 533-6000",
18
18
  "source": "orangeburgcity",
19
- "lastUpdated": "2026-03-14"
19
+ "lastUpdated": "2026-03-14",
20
+ "vacant": false,
21
+ "office": "mayor",
22
+ "leadership": null,
23
+ "seatClass": "at-large",
24
+ "seatLabel": null,
25
+ "seatId": null,
26
+ "seatSource": "parsed-title",
27
+ "partisan": false
20
28
  },
21
29
  {
22
30
  "name": "Jordan Hawkins",
@@ -24,7 +32,15 @@
24
32
  "email": "jordan.hawkins@orangeburg.sc.us",
25
33
  "phone": "(803) 937-1593",
26
34
  "source": "orangeburgcity",
27
- "lastUpdated": "2026-03-14"
35
+ "lastUpdated": "2026-03-14",
36
+ "vacant": false,
37
+ "office": "council-member",
38
+ "seatClass": "numbered",
39
+ "seatLabel": "district",
40
+ "seatId": "1",
41
+ "seatSource": "parsed-title",
42
+ "leadership": null,
43
+ "partisan": false
28
44
  },
29
45
  {
30
46
  "name": "Kalu Kalu",
@@ -32,7 +48,15 @@
32
48
  "email": "kalu.kalu@orangeburg.sc.us",
33
49
  "phone": "(803) 347-4842",
34
50
  "source": "orangeburgcity",
35
- "lastUpdated": "2026-03-14"
51
+ "lastUpdated": "2026-03-14",
52
+ "vacant": false,
53
+ "office": "council-member",
54
+ "seatClass": "numbered",
55
+ "seatLabel": "district",
56
+ "seatId": "2",
57
+ "seatSource": "parsed-title",
58
+ "leadership": null,
59
+ "partisan": false
36
60
  },
37
61
  {
38
62
  "name": "Jerry Hannah",
@@ -40,7 +64,15 @@
40
64
  "email": "jerry.hannah@orangeburg.sc.us",
41
65
  "phone": "(803) 534-2869",
42
66
  "source": "orangeburgcity",
43
- "lastUpdated": "2026-03-14"
67
+ "lastUpdated": "2026-03-14",
68
+ "vacant": false,
69
+ "office": "council-member",
70
+ "seatClass": "numbered",
71
+ "seatLabel": "district",
72
+ "seatId": "3",
73
+ "seatSource": "parsed-title",
74
+ "leadership": null,
75
+ "partisan": false
44
76
  },
45
77
  {
46
78
  "name": "Annette Dees Grevious",
@@ -48,7 +80,15 @@
48
80
  "email": "annette.grevious@orangeburg.sc.us",
49
81
  "phone": "(803) 387-5505",
50
82
  "source": "orangeburgcity",
51
- "lastUpdated": "2026-03-14"
83
+ "lastUpdated": "2026-03-14",
84
+ "vacant": false,
85
+ "office": "council-member",
86
+ "seatClass": "numbered",
87
+ "seatLabel": "district",
88
+ "seatId": "4",
89
+ "seatSource": "parsed-title",
90
+ "leadership": null,
91
+ "partisan": false
52
92
  },
53
93
  {
54
94
  "name": "L. Zimmerman Keitt",
@@ -56,7 +96,15 @@
56
96
  "email": "liz.keitt@orangeburg.sc.us",
57
97
  "phone": "(803) 534-8967",
58
98
  "source": "orangeburgcity",
59
- "lastUpdated": "2026-03-14"
99
+ "lastUpdated": "2026-03-14",
100
+ "vacant": false,
101
+ "office": "council-member",
102
+ "seatClass": "numbered",
103
+ "seatLabel": "district",
104
+ "seatId": "5",
105
+ "seatSource": "parsed-title",
106
+ "leadership": null,
107
+ "partisan": false
60
108
  },
61
109
  {
62
110
  "name": "Sandra Knotts",
@@ -64,7 +112,15 @@
64
112
  "email": "sandra.knotts@orangeburg.sc.us",
65
113
  "phone": "(803) 534-2160",
66
114
  "source": "orangeburgcity",
67
- "lastUpdated": "2026-03-14"
115
+ "lastUpdated": "2026-03-14",
116
+ "vacant": false,
117
+ "office": "council-member",
118
+ "seatClass": "numbered",
119
+ "seatLabel": "district",
120
+ "seatId": "6",
121
+ "seatSource": "parsed-title",
122
+ "leadership": null,
123
+ "partisan": false
68
124
  }
69
125
  ]
70
126
  }
@@ -6,8 +6,8 @@
6
6
  "label": "Ridgeland Town Council",
7
7
  "lastUpdated": "2026-03-14",
8
8
  "adapter": "generic_mailto",
9
- "dataHash": "3adfd5f0494a9e9f",
10
- "dataLastChanged": "2026-03-14"
9
+ "dataHash": "3e939749d3c93208",
10
+ "dataLastChanged": "2026-05-17"
11
11
  },
12
12
  "members": [
13
13
  {
@@ -16,7 +16,15 @@
16
16
  "email": "jnmalphrus@ridgelandsc.gov",
17
17
  "phone": "(843) 726-7500",
18
18
  "source": "genericmailto",
19
- "lastUpdated": "2026-03-14"
19
+ "lastUpdated": "2026-03-14",
20
+ "vacant": false,
21
+ "office": "mayor",
22
+ "leadership": null,
23
+ "seatClass": "at-large",
24
+ "seatLabel": null,
25
+ "seatId": null,
26
+ "seatSource": "parsed-title",
27
+ "partisan": false
20
28
  },
21
29
  {
22
30
  "name": "Bill Fishburne",
@@ -24,7 +32,15 @@
24
32
  "email": "bfishburne@ridgelandsc.gov",
25
33
  "phone": "",
26
34
  "source": "genericmailto",
27
- "lastUpdated": "2026-03-14"
35
+ "lastUpdated": "2026-03-14",
36
+ "vacant": false,
37
+ "office": "council-member",
38
+ "leadership": null,
39
+ "seatClass": "unknown",
40
+ "seatLabel": null,
41
+ "seatId": null,
42
+ "seatSource": "parsed-title",
43
+ "partisan": false
28
44
  },
29
45
  {
30
46
  "name": "LEE GRAMLING",
@@ -32,7 +48,15 @@
32
48
  "email": "jgramling@ridgelandsc.gov",
33
49
  "phone": "",
34
50
  "source": "genericmailto",
35
- "lastUpdated": "2026-03-14"
51
+ "lastUpdated": "2026-03-14",
52
+ "vacant": false,
53
+ "office": "council-member",
54
+ "leadership": null,
55
+ "seatClass": "unknown",
56
+ "seatLabel": null,
57
+ "seatId": null,
58
+ "seatSource": "parsed-title",
59
+ "partisan": false
36
60
  },
37
61
  {
38
62
  "name": "LINDA TENEROWICZ",
@@ -40,7 +64,15 @@
40
64
  "email": "ltenerowicz@ridgelandsc.gov",
41
65
  "phone": "",
42
66
  "source": "genericmailto",
43
- "lastUpdated": "2026-03-14"
67
+ "lastUpdated": "2026-03-14",
68
+ "vacant": false,
69
+ "office": "council-member",
70
+ "leadership": null,
71
+ "seatClass": "unknown",
72
+ "seatLabel": null,
73
+ "seatId": null,
74
+ "seatSource": "parsed-title",
75
+ "partisan": false
44
76
  },
45
77
  {
46
78
  "name": "Libby Malphrus",
@@ -48,7 +80,15 @@
48
80
  "email": "lmalphrus@ridgelandsc.gov",
49
81
  "phone": "",
50
82
  "source": "genericmailto",
51
- "lastUpdated": "2026-03-14"
83
+ "lastUpdated": "2026-03-14",
84
+ "vacant": false,
85
+ "office": "council-member",
86
+ "leadership": null,
87
+ "seatClass": "unknown",
88
+ "seatLabel": null,
89
+ "seatId": null,
90
+ "seatSource": "parsed-title",
91
+ "partisan": false
52
92
  }
53
93
  ]
54
94
  }
@@ -6,8 +6,8 @@
6
6
  "label": "Rock Hill City Council",
7
7
  "lastUpdated": "2026-03-14",
8
8
  "adapter": "rock_hill",
9
- "dataHash": "306763b1b711d078",
10
- "dataLastChanged": "2026-03-14"
9
+ "dataHash": "29fb98d7d861caa7",
10
+ "dataLastChanged": "2026-05-17"
11
11
  },
12
12
  "members": [
13
13
  {
@@ -16,7 +16,15 @@
16
16
  "email": "John.Gettys@cityofrockhill.com",
17
17
  "phone": "(803) 329-7011",
18
18
  "source": "rockhill",
19
- "lastUpdated": "2026-03-14"
19
+ "lastUpdated": "2026-03-14",
20
+ "vacant": false,
21
+ "office": "mayor",
22
+ "leadership": null,
23
+ "seatClass": "at-large",
24
+ "seatLabel": null,
25
+ "seatId": null,
26
+ "seatSource": "parsed-title",
27
+ "partisan": false
20
28
  },
21
29
  {
22
30
  "name": "Derrick Lindsay",
@@ -24,7 +32,15 @@
24
32
  "email": "Derrick.Lindsay@cityofrockhill.com",
25
33
  "phone": "",
26
34
  "source": "rockhill",
27
- "lastUpdated": "2026-03-14"
35
+ "lastUpdated": "2026-03-14",
36
+ "vacant": false,
37
+ "office": "council-member",
38
+ "leadership": "mayor-pro-tem",
39
+ "seatClass": "numbered",
40
+ "seatLabel": "ward",
41
+ "seatId": "1",
42
+ "seatSource": "parsed-title",
43
+ "partisan": false
28
44
  },
29
45
  {
30
46
  "name": "Brent Faulkenberry",
@@ -32,7 +48,15 @@
32
48
  "email": "brent.faulkenberry@cityofrockhill.com",
33
49
  "phone": "(803) 329-7012",
34
50
  "source": "rockhill",
35
- "lastUpdated": "2026-03-14"
51
+ "lastUpdated": "2026-03-14",
52
+ "vacant": false,
53
+ "office": "council-member",
54
+ "seatClass": "numbered",
55
+ "seatLabel": "ward",
56
+ "seatId": "2",
57
+ "seatSource": "parsed-title",
58
+ "leadership": null,
59
+ "partisan": false
36
60
  },
37
61
  {
38
62
  "name": "Kevin Sutton",
@@ -40,7 +64,15 @@
40
64
  "email": "Kevin.Sutton@cityofrockhill.com",
41
65
  "phone": "(803) 328-1428",
42
66
  "source": "rockhill",
43
- "lastUpdated": "2026-03-14"
67
+ "lastUpdated": "2026-03-14",
68
+ "vacant": false,
69
+ "office": "council-member",
70
+ "seatClass": "numbered",
71
+ "seatLabel": "ward",
72
+ "seatId": "3",
73
+ "seatSource": "parsed-title",
74
+ "leadership": null,
75
+ "partisan": false
44
76
  },
45
77
  {
46
78
  "name": "John A. Black III",
@@ -48,7 +80,15 @@
48
80
  "email": "John.Black@cityofrockhill.com",
49
81
  "phone": "(803) 517-9969",
50
82
  "source": "rockhill",
51
- "lastUpdated": "2026-03-14"
83
+ "lastUpdated": "2026-03-14",
84
+ "vacant": false,
85
+ "office": "council-member",
86
+ "seatClass": "numbered",
87
+ "seatLabel": "ward",
88
+ "seatId": "4",
89
+ "seatSource": "parsed-title",
90
+ "leadership": null,
91
+ "partisan": false
52
92
  },
53
93
  {
54
94
  "name": "Nikita L. Jackson",
@@ -56,7 +96,15 @@
56
96
  "email": "Nikita.Jackson@cityofrockhill.com",
57
97
  "phone": "(839) 214-7517",
58
98
  "source": "rockhill",
59
- "lastUpdated": "2026-03-14"
99
+ "lastUpdated": "2026-03-14",
100
+ "vacant": false,
101
+ "office": "council-member",
102
+ "seatClass": "numbered",
103
+ "seatLabel": "ward",
104
+ "seatId": "5",
105
+ "seatSource": "parsed-title",
106
+ "leadership": null,
107
+ "partisan": false
60
108
  },
61
109
  {
62
110
  "name": "Sarah Vining",
@@ -64,7 +112,15 @@
64
112
  "email": "Sarah.Vining@cityofrockhill.com",
65
113
  "phone": "(803) 329-7012",
66
114
  "source": "rockhill",
67
- "lastUpdated": "2026-03-14"
115
+ "lastUpdated": "2026-03-14",
116
+ "vacant": false,
117
+ "office": "council-member",
118
+ "seatClass": "numbered",
119
+ "seatLabel": "ward",
120
+ "seatId": "6",
121
+ "seatSource": "parsed-title",
122
+ "leadership": null,
123
+ "partisan": false
68
124
  }
69
125
  ]
70
126
  }
@@ -6,8 +6,8 @@
6
6
  "label": "Saluda Town Council",
7
7
  "lastUpdated": "2026-03-14",
8
8
  "adapter": "masc",
9
- "dataHash": "65a51529d7b5b518",
10
- "dataLastChanged": "2026-03-14"
9
+ "dataHash": "3575af4b9ec0e88f",
10
+ "dataLastChanged": "2026-05-17"
11
11
  },
12
12
  "members": [
13
13
  {
@@ -16,7 +16,15 @@
16
16
  "email": "",
17
17
  "phone": "",
18
18
  "source": "masc",
19
- "lastUpdated": "2026-03-14"
19
+ "lastUpdated": "2026-03-14",
20
+ "vacant": false,
21
+ "office": "mayor",
22
+ "leadership": null,
23
+ "seatClass": "at-large",
24
+ "seatLabel": null,
25
+ "seatId": null,
26
+ "seatSource": "parsed-title",
27
+ "partisan": false
20
28
  },
21
29
  {
22
30
  "name": "John Mark Griffith",
@@ -24,7 +32,15 @@
24
32
  "email": "",
25
33
  "phone": "",
26
34
  "source": "masc",
27
- "lastUpdated": "2026-03-14"
35
+ "lastUpdated": "2026-03-14",
36
+ "vacant": false,
37
+ "office": "council-member",
38
+ "leadership": null,
39
+ "seatClass": "unknown",
40
+ "seatLabel": null,
41
+ "seatId": null,
42
+ "seatSource": "parsed-title",
43
+ "partisan": false
28
44
  },
29
45
  {
30
46
  "name": "Lauren Yonce",
@@ -32,7 +48,15 @@
32
48
  "email": "",
33
49
  "phone": "",
34
50
  "source": "masc",
35
- "lastUpdated": "2026-03-14"
51
+ "lastUpdated": "2026-03-14",
52
+ "vacant": false,
53
+ "office": "council-member",
54
+ "leadership": null,
55
+ "seatClass": "unknown",
56
+ "seatLabel": null,
57
+ "seatId": null,
58
+ "seatSource": "parsed-title",
59
+ "partisan": false
36
60
  },
37
61
  {
38
62
  "name": "Myranda Butler",
@@ -40,7 +64,15 @@
40
64
  "email": "",
41
65
  "phone": "",
42
66
  "source": "masc",
43
- "lastUpdated": "2026-03-14"
67
+ "lastUpdated": "2026-03-14",
68
+ "vacant": false,
69
+ "office": "council-member",
70
+ "leadership": null,
71
+ "seatClass": "unknown",
72
+ "seatLabel": null,
73
+ "seatId": null,
74
+ "seatSource": "parsed-title",
75
+ "partisan": false
44
76
  },
45
77
  {
46
78
  "name": "Obie Combs",
@@ -48,7 +80,15 @@
48
80
  "email": "",
49
81
  "phone": "",
50
82
  "source": "masc",
51
- "lastUpdated": "2026-03-14"
83
+ "lastUpdated": "2026-03-14",
84
+ "vacant": false,
85
+ "office": "council-member",
86
+ "leadership": null,
87
+ "seatClass": "unknown",
88
+ "seatLabel": null,
89
+ "seatId": null,
90
+ "seatSource": "parsed-title",
91
+ "partisan": false
52
92
  }
53
93
  ]
54
94
  }