@syra.fm/sdk 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -765,3 +765,307 @@ export declare const podcastSummarySchema: z.ZodObject<{
765
765
  imageSourceUrl?: string | undefined;
766
766
  }>;
767
767
  export type PodcastSummary = z.infer<typeof podcastSummarySchema>;
768
+ /**
769
+ * The summary view of a podcast EPISODE returned by the public podcast endpoints
770
+ * (`GET /api/podcasts/:id/episodes`, `GET /api/episodes/:id`) — just enough to
771
+ * list an episode and stream its audio.
772
+ *
773
+ * `enclosureUrl` is the direct audio file URL (e.g.
774
+ * `https://api.fastcast.ai/audio/<guid>.mp3`) and is REQUIRED: an episode with
775
+ * no enclosure is unplayable, so a row missing it is treated as malformed and
776
+ * dropped rather than surfaced as a dead entry. `enclosureType` /
777
+ * `enclosureLength` describe that file (MIME type and byte length); `duration`
778
+ * is the runtime in seconds and `pubDate` the ISO publish timestamp.
779
+ *
780
+ * Artwork mirrors the podcast SHOW: `image` is the re-hosted Syra image id
781
+ * (resolved via `/api/images/:id`); `imageSizes` is the multi-resolution variant
782
+ * set (each variant `url` is `/api/images/:id`); `imageSourceUrl` keeps the
783
+ * original external artwork URL as an absolute fallback when re-hosting has not
784
+ * run yet.
785
+ */
786
+ export declare const episodeSummarySchema: z.ZodObject<{
787
+ id: z.ZodString;
788
+ podcastId: z.ZodString;
789
+ title: z.ZodString;
790
+ description: z.ZodOptional<z.ZodString>;
791
+ enclosureUrl: z.ZodString;
792
+ enclosureType: z.ZodOptional<z.ZodString>;
793
+ enclosureLength: z.ZodOptional<z.ZodNumber>;
794
+ duration: z.ZodOptional<z.ZodNumber>;
795
+ pubDate: z.ZodOptional<z.ZodString>;
796
+ image: z.ZodOptional<z.ZodString>;
797
+ imageSizes: z.ZodOptional<z.ZodObject<{
798
+ small: z.ZodOptional<z.ZodObject<{
799
+ id: z.ZodOptional<z.ZodString>;
800
+ url: z.ZodString;
801
+ width: z.ZodOptional<z.ZodNumber>;
802
+ height: z.ZodOptional<z.ZodNumber>;
803
+ }, "strip", z.ZodTypeAny, {
804
+ url: string;
805
+ id?: string | undefined;
806
+ width?: number | undefined;
807
+ height?: number | undefined;
808
+ }, {
809
+ url: string;
810
+ id?: string | undefined;
811
+ width?: number | undefined;
812
+ height?: number | undefined;
813
+ }>>;
814
+ medium: z.ZodOptional<z.ZodObject<{
815
+ id: z.ZodOptional<z.ZodString>;
816
+ url: z.ZodString;
817
+ width: z.ZodOptional<z.ZodNumber>;
818
+ height: z.ZodOptional<z.ZodNumber>;
819
+ }, "strip", z.ZodTypeAny, {
820
+ url: string;
821
+ id?: string | undefined;
822
+ width?: number | undefined;
823
+ height?: number | undefined;
824
+ }, {
825
+ url: string;
826
+ id?: string | undefined;
827
+ width?: number | undefined;
828
+ height?: number | undefined;
829
+ }>>;
830
+ large: z.ZodOptional<z.ZodObject<{
831
+ id: z.ZodOptional<z.ZodString>;
832
+ url: z.ZodString;
833
+ width: z.ZodOptional<z.ZodNumber>;
834
+ height: z.ZodOptional<z.ZodNumber>;
835
+ }, "strip", z.ZodTypeAny, {
836
+ url: string;
837
+ id?: string | undefined;
838
+ width?: number | undefined;
839
+ height?: number | undefined;
840
+ }, {
841
+ url: string;
842
+ id?: string | undefined;
843
+ width?: number | undefined;
844
+ height?: number | undefined;
845
+ }>>;
846
+ xlarge: z.ZodOptional<z.ZodObject<{
847
+ id: z.ZodOptional<z.ZodString>;
848
+ url: z.ZodString;
849
+ width: z.ZodOptional<z.ZodNumber>;
850
+ height: z.ZodOptional<z.ZodNumber>;
851
+ }, "strip", z.ZodTypeAny, {
852
+ url: string;
853
+ id?: string | undefined;
854
+ width?: number | undefined;
855
+ height?: number | undefined;
856
+ }, {
857
+ url: string;
858
+ id?: string | undefined;
859
+ width?: number | undefined;
860
+ height?: number | undefined;
861
+ }>>;
862
+ xxlarge: z.ZodOptional<z.ZodObject<{
863
+ id: z.ZodOptional<z.ZodString>;
864
+ url: z.ZodString;
865
+ width: z.ZodOptional<z.ZodNumber>;
866
+ height: z.ZodOptional<z.ZodNumber>;
867
+ }, "strip", z.ZodTypeAny, {
868
+ url: string;
869
+ id?: string | undefined;
870
+ width?: number | undefined;
871
+ height?: number | undefined;
872
+ }, {
873
+ url: string;
874
+ id?: string | undefined;
875
+ width?: number | undefined;
876
+ height?: number | undefined;
877
+ }>>;
878
+ original: z.ZodOptional<z.ZodObject<{
879
+ id: z.ZodOptional<z.ZodString>;
880
+ url: z.ZodString;
881
+ width: z.ZodOptional<z.ZodNumber>;
882
+ height: z.ZodOptional<z.ZodNumber>;
883
+ }, "strip", z.ZodTypeAny, {
884
+ url: string;
885
+ id?: string | undefined;
886
+ width?: number | undefined;
887
+ height?: number | undefined;
888
+ }, {
889
+ url: string;
890
+ id?: string | undefined;
891
+ width?: number | undefined;
892
+ height?: number | undefined;
893
+ }>>;
894
+ }, "strip", z.ZodTypeAny, {
895
+ small?: {
896
+ url: string;
897
+ id?: string | undefined;
898
+ width?: number | undefined;
899
+ height?: number | undefined;
900
+ } | undefined;
901
+ medium?: {
902
+ url: string;
903
+ id?: string | undefined;
904
+ width?: number | undefined;
905
+ height?: number | undefined;
906
+ } | undefined;
907
+ large?: {
908
+ url: string;
909
+ id?: string | undefined;
910
+ width?: number | undefined;
911
+ height?: number | undefined;
912
+ } | undefined;
913
+ xlarge?: {
914
+ url: string;
915
+ id?: string | undefined;
916
+ width?: number | undefined;
917
+ height?: number | undefined;
918
+ } | undefined;
919
+ xxlarge?: {
920
+ url: string;
921
+ id?: string | undefined;
922
+ width?: number | undefined;
923
+ height?: number | undefined;
924
+ } | undefined;
925
+ original?: {
926
+ url: string;
927
+ id?: string | undefined;
928
+ width?: number | undefined;
929
+ height?: number | undefined;
930
+ } | undefined;
931
+ }, {
932
+ small?: {
933
+ url: string;
934
+ id?: string | undefined;
935
+ width?: number | undefined;
936
+ height?: number | undefined;
937
+ } | undefined;
938
+ medium?: {
939
+ url: string;
940
+ id?: string | undefined;
941
+ width?: number | undefined;
942
+ height?: number | undefined;
943
+ } | undefined;
944
+ large?: {
945
+ url: string;
946
+ id?: string | undefined;
947
+ width?: number | undefined;
948
+ height?: number | undefined;
949
+ } | undefined;
950
+ xlarge?: {
951
+ url: string;
952
+ id?: string | undefined;
953
+ width?: number | undefined;
954
+ height?: number | undefined;
955
+ } | undefined;
956
+ xxlarge?: {
957
+ url: string;
958
+ id?: string | undefined;
959
+ width?: number | undefined;
960
+ height?: number | undefined;
961
+ } | undefined;
962
+ original?: {
963
+ url: string;
964
+ id?: string | undefined;
965
+ width?: number | undefined;
966
+ height?: number | undefined;
967
+ } | undefined;
968
+ }>>;
969
+ imageSourceUrl: z.ZodOptional<z.ZodString>;
970
+ }, "strip", z.ZodTypeAny, {
971
+ id: string;
972
+ title: string;
973
+ podcastId: string;
974
+ enclosureUrl: string;
975
+ duration?: number | undefined;
976
+ description?: string | undefined;
977
+ image?: string | undefined;
978
+ imageSizes?: {
979
+ small?: {
980
+ url: string;
981
+ id?: string | undefined;
982
+ width?: number | undefined;
983
+ height?: number | undefined;
984
+ } | undefined;
985
+ medium?: {
986
+ url: string;
987
+ id?: string | undefined;
988
+ width?: number | undefined;
989
+ height?: number | undefined;
990
+ } | undefined;
991
+ large?: {
992
+ url: string;
993
+ id?: string | undefined;
994
+ width?: number | undefined;
995
+ height?: number | undefined;
996
+ } | undefined;
997
+ xlarge?: {
998
+ url: string;
999
+ id?: string | undefined;
1000
+ width?: number | undefined;
1001
+ height?: number | undefined;
1002
+ } | undefined;
1003
+ xxlarge?: {
1004
+ url: string;
1005
+ id?: string | undefined;
1006
+ width?: number | undefined;
1007
+ height?: number | undefined;
1008
+ } | undefined;
1009
+ original?: {
1010
+ url: string;
1011
+ id?: string | undefined;
1012
+ width?: number | undefined;
1013
+ height?: number | undefined;
1014
+ } | undefined;
1015
+ } | undefined;
1016
+ imageSourceUrl?: string | undefined;
1017
+ enclosureType?: string | undefined;
1018
+ enclosureLength?: number | undefined;
1019
+ pubDate?: string | undefined;
1020
+ }, {
1021
+ id: string;
1022
+ title: string;
1023
+ podcastId: string;
1024
+ enclosureUrl: string;
1025
+ duration?: number | undefined;
1026
+ description?: string | undefined;
1027
+ image?: string | undefined;
1028
+ imageSizes?: {
1029
+ small?: {
1030
+ url: string;
1031
+ id?: string | undefined;
1032
+ width?: number | undefined;
1033
+ height?: number | undefined;
1034
+ } | undefined;
1035
+ medium?: {
1036
+ url: string;
1037
+ id?: string | undefined;
1038
+ width?: number | undefined;
1039
+ height?: number | undefined;
1040
+ } | undefined;
1041
+ large?: {
1042
+ url: string;
1043
+ id?: string | undefined;
1044
+ width?: number | undefined;
1045
+ height?: number | undefined;
1046
+ } | undefined;
1047
+ xlarge?: {
1048
+ url: string;
1049
+ id?: string | undefined;
1050
+ width?: number | undefined;
1051
+ height?: number | undefined;
1052
+ } | undefined;
1053
+ xxlarge?: {
1054
+ url: string;
1055
+ id?: string | undefined;
1056
+ width?: number | undefined;
1057
+ height?: number | undefined;
1058
+ } | undefined;
1059
+ original?: {
1060
+ url: string;
1061
+ id?: string | undefined;
1062
+ width?: number | undefined;
1063
+ height?: number | undefined;
1064
+ } | undefined;
1065
+ } | undefined;
1066
+ imageSourceUrl?: string | undefined;
1067
+ enclosureType?: string | undefined;
1068
+ enclosureLength?: number | undefined;
1069
+ pubDate?: string | undefined;
1070
+ }>;
1071
+ export type EpisodeSummary = z.infer<typeof episodeSummarySchema>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@syra.fm/sdk",
3
- "version": "0.2.0",
3
+ "version": "0.4.0",
4
4
  "description": "Headless, isomorphic client for the Syra public API — catalog reads and 30s preview clips. No React/RN/DOM dependencies; public reads only.",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",