@zilfu/sdk 0.1.0 → 0.1.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.
package/openapi.json DELETED
@@ -1,3541 +0,0 @@
1
- {
2
- "openapi": "3.1.0",
3
- "info": {
4
- "title": "Zilfu",
5
- "version": "0.0.1"
6
- },
7
- "servers": [
8
- {
9
- "url": "https://zilfu.app/api"
10
- }
11
- ],
12
- "security": [
13
- {
14
- "http": []
15
- }
16
- ],
17
- "paths": {
18
- "/spaces/{space}/accounts": {
19
- "get": {
20
- "operationId": "accounts.index",
21
- "description": "Returns all connected social accounts for the given space.",
22
- "summary": "List accounts",
23
- "tags": [
24
- "Account"
25
- ],
26
- "parameters": [
27
- {
28
- "name": "space",
29
- "in": "path",
30
- "required": true,
31
- "description": "The space ID",
32
- "schema": {
33
- "type": "integer"
34
- }
35
- }
36
- ],
37
- "responses": {
38
- "200": {
39
- "description": "Array of `AccountResource`",
40
- "content": {
41
- "application/json": {
42
- "schema": {
43
- "type": "object",
44
- "properties": {
45
- "data": {
46
- "type": "array",
47
- "items": {
48
- "$ref": "#/components/schemas/AccountResource"
49
- }
50
- }
51
- },
52
- "required": [
53
- "data"
54
- ]
55
- }
56
- }
57
- }
58
- },
59
- "403": {
60
- "$ref": "#/components/responses/AuthorizationException"
61
- },
62
- "404": {
63
- "$ref": "#/components/responses/ModelNotFoundException"
64
- },
65
- "401": {
66
- "$ref": "#/components/responses/AuthenticationException"
67
- }
68
- }
69
- },
70
- "delete": {
71
- "operationId": "accounts.destroy-many",
72
- "description": "Removes several social account connections in a single request and dispatches a webhook event for each.",
73
- "summary": "Disconnect multiple accounts",
74
- "tags": [
75
- "Account"
76
- ],
77
- "parameters": [
78
- {
79
- "name": "space",
80
- "in": "path",
81
- "required": true,
82
- "description": "The space ID",
83
- "schema": {
84
- "type": "integer"
85
- }
86
- },
87
- {
88
- "name": "ids[]",
89
- "in": "query",
90
- "schema": {
91
- "type": "array",
92
- "items": {
93
- "type": "integer"
94
- }
95
- }
96
- }
97
- ],
98
- "responses": {
99
- "200": {
100
- "description": "",
101
- "content": {
102
- "application/json": {
103
- "schema": {
104
- "type": "object"
105
- }
106
- }
107
- }
108
- },
109
- "403": {
110
- "$ref": "#/components/responses/AuthorizationException"
111
- },
112
- "422": {
113
- "$ref": "#/components/responses/ValidationException"
114
- },
115
- "404": {
116
- "$ref": "#/components/responses/ModelNotFoundException"
117
- },
118
- "401": {
119
- "$ref": "#/components/responses/AuthenticationException"
120
- }
121
- }
122
- }
123
- },
124
- "/spaces/{space}/accounts/{account}/activate": {
125
- "patch": {
126
- "operationId": "accounts.activate",
127
- "description": "Activates the given account and deactivates all other accounts on the same platform within the space.",
128
- "summary": "Activate an account",
129
- "tags": [
130
- "Account"
131
- ],
132
- "parameters": [
133
- {
134
- "name": "space",
135
- "in": "path",
136
- "required": true,
137
- "description": "The space ID",
138
- "schema": {
139
- "type": "integer"
140
- }
141
- },
142
- {
143
- "name": "account",
144
- "in": "path",
145
- "required": true,
146
- "description": "The account ID",
147
- "schema": {
148
- "type": "integer"
149
- }
150
- }
151
- ],
152
- "responses": {
153
- "200": {
154
- "description": "`AccountResource`",
155
- "content": {
156
- "application/json": {
157
- "schema": {
158
- "anyOf": [
159
- {
160
- "type": "object",
161
- "properties": {
162
- "data": {
163
- "$ref": "#/components/schemas/AccountResource"
164
- }
165
- },
166
- "required": [
167
- "data"
168
- ]
169
- },
170
- {
171
- "type": "object"
172
- }
173
- ]
174
- }
175
- }
176
- }
177
- },
178
- "403": {
179
- "$ref": "#/components/responses/AuthorizationException"
180
- },
181
- "404": {
182
- "$ref": "#/components/responses/ModelNotFoundException"
183
- },
184
- "401": {
185
- "$ref": "#/components/responses/AuthenticationException"
186
- }
187
- }
188
- }
189
- },
190
- "/spaces/{space}/accounts/{account}/boards": {
191
- "get": {
192
- "operationId": "accounts.boards",
193
- "description": "Returns the Pinterest boards available for the given account.",
194
- "summary": "List Pinterest boards",
195
- "tags": [
196
- "Account"
197
- ],
198
- "parameters": [
199
- {
200
- "name": "space",
201
- "in": "path",
202
- "required": true,
203
- "description": "The space ID",
204
- "schema": {
205
- "type": "integer"
206
- }
207
- },
208
- {
209
- "name": "account",
210
- "in": "path",
211
- "required": true,
212
- "description": "The account ID",
213
- "schema": {
214
- "type": "integer"
215
- }
216
- }
217
- ],
218
- "responses": {
219
- "200": {
220
- "description": "",
221
- "content": {
222
- "application/json": {
223
- "schema": {
224
- "type": "object",
225
- "properties": {
226
- "data": {
227
- "type": "array",
228
- "items": {
229
- "type": "object",
230
- "properties": {
231
- "id": {
232
- "type": "string"
233
- },
234
- "name": {
235
- "type": "string"
236
- },
237
- "description": {
238
- "type": [
239
- "string",
240
- "null"
241
- ]
242
- },
243
- "image": {
244
- "type": [
245
- "string",
246
- "null"
247
- ]
248
- }
249
- },
250
- "required": [
251
- "id",
252
- "name",
253
- "description",
254
- "image"
255
- ]
256
- }
257
- }
258
- },
259
- "required": [
260
- "data"
261
- ]
262
- }
263
- }
264
- }
265
- },
266
- "403": {
267
- "$ref": "#/components/responses/AuthorizationException"
268
- },
269
- "404": {
270
- "$ref": "#/components/responses/ModelNotFoundException"
271
- },
272
- "401": {
273
- "$ref": "#/components/responses/AuthenticationException"
274
- }
275
- }
276
- }
277
- },
278
- "/spaces/{space}/accounts/{account}": {
279
- "delete": {
280
- "operationId": "accounts.destroy",
281
- "description": "Removes the social account connection and dispatches a webhook event.",
282
- "summary": "Disconnect an account",
283
- "tags": [
284
- "Account"
285
- ],
286
- "parameters": [
287
- {
288
- "name": "space",
289
- "in": "path",
290
- "required": true,
291
- "description": "The space ID",
292
- "schema": {
293
- "type": "integer"
294
- }
295
- },
296
- {
297
- "name": "account",
298
- "in": "path",
299
- "required": true,
300
- "description": "The account ID",
301
- "schema": {
302
- "type": "integer"
303
- }
304
- }
305
- ],
306
- "responses": {
307
- "200": {
308
- "description": "",
309
- "content": {
310
- "application/json": {
311
- "schema": {
312
- "type": "object"
313
- }
314
- }
315
- }
316
- },
317
- "403": {
318
- "$ref": "#/components/responses/AuthorizationException"
319
- },
320
- "404": {
321
- "$ref": "#/components/responses/ModelNotFoundException"
322
- },
323
- "401": {
324
- "$ref": "#/components/responses/AuthenticationException"
325
- }
326
- }
327
- }
328
- },
329
- "/api-tokens": {
330
- "post": {
331
- "operationId": "api-tokens.store",
332
- "description": "Generates a new personal access token for the authenticated user.",
333
- "summary": "Create an API token",
334
- "tags": [
335
- "ApiToken"
336
- ],
337
- "requestBody": {
338
- "required": true,
339
- "content": {
340
- "application/json": {
341
- "schema": {
342
- "type": "object",
343
- "properties": {
344
- "name": {
345
- "type": "string",
346
- "maxLength": 255
347
- }
348
- },
349
- "required": [
350
- "name"
351
- ]
352
- }
353
- }
354
- }
355
- },
356
- "responses": {
357
- "200": {
358
- "description": "",
359
- "content": {
360
- "application/json": {
361
- "schema": {}
362
- }
363
- }
364
- },
365
- "422": {
366
- "$ref": "#/components/responses/ValidationException"
367
- },
368
- "401": {
369
- "$ref": "#/components/responses/AuthenticationException"
370
- }
371
- }
372
- }
373
- },
374
- "/api-tokens/{tokenId}": {
375
- "delete": {
376
- "operationId": "api-tokens.destroy",
377
- "description": "Deletes the specified personal access token.",
378
- "summary": "Revoke an API token",
379
- "tags": [
380
- "ApiToken"
381
- ],
382
- "parameters": [
383
- {
384
- "name": "tokenId",
385
- "in": "path",
386
- "required": true,
387
- "schema": {
388
- "type": "string"
389
- }
390
- }
391
- ],
392
- "responses": {
393
- "200": {
394
- "description": "",
395
- "content": {
396
- "application/json": {
397
- "schema": {}
398
- }
399
- }
400
- },
401
- "401": {
402
- "$ref": "#/components/responses/AuthenticationException"
403
- }
404
- }
405
- }
406
- },
407
- "/spaces/{space}/bio/blocks": {
408
- "get": {
409
- "operationId": "bio.blocks.index",
410
- "tags": [
411
- "BioBlock"
412
- ],
413
- "parameters": [
414
- {
415
- "name": "space",
416
- "in": "path",
417
- "required": true,
418
- "description": "The space ID",
419
- "schema": {
420
- "type": "integer"
421
- }
422
- }
423
- ],
424
- "responses": {
425
- "200": {
426
- "description": "Array of items",
427
- "content": {
428
- "application/json": {
429
- "schema": {
430
- "type": "object",
431
- "properties": {
432
- "data": {
433
- "type": "array",
434
- "items": {
435
- "type": "string"
436
- }
437
- }
438
- },
439
- "required": [
440
- "data"
441
- ]
442
- }
443
- }
444
- }
445
- },
446
- "403": {
447
- "$ref": "#/components/responses/AuthorizationException"
448
- },
449
- "404": {
450
- "$ref": "#/components/responses/ModelNotFoundException"
451
- },
452
- "401": {
453
- "$ref": "#/components/responses/AuthenticationException"
454
- }
455
- }
456
- },
457
- "post": {
458
- "operationId": "bio.blocks.store",
459
- "tags": [
460
- "BioBlock"
461
- ],
462
- "parameters": [
463
- {
464
- "name": "space",
465
- "in": "path",
466
- "required": true,
467
- "description": "The space ID",
468
- "schema": {
469
- "type": "integer"
470
- }
471
- }
472
- ],
473
- "requestBody": {
474
- "required": true,
475
- "content": {
476
- "application/json": {
477
- "schema": {
478
- "$ref": "#/components/schemas/StoreBioBlockRequest"
479
- }
480
- }
481
- }
482
- },
483
- "responses": {
484
- "200": {
485
- "description": "",
486
- "content": {
487
- "application/json": {
488
- "schema": {
489
- "type": "object"
490
- }
491
- }
492
- }
493
- },
494
- "403": {
495
- "$ref": "#/components/responses/AuthorizationException"
496
- },
497
- "404": {
498
- "$ref": "#/components/responses/ModelNotFoundException"
499
- },
500
- "401": {
501
- "$ref": "#/components/responses/AuthenticationException"
502
- },
503
- "422": {
504
- "$ref": "#/components/responses/ValidationException"
505
- }
506
- }
507
- }
508
- },
509
- "/spaces/{space}/bio/blocks/{block}": {
510
- "put": {
511
- "operationId": "bio.blocks.update",
512
- "tags": [
513
- "BioBlock"
514
- ],
515
- "parameters": [
516
- {
517
- "name": "space",
518
- "in": "path",
519
- "required": true,
520
- "description": "The space ID",
521
- "schema": {
522
- "type": "integer"
523
- }
524
- },
525
- {
526
- "name": "block",
527
- "in": "path",
528
- "required": true,
529
- "description": "The block ID",
530
- "schema": {
531
- "type": "integer"
532
- }
533
- }
534
- ],
535
- "requestBody": {
536
- "content": {
537
- "application/json": {
538
- "schema": {
539
- "$ref": "#/components/schemas/UpdateBioBlockRequest"
540
- }
541
- }
542
- }
543
- },
544
- "responses": {
545
- "200": {
546
- "description": "`BioBlockResource`",
547
- "content": {
548
- "application/json": {
549
- "schema": {
550
- "anyOf": [
551
- {
552
- "type": "object",
553
- "properties": {
554
- "data": {
555
- "$ref": "#/components/schemas/BioBlockResource"
556
- }
557
- },
558
- "required": [
559
- "data"
560
- ]
561
- },
562
- {
563
- "type": "object"
564
- }
565
- ]
566
- }
567
- }
568
- }
569
- },
570
- "403": {
571
- "$ref": "#/components/responses/AuthorizationException"
572
- },
573
- "404": {
574
- "$ref": "#/components/responses/ModelNotFoundException"
575
- },
576
- "401": {
577
- "$ref": "#/components/responses/AuthenticationException"
578
- },
579
- "422": {
580
- "$ref": "#/components/responses/ValidationException"
581
- }
582
- }
583
- },
584
- "delete": {
585
- "operationId": "bio.blocks.destroy",
586
- "tags": [
587
- "BioBlock"
588
- ],
589
- "parameters": [
590
- {
591
- "name": "space",
592
- "in": "path",
593
- "required": true,
594
- "description": "The space ID",
595
- "schema": {
596
- "type": "integer"
597
- }
598
- },
599
- {
600
- "name": "block",
601
- "in": "path",
602
- "required": true,
603
- "description": "The block ID",
604
- "schema": {
605
- "type": "integer"
606
- }
607
- }
608
- ],
609
- "responses": {
610
- "200": {
611
- "description": "",
612
- "content": {
613
- "application/json": {
614
- "schema": {
615
- "type": "object"
616
- }
617
- }
618
- }
619
- },
620
- "403": {
621
- "$ref": "#/components/responses/AuthorizationException"
622
- },
623
- "404": {
624
- "$ref": "#/components/responses/ModelNotFoundException"
625
- },
626
- "401": {
627
- "$ref": "#/components/responses/AuthenticationException"
628
- }
629
- }
630
- }
631
- },
632
- "/spaces/{space}/bio/blocks/{block}/reorder": {
633
- "post": {
634
- "operationId": "bio.blocks.reorder",
635
- "tags": [
636
- "BioBlock"
637
- ],
638
- "parameters": [
639
- {
640
- "name": "space",
641
- "in": "path",
642
- "required": true,
643
- "description": "The space ID",
644
- "schema": {
645
- "type": "integer"
646
- }
647
- },
648
- {
649
- "name": "block",
650
- "in": "path",
651
- "required": true,
652
- "description": "The block ID",
653
- "schema": {
654
- "type": "integer"
655
- }
656
- }
657
- ],
658
- "requestBody": {
659
- "required": true,
660
- "content": {
661
- "application/json": {
662
- "schema": {
663
- "type": "object",
664
- "properties": {
665
- "direction": {
666
- "type": "string",
667
- "enum": [
668
- "up",
669
- "down"
670
- ]
671
- }
672
- },
673
- "required": [
674
- "direction"
675
- ]
676
- }
677
- }
678
- }
679
- },
680
- "responses": {
681
- "200": {
682
- "description": "",
683
- "content": {
684
- "application/json": {
685
- "schema": {
686
- "type": "object"
687
- }
688
- }
689
- }
690
- },
691
- "403": {
692
- "$ref": "#/components/responses/AuthorizationException"
693
- },
694
- "422": {
695
- "$ref": "#/components/responses/ValidationException"
696
- },
697
- "404": {
698
- "$ref": "#/components/responses/ModelNotFoundException"
699
- },
700
- "401": {
701
- "$ref": "#/components/responses/AuthenticationException"
702
- }
703
- }
704
- }
705
- },
706
- "/spaces/{space}/bio": {
707
- "get": {
708
- "operationId": "bio.show",
709
- "tags": [
710
- "BioPageEditor"
711
- ],
712
- "parameters": [
713
- {
714
- "name": "space",
715
- "in": "path",
716
- "required": true,
717
- "description": "The space ID",
718
- "schema": {
719
- "type": "integer"
720
- }
721
- }
722
- ],
723
- "responses": {
724
- "200": {
725
- "description": "`BioPageResource`",
726
- "content": {
727
- "application/json": {
728
- "schema": {
729
- "type": "object",
730
- "properties": {
731
- "data": {
732
- "$ref": "#/components/schemas/BioPageResource"
733
- }
734
- },
735
- "required": [
736
- "data"
737
- ]
738
- }
739
- }
740
- }
741
- },
742
- "403": {
743
- "$ref": "#/components/responses/AuthorizationException"
744
- },
745
- "404": {
746
- "$ref": "#/components/responses/ModelNotFoundException"
747
- },
748
- "401": {
749
- "$ref": "#/components/responses/AuthenticationException"
750
- }
751
- }
752
- },
753
- "post": {
754
- "operationId": "bio.store",
755
- "tags": [
756
- "BioPageEditor"
757
- ],
758
- "parameters": [
759
- {
760
- "name": "space",
761
- "in": "path",
762
- "required": true,
763
- "description": "The space ID",
764
- "schema": {
765
- "type": "integer"
766
- }
767
- }
768
- ],
769
- "requestBody": {
770
- "required": true,
771
- "content": {
772
- "application/json": {
773
- "schema": {
774
- "$ref": "#/components/schemas/StoreBioPageRequest"
775
- }
776
- }
777
- }
778
- },
779
- "responses": {
780
- "200": {
781
- "description": "",
782
- "content": {
783
- "application/json": {
784
- "schema": {
785
- "type": "object"
786
- }
787
- }
788
- }
789
- },
790
- "403": {
791
- "$ref": "#/components/responses/AuthorizationException"
792
- },
793
- "404": {
794
- "$ref": "#/components/responses/ModelNotFoundException"
795
- },
796
- "401": {
797
- "$ref": "#/components/responses/AuthenticationException"
798
- },
799
- "422": {
800
- "$ref": "#/components/responses/ValidationException"
801
- }
802
- }
803
- },
804
- "put": {
805
- "operationId": "bio.update",
806
- "tags": [
807
- "BioPageEditor"
808
- ],
809
- "parameters": [
810
- {
811
- "name": "space",
812
- "in": "path",
813
- "required": true,
814
- "description": "The space ID",
815
- "schema": {
816
- "type": "integer"
817
- }
818
- }
819
- ],
820
- "requestBody": {
821
- "content": {
822
- "application/json": {
823
- "schema": {
824
- "$ref": "#/components/schemas/UpdateBioPageRequest"
825
- }
826
- }
827
- }
828
- },
829
- "responses": {
830
- "200": {
831
- "description": "`BioPageResource`",
832
- "content": {
833
- "application/json": {
834
- "schema": {
835
- "anyOf": [
836
- {
837
- "type": "object",
838
- "properties": {
839
- "data": {
840
- "$ref": "#/components/schemas/BioPageResource"
841
- }
842
- },
843
- "required": [
844
- "data"
845
- ]
846
- },
847
- {
848
- "type": "object"
849
- }
850
- ]
851
- }
852
- }
853
- }
854
- },
855
- "404": {
856
- "$ref": "#/components/responses/ModelNotFoundException"
857
- },
858
- "403": {
859
- "$ref": "#/components/responses/AuthorizationException"
860
- },
861
- "401": {
862
- "$ref": "#/components/responses/AuthenticationException"
863
- },
864
- "422": {
865
- "$ref": "#/components/responses/ValidationException"
866
- }
867
- }
868
- }
869
- },
870
- "/spaces/{space}/bio/avatar": {
871
- "post": {
872
- "operationId": "bio.avatar",
873
- "tags": [
874
- "BioPageEditor"
875
- ],
876
- "parameters": [
877
- {
878
- "name": "space",
879
- "in": "path",
880
- "required": true,
881
- "description": "The space ID",
882
- "schema": {
883
- "type": "integer"
884
- }
885
- }
886
- ],
887
- "requestBody": {
888
- "required": true,
889
- "content": {
890
- "multipart/form-data": {
891
- "schema": {
892
- "type": "object",
893
- "properties": {
894
- "file": {
895
- "type": "string",
896
- "format": "binary",
897
- "contentMediaType": "application/octet-stream",
898
- "maxLength": 5120
899
- }
900
- },
901
- "required": [
902
- "file"
903
- ]
904
- }
905
- }
906
- }
907
- },
908
- "responses": {
909
- "200": {
910
- "description": "",
911
- "content": {
912
- "application/json": {
913
- "schema": {
914
- "type": "object"
915
- }
916
- }
917
- }
918
- },
919
- "404": {
920
- "$ref": "#/components/responses/ModelNotFoundException"
921
- },
922
- "403": {
923
- "$ref": "#/components/responses/AuthorizationException"
924
- },
925
- "422": {
926
- "$ref": "#/components/responses/ValidationException"
927
- },
928
- "401": {
929
- "$ref": "#/components/responses/AuthenticationException"
930
- }
931
- }
932
- }
933
- },
934
- "/media": {
935
- "post": {
936
- "operationId": "media.store",
937
- "description": "Accepts images (JPEG, PNG, WebP) and videos (MP4, QuickTime). Images are auto-optimized.",
938
- "summary": "Upload a media file",
939
- "tags": [
940
- "Media"
941
- ],
942
- "requestBody": {
943
- "required": true,
944
- "content": {
945
- "multipart/form-data": {
946
- "schema": {
947
- "type": "object",
948
- "properties": {
949
- "file": {
950
- "type": "string",
951
- "format": "binary",
952
- "contentMediaType": "application/octet-stream",
953
- "maxLength": 102400
954
- }
955
- },
956
- "required": [
957
- "file"
958
- ]
959
- }
960
- }
961
- }
962
- },
963
- "responses": {
964
- "201": {
965
- "description": "`MediaResource`",
966
- "content": {
967
- "application/json": {
968
- "schema": {
969
- "type": "object",
970
- "properties": {
971
- "data": {
972
- "$ref": "#/components/schemas/MediaResource"
973
- }
974
- },
975
- "required": [
976
- "data"
977
- ]
978
- }
979
- }
980
- }
981
- },
982
- "422": {
983
- "$ref": "#/components/responses/ValidationException"
984
- },
985
- "401": {
986
- "$ref": "#/components/responses/AuthenticationException"
987
- }
988
- }
989
- }
990
- },
991
- "/media/{media}": {
992
- "delete": {
993
- "operationId": "media.destroy",
994
- "description": "Removes the media file from storage and deletes the record.",
995
- "summary": "Delete a media file",
996
- "tags": [
997
- "Media"
998
- ],
999
- "parameters": [
1000
- {
1001
- "name": "media",
1002
- "in": "path",
1003
- "required": true,
1004
- "description": "The media ID",
1005
- "schema": {
1006
- "type": "integer"
1007
- }
1008
- }
1009
- ],
1010
- "responses": {
1011
- "200": {
1012
- "description": "",
1013
- "content": {
1014
- "application/json": {
1015
- "schema": {
1016
- "type": "object"
1017
- }
1018
- }
1019
- }
1020
- },
1021
- "403": {
1022
- "$ref": "#/components/responses/AuthorizationException"
1023
- },
1024
- "404": {
1025
- "$ref": "#/components/responses/ModelNotFoundException"
1026
- },
1027
- "401": {
1028
- "$ref": "#/components/responses/AuthenticationException"
1029
- }
1030
- }
1031
- }
1032
- },
1033
- "/spaces/{space}/posts": {
1034
- "get": {
1035
- "operationId": "posts.index",
1036
- "description": "Returns paginated posts for the space. Filterable by status, account, and date range via query parameters.",
1037
- "summary": "List posts",
1038
- "tags": [
1039
- "Post"
1040
- ],
1041
- "parameters": [
1042
- {
1043
- "name": "space",
1044
- "in": "path",
1045
- "required": true,
1046
- "description": "The space ID",
1047
- "schema": {
1048
- "type": "integer"
1049
- }
1050
- },
1051
- {
1052
- "name": "status",
1053
- "in": "query",
1054
- "schema": {
1055
- "type": "string"
1056
- }
1057
- },
1058
- {
1059
- "name": "account_id",
1060
- "in": "query",
1061
- "schema": {
1062
- "type": "string"
1063
- }
1064
- },
1065
- {
1066
- "name": "from",
1067
- "in": "query",
1068
- "schema": {
1069
- "type": "string"
1070
- }
1071
- },
1072
- {
1073
- "name": "to",
1074
- "in": "query",
1075
- "schema": {
1076
- "type": "string"
1077
- }
1078
- }
1079
- ],
1080
- "responses": {
1081
- "200": {
1082
- "description": "Paginated set of `PostResource`",
1083
- "content": {
1084
- "application/json": {
1085
- "schema": {
1086
- "type": "object",
1087
- "properties": {
1088
- "data": {
1089
- "type": "array",
1090
- "items": {
1091
- "$ref": "#/components/schemas/PostResource"
1092
- }
1093
- },
1094
- "links": {
1095
- "type": "object",
1096
- "properties": {
1097
- "first": {
1098
- "type": [
1099
- "string",
1100
- "null"
1101
- ]
1102
- },
1103
- "last": {
1104
- "type": [
1105
- "string",
1106
- "null"
1107
- ]
1108
- },
1109
- "prev": {
1110
- "type": [
1111
- "string",
1112
- "null"
1113
- ]
1114
- },
1115
- "next": {
1116
- "type": [
1117
- "string",
1118
- "null"
1119
- ]
1120
- }
1121
- },
1122
- "required": [
1123
- "first",
1124
- "last",
1125
- "prev",
1126
- "next"
1127
- ]
1128
- },
1129
- "meta": {
1130
- "type": "object",
1131
- "properties": {
1132
- "current_page": {
1133
- "type": "integer",
1134
- "minimum": 1
1135
- },
1136
- "from": {
1137
- "type": [
1138
- "integer",
1139
- "null"
1140
- ],
1141
- "minimum": 1
1142
- },
1143
- "last_page": {
1144
- "type": "integer",
1145
- "minimum": 1
1146
- },
1147
- "links": {
1148
- "type": "array",
1149
- "description": "Generated paginator links.",
1150
- "items": {
1151
- "type": "object",
1152
- "properties": {
1153
- "url": {
1154
- "type": [
1155
- "string",
1156
- "null"
1157
- ]
1158
- },
1159
- "label": {
1160
- "type": "string"
1161
- },
1162
- "active": {
1163
- "type": "boolean"
1164
- }
1165
- },
1166
- "required": [
1167
- "url",
1168
- "label",
1169
- "active"
1170
- ]
1171
- }
1172
- },
1173
- "path": {
1174
- "type": [
1175
- "string",
1176
- "null"
1177
- ],
1178
- "description": "Base path for paginator generated URLs."
1179
- },
1180
- "per_page": {
1181
- "type": "integer",
1182
- "description": "Number of items shown per page.",
1183
- "minimum": 0
1184
- },
1185
- "to": {
1186
- "type": [
1187
- "integer",
1188
- "null"
1189
- ],
1190
- "description": "Number of the last item in the slice.",
1191
- "minimum": 1
1192
- },
1193
- "total": {
1194
- "type": "integer",
1195
- "description": "Total number of items being paginated.",
1196
- "minimum": 0
1197
- }
1198
- },
1199
- "required": [
1200
- "current_page",
1201
- "from",
1202
- "last_page",
1203
- "links",
1204
- "path",
1205
- "per_page",
1206
- "to",
1207
- "total"
1208
- ]
1209
- }
1210
- },
1211
- "required": [
1212
- "data",
1213
- "links",
1214
- "meta"
1215
- ]
1216
- }
1217
- }
1218
- }
1219
- },
1220
- "403": {
1221
- "$ref": "#/components/responses/AuthorizationException"
1222
- },
1223
- "404": {
1224
- "$ref": "#/components/responses/ModelNotFoundException"
1225
- },
1226
- "401": {
1227
- "$ref": "#/components/responses/AuthenticationException"
1228
- }
1229
- }
1230
- },
1231
- "post": {
1232
- "operationId": "posts.store",
1233
- "description": "Creates one or more posts as a cluster. Supports draft, scheduled, or immediate publishing modes.",
1234
- "summary": "Create posts",
1235
- "tags": [
1236
- "Post"
1237
- ],
1238
- "parameters": [
1239
- {
1240
- "name": "space",
1241
- "in": "path",
1242
- "required": true,
1243
- "schema": {
1244
- "type": "string"
1245
- }
1246
- }
1247
- ],
1248
- "requestBody": {
1249
- "required": true,
1250
- "content": {
1251
- "application/json": {
1252
- "schema": {
1253
- "$ref": "#/components/schemas/StorePostRequest"
1254
- }
1255
- }
1256
- }
1257
- },
1258
- "responses": {
1259
- "200": {
1260
- "description": "",
1261
- "content": {
1262
- "application/json": {
1263
- "schema": {
1264
- "type": "object"
1265
- }
1266
- }
1267
- }
1268
- },
1269
- "401": {
1270
- "$ref": "#/components/responses/AuthenticationException"
1271
- },
1272
- "422": {
1273
- "$ref": "#/components/responses/ValidationException"
1274
- },
1275
- "403": {
1276
- "$ref": "#/components/responses/AuthorizationException"
1277
- }
1278
- }
1279
- }
1280
- },
1281
- "/spaces/{space}/posts/{post}": {
1282
- "get": {
1283
- "operationId": "posts.show",
1284
- "description": "Returns a single post with its account, children, and media.",
1285
- "summary": "Get a post",
1286
- "tags": [
1287
- "Post"
1288
- ],
1289
- "parameters": [
1290
- {
1291
- "name": "space",
1292
- "in": "path",
1293
- "required": true,
1294
- "description": "The space ID",
1295
- "schema": {
1296
- "type": "integer"
1297
- }
1298
- },
1299
- {
1300
- "name": "post",
1301
- "in": "path",
1302
- "required": true,
1303
- "description": "The post ID",
1304
- "schema": {
1305
- "type": "integer"
1306
- }
1307
- }
1308
- ],
1309
- "responses": {
1310
- "200": {
1311
- "description": "`PostResource`",
1312
- "content": {
1313
- "application/json": {
1314
- "schema": {
1315
- "type": "object",
1316
- "properties": {
1317
- "data": {
1318
- "$ref": "#/components/schemas/PostResource"
1319
- }
1320
- },
1321
- "required": [
1322
- "data"
1323
- ]
1324
- }
1325
- }
1326
- }
1327
- },
1328
- "403": {
1329
- "$ref": "#/components/responses/AuthorizationException"
1330
- },
1331
- "404": {
1332
- "$ref": "#/components/responses/ModelNotFoundException"
1333
- },
1334
- "401": {
1335
- "$ref": "#/components/responses/AuthenticationException"
1336
- }
1337
- }
1338
- },
1339
- "put": {
1340
- "operationId": "posts.update",
1341
- "description": "Updates a single post's content, schedule, and media attachments.",
1342
- "summary": "Update a post",
1343
- "tags": [
1344
- "Post"
1345
- ],
1346
- "parameters": [
1347
- {
1348
- "name": "space",
1349
- "in": "path",
1350
- "required": true,
1351
- "description": "The space ID",
1352
- "schema": {
1353
- "type": "integer"
1354
- }
1355
- },
1356
- {
1357
- "name": "post",
1358
- "in": "path",
1359
- "required": true,
1360
- "description": "The post ID",
1361
- "schema": {
1362
- "type": "integer"
1363
- }
1364
- }
1365
- ],
1366
- "requestBody": {
1367
- "content": {
1368
- "application/json": {
1369
- "schema": {
1370
- "$ref": "#/components/schemas/UpdatePostRequest"
1371
- }
1372
- }
1373
- }
1374
- },
1375
- "responses": {
1376
- "200": {
1377
- "description": "`PostResource`",
1378
- "content": {
1379
- "application/json": {
1380
- "schema": {
1381
- "anyOf": [
1382
- {
1383
- "type": "object",
1384
- "properties": {
1385
- "data": {
1386
- "$ref": "#/components/schemas/PostResource"
1387
- }
1388
- },
1389
- "required": [
1390
- "data"
1391
- ]
1392
- },
1393
- {
1394
- "type": "object"
1395
- }
1396
- ]
1397
- }
1398
- }
1399
- }
1400
- },
1401
- "403": {
1402
- "$ref": "#/components/responses/AuthorizationException"
1403
- },
1404
- "404": {
1405
- "$ref": "#/components/responses/ModelNotFoundException"
1406
- },
1407
- "401": {
1408
- "$ref": "#/components/responses/AuthenticationException"
1409
- },
1410
- "422": {
1411
- "$ref": "#/components/responses/ValidationException"
1412
- }
1413
- }
1414
- },
1415
- "delete": {
1416
- "operationId": "posts.destroy",
1417
- "description": "Permanently deletes the given post.",
1418
- "summary": "Delete a post",
1419
- "tags": [
1420
- "Post"
1421
- ],
1422
- "parameters": [
1423
- {
1424
- "name": "space",
1425
- "in": "path",
1426
- "required": true,
1427
- "description": "The space ID",
1428
- "schema": {
1429
- "type": "integer"
1430
- }
1431
- },
1432
- {
1433
- "name": "post",
1434
- "in": "path",
1435
- "required": true,
1436
- "description": "The post ID",
1437
- "schema": {
1438
- "type": "integer"
1439
- }
1440
- }
1441
- ],
1442
- "responses": {
1443
- "200": {
1444
- "description": "",
1445
- "content": {
1446
- "application/json": {
1447
- "schema": {
1448
- "type": "object"
1449
- }
1450
- }
1451
- }
1452
- },
1453
- "403": {
1454
- "$ref": "#/components/responses/AuthorizationException"
1455
- },
1456
- "404": {
1457
- "$ref": "#/components/responses/ModelNotFoundException"
1458
- },
1459
- "401": {
1460
- "$ref": "#/components/responses/AuthenticationException"
1461
- }
1462
- }
1463
- }
1464
- },
1465
- "/spaces/{space}/clusters/{cluster_id}": {
1466
- "put": {
1467
- "operationId": "clusters.update",
1468
- "description": "Updates all posts sharing the given cluster ID. Handles adding/removing accounts and re-scheduling.",
1469
- "summary": "Update a cluster of posts",
1470
- "tags": [
1471
- "Post"
1472
- ],
1473
- "parameters": [
1474
- {
1475
- "name": "space",
1476
- "in": "path",
1477
- "required": true,
1478
- "description": "The space ID",
1479
- "schema": {
1480
- "type": "integer"
1481
- }
1482
- },
1483
- {
1484
- "name": "cluster_id",
1485
- "in": "path",
1486
- "required": true,
1487
- "schema": {
1488
- "type": "string"
1489
- }
1490
- }
1491
- ],
1492
- "requestBody": {
1493
- "required": true,
1494
- "content": {
1495
- "application/json": {
1496
- "schema": {
1497
- "$ref": "#/components/schemas/UpdateClusterRequest"
1498
- }
1499
- }
1500
- }
1501
- },
1502
- "responses": {
1503
- "200": {
1504
- "description": "Array of items",
1505
- "content": {
1506
- "application/json": {
1507
- "schema": {
1508
- "anyOf": [
1509
- {
1510
- "type": "object",
1511
- "properties": {
1512
- "data": {
1513
- "type": "array",
1514
- "items": {
1515
- "type": "string"
1516
- }
1517
- }
1518
- },
1519
- "required": [
1520
- "data"
1521
- ]
1522
- },
1523
- {
1524
- "type": "object"
1525
- }
1526
- ]
1527
- }
1528
- }
1529
- }
1530
- },
1531
- "404": {
1532
- "$ref": "#/components/responses/ModelNotFoundException"
1533
- },
1534
- "401": {
1535
- "$ref": "#/components/responses/AuthenticationException"
1536
- },
1537
- "422": {
1538
- "$ref": "#/components/responses/ValidationException"
1539
- },
1540
- "403": {
1541
- "$ref": "#/components/responses/AuthorizationException"
1542
- }
1543
- }
1544
- }
1545
- },
1546
- "/spaces/{space}/queue": {
1547
- "get": {
1548
- "operationId": "queue.index",
1549
- "description": "Returns up to 9 upcoming available time slots based on the space's scheduling configuration.",
1550
- "summary": "Get next available queue slots",
1551
- "tags": [
1552
- "Queue"
1553
- ],
1554
- "parameters": [
1555
- {
1556
- "name": "space",
1557
- "in": "path",
1558
- "required": true,
1559
- "description": "The space ID",
1560
- "schema": {
1561
- "type": "integer"
1562
- }
1563
- }
1564
- ],
1565
- "responses": {
1566
- "200": {
1567
- "description": "",
1568
- "content": {
1569
- "application/json": {
1570
- "schema": {
1571
- "anyOf": [
1572
- {
1573
- "type": "object",
1574
- "properties": {
1575
- "data": {
1576
- "type": "array",
1577
- "items": {
1578
- "type": "object",
1579
- "properties": {
1580
- "datetime": {
1581
- "type": "string"
1582
- },
1583
- "timestamp_ms": {
1584
- "type": "string"
1585
- },
1586
- "label": {
1587
- "type": "string"
1588
- }
1589
- },
1590
- "required": [
1591
- "datetime",
1592
- "timestamp_ms",
1593
- "label"
1594
- ]
1595
- }
1596
- }
1597
- },
1598
- "required": [
1599
- "data"
1600
- ]
1601
- },
1602
- {
1603
- "type": "object",
1604
- "properties": {
1605
- "data": {
1606
- "type": "array",
1607
- "items": {
1608
- "type": "string"
1609
- },
1610
- "minItems": 0,
1611
- "maxItems": 0,
1612
- "additionalItems": false
1613
- }
1614
- },
1615
- "required": [
1616
- "data"
1617
- ]
1618
- }
1619
- ]
1620
- }
1621
- }
1622
- }
1623
- },
1624
- "403": {
1625
- "$ref": "#/components/responses/AuthorizationException"
1626
- },
1627
- "404": {
1628
- "$ref": "#/components/responses/ModelNotFoundException"
1629
- },
1630
- "401": {
1631
- "$ref": "#/components/responses/AuthenticationException"
1632
- }
1633
- }
1634
- }
1635
- },
1636
- "/spaces/{space}/slots": {
1637
- "get": {
1638
- "operationId": "slots.index",
1639
- "description": "Returns all scheduling slots for the space, ordered by day and time.",
1640
- "summary": "List slots",
1641
- "tags": [
1642
- "Slot"
1643
- ],
1644
- "parameters": [
1645
- {
1646
- "name": "space",
1647
- "in": "path",
1648
- "required": true,
1649
- "description": "The space ID",
1650
- "schema": {
1651
- "type": "integer"
1652
- }
1653
- }
1654
- ],
1655
- "responses": {
1656
- "200": {
1657
- "description": "Array of `SlotResource`",
1658
- "content": {
1659
- "application/json": {
1660
- "schema": {
1661
- "type": "object",
1662
- "properties": {
1663
- "data": {
1664
- "type": "array",
1665
- "items": {
1666
- "$ref": "#/components/schemas/SlotResource"
1667
- }
1668
- }
1669
- },
1670
- "required": [
1671
- "data"
1672
- ]
1673
- }
1674
- }
1675
- }
1676
- },
1677
- "403": {
1678
- "$ref": "#/components/responses/AuthorizationException"
1679
- },
1680
- "404": {
1681
- "$ref": "#/components/responses/ModelNotFoundException"
1682
- },
1683
- "401": {
1684
- "$ref": "#/components/responses/AuthenticationException"
1685
- }
1686
- }
1687
- },
1688
- "post": {
1689
- "operationId": "slots.store",
1690
- "description": "Creates scheduling slots for the given days of the week and time.",
1691
- "summary": "Create slots",
1692
- "tags": [
1693
- "Slot"
1694
- ],
1695
- "parameters": [
1696
- {
1697
- "name": "space",
1698
- "in": "path",
1699
- "required": true,
1700
- "description": "The space ID",
1701
- "schema": {
1702
- "type": "integer"
1703
- }
1704
- }
1705
- ],
1706
- "requestBody": {
1707
- "required": true,
1708
- "content": {
1709
- "application/json": {
1710
- "schema": {
1711
- "$ref": "#/components/schemas/StoreSlotRequest"
1712
- }
1713
- }
1714
- }
1715
- },
1716
- "responses": {
1717
- "200": {
1718
- "description": "",
1719
- "content": {
1720
- "application/json": {
1721
- "schema": {
1722
- "type": "object"
1723
- }
1724
- }
1725
- }
1726
- },
1727
- "403": {
1728
- "$ref": "#/components/responses/AuthorizationException"
1729
- },
1730
- "404": {
1731
- "$ref": "#/components/responses/ModelNotFoundException"
1732
- },
1733
- "401": {
1734
- "$ref": "#/components/responses/AuthenticationException"
1735
- },
1736
- "422": {
1737
- "$ref": "#/components/responses/ValidationException"
1738
- }
1739
- }
1740
- }
1741
- },
1742
- "/spaces/{space}/slots/{slot}": {
1743
- "delete": {
1744
- "operationId": "slots.destroy",
1745
- "description": "Removes a scheduling slot from the space.",
1746
- "summary": "Delete a slot",
1747
- "tags": [
1748
- "Slot"
1749
- ],
1750
- "parameters": [
1751
- {
1752
- "name": "space",
1753
- "in": "path",
1754
- "required": true,
1755
- "description": "The space ID",
1756
- "schema": {
1757
- "type": "integer"
1758
- }
1759
- },
1760
- {
1761
- "name": "slot",
1762
- "in": "path",
1763
- "required": true,
1764
- "description": "The slot ID",
1765
- "schema": {
1766
- "type": "integer"
1767
- }
1768
- }
1769
- ],
1770
- "responses": {
1771
- "200": {
1772
- "description": "",
1773
- "content": {
1774
- "application/json": {
1775
- "schema": {
1776
- "type": "object"
1777
- }
1778
- }
1779
- }
1780
- },
1781
- "403": {
1782
- "$ref": "#/components/responses/AuthorizationException"
1783
- },
1784
- "404": {
1785
- "$ref": "#/components/responses/ModelNotFoundException"
1786
- },
1787
- "401": {
1788
- "$ref": "#/components/responses/AuthenticationException"
1789
- }
1790
- }
1791
- }
1792
- },
1793
- "/spaces": {
1794
- "get": {
1795
- "operationId": "spaces.index",
1796
- "description": "Returns all spaces belonging to the authenticated user, ordered by most recent.",
1797
- "summary": "List spaces",
1798
- "tags": [
1799
- "Space"
1800
- ],
1801
- "responses": {
1802
- "200": {
1803
- "description": "Array of `SpaceResource`",
1804
- "content": {
1805
- "application/json": {
1806
- "schema": {
1807
- "type": "object",
1808
- "properties": {
1809
- "data": {
1810
- "type": "array",
1811
- "items": {
1812
- "$ref": "#/components/schemas/SpaceResource"
1813
- }
1814
- }
1815
- },
1816
- "required": [
1817
- "data"
1818
- ]
1819
- }
1820
- }
1821
- }
1822
- },
1823
- "401": {
1824
- "$ref": "#/components/responses/AuthenticationException"
1825
- }
1826
- }
1827
- },
1828
- "post": {
1829
- "operationId": "spaces.store",
1830
- "description": "Creates a new space for the authenticated user.",
1831
- "summary": "Create a space",
1832
- "tags": [
1833
- "Space"
1834
- ],
1835
- "requestBody": {
1836
- "required": true,
1837
- "content": {
1838
- "application/json": {
1839
- "schema": {
1840
- "$ref": "#/components/schemas/StoreSpaceRequest"
1841
- }
1842
- }
1843
- }
1844
- },
1845
- "responses": {
1846
- "200": {
1847
- "description": "",
1848
- "content": {
1849
- "application/json": {
1850
- "schema": {
1851
- "type": "object"
1852
- }
1853
- }
1854
- }
1855
- },
1856
- "401": {
1857
- "$ref": "#/components/responses/AuthenticationException"
1858
- },
1859
- "422": {
1860
- "$ref": "#/components/responses/ValidationException"
1861
- },
1862
- "403": {
1863
- "$ref": "#/components/responses/AuthorizationException"
1864
- }
1865
- }
1866
- }
1867
- },
1868
- "/spaces/{space}": {
1869
- "get": {
1870
- "operationId": "spaces.show",
1871
- "description": "Returns a single space by ID.",
1872
- "summary": "Get a space",
1873
- "tags": [
1874
- "Space"
1875
- ],
1876
- "parameters": [
1877
- {
1878
- "name": "space",
1879
- "in": "path",
1880
- "required": true,
1881
- "description": "The space ID",
1882
- "schema": {
1883
- "type": "integer"
1884
- }
1885
- }
1886
- ],
1887
- "responses": {
1888
- "200": {
1889
- "description": "`SpaceResource`",
1890
- "content": {
1891
- "application/json": {
1892
- "schema": {
1893
- "type": "object",
1894
- "properties": {
1895
- "data": {
1896
- "$ref": "#/components/schemas/SpaceResource"
1897
- }
1898
- },
1899
- "required": [
1900
- "data"
1901
- ]
1902
- }
1903
- }
1904
- }
1905
- },
1906
- "403": {
1907
- "$ref": "#/components/responses/AuthorizationException"
1908
- },
1909
- "404": {
1910
- "$ref": "#/components/responses/ModelNotFoundException"
1911
- },
1912
- "401": {
1913
- "$ref": "#/components/responses/AuthenticationException"
1914
- }
1915
- }
1916
- },
1917
- "put": {
1918
- "operationId": "spaces.update",
1919
- "description": "Updates the given space's settings.",
1920
- "summary": "Update a space",
1921
- "tags": [
1922
- "Space"
1923
- ],
1924
- "parameters": [
1925
- {
1926
- "name": "space",
1927
- "in": "path",
1928
- "required": true,
1929
- "description": "The space ID",
1930
- "schema": {
1931
- "type": "integer"
1932
- }
1933
- }
1934
- ],
1935
- "requestBody": {
1936
- "content": {
1937
- "application/json": {
1938
- "schema": {
1939
- "$ref": "#/components/schemas/UpdateSpaceRequest"
1940
- }
1941
- }
1942
- }
1943
- },
1944
- "responses": {
1945
- "200": {
1946
- "description": "`SpaceResource`",
1947
- "content": {
1948
- "application/json": {
1949
- "schema": {
1950
- "anyOf": [
1951
- {
1952
- "type": "object",
1953
- "properties": {
1954
- "data": {
1955
- "$ref": "#/components/schemas/SpaceResource"
1956
- }
1957
- },
1958
- "required": [
1959
- "data"
1960
- ]
1961
- },
1962
- {
1963
- "type": "object"
1964
- }
1965
- ]
1966
- }
1967
- }
1968
- }
1969
- },
1970
- "403": {
1971
- "$ref": "#/components/responses/AuthorizationException"
1972
- },
1973
- "404": {
1974
- "$ref": "#/components/responses/ModelNotFoundException"
1975
- },
1976
- "401": {
1977
- "$ref": "#/components/responses/AuthenticationException"
1978
- },
1979
- "422": {
1980
- "$ref": "#/components/responses/ValidationException"
1981
- }
1982
- }
1983
- },
1984
- "delete": {
1985
- "operationId": "spaces.destroy",
1986
- "description": "Permanently deletes the given space and all associated data.",
1987
- "summary": "Delete a space",
1988
- "tags": [
1989
- "Space"
1990
- ],
1991
- "parameters": [
1992
- {
1993
- "name": "space",
1994
- "in": "path",
1995
- "required": true,
1996
- "description": "The space ID",
1997
- "schema": {
1998
- "type": "integer"
1999
- }
2000
- }
2001
- ],
2002
- "responses": {
2003
- "200": {
2004
- "description": "",
2005
- "content": {
2006
- "application/json": {
2007
- "schema": {
2008
- "type": "object"
2009
- }
2010
- }
2011
- }
2012
- },
2013
- "403": {
2014
- "$ref": "#/components/responses/AuthorizationException"
2015
- },
2016
- "404": {
2017
- "$ref": "#/components/responses/ModelNotFoundException"
2018
- },
2019
- "401": {
2020
- "$ref": "#/components/responses/AuthenticationException"
2021
- }
2022
- }
2023
- }
2024
- },
2025
- "/subscription": {
2026
- "get": {
2027
- "operationId": "subscription.show",
2028
- "description": "Returns the current plan, usage limits, trial status, and cancellation state.",
2029
- "summary": "Get subscription details",
2030
- "tags": [
2031
- "Subscription"
2032
- ],
2033
- "responses": {
2034
- "200": {
2035
- "description": "",
2036
- "content": {
2037
- "application/json": {
2038
- "schema": {
2039
- "type": "object",
2040
- "properties": {
2041
- "plan": {
2042
- "type": "string"
2043
- },
2044
- "is_gifted": {
2045
- "type": "boolean"
2046
- },
2047
- "limits": {
2048
- "type": "object",
2049
- "properties": {
2050
- "max_spaces": {
2051
- "type": [
2052
- "integer",
2053
- "null"
2054
- ],
2055
- "enum": [
2056
- 2,
2057
- 10,
2058
- 50
2059
- ]
2060
- },
2061
- "max_posts_per_month": {
2062
- "type": [
2063
- "integer",
2064
- "null"
2065
- ],
2066
- "enum": [
2067
- 20,
2068
- 200
2069
- ]
2070
- },
2071
- "has_analytics": {
2072
- "type": "boolean"
2073
- },
2074
- "remaining_spaces": {
2075
- "type": [
2076
- "integer",
2077
- "null"
2078
- ]
2079
- },
2080
- "remaining_posts": {
2081
- "type": [
2082
- "integer",
2083
- "null"
2084
- ]
2085
- },
2086
- "posts_this_month": {
2087
- "type": "integer",
2088
- "minimum": 0
2089
- }
2090
- },
2091
- "required": [
2092
- "max_spaces",
2093
- "max_posts_per_month",
2094
- "has_analytics",
2095
- "remaining_spaces",
2096
- "remaining_posts",
2097
- "posts_this_month"
2098
- ]
2099
- },
2100
- "trial": {
2101
- "type": "object",
2102
- "properties": {
2103
- "on_trial": {
2104
- "anyOf": [
2105
- {
2106
- "type": "string"
2107
- },
2108
- {
2109
- "type": "boolean"
2110
- }
2111
- ]
2112
- },
2113
- "ends_at": {
2114
- "type": "string"
2115
- }
2116
- },
2117
- "required": [
2118
- "on_trial",
2119
- "ends_at"
2120
- ]
2121
- },
2122
- "cancelled": {
2123
- "anyOf": [
2124
- {
2125
- "type": "string"
2126
- },
2127
- {
2128
- "type": "boolean"
2129
- }
2130
- ]
2131
- },
2132
- "ends_at": {
2133
- "type": "string"
2134
- }
2135
- },
2136
- "required": [
2137
- "plan",
2138
- "is_gifted",
2139
- "limits",
2140
- "trial",
2141
- "cancelled",
2142
- "ends_at"
2143
- ]
2144
- }
2145
- }
2146
- }
2147
- },
2148
- "401": {
2149
- "$ref": "#/components/responses/AuthenticationException"
2150
- }
2151
- }
2152
- }
2153
- },
2154
- "/spaces/{space}/webhooks": {
2155
- "get": {
2156
- "operationId": "webhooks.index",
2157
- "description": "Returns all webhooks configured for the given space.",
2158
- "summary": "List webhooks",
2159
- "tags": [
2160
- "Webhook"
2161
- ],
2162
- "parameters": [
2163
- {
2164
- "name": "space",
2165
- "in": "path",
2166
- "required": true,
2167
- "description": "The space ID",
2168
- "schema": {
2169
- "type": "integer"
2170
- }
2171
- }
2172
- ],
2173
- "responses": {
2174
- "200": {
2175
- "description": "Array of `WebhookResource`",
2176
- "content": {
2177
- "application/json": {
2178
- "schema": {
2179
- "type": "object",
2180
- "properties": {
2181
- "data": {
2182
- "type": "array",
2183
- "items": {
2184
- "$ref": "#/components/schemas/WebhookResource"
2185
- }
2186
- }
2187
- },
2188
- "required": [
2189
- "data"
2190
- ]
2191
- }
2192
- }
2193
- }
2194
- },
2195
- "403": {
2196
- "$ref": "#/components/responses/AuthorizationException"
2197
- },
2198
- "404": {
2199
- "$ref": "#/components/responses/ModelNotFoundException"
2200
- },
2201
- "401": {
2202
- "$ref": "#/components/responses/AuthenticationException"
2203
- }
2204
- }
2205
- },
2206
- "post": {
2207
- "operationId": "webhooks.store",
2208
- "description": "Registers a new webhook endpoint with an auto-generated signing secret.",
2209
- "summary": "Create a webhook",
2210
- "tags": [
2211
- "Webhook"
2212
- ],
2213
- "parameters": [
2214
- {
2215
- "name": "space",
2216
- "in": "path",
2217
- "required": true,
2218
- "description": "The space ID",
2219
- "schema": {
2220
- "type": "integer"
2221
- }
2222
- }
2223
- ],
2224
- "requestBody": {
2225
- "required": true,
2226
- "content": {
2227
- "application/json": {
2228
- "schema": {
2229
- "$ref": "#/components/schemas/StoreWebhookRequest"
2230
- }
2231
- }
2232
- }
2233
- },
2234
- "responses": {
2235
- "200": {
2236
- "description": "",
2237
- "content": {
2238
- "application/json": {
2239
- "schema": {
2240
- "type": "object"
2241
- }
2242
- }
2243
- }
2244
- },
2245
- "403": {
2246
- "$ref": "#/components/responses/AuthorizationException"
2247
- },
2248
- "404": {
2249
- "$ref": "#/components/responses/ModelNotFoundException"
2250
- },
2251
- "401": {
2252
- "$ref": "#/components/responses/AuthenticationException"
2253
- },
2254
- "422": {
2255
- "$ref": "#/components/responses/ValidationException"
2256
- }
2257
- }
2258
- }
2259
- },
2260
- "/spaces/{space}/webhooks/{webhook}": {
2261
- "put": {
2262
- "operationId": "webhooks.update",
2263
- "description": "Updates the webhook's URL, events, or active status.",
2264
- "summary": "Update a webhook",
2265
- "tags": [
2266
- "Webhook"
2267
- ],
2268
- "parameters": [
2269
- {
2270
- "name": "space",
2271
- "in": "path",
2272
- "required": true,
2273
- "description": "The space ID",
2274
- "schema": {
2275
- "type": "integer"
2276
- }
2277
- },
2278
- {
2279
- "name": "webhook",
2280
- "in": "path",
2281
- "required": true,
2282
- "description": "The webhook ID",
2283
- "schema": {
2284
- "type": "integer"
2285
- }
2286
- }
2287
- ],
2288
- "requestBody": {
2289
- "content": {
2290
- "application/json": {
2291
- "schema": {
2292
- "$ref": "#/components/schemas/UpdateWebhookRequest"
2293
- }
2294
- }
2295
- }
2296
- },
2297
- "responses": {
2298
- "200": {
2299
- "description": "`WebhookResource`",
2300
- "content": {
2301
- "application/json": {
2302
- "schema": {
2303
- "anyOf": [
2304
- {
2305
- "type": "object",
2306
- "properties": {
2307
- "data": {
2308
- "$ref": "#/components/schemas/WebhookResource"
2309
- }
2310
- },
2311
- "required": [
2312
- "data"
2313
- ]
2314
- },
2315
- {
2316
- "type": "object"
2317
- }
2318
- ]
2319
- }
2320
- }
2321
- }
2322
- },
2323
- "403": {
2324
- "$ref": "#/components/responses/AuthorizationException"
2325
- },
2326
- "404": {
2327
- "$ref": "#/components/responses/ModelNotFoundException"
2328
- },
2329
- "401": {
2330
- "$ref": "#/components/responses/AuthenticationException"
2331
- },
2332
- "422": {
2333
- "$ref": "#/components/responses/ValidationException"
2334
- }
2335
- }
2336
- },
2337
- "delete": {
2338
- "operationId": "webhooks.destroy",
2339
- "description": "Permanently removes the webhook endpoint.",
2340
- "summary": "Delete a webhook",
2341
- "tags": [
2342
- "Webhook"
2343
- ],
2344
- "parameters": [
2345
- {
2346
- "name": "space",
2347
- "in": "path",
2348
- "required": true,
2349
- "description": "The space ID",
2350
- "schema": {
2351
- "type": "integer"
2352
- }
2353
- },
2354
- {
2355
- "name": "webhook",
2356
- "in": "path",
2357
- "required": true,
2358
- "description": "The webhook ID",
2359
- "schema": {
2360
- "type": "integer"
2361
- }
2362
- }
2363
- ],
2364
- "responses": {
2365
- "200": {
2366
- "description": "",
2367
- "content": {
2368
- "application/json": {
2369
- "schema": {
2370
- "type": "object"
2371
- }
2372
- }
2373
- }
2374
- },
2375
- "403": {
2376
- "$ref": "#/components/responses/AuthorizationException"
2377
- },
2378
- "404": {
2379
- "$ref": "#/components/responses/ModelNotFoundException"
2380
- },
2381
- "401": {
2382
- "$ref": "#/components/responses/AuthenticationException"
2383
- }
2384
- }
2385
- }
2386
- }
2387
- },
2388
- "components": {
2389
- "securitySchemes": {
2390
- "http": {
2391
- "type": "http",
2392
- "scheme": "bearer"
2393
- }
2394
- },
2395
- "schemas": {
2396
- "AccountResource": {
2397
- "type": "object",
2398
- "properties": {
2399
- "id": {
2400
- "type": "integer"
2401
- },
2402
- "social": {
2403
- "type": "string"
2404
- },
2405
- "display_name": {
2406
- "type": "string"
2407
- },
2408
- "handler": {
2409
- "type": "string"
2410
- },
2411
- "avatar": {
2412
- "type": [
2413
- "string",
2414
- "null"
2415
- ]
2416
- },
2417
- "is_active": {
2418
- "type": "boolean"
2419
- },
2420
- "disconnected_at": {
2421
- "type": "string"
2422
- }
2423
- },
2424
- "required": [
2425
- "id",
2426
- "social",
2427
- "display_name",
2428
- "handler",
2429
- "avatar",
2430
- "is_active",
2431
- "disconnected_at"
2432
- ],
2433
- "title": "AccountResource"
2434
- },
2435
- "BioBlockResource": {
2436
- "type": "object",
2437
- "properties": {
2438
- "id": {
2439
- "type": "integer"
2440
- },
2441
- "type": {
2442
- "type": "string"
2443
- },
2444
- "content": {
2445
- "type": "array",
2446
- "items": {}
2447
- },
2448
- "sort_order": {
2449
- "type": "integer"
2450
- },
2451
- "is_visible": {
2452
- "type": "boolean"
2453
- }
2454
- },
2455
- "required": [
2456
- "id",
2457
- "type",
2458
- "content",
2459
- "sort_order",
2460
- "is_visible"
2461
- ],
2462
- "title": "BioBlockResource"
2463
- },
2464
- "BioPageResource": {
2465
- "type": "object",
2466
- "properties": {
2467
- "id": {
2468
- "type": "integer"
2469
- },
2470
- "slug": {
2471
- "type": "string"
2472
- },
2473
- "title": {
2474
- "type": [
2475
- "string",
2476
- "null"
2477
- ]
2478
- },
2479
- "description": {
2480
- "type": [
2481
- "string",
2482
- "null"
2483
- ]
2484
- },
2485
- "theme": {
2486
- "type": "string"
2487
- },
2488
- "avatar": {
2489
- "type": "string"
2490
- },
2491
- "is_enabled": {
2492
- "type": "boolean"
2493
- },
2494
- "public_url": {
2495
- "type": "string"
2496
- },
2497
- "created_at": {
2498
- "type": [
2499
- "string",
2500
- "null"
2501
- ],
2502
- "format": "date-time"
2503
- },
2504
- "updated_at": {
2505
- "type": [
2506
- "string",
2507
- "null"
2508
- ],
2509
- "format": "date-time"
2510
- }
2511
- },
2512
- "required": [
2513
- "id",
2514
- "slug",
2515
- "title",
2516
- "description",
2517
- "theme",
2518
- "avatar",
2519
- "is_enabled",
2520
- "public_url",
2521
- "created_at",
2522
- "updated_at"
2523
- ],
2524
- "title": "BioPageResource"
2525
- },
2526
- "MediaResource": {
2527
- "type": "object",
2528
- "properties": {
2529
- "id": {
2530
- "type": "string"
2531
- },
2532
- "type": {
2533
- "type": "string"
2534
- },
2535
- "url": {
2536
- "type": "string"
2537
- },
2538
- "mime": {
2539
- "type": "string"
2540
- },
2541
- "width": {
2542
- "type": "string"
2543
- },
2544
- "height": {
2545
- "type": "string"
2546
- },
2547
- "size": {
2548
- "type": "string"
2549
- },
2550
- "alt": {
2551
- "type": "string"
2552
- },
2553
- "order": {
2554
- "type": "string"
2555
- }
2556
- },
2557
- "required": [
2558
- "id",
2559
- "type",
2560
- "url",
2561
- "mime",
2562
- "width",
2563
- "height",
2564
- "size",
2565
- "alt",
2566
- "order"
2567
- ],
2568
- "title": "MediaResource"
2569
- },
2570
- "PostResource": {
2571
- "type": "object",
2572
- "properties": {
2573
- "id": {
2574
- "type": "integer"
2575
- },
2576
- "content": {
2577
- "type": "string"
2578
- },
2579
- "status": {
2580
- "$ref": "#/components/schemas/PostStatus"
2581
- },
2582
- "order": {
2583
- "type": "integer"
2584
- },
2585
- "scheduled_at": {
2586
- "type": [
2587
- "string",
2588
- "null"
2589
- ],
2590
- "format": "date-time"
2591
- },
2592
- "published_at": {
2593
- "type": [
2594
- "string",
2595
- "null"
2596
- ],
2597
- "format": "date-time"
2598
- },
2599
- "metadata": {
2600
- "type": [
2601
- "array",
2602
- "null"
2603
- ],
2604
- "items": {}
2605
- },
2606
- "cluster_id": {
2607
- "type": "string"
2608
- },
2609
- "parent_id": {
2610
- "type": [
2611
- "integer",
2612
- "null"
2613
- ]
2614
- },
2615
- "user_id": {
2616
- "type": "integer"
2617
- },
2618
- "account_id": {
2619
- "type": "integer"
2620
- },
2621
- "created_at": {
2622
- "type": [
2623
- "string",
2624
- "null"
2625
- ],
2626
- "format": "date-time"
2627
- },
2628
- "updated_at": {
2629
- "type": [
2630
- "string",
2631
- "null"
2632
- ],
2633
- "format": "date-time"
2634
- },
2635
- "analytics": {
2636
- "type": [
2637
- "array",
2638
- "null"
2639
- ],
2640
- "items": {}
2641
- },
2642
- "account": {
2643
- "$ref": "#/components/schemas/AccountResource"
2644
- },
2645
- "children": {
2646
- "type": "array",
2647
- "items": {
2648
- "$ref": "#/components/schemas/PostResource"
2649
- }
2650
- },
2651
- "media": {
2652
- "type": "array",
2653
- "items": {
2654
- "$ref": "#/components/schemas/MediaResource"
2655
- }
2656
- }
2657
- },
2658
- "required": [
2659
- "id",
2660
- "content",
2661
- "status",
2662
- "order",
2663
- "scheduled_at",
2664
- "published_at",
2665
- "metadata",
2666
- "cluster_id",
2667
- "parent_id",
2668
- "user_id",
2669
- "account_id",
2670
- "created_at",
2671
- "updated_at",
2672
- "analytics"
2673
- ],
2674
- "title": "PostResource"
2675
- },
2676
- "PostStatus": {
2677
- "type": "integer",
2678
- "enum": [
2679
- 0,
2680
- 1,
2681
- 2,
2682
- 3,
2683
- 4
2684
- ],
2685
- "title": "PostStatus"
2686
- },
2687
- "SlotResource": {
2688
- "type": "object",
2689
- "properties": {
2690
- "id": {
2691
- "type": "integer"
2692
- },
2693
- "day_of_week": {
2694
- "type": "integer"
2695
- },
2696
- "time": {
2697
- "type": "string"
2698
- }
2699
- },
2700
- "required": [
2701
- "id",
2702
- "day_of_week",
2703
- "time"
2704
- ],
2705
- "title": "SlotResource"
2706
- },
2707
- "SpaceResource": {
2708
- "type": "object",
2709
- "properties": {
2710
- "id": {
2711
- "type": "integer"
2712
- },
2713
- "name": {
2714
- "type": "string"
2715
- },
2716
- "created_at": {
2717
- "type": [
2718
- "string",
2719
- "null"
2720
- ],
2721
- "format": "date-time"
2722
- },
2723
- "updated_at": {
2724
- "type": [
2725
- "string",
2726
- "null"
2727
- ],
2728
- "format": "date-time"
2729
- }
2730
- },
2731
- "required": [
2732
- "id",
2733
- "name",
2734
- "created_at",
2735
- "updated_at"
2736
- ],
2737
- "title": "SpaceResource"
2738
- },
2739
- "StoreBioBlockRequest": {
2740
- "type": "object",
2741
- "properties": {
2742
- "type": {
2743
- "type": "string",
2744
- "enum": [
2745
- "link",
2746
- "header",
2747
- "social_icons",
2748
- "text"
2749
- ]
2750
- },
2751
- "content": {
2752
- "type": "array",
2753
- "items": {
2754
- "type": "string"
2755
- }
2756
- },
2757
- "is_visible": {
2758
- "type": "boolean"
2759
- }
2760
- },
2761
- "required": [
2762
- "type",
2763
- "content"
2764
- ],
2765
- "title": "StoreBioBlockRequest"
2766
- },
2767
- "StoreBioPageRequest": {
2768
- "type": "object",
2769
- "properties": {
2770
- "slug": {
2771
- "type": "string",
2772
- "pattern": "^[a-z0-9][a-z0-9\\-]*[a-z0-9]$",
2773
- "maxLength": 100
2774
- },
2775
- "title": {
2776
- "type": [
2777
- "string",
2778
- "null"
2779
- ],
2780
- "maxLength": 255
2781
- },
2782
- "description": {
2783
- "type": [
2784
- "string",
2785
- "null"
2786
- ],
2787
- "maxLength": 1000
2788
- },
2789
- "theme": {
2790
- "type": "string",
2791
- "enum": [
2792
- "minimal",
2793
- "bold",
2794
- "neon",
2795
- "soft",
2796
- "classic"
2797
- ]
2798
- }
2799
- },
2800
- "required": [
2801
- "slug",
2802
- "theme"
2803
- ],
2804
- "title": "StoreBioPageRequest"
2805
- },
2806
- "StorePostRequest": {
2807
- "type": "object",
2808
- "properties": {
2809
- "at": {
2810
- "type": [
2811
- "integer",
2812
- "null"
2813
- ]
2814
- },
2815
- "is_draft": {
2816
- "type": "boolean"
2817
- },
2818
- "space_id": {
2819
- "type": "integer"
2820
- },
2821
- "items": {
2822
- "type": "array",
2823
- "items": {
2824
- "type": "object",
2825
- "properties": {
2826
- "account_id": {
2827
- "type": "integer"
2828
- },
2829
- "social": {
2830
- "type": "string"
2831
- },
2832
- "children": {
2833
- "type": [
2834
- "array",
2835
- "null"
2836
- ],
2837
- "items": {
2838
- "type": "object",
2839
- "properties": {
2840
- "content": {
2841
- "type": "string",
2842
- "maxLength": 5000
2843
- },
2844
- "media": {
2845
- "type": [
2846
- "array",
2847
- "null"
2848
- ],
2849
- "items": {
2850
- "type": "object",
2851
- "properties": {
2852
- "id": {
2853
- "type": "integer"
2854
- },
2855
- "type": {
2856
- "type": "string",
2857
- "enum": [
2858
- "image",
2859
- "video"
2860
- ]
2861
- }
2862
- },
2863
- "required": [
2864
- "id",
2865
- "type"
2866
- ]
2867
- }
2868
- }
2869
- },
2870
- "required": [
2871
- "content"
2872
- ]
2873
- }
2874
- },
2875
- "metadata": {
2876
- "type": [
2877
- "object",
2878
- "null"
2879
- ],
2880
- "properties": {
2881
- "topic_tag": {
2882
- "type": [
2883
- "string",
2884
- "null"
2885
- ]
2886
- },
2887
- "post_type": {
2888
- "type": [
2889
- "string",
2890
- "null"
2891
- ]
2892
- },
2893
- "link": {
2894
- "type": [
2895
- "string",
2896
- "null"
2897
- ],
2898
- "format": "uri"
2899
- },
2900
- "privacy_level": {
2901
- "type": [
2902
- "string",
2903
- "null"
2904
- ]
2905
- },
2906
- "allow_comments": {
2907
- "type": [
2908
- "boolean",
2909
- "null"
2910
- ]
2911
- },
2912
- "allow_duet": {
2913
- "type": [
2914
- "boolean",
2915
- "null"
2916
- ]
2917
- },
2918
- "allow_stitch": {
2919
- "type": [
2920
- "boolean",
2921
- "null"
2922
- ]
2923
- },
2924
- "branded_content": {
2925
- "type": [
2926
- "boolean",
2927
- "null"
2928
- ]
2929
- },
2930
- "brand_organic": {
2931
- "type": [
2932
- "boolean",
2933
- "null"
2934
- ]
2935
- },
2936
- "board_id": {
2937
- "type": [
2938
- "string",
2939
- "null"
2940
- ]
2941
- },
2942
- "title": {
2943
- "type": [
2944
- "string",
2945
- "null"
2946
- ],
2947
- "maxLength": 100
2948
- },
2949
- "cover_image_url": {
2950
- "type": [
2951
- "string",
2952
- "null"
2953
- ],
2954
- "format": "uri"
2955
- }
2956
- }
2957
- },
2958
- "main": {
2959
- "type": "object",
2960
- "properties": {
2961
- "content": {
2962
- "type": "string",
2963
- "maxLength": 5000
2964
- },
2965
- "media": {
2966
- "type": [
2967
- "array",
2968
- "null"
2969
- ],
2970
- "items": {
2971
- "type": "object",
2972
- "properties": {
2973
- "id": {
2974
- "type": "integer"
2975
- },
2976
- "type": {
2977
- "type": "string",
2978
- "enum": [
2979
- "image",
2980
- "video"
2981
- ]
2982
- }
2983
- },
2984
- "required": [
2985
- "id",
2986
- "type"
2987
- ]
2988
- }
2989
- }
2990
- },
2991
- "required": [
2992
- "content"
2993
- ]
2994
- }
2995
- },
2996
- "required": [
2997
- "account_id",
2998
- "social"
2999
- ]
3000
- },
3001
- "minItems": 1
3002
- }
3003
- },
3004
- "required": [
3005
- "space_id",
3006
- "items"
3007
- ],
3008
- "title": "StorePostRequest"
3009
- },
3010
- "StoreSlotRequest": {
3011
- "type": "object",
3012
- "properties": {
3013
- "time": {
3014
- "type": "string",
3015
- "pattern": "^\\d{2}:\\d{2}$"
3016
- },
3017
- "days_of_week": {
3018
- "type": "array",
3019
- "items": {
3020
- "type": "integer",
3021
- "minimum": 1,
3022
- "maximum": 7
3023
- },
3024
- "minItems": 1
3025
- }
3026
- },
3027
- "required": [
3028
- "time",
3029
- "days_of_week"
3030
- ],
3031
- "title": "StoreSlotRequest"
3032
- },
3033
- "StoreSpaceRequest": {
3034
- "type": "object",
3035
- "properties": {
3036
- "name": {
3037
- "type": "string",
3038
- "maxLength": 255
3039
- }
3040
- },
3041
- "required": [
3042
- "name"
3043
- ],
3044
- "title": "StoreSpaceRequest"
3045
- },
3046
- "StoreWebhookRequest": {
3047
- "type": "object",
3048
- "properties": {
3049
- "url": {
3050
- "type": "string",
3051
- "format": "uri"
3052
- },
3053
- "events": {
3054
- "type": "array",
3055
- "items": {
3056
- "type": "string",
3057
- "enum": [
3058
- "post.published",
3059
- "post.failed",
3060
- "post.scheduled",
3061
- "account.connected",
3062
- "account.disconnected"
3063
- ]
3064
- },
3065
- "minItems": 1
3066
- }
3067
- },
3068
- "required": [
3069
- "url",
3070
- "events"
3071
- ],
3072
- "title": "StoreWebhookRequest"
3073
- },
3074
- "UpdateBioBlockRequest": {
3075
- "type": "object",
3076
- "properties": {
3077
- "content": {
3078
- "type": "array",
3079
- "items": {
3080
- "type": "string"
3081
- }
3082
- },
3083
- "is_visible": {
3084
- "type": "boolean"
3085
- }
3086
- },
3087
- "title": "UpdateBioBlockRequest"
3088
- },
3089
- "UpdateBioPageRequest": {
3090
- "type": "object",
3091
- "properties": {
3092
- "slug": {
3093
- "type": "string",
3094
- "pattern": "^[a-z0-9][a-z0-9\\-]*[a-z0-9]$",
3095
- "maxLength": 100
3096
- },
3097
- "title": {
3098
- "type": [
3099
- "string",
3100
- "null"
3101
- ],
3102
- "maxLength": 255
3103
- },
3104
- "description": {
3105
- "type": [
3106
- "string",
3107
- "null"
3108
- ],
3109
- "maxLength": 1000
3110
- },
3111
- "theme": {
3112
- "type": "string",
3113
- "enum": [
3114
- "minimal",
3115
- "bold",
3116
- "neon",
3117
- "soft",
3118
- "classic"
3119
- ]
3120
- },
3121
- "is_enabled": {
3122
- "type": "boolean"
3123
- }
3124
- },
3125
- "title": "UpdateBioPageRequest"
3126
- },
3127
- "UpdateClusterRequest": {
3128
- "type": "object",
3129
- "properties": {
3130
- "at": {
3131
- "type": [
3132
- "integer",
3133
- "null"
3134
- ]
3135
- },
3136
- "is_draft": {
3137
- "type": "boolean"
3138
- },
3139
- "space_id": {
3140
- "type": "integer"
3141
- },
3142
- "items": {
3143
- "type": "array",
3144
- "items": {
3145
- "type": "object",
3146
- "properties": {
3147
- "account_id": {
3148
- "type": "integer"
3149
- },
3150
- "social": {
3151
- "type": "string"
3152
- },
3153
- "children": {
3154
- "type": [
3155
- "array",
3156
- "null"
3157
- ],
3158
- "items": {
3159
- "type": "object",
3160
- "properties": {
3161
- "content": {
3162
- "type": "string",
3163
- "maxLength": 5000
3164
- },
3165
- "media": {
3166
- "type": [
3167
- "array",
3168
- "null"
3169
- ],
3170
- "items": {
3171
- "type": "object",
3172
- "properties": {
3173
- "id": {
3174
- "type": "integer"
3175
- },
3176
- "type": {
3177
- "type": "string",
3178
- "enum": [
3179
- "image",
3180
- "video"
3181
- ]
3182
- }
3183
- },
3184
- "required": [
3185
- "id",
3186
- "type"
3187
- ]
3188
- }
3189
- }
3190
- },
3191
- "required": [
3192
- "content"
3193
- ]
3194
- }
3195
- },
3196
- "metadata": {
3197
- "type": [
3198
- "object",
3199
- "null"
3200
- ],
3201
- "properties": {
3202
- "topic_tag": {
3203
- "type": [
3204
- "string",
3205
- "null"
3206
- ]
3207
- },
3208
- "post_type": {
3209
- "type": [
3210
- "string",
3211
- "null"
3212
- ]
3213
- },
3214
- "link": {
3215
- "type": [
3216
- "string",
3217
- "null"
3218
- ],
3219
- "format": "uri"
3220
- },
3221
- "privacy_level": {
3222
- "type": [
3223
- "string",
3224
- "null"
3225
- ]
3226
- },
3227
- "allow_comments": {
3228
- "type": [
3229
- "boolean",
3230
- "null"
3231
- ]
3232
- },
3233
- "allow_duet": {
3234
- "type": [
3235
- "boolean",
3236
- "null"
3237
- ]
3238
- },
3239
- "allow_stitch": {
3240
- "type": [
3241
- "boolean",
3242
- "null"
3243
- ]
3244
- },
3245
- "branded_content": {
3246
- "type": [
3247
- "boolean",
3248
- "null"
3249
- ]
3250
- },
3251
- "brand_organic": {
3252
- "type": [
3253
- "boolean",
3254
- "null"
3255
- ]
3256
- },
3257
- "board_id": {
3258
- "type": [
3259
- "string",
3260
- "null"
3261
- ]
3262
- },
3263
- "title": {
3264
- "type": [
3265
- "string",
3266
- "null"
3267
- ],
3268
- "maxLength": 100
3269
- },
3270
- "cover_image_url": {
3271
- "type": [
3272
- "string",
3273
- "null"
3274
- ],
3275
- "format": "uri"
3276
- }
3277
- }
3278
- },
3279
- "main": {
3280
- "type": "object",
3281
- "properties": {
3282
- "content": {
3283
- "type": "string",
3284
- "maxLength": 5000
3285
- },
3286
- "media": {
3287
- "type": [
3288
- "array",
3289
- "null"
3290
- ],
3291
- "items": {
3292
- "type": "object",
3293
- "properties": {
3294
- "id": {
3295
- "type": "integer"
3296
- },
3297
- "type": {
3298
- "type": "string",
3299
- "enum": [
3300
- "image",
3301
- "video"
3302
- ]
3303
- }
3304
- },
3305
- "required": [
3306
- "id",
3307
- "type"
3308
- ]
3309
- }
3310
- }
3311
- },
3312
- "required": [
3313
- "content"
3314
- ]
3315
- }
3316
- },
3317
- "required": [
3318
- "account_id",
3319
- "social"
3320
- ]
3321
- },
3322
- "minItems": 1
3323
- }
3324
- },
3325
- "required": [
3326
- "space_id",
3327
- "items"
3328
- ],
3329
- "title": "UpdateClusterRequest"
3330
- },
3331
- "UpdatePostRequest": {
3332
- "type": "object",
3333
- "properties": {
3334
- "content": {
3335
- "type": "string",
3336
- "maxLength": 5000
3337
- },
3338
- "status": {
3339
- "$ref": "#/components/schemas/PostStatus"
3340
- },
3341
- "scheduled_at": {
3342
- "type": [
3343
- "string",
3344
- "null"
3345
- ],
3346
- "format": "date-time"
3347
- },
3348
- "metadata": {
3349
- "type": [
3350
- "array",
3351
- "null"
3352
- ],
3353
- "items": {
3354
- "type": "string"
3355
- }
3356
- },
3357
- "media_ids": {
3358
- "type": [
3359
- "array",
3360
- "null"
3361
- ],
3362
- "items": {
3363
- "type": "integer"
3364
- }
3365
- }
3366
- },
3367
- "title": "UpdatePostRequest"
3368
- },
3369
- "UpdateSpaceRequest": {
3370
- "type": "object",
3371
- "properties": {
3372
- "name": {
3373
- "type": "string",
3374
- "maxLength": 255
3375
- },
3376
- "timezone": {
3377
- "type": "string"
3378
- }
3379
- },
3380
- "title": "UpdateSpaceRequest"
3381
- },
3382
- "UpdateWebhookRequest": {
3383
- "type": "object",
3384
- "properties": {
3385
- "url": {
3386
- "type": "string",
3387
- "format": "uri"
3388
- },
3389
- "is_active": {
3390
- "type": "boolean"
3391
- },
3392
- "events": {
3393
- "type": "array",
3394
- "items": {
3395
- "type": "string",
3396
- "enum": [
3397
- "post.published",
3398
- "post.failed",
3399
- "post.scheduled",
3400
- "account.connected",
3401
- "account.disconnected"
3402
- ]
3403
- },
3404
- "minItems": 1
3405
- }
3406
- },
3407
- "title": "UpdateWebhookRequest"
3408
- },
3409
- "WebhookResource": {
3410
- "type": "object",
3411
- "properties": {
3412
- "id": {
3413
- "type": "integer"
3414
- },
3415
- "url": {
3416
- "type": "string"
3417
- },
3418
- "events": {
3419
- "type": "array",
3420
- "items": {}
3421
- },
3422
- "is_active": {
3423
- "type": "boolean"
3424
- },
3425
- "created_at": {
3426
- "type": [
3427
- "string",
3428
- "null"
3429
- ],
3430
- "format": "date-time"
3431
- },
3432
- "updated_at": {
3433
- "type": [
3434
- "string",
3435
- "null"
3436
- ],
3437
- "format": "date-time"
3438
- }
3439
- },
3440
- "required": [
3441
- "id",
3442
- "url",
3443
- "events",
3444
- "is_active",
3445
- "created_at",
3446
- "updated_at"
3447
- ],
3448
- "title": "WebhookResource"
3449
- }
3450
- },
3451
- "responses": {
3452
- "AuthenticationException": {
3453
- "description": "Unauthenticated",
3454
- "content": {
3455
- "application/json": {
3456
- "schema": {
3457
- "type": "object",
3458
- "properties": {
3459
- "message": {
3460
- "type": "string",
3461
- "description": "Error overview."
3462
- }
3463
- },
3464
- "required": [
3465
- "message"
3466
- ]
3467
- }
3468
- }
3469
- }
3470
- },
3471
- "AuthorizationException": {
3472
- "description": "Authorization error",
3473
- "content": {
3474
- "application/json": {
3475
- "schema": {
3476
- "type": "object",
3477
- "properties": {
3478
- "message": {
3479
- "type": "string",
3480
- "description": "Error overview."
3481
- }
3482
- },
3483
- "required": [
3484
- "message"
3485
- ]
3486
- }
3487
- }
3488
- }
3489
- },
3490
- "ModelNotFoundException": {
3491
- "description": "Not found",
3492
- "content": {
3493
- "application/json": {
3494
- "schema": {
3495
- "type": "object",
3496
- "properties": {
3497
- "message": {
3498
- "type": "string",
3499
- "description": "Error overview."
3500
- }
3501
- },
3502
- "required": [
3503
- "message"
3504
- ]
3505
- }
3506
- }
3507
- }
3508
- },
3509
- "ValidationException": {
3510
- "description": "Validation error",
3511
- "content": {
3512
- "application/json": {
3513
- "schema": {
3514
- "type": "object",
3515
- "properties": {
3516
- "message": {
3517
- "type": "string",
3518
- "description": "Errors overview."
3519
- },
3520
- "errors": {
3521
- "type": "object",
3522
- "description": "A detailed description of each field that failed validation.",
3523
- "additionalProperties": {
3524
- "type": "array",
3525
- "items": {
3526
- "type": "string"
3527
- }
3528
- }
3529
- }
3530
- },
3531
- "required": [
3532
- "message",
3533
- "errors"
3534
- ]
3535
- }
3536
- }
3537
- }
3538
- }
3539
- }
3540
- }
3541
- }