@postrun/js 2.11.0 → 2.13.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.
- package/dist/{chunk-QMBBAADH.js → chunk-GDNXBH4R.js} +3 -3
- package/dist/{chunk-QMBBAADH.js.map → chunk-GDNXBH4R.js.map} +1 -1
- package/dist/{chunk-T4V4M2WL.js → chunk-NTAR627J.js} +2052 -22
- package/dist/chunk-NTAR627J.js.map +1 -0
- package/dist/index.cjs +2114 -20
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +27 -3
- package/dist/index.d.ts +27 -3
- package/dist/index.js +61 -3
- package/dist/index.js.map +1 -1
- package/dist/schemas/index.cjs +2050 -20
- package/dist/schemas/index.cjs.map +1 -1
- package/dist/schemas/index.d.cts +1970 -0
- package/dist/schemas/index.d.ts +1970 -0
- package/dist/schemas/index.js +1 -1
- package/dist/server.cjs +2050 -20
- package/dist/server.cjs.map +1 -1
- package/dist/server.d.cts +1 -1
- package/dist/server.d.ts +1 -1
- package/dist/server.js +2 -2
- package/dist/{types.gen-CENLQ15A.d.cts → types.gen-KaByz17A.d.cts} +1776 -1
- package/dist/{types.gen-CENLQ15A.d.ts → types.gen-KaByz17A.d.ts} +1776 -1
- package/package.json +3 -1
- package/dist/chunk-T4V4M2WL.js.map +0 -1
|
@@ -5471,6 +5471,82 @@ type PostsListResponses = {
|
|
|
5471
5471
|
* Per-variant alt text; falls back to the asset’s alt_text.
|
|
5472
5472
|
*/
|
|
5473
5473
|
alt_text_override: string | null;
|
|
5474
|
+
/**
|
|
5475
|
+
* The full media asset (kind, content_type, source dimensions, per-platform renditions) — the same shape as GET /v1/media.
|
|
5476
|
+
*/
|
|
5477
|
+
media: {
|
|
5478
|
+
id: string;
|
|
5479
|
+
object: 'media';
|
|
5480
|
+
profile_id: string;
|
|
5481
|
+
/**
|
|
5482
|
+
* The detected asset family (image/video/gif/document). We sniff it from the uploaded bytes. null only in the brief pre-detection window while status is `uploading`; non-null once probed.
|
|
5483
|
+
*/
|
|
5484
|
+
kind: 'image' | 'video' | 'gif' | 'document' | null;
|
|
5485
|
+
/**
|
|
5486
|
+
* The detected MIME of the uploaded original (e.g. video/mp4), sniffed from the bytes. null only in the brief pre-detection window while status is `uploading`.
|
|
5487
|
+
*/
|
|
5488
|
+
content_type: string | null;
|
|
5489
|
+
status: 'uploading' | 'processing' | 'ready' | 'failed';
|
|
5490
|
+
/**
|
|
5491
|
+
* In-pipeline progress: the current step (stage) and a 0–100 bar (percent). Read `status` for the outcome; `percent` can regress on a transient retry.
|
|
5492
|
+
*/
|
|
5493
|
+
progress: {
|
|
5494
|
+
stage: 'queued' | 'analyzing' | 'transcoding' | 'done';
|
|
5495
|
+
percent: number;
|
|
5496
|
+
};
|
|
5497
|
+
raw: boolean;
|
|
5498
|
+
/**
|
|
5499
|
+
* Asset-wide failure (the original itself is unusable, so no platform can succeed); null otherwise.
|
|
5500
|
+
*/
|
|
5501
|
+
error: {
|
|
5502
|
+
code: 'media_unprobeable' | 'media_format_indeterminate' | 'media_format_unsupported' | 'media_too_large' | 'media_aspect_ratio_unsupported' | 'media_resolution_too_low' | 'media_gif_unsupported' | 'media_format_recompressed' | 'media_resolution_downscaled' | 'video_container_unsupported' | 'video_codec_unsupported' | 'video_audio_codec_unsupported' | 'video_too_large' | 'video_too_small' | 'video_dimensions_unsupported' | 'video_dimensions_too_large' | 'video_fps_unsupported' | 'video_fps_too_low' | 'video_aspect_unsupported' | 'video_duration_too_short' | 'video_duration_exceeds_max' | 'video_transform_failed' | 'media_fetch_failed' | 'document_format_unsupported' | 'document_too_large' | 'document_too_many_pages' | 'media_unsupported';
|
|
5503
|
+
message: string;
|
|
5504
|
+
hint?: string;
|
|
5505
|
+
allowed?: Array<unknown | null>;
|
|
5506
|
+
got?: string;
|
|
5507
|
+
/**
|
|
5508
|
+
* A short, friendly end-user line for `code` (render verbatim). `message` stays developer-grade; this is the display string. Size/limit codes interpolate the human cap/size.
|
|
5509
|
+
*/
|
|
5510
|
+
display_error: string;
|
|
5511
|
+
} | null;
|
|
5512
|
+
source: {
|
|
5513
|
+
/**
|
|
5514
|
+
* MIME of the original, e.g. image/heic.
|
|
5515
|
+
*/
|
|
5516
|
+
format: string;
|
|
5517
|
+
bytes: number;
|
|
5518
|
+
width: number | null;
|
|
5519
|
+
height: number | null;
|
|
5520
|
+
duration_ms: number | null;
|
|
5521
|
+
} | null;
|
|
5522
|
+
alt_text: string | null;
|
|
5523
|
+
per_platform: {
|
|
5524
|
+
[key: string]: {
|
|
5525
|
+
status?: unknown;
|
|
5526
|
+
url?: unknown;
|
|
5527
|
+
width?: unknown;
|
|
5528
|
+
height?: unknown;
|
|
5529
|
+
bytes?: unknown;
|
|
5530
|
+
warnings?: unknown;
|
|
5531
|
+
errors?: unknown;
|
|
5532
|
+
};
|
|
5533
|
+
};
|
|
5534
|
+
external_id: string | null;
|
|
5535
|
+
/**
|
|
5536
|
+
* Customer-owned key/value context, returned on reads and filterable on list endpoints (exact match). Values are scalars: string (≤500 chars), number, or boolean. At most 50 keys; keys ≤40 chars; total serialized JSON must fit in 16 KiB. Arrays and nested objects are out of scope for v1 (kept out to keep the contract scalar + exact-match). Keep a key’s value type consistent across records — filtering matches type-exactly. Never derive auth/scopes from metadata.
|
|
5537
|
+
*/
|
|
5538
|
+
metadata: {
|
|
5539
|
+
[key: string]: unknown;
|
|
5540
|
+
};
|
|
5541
|
+
/**
|
|
5542
|
+
* ISO-8601 creation time.
|
|
5543
|
+
*/
|
|
5544
|
+
created_at: string;
|
|
5545
|
+
/**
|
|
5546
|
+
* ISO-8601 last-update time.
|
|
5547
|
+
*/
|
|
5548
|
+
updated_at: string;
|
|
5549
|
+
};
|
|
5474
5550
|
}>;
|
|
5475
5551
|
} | {
|
|
5476
5552
|
platform: 'linkedin';
|
|
@@ -5597,6 +5673,82 @@ type PostsListResponses = {
|
|
|
5597
5673
|
* Per-variant alt text; falls back to the asset’s alt_text.
|
|
5598
5674
|
*/
|
|
5599
5675
|
alt_text_override: string | null;
|
|
5676
|
+
/**
|
|
5677
|
+
* The full media asset (kind, content_type, source dimensions, per-platform renditions) — the same shape as GET /v1/media.
|
|
5678
|
+
*/
|
|
5679
|
+
media: {
|
|
5680
|
+
id: string;
|
|
5681
|
+
object: 'media';
|
|
5682
|
+
profile_id: string;
|
|
5683
|
+
/**
|
|
5684
|
+
* The detected asset family (image/video/gif/document). We sniff it from the uploaded bytes. null only in the brief pre-detection window while status is `uploading`; non-null once probed.
|
|
5685
|
+
*/
|
|
5686
|
+
kind: 'image' | 'video' | 'gif' | 'document' | null;
|
|
5687
|
+
/**
|
|
5688
|
+
* The detected MIME of the uploaded original (e.g. video/mp4), sniffed from the bytes. null only in the brief pre-detection window while status is `uploading`.
|
|
5689
|
+
*/
|
|
5690
|
+
content_type: string | null;
|
|
5691
|
+
status: 'uploading' | 'processing' | 'ready' | 'failed';
|
|
5692
|
+
/**
|
|
5693
|
+
* In-pipeline progress: the current step (stage) and a 0–100 bar (percent). Read `status` for the outcome; `percent` can regress on a transient retry.
|
|
5694
|
+
*/
|
|
5695
|
+
progress: {
|
|
5696
|
+
stage: 'queued' | 'analyzing' | 'transcoding' | 'done';
|
|
5697
|
+
percent: number;
|
|
5698
|
+
};
|
|
5699
|
+
raw: boolean;
|
|
5700
|
+
/**
|
|
5701
|
+
* Asset-wide failure (the original itself is unusable, so no platform can succeed); null otherwise.
|
|
5702
|
+
*/
|
|
5703
|
+
error: {
|
|
5704
|
+
code: 'media_unprobeable' | 'media_format_indeterminate' | 'media_format_unsupported' | 'media_too_large' | 'media_aspect_ratio_unsupported' | 'media_resolution_too_low' | 'media_gif_unsupported' | 'media_format_recompressed' | 'media_resolution_downscaled' | 'video_container_unsupported' | 'video_codec_unsupported' | 'video_audio_codec_unsupported' | 'video_too_large' | 'video_too_small' | 'video_dimensions_unsupported' | 'video_dimensions_too_large' | 'video_fps_unsupported' | 'video_fps_too_low' | 'video_aspect_unsupported' | 'video_duration_too_short' | 'video_duration_exceeds_max' | 'video_transform_failed' | 'media_fetch_failed' | 'document_format_unsupported' | 'document_too_large' | 'document_too_many_pages' | 'media_unsupported';
|
|
5705
|
+
message: string;
|
|
5706
|
+
hint?: string;
|
|
5707
|
+
allowed?: Array<unknown | null>;
|
|
5708
|
+
got?: string;
|
|
5709
|
+
/**
|
|
5710
|
+
* A short, friendly end-user line for `code` (render verbatim). `message` stays developer-grade; this is the display string. Size/limit codes interpolate the human cap/size.
|
|
5711
|
+
*/
|
|
5712
|
+
display_error: string;
|
|
5713
|
+
} | null;
|
|
5714
|
+
source: {
|
|
5715
|
+
/**
|
|
5716
|
+
* MIME of the original, e.g. image/heic.
|
|
5717
|
+
*/
|
|
5718
|
+
format: string;
|
|
5719
|
+
bytes: number;
|
|
5720
|
+
width: number | null;
|
|
5721
|
+
height: number | null;
|
|
5722
|
+
duration_ms: number | null;
|
|
5723
|
+
} | null;
|
|
5724
|
+
alt_text: string | null;
|
|
5725
|
+
per_platform: {
|
|
5726
|
+
[key: string]: {
|
|
5727
|
+
status?: unknown;
|
|
5728
|
+
url?: unknown;
|
|
5729
|
+
width?: unknown;
|
|
5730
|
+
height?: unknown;
|
|
5731
|
+
bytes?: unknown;
|
|
5732
|
+
warnings?: unknown;
|
|
5733
|
+
errors?: unknown;
|
|
5734
|
+
};
|
|
5735
|
+
};
|
|
5736
|
+
external_id: string | null;
|
|
5737
|
+
/**
|
|
5738
|
+
* Customer-owned key/value context, returned on reads and filterable on list endpoints (exact match). Values are scalars: string (≤500 chars), number, or boolean. At most 50 keys; keys ≤40 chars; total serialized JSON must fit in 16 KiB. Arrays and nested objects are out of scope for v1 (kept out to keep the contract scalar + exact-match). Keep a key’s value type consistent across records — filtering matches type-exactly. Never derive auth/scopes from metadata.
|
|
5739
|
+
*/
|
|
5740
|
+
metadata: {
|
|
5741
|
+
[key: string]: unknown;
|
|
5742
|
+
};
|
|
5743
|
+
/**
|
|
5744
|
+
* ISO-8601 creation time.
|
|
5745
|
+
*/
|
|
5746
|
+
created_at: string;
|
|
5747
|
+
/**
|
|
5748
|
+
* ISO-8601 last-update time.
|
|
5749
|
+
*/
|
|
5750
|
+
updated_at: string;
|
|
5751
|
+
};
|
|
5600
5752
|
}>;
|
|
5601
5753
|
} | {
|
|
5602
5754
|
platform: 'facebook_page';
|
|
@@ -5651,6 +5803,82 @@ type PostsListResponses = {
|
|
|
5651
5803
|
* Per-variant alt text; falls back to the asset’s alt_text.
|
|
5652
5804
|
*/
|
|
5653
5805
|
alt_text_override: string | null;
|
|
5806
|
+
/**
|
|
5807
|
+
* The full media asset (kind, content_type, source dimensions, per-platform renditions) — the same shape as GET /v1/media.
|
|
5808
|
+
*/
|
|
5809
|
+
media: {
|
|
5810
|
+
id: string;
|
|
5811
|
+
object: 'media';
|
|
5812
|
+
profile_id: string;
|
|
5813
|
+
/**
|
|
5814
|
+
* The detected asset family (image/video/gif/document). We sniff it from the uploaded bytes. null only in the brief pre-detection window while status is `uploading`; non-null once probed.
|
|
5815
|
+
*/
|
|
5816
|
+
kind: 'image' | 'video' | 'gif' | 'document' | null;
|
|
5817
|
+
/**
|
|
5818
|
+
* The detected MIME of the uploaded original (e.g. video/mp4), sniffed from the bytes. null only in the brief pre-detection window while status is `uploading`.
|
|
5819
|
+
*/
|
|
5820
|
+
content_type: string | null;
|
|
5821
|
+
status: 'uploading' | 'processing' | 'ready' | 'failed';
|
|
5822
|
+
/**
|
|
5823
|
+
* In-pipeline progress: the current step (stage) and a 0–100 bar (percent). Read `status` for the outcome; `percent` can regress on a transient retry.
|
|
5824
|
+
*/
|
|
5825
|
+
progress: {
|
|
5826
|
+
stage: 'queued' | 'analyzing' | 'transcoding' | 'done';
|
|
5827
|
+
percent: number;
|
|
5828
|
+
};
|
|
5829
|
+
raw: boolean;
|
|
5830
|
+
/**
|
|
5831
|
+
* Asset-wide failure (the original itself is unusable, so no platform can succeed); null otherwise.
|
|
5832
|
+
*/
|
|
5833
|
+
error: {
|
|
5834
|
+
code: 'media_unprobeable' | 'media_format_indeterminate' | 'media_format_unsupported' | 'media_too_large' | 'media_aspect_ratio_unsupported' | 'media_resolution_too_low' | 'media_gif_unsupported' | 'media_format_recompressed' | 'media_resolution_downscaled' | 'video_container_unsupported' | 'video_codec_unsupported' | 'video_audio_codec_unsupported' | 'video_too_large' | 'video_too_small' | 'video_dimensions_unsupported' | 'video_dimensions_too_large' | 'video_fps_unsupported' | 'video_fps_too_low' | 'video_aspect_unsupported' | 'video_duration_too_short' | 'video_duration_exceeds_max' | 'video_transform_failed' | 'media_fetch_failed' | 'document_format_unsupported' | 'document_too_large' | 'document_too_many_pages' | 'media_unsupported';
|
|
5835
|
+
message: string;
|
|
5836
|
+
hint?: string;
|
|
5837
|
+
allowed?: Array<unknown | null>;
|
|
5838
|
+
got?: string;
|
|
5839
|
+
/**
|
|
5840
|
+
* A short, friendly end-user line for `code` (render verbatim). `message` stays developer-grade; this is the display string. Size/limit codes interpolate the human cap/size.
|
|
5841
|
+
*/
|
|
5842
|
+
display_error: string;
|
|
5843
|
+
} | null;
|
|
5844
|
+
source: {
|
|
5845
|
+
/**
|
|
5846
|
+
* MIME of the original, e.g. image/heic.
|
|
5847
|
+
*/
|
|
5848
|
+
format: string;
|
|
5849
|
+
bytes: number;
|
|
5850
|
+
width: number | null;
|
|
5851
|
+
height: number | null;
|
|
5852
|
+
duration_ms: number | null;
|
|
5853
|
+
} | null;
|
|
5854
|
+
alt_text: string | null;
|
|
5855
|
+
per_platform: {
|
|
5856
|
+
[key: string]: {
|
|
5857
|
+
status?: unknown;
|
|
5858
|
+
url?: unknown;
|
|
5859
|
+
width?: unknown;
|
|
5860
|
+
height?: unknown;
|
|
5861
|
+
bytes?: unknown;
|
|
5862
|
+
warnings?: unknown;
|
|
5863
|
+
errors?: unknown;
|
|
5864
|
+
};
|
|
5865
|
+
};
|
|
5866
|
+
external_id: string | null;
|
|
5867
|
+
/**
|
|
5868
|
+
* Customer-owned key/value context, returned on reads and filterable on list endpoints (exact match). Values are scalars: string (≤500 chars), number, or boolean. At most 50 keys; keys ≤40 chars; total serialized JSON must fit in 16 KiB. Arrays and nested objects are out of scope for v1 (kept out to keep the contract scalar + exact-match). Keep a key’s value type consistent across records — filtering matches type-exactly. Never derive auth/scopes from metadata.
|
|
5869
|
+
*/
|
|
5870
|
+
metadata: {
|
|
5871
|
+
[key: string]: unknown;
|
|
5872
|
+
};
|
|
5873
|
+
/**
|
|
5874
|
+
* ISO-8601 creation time.
|
|
5875
|
+
*/
|
|
5876
|
+
created_at: string;
|
|
5877
|
+
/**
|
|
5878
|
+
* ISO-8601 last-update time.
|
|
5879
|
+
*/
|
|
5880
|
+
updated_at: string;
|
|
5881
|
+
};
|
|
5654
5882
|
}>;
|
|
5655
5883
|
} | {
|
|
5656
5884
|
platform: 'instagram';
|
|
@@ -5746,6 +5974,82 @@ type PostsListResponses = {
|
|
|
5746
5974
|
* Per-variant alt text; falls back to the asset’s alt_text.
|
|
5747
5975
|
*/
|
|
5748
5976
|
alt_text_override: string | null;
|
|
5977
|
+
/**
|
|
5978
|
+
* The full media asset (kind, content_type, source dimensions, per-platform renditions) — the same shape as GET /v1/media.
|
|
5979
|
+
*/
|
|
5980
|
+
media: {
|
|
5981
|
+
id: string;
|
|
5982
|
+
object: 'media';
|
|
5983
|
+
profile_id: string;
|
|
5984
|
+
/**
|
|
5985
|
+
* The detected asset family (image/video/gif/document). We sniff it from the uploaded bytes. null only in the brief pre-detection window while status is `uploading`; non-null once probed.
|
|
5986
|
+
*/
|
|
5987
|
+
kind: 'image' | 'video' | 'gif' | 'document' | null;
|
|
5988
|
+
/**
|
|
5989
|
+
* The detected MIME of the uploaded original (e.g. video/mp4), sniffed from the bytes. null only in the brief pre-detection window while status is `uploading`.
|
|
5990
|
+
*/
|
|
5991
|
+
content_type: string | null;
|
|
5992
|
+
status: 'uploading' | 'processing' | 'ready' | 'failed';
|
|
5993
|
+
/**
|
|
5994
|
+
* In-pipeline progress: the current step (stage) and a 0–100 bar (percent). Read `status` for the outcome; `percent` can regress on a transient retry.
|
|
5995
|
+
*/
|
|
5996
|
+
progress: {
|
|
5997
|
+
stage: 'queued' | 'analyzing' | 'transcoding' | 'done';
|
|
5998
|
+
percent: number;
|
|
5999
|
+
};
|
|
6000
|
+
raw: boolean;
|
|
6001
|
+
/**
|
|
6002
|
+
* Asset-wide failure (the original itself is unusable, so no platform can succeed); null otherwise.
|
|
6003
|
+
*/
|
|
6004
|
+
error: {
|
|
6005
|
+
code: 'media_unprobeable' | 'media_format_indeterminate' | 'media_format_unsupported' | 'media_too_large' | 'media_aspect_ratio_unsupported' | 'media_resolution_too_low' | 'media_gif_unsupported' | 'media_format_recompressed' | 'media_resolution_downscaled' | 'video_container_unsupported' | 'video_codec_unsupported' | 'video_audio_codec_unsupported' | 'video_too_large' | 'video_too_small' | 'video_dimensions_unsupported' | 'video_dimensions_too_large' | 'video_fps_unsupported' | 'video_fps_too_low' | 'video_aspect_unsupported' | 'video_duration_too_short' | 'video_duration_exceeds_max' | 'video_transform_failed' | 'media_fetch_failed' | 'document_format_unsupported' | 'document_too_large' | 'document_too_many_pages' | 'media_unsupported';
|
|
6006
|
+
message: string;
|
|
6007
|
+
hint?: string;
|
|
6008
|
+
allowed?: Array<unknown | null>;
|
|
6009
|
+
got?: string;
|
|
6010
|
+
/**
|
|
6011
|
+
* A short, friendly end-user line for `code` (render verbatim). `message` stays developer-grade; this is the display string. Size/limit codes interpolate the human cap/size.
|
|
6012
|
+
*/
|
|
6013
|
+
display_error: string;
|
|
6014
|
+
} | null;
|
|
6015
|
+
source: {
|
|
6016
|
+
/**
|
|
6017
|
+
* MIME of the original, e.g. image/heic.
|
|
6018
|
+
*/
|
|
6019
|
+
format: string;
|
|
6020
|
+
bytes: number;
|
|
6021
|
+
width: number | null;
|
|
6022
|
+
height: number | null;
|
|
6023
|
+
duration_ms: number | null;
|
|
6024
|
+
} | null;
|
|
6025
|
+
alt_text: string | null;
|
|
6026
|
+
per_platform: {
|
|
6027
|
+
[key: string]: {
|
|
6028
|
+
status?: unknown;
|
|
6029
|
+
url?: unknown;
|
|
6030
|
+
width?: unknown;
|
|
6031
|
+
height?: unknown;
|
|
6032
|
+
bytes?: unknown;
|
|
6033
|
+
warnings?: unknown;
|
|
6034
|
+
errors?: unknown;
|
|
6035
|
+
};
|
|
6036
|
+
};
|
|
6037
|
+
external_id: string | null;
|
|
6038
|
+
/**
|
|
6039
|
+
* Customer-owned key/value context, returned on reads and filterable on list endpoints (exact match). Values are scalars: string (≤500 chars), number, or boolean. At most 50 keys; keys ≤40 chars; total serialized JSON must fit in 16 KiB. Arrays and nested objects are out of scope for v1 (kept out to keep the contract scalar + exact-match). Keep a key’s value type consistent across records — filtering matches type-exactly. Never derive auth/scopes from metadata.
|
|
6040
|
+
*/
|
|
6041
|
+
metadata: {
|
|
6042
|
+
[key: string]: unknown;
|
|
6043
|
+
};
|
|
6044
|
+
/**
|
|
6045
|
+
* ISO-8601 creation time.
|
|
6046
|
+
*/
|
|
6047
|
+
created_at: string;
|
|
6048
|
+
/**
|
|
6049
|
+
* ISO-8601 last-update time.
|
|
6050
|
+
*/
|
|
6051
|
+
updated_at: string;
|
|
6052
|
+
};
|
|
5749
6053
|
}>;
|
|
5750
6054
|
} | {
|
|
5751
6055
|
platform: 'tiktok';
|
|
@@ -5836,6 +6140,82 @@ type PostsListResponses = {
|
|
|
5836
6140
|
* Per-variant alt text; falls back to the asset’s alt_text.
|
|
5837
6141
|
*/
|
|
5838
6142
|
alt_text_override: string | null;
|
|
6143
|
+
/**
|
|
6144
|
+
* The full media asset (kind, content_type, source dimensions, per-platform renditions) — the same shape as GET /v1/media.
|
|
6145
|
+
*/
|
|
6146
|
+
media: {
|
|
6147
|
+
id: string;
|
|
6148
|
+
object: 'media';
|
|
6149
|
+
profile_id: string;
|
|
6150
|
+
/**
|
|
6151
|
+
* The detected asset family (image/video/gif/document). We sniff it from the uploaded bytes. null only in the brief pre-detection window while status is `uploading`; non-null once probed.
|
|
6152
|
+
*/
|
|
6153
|
+
kind: 'image' | 'video' | 'gif' | 'document' | null;
|
|
6154
|
+
/**
|
|
6155
|
+
* The detected MIME of the uploaded original (e.g. video/mp4), sniffed from the bytes. null only in the brief pre-detection window while status is `uploading`.
|
|
6156
|
+
*/
|
|
6157
|
+
content_type: string | null;
|
|
6158
|
+
status: 'uploading' | 'processing' | 'ready' | 'failed';
|
|
6159
|
+
/**
|
|
6160
|
+
* In-pipeline progress: the current step (stage) and a 0–100 bar (percent). Read `status` for the outcome; `percent` can regress on a transient retry.
|
|
6161
|
+
*/
|
|
6162
|
+
progress: {
|
|
6163
|
+
stage: 'queued' | 'analyzing' | 'transcoding' | 'done';
|
|
6164
|
+
percent: number;
|
|
6165
|
+
};
|
|
6166
|
+
raw: boolean;
|
|
6167
|
+
/**
|
|
6168
|
+
* Asset-wide failure (the original itself is unusable, so no platform can succeed); null otherwise.
|
|
6169
|
+
*/
|
|
6170
|
+
error: {
|
|
6171
|
+
code: 'media_unprobeable' | 'media_format_indeterminate' | 'media_format_unsupported' | 'media_too_large' | 'media_aspect_ratio_unsupported' | 'media_resolution_too_low' | 'media_gif_unsupported' | 'media_format_recompressed' | 'media_resolution_downscaled' | 'video_container_unsupported' | 'video_codec_unsupported' | 'video_audio_codec_unsupported' | 'video_too_large' | 'video_too_small' | 'video_dimensions_unsupported' | 'video_dimensions_too_large' | 'video_fps_unsupported' | 'video_fps_too_low' | 'video_aspect_unsupported' | 'video_duration_too_short' | 'video_duration_exceeds_max' | 'video_transform_failed' | 'media_fetch_failed' | 'document_format_unsupported' | 'document_too_large' | 'document_too_many_pages' | 'media_unsupported';
|
|
6172
|
+
message: string;
|
|
6173
|
+
hint?: string;
|
|
6174
|
+
allowed?: Array<unknown | null>;
|
|
6175
|
+
got?: string;
|
|
6176
|
+
/**
|
|
6177
|
+
* A short, friendly end-user line for `code` (render verbatim). `message` stays developer-grade; this is the display string. Size/limit codes interpolate the human cap/size.
|
|
6178
|
+
*/
|
|
6179
|
+
display_error: string;
|
|
6180
|
+
} | null;
|
|
6181
|
+
source: {
|
|
6182
|
+
/**
|
|
6183
|
+
* MIME of the original, e.g. image/heic.
|
|
6184
|
+
*/
|
|
6185
|
+
format: string;
|
|
6186
|
+
bytes: number;
|
|
6187
|
+
width: number | null;
|
|
6188
|
+
height: number | null;
|
|
6189
|
+
duration_ms: number | null;
|
|
6190
|
+
} | null;
|
|
6191
|
+
alt_text: string | null;
|
|
6192
|
+
per_platform: {
|
|
6193
|
+
[key: string]: {
|
|
6194
|
+
status?: unknown;
|
|
6195
|
+
url?: unknown;
|
|
6196
|
+
width?: unknown;
|
|
6197
|
+
height?: unknown;
|
|
6198
|
+
bytes?: unknown;
|
|
6199
|
+
warnings?: unknown;
|
|
6200
|
+
errors?: unknown;
|
|
6201
|
+
};
|
|
6202
|
+
};
|
|
6203
|
+
external_id: string | null;
|
|
6204
|
+
/**
|
|
6205
|
+
* Customer-owned key/value context, returned on reads and filterable on list endpoints (exact match). Values are scalars: string (≤500 chars), number, or boolean. At most 50 keys; keys ≤40 chars; total serialized JSON must fit in 16 KiB. Arrays and nested objects are out of scope for v1 (kept out to keep the contract scalar + exact-match). Keep a key’s value type consistent across records — filtering matches type-exactly. Never derive auth/scopes from metadata.
|
|
6206
|
+
*/
|
|
6207
|
+
metadata: {
|
|
6208
|
+
[key: string]: unknown;
|
|
6209
|
+
};
|
|
6210
|
+
/**
|
|
6211
|
+
* ISO-8601 creation time.
|
|
6212
|
+
*/
|
|
6213
|
+
created_at: string;
|
|
6214
|
+
/**
|
|
6215
|
+
* ISO-8601 last-update time.
|
|
6216
|
+
*/
|
|
6217
|
+
updated_at: string;
|
|
6218
|
+
};
|
|
5839
6219
|
}>;
|
|
5840
6220
|
}>;
|
|
5841
6221
|
/**
|
|
@@ -6664,6 +7044,99 @@ type PostsCreateResponses = {
|
|
|
6664
7044
|
* Per-variant alt text; falls back to the asset’s alt_text.
|
|
6665
7045
|
*/
|
|
6666
7046
|
alt_text_override: string | null;
|
|
7047
|
+
/**
|
|
7048
|
+
* The full media asset (kind, content_type, source dimensions, per-platform renditions) — the same shape as GET /v1/media.
|
|
7049
|
+
*/
|
|
7050
|
+
media: {
|
|
7051
|
+
id: string;
|
|
7052
|
+
object: 'media';
|
|
7053
|
+
profile_id: string;
|
|
7054
|
+
/**
|
|
7055
|
+
* The detected asset family (image/video/gif/document). We sniff it from the uploaded bytes. null only in the brief pre-detection window while status is `uploading`; non-null once probed.
|
|
7056
|
+
*/
|
|
7057
|
+
kind: 'image' | 'video' | 'gif' | 'document' | null;
|
|
7058
|
+
/**
|
|
7059
|
+
* The detected MIME of the uploaded original (e.g. video/mp4), sniffed from the bytes. null only in the brief pre-detection window while status is `uploading`.
|
|
7060
|
+
*/
|
|
7061
|
+
content_type: string | null;
|
|
7062
|
+
status: 'uploading' | 'processing' | 'ready' | 'failed';
|
|
7063
|
+
/**
|
|
7064
|
+
* In-pipeline progress: the current step (stage) and a 0–100 bar (percent). Read `status` for the outcome; `percent` can regress on a transient retry.
|
|
7065
|
+
*/
|
|
7066
|
+
progress: {
|
|
7067
|
+
stage: 'queued' | 'analyzing' | 'transcoding' | 'done';
|
|
7068
|
+
percent: number;
|
|
7069
|
+
};
|
|
7070
|
+
raw: boolean;
|
|
7071
|
+
/**
|
|
7072
|
+
* Asset-wide failure (the original itself is unusable, so no platform can succeed); null otherwise.
|
|
7073
|
+
*/
|
|
7074
|
+
error: {
|
|
7075
|
+
code: 'media_unprobeable' | 'media_format_indeterminate' | 'media_format_unsupported' | 'media_too_large' | 'media_aspect_ratio_unsupported' | 'media_resolution_too_low' | 'media_gif_unsupported' | 'media_format_recompressed' | 'media_resolution_downscaled' | 'video_container_unsupported' | 'video_codec_unsupported' | 'video_audio_codec_unsupported' | 'video_too_large' | 'video_too_small' | 'video_dimensions_unsupported' | 'video_dimensions_too_large' | 'video_fps_unsupported' | 'video_fps_too_low' | 'video_aspect_unsupported' | 'video_duration_too_short' | 'video_duration_exceeds_max' | 'video_transform_failed' | 'media_fetch_failed' | 'document_format_unsupported' | 'document_too_large' | 'document_too_many_pages' | 'media_unsupported';
|
|
7076
|
+
message: string;
|
|
7077
|
+
hint?: string;
|
|
7078
|
+
allowed?: Array<string>;
|
|
7079
|
+
got?: string;
|
|
7080
|
+
/**
|
|
7081
|
+
* A short, friendly end-user line for `code` (render verbatim). `message` stays developer-grade; this is the display string. Size/limit codes interpolate the human cap/size.
|
|
7082
|
+
*/
|
|
7083
|
+
display_error: string;
|
|
7084
|
+
} | null;
|
|
7085
|
+
source: {
|
|
7086
|
+
/**
|
|
7087
|
+
* MIME of the original, e.g. image/heic.
|
|
7088
|
+
*/
|
|
7089
|
+
format: string;
|
|
7090
|
+
bytes: number;
|
|
7091
|
+
width: number | null;
|
|
7092
|
+
height: number | null;
|
|
7093
|
+
duration_ms: number | null;
|
|
7094
|
+
} | null;
|
|
7095
|
+
alt_text: string | null;
|
|
7096
|
+
per_platform: {
|
|
7097
|
+
[key: string]: {
|
|
7098
|
+
status: 'processing' | 'ready' | 'failed';
|
|
7099
|
+
/**
|
|
7100
|
+
* Public URL of this platform’s rendition (null until ready).
|
|
7101
|
+
*/
|
|
7102
|
+
url: string | null;
|
|
7103
|
+
width: number | null;
|
|
7104
|
+
height: number | null;
|
|
7105
|
+
bytes: number | null;
|
|
7106
|
+
warnings: Array<{
|
|
7107
|
+
code?: unknown;
|
|
7108
|
+
message?: unknown;
|
|
7109
|
+
hint?: unknown;
|
|
7110
|
+
allowed?: unknown;
|
|
7111
|
+
got?: unknown;
|
|
7112
|
+
display_error?: unknown;
|
|
7113
|
+
}>;
|
|
7114
|
+
errors: Array<{
|
|
7115
|
+
code?: unknown;
|
|
7116
|
+
message?: unknown;
|
|
7117
|
+
hint?: unknown;
|
|
7118
|
+
allowed?: unknown;
|
|
7119
|
+
got?: unknown;
|
|
7120
|
+
display_error?: unknown;
|
|
7121
|
+
}>;
|
|
7122
|
+
};
|
|
7123
|
+
};
|
|
7124
|
+
external_id: string | null;
|
|
7125
|
+
/**
|
|
7126
|
+
* Customer-owned key/value context, returned on reads and filterable on list endpoints (exact match). Values are scalars: string (≤500 chars), number, or boolean. At most 50 keys; keys ≤40 chars; total serialized JSON must fit in 16 KiB. Arrays and nested objects are out of scope for v1 (kept out to keep the contract scalar + exact-match). Keep a key’s value type consistent across records — filtering matches type-exactly. Never derive auth/scopes from metadata.
|
|
7127
|
+
*/
|
|
7128
|
+
metadata: {
|
|
7129
|
+
[key: string]: string | number | boolean;
|
|
7130
|
+
};
|
|
7131
|
+
/**
|
|
7132
|
+
* ISO-8601 creation time.
|
|
7133
|
+
*/
|
|
7134
|
+
created_at: string;
|
|
7135
|
+
/**
|
|
7136
|
+
* ISO-8601 last-update time.
|
|
7137
|
+
*/
|
|
7138
|
+
updated_at: string;
|
|
7139
|
+
};
|
|
6667
7140
|
}>;
|
|
6668
7141
|
} | {
|
|
6669
7142
|
platform: 'linkedin';
|
|
@@ -6790,6 +7263,99 @@ type PostsCreateResponses = {
|
|
|
6790
7263
|
* Per-variant alt text; falls back to the asset’s alt_text.
|
|
6791
7264
|
*/
|
|
6792
7265
|
alt_text_override: string | null;
|
|
7266
|
+
/**
|
|
7267
|
+
* The full media asset (kind, content_type, source dimensions, per-platform renditions) — the same shape as GET /v1/media.
|
|
7268
|
+
*/
|
|
7269
|
+
media: {
|
|
7270
|
+
id: string;
|
|
7271
|
+
object: 'media';
|
|
7272
|
+
profile_id: string;
|
|
7273
|
+
/**
|
|
7274
|
+
* The detected asset family (image/video/gif/document). We sniff it from the uploaded bytes. null only in the brief pre-detection window while status is `uploading`; non-null once probed.
|
|
7275
|
+
*/
|
|
7276
|
+
kind: 'image' | 'video' | 'gif' | 'document' | null;
|
|
7277
|
+
/**
|
|
7278
|
+
* The detected MIME of the uploaded original (e.g. video/mp4), sniffed from the bytes. null only in the brief pre-detection window while status is `uploading`.
|
|
7279
|
+
*/
|
|
7280
|
+
content_type: string | null;
|
|
7281
|
+
status: 'uploading' | 'processing' | 'ready' | 'failed';
|
|
7282
|
+
/**
|
|
7283
|
+
* In-pipeline progress: the current step (stage) and a 0–100 bar (percent). Read `status` for the outcome; `percent` can regress on a transient retry.
|
|
7284
|
+
*/
|
|
7285
|
+
progress: {
|
|
7286
|
+
stage: 'queued' | 'analyzing' | 'transcoding' | 'done';
|
|
7287
|
+
percent: number;
|
|
7288
|
+
};
|
|
7289
|
+
raw: boolean;
|
|
7290
|
+
/**
|
|
7291
|
+
* Asset-wide failure (the original itself is unusable, so no platform can succeed); null otherwise.
|
|
7292
|
+
*/
|
|
7293
|
+
error: {
|
|
7294
|
+
code: 'media_unprobeable' | 'media_format_indeterminate' | 'media_format_unsupported' | 'media_too_large' | 'media_aspect_ratio_unsupported' | 'media_resolution_too_low' | 'media_gif_unsupported' | 'media_format_recompressed' | 'media_resolution_downscaled' | 'video_container_unsupported' | 'video_codec_unsupported' | 'video_audio_codec_unsupported' | 'video_too_large' | 'video_too_small' | 'video_dimensions_unsupported' | 'video_dimensions_too_large' | 'video_fps_unsupported' | 'video_fps_too_low' | 'video_aspect_unsupported' | 'video_duration_too_short' | 'video_duration_exceeds_max' | 'video_transform_failed' | 'media_fetch_failed' | 'document_format_unsupported' | 'document_too_large' | 'document_too_many_pages' | 'media_unsupported';
|
|
7295
|
+
message: string;
|
|
7296
|
+
hint?: string;
|
|
7297
|
+
allowed?: Array<string>;
|
|
7298
|
+
got?: string;
|
|
7299
|
+
/**
|
|
7300
|
+
* A short, friendly end-user line for `code` (render verbatim). `message` stays developer-grade; this is the display string. Size/limit codes interpolate the human cap/size.
|
|
7301
|
+
*/
|
|
7302
|
+
display_error: string;
|
|
7303
|
+
} | null;
|
|
7304
|
+
source: {
|
|
7305
|
+
/**
|
|
7306
|
+
* MIME of the original, e.g. image/heic.
|
|
7307
|
+
*/
|
|
7308
|
+
format: string;
|
|
7309
|
+
bytes: number;
|
|
7310
|
+
width: number | null;
|
|
7311
|
+
height: number | null;
|
|
7312
|
+
duration_ms: number | null;
|
|
7313
|
+
} | null;
|
|
7314
|
+
alt_text: string | null;
|
|
7315
|
+
per_platform: {
|
|
7316
|
+
[key: string]: {
|
|
7317
|
+
status: 'processing' | 'ready' | 'failed';
|
|
7318
|
+
/**
|
|
7319
|
+
* Public URL of this platform’s rendition (null until ready).
|
|
7320
|
+
*/
|
|
7321
|
+
url: string | null;
|
|
7322
|
+
width: number | null;
|
|
7323
|
+
height: number | null;
|
|
7324
|
+
bytes: number | null;
|
|
7325
|
+
warnings: Array<{
|
|
7326
|
+
code?: unknown;
|
|
7327
|
+
message?: unknown;
|
|
7328
|
+
hint?: unknown;
|
|
7329
|
+
allowed?: unknown;
|
|
7330
|
+
got?: unknown;
|
|
7331
|
+
display_error?: unknown;
|
|
7332
|
+
}>;
|
|
7333
|
+
errors: Array<{
|
|
7334
|
+
code?: unknown;
|
|
7335
|
+
message?: unknown;
|
|
7336
|
+
hint?: unknown;
|
|
7337
|
+
allowed?: unknown;
|
|
7338
|
+
got?: unknown;
|
|
7339
|
+
display_error?: unknown;
|
|
7340
|
+
}>;
|
|
7341
|
+
};
|
|
7342
|
+
};
|
|
7343
|
+
external_id: string | null;
|
|
7344
|
+
/**
|
|
7345
|
+
* Customer-owned key/value context, returned on reads and filterable on list endpoints (exact match). Values are scalars: string (≤500 chars), number, or boolean. At most 50 keys; keys ≤40 chars; total serialized JSON must fit in 16 KiB. Arrays and nested objects are out of scope for v1 (kept out to keep the contract scalar + exact-match). Keep a key’s value type consistent across records — filtering matches type-exactly. Never derive auth/scopes from metadata.
|
|
7346
|
+
*/
|
|
7347
|
+
metadata: {
|
|
7348
|
+
[key: string]: string | number | boolean;
|
|
7349
|
+
};
|
|
7350
|
+
/**
|
|
7351
|
+
* ISO-8601 creation time.
|
|
7352
|
+
*/
|
|
7353
|
+
created_at: string;
|
|
7354
|
+
/**
|
|
7355
|
+
* ISO-8601 last-update time.
|
|
7356
|
+
*/
|
|
7357
|
+
updated_at: string;
|
|
7358
|
+
};
|
|
6793
7359
|
}>;
|
|
6794
7360
|
} | {
|
|
6795
7361
|
platform: 'facebook_page';
|
|
@@ -6844,6 +7410,99 @@ type PostsCreateResponses = {
|
|
|
6844
7410
|
* Per-variant alt text; falls back to the asset’s alt_text.
|
|
6845
7411
|
*/
|
|
6846
7412
|
alt_text_override: string | null;
|
|
7413
|
+
/**
|
|
7414
|
+
* The full media asset (kind, content_type, source dimensions, per-platform renditions) — the same shape as GET /v1/media.
|
|
7415
|
+
*/
|
|
7416
|
+
media: {
|
|
7417
|
+
id: string;
|
|
7418
|
+
object: 'media';
|
|
7419
|
+
profile_id: string;
|
|
7420
|
+
/**
|
|
7421
|
+
* The detected asset family (image/video/gif/document). We sniff it from the uploaded bytes. null only in the brief pre-detection window while status is `uploading`; non-null once probed.
|
|
7422
|
+
*/
|
|
7423
|
+
kind: 'image' | 'video' | 'gif' | 'document' | null;
|
|
7424
|
+
/**
|
|
7425
|
+
* The detected MIME of the uploaded original (e.g. video/mp4), sniffed from the bytes. null only in the brief pre-detection window while status is `uploading`.
|
|
7426
|
+
*/
|
|
7427
|
+
content_type: string | null;
|
|
7428
|
+
status: 'uploading' | 'processing' | 'ready' | 'failed';
|
|
7429
|
+
/**
|
|
7430
|
+
* In-pipeline progress: the current step (stage) and a 0–100 bar (percent). Read `status` for the outcome; `percent` can regress on a transient retry.
|
|
7431
|
+
*/
|
|
7432
|
+
progress: {
|
|
7433
|
+
stage: 'queued' | 'analyzing' | 'transcoding' | 'done';
|
|
7434
|
+
percent: number;
|
|
7435
|
+
};
|
|
7436
|
+
raw: boolean;
|
|
7437
|
+
/**
|
|
7438
|
+
* Asset-wide failure (the original itself is unusable, so no platform can succeed); null otherwise.
|
|
7439
|
+
*/
|
|
7440
|
+
error: {
|
|
7441
|
+
code: 'media_unprobeable' | 'media_format_indeterminate' | 'media_format_unsupported' | 'media_too_large' | 'media_aspect_ratio_unsupported' | 'media_resolution_too_low' | 'media_gif_unsupported' | 'media_format_recompressed' | 'media_resolution_downscaled' | 'video_container_unsupported' | 'video_codec_unsupported' | 'video_audio_codec_unsupported' | 'video_too_large' | 'video_too_small' | 'video_dimensions_unsupported' | 'video_dimensions_too_large' | 'video_fps_unsupported' | 'video_fps_too_low' | 'video_aspect_unsupported' | 'video_duration_too_short' | 'video_duration_exceeds_max' | 'video_transform_failed' | 'media_fetch_failed' | 'document_format_unsupported' | 'document_too_large' | 'document_too_many_pages' | 'media_unsupported';
|
|
7442
|
+
message: string;
|
|
7443
|
+
hint?: string;
|
|
7444
|
+
allowed?: Array<string>;
|
|
7445
|
+
got?: string;
|
|
7446
|
+
/**
|
|
7447
|
+
* A short, friendly end-user line for `code` (render verbatim). `message` stays developer-grade; this is the display string. Size/limit codes interpolate the human cap/size.
|
|
7448
|
+
*/
|
|
7449
|
+
display_error: string;
|
|
7450
|
+
} | null;
|
|
7451
|
+
source: {
|
|
7452
|
+
/**
|
|
7453
|
+
* MIME of the original, e.g. image/heic.
|
|
7454
|
+
*/
|
|
7455
|
+
format: string;
|
|
7456
|
+
bytes: number;
|
|
7457
|
+
width: number | null;
|
|
7458
|
+
height: number | null;
|
|
7459
|
+
duration_ms: number | null;
|
|
7460
|
+
} | null;
|
|
7461
|
+
alt_text: string | null;
|
|
7462
|
+
per_platform: {
|
|
7463
|
+
[key: string]: {
|
|
7464
|
+
status: 'processing' | 'ready' | 'failed';
|
|
7465
|
+
/**
|
|
7466
|
+
* Public URL of this platform’s rendition (null until ready).
|
|
7467
|
+
*/
|
|
7468
|
+
url: string | null;
|
|
7469
|
+
width: number | null;
|
|
7470
|
+
height: number | null;
|
|
7471
|
+
bytes: number | null;
|
|
7472
|
+
warnings: Array<{
|
|
7473
|
+
code?: unknown;
|
|
7474
|
+
message?: unknown;
|
|
7475
|
+
hint?: unknown;
|
|
7476
|
+
allowed?: unknown;
|
|
7477
|
+
got?: unknown;
|
|
7478
|
+
display_error?: unknown;
|
|
7479
|
+
}>;
|
|
7480
|
+
errors: Array<{
|
|
7481
|
+
code?: unknown;
|
|
7482
|
+
message?: unknown;
|
|
7483
|
+
hint?: unknown;
|
|
7484
|
+
allowed?: unknown;
|
|
7485
|
+
got?: unknown;
|
|
7486
|
+
display_error?: unknown;
|
|
7487
|
+
}>;
|
|
7488
|
+
};
|
|
7489
|
+
};
|
|
7490
|
+
external_id: string | null;
|
|
7491
|
+
/**
|
|
7492
|
+
* Customer-owned key/value context, returned on reads and filterable on list endpoints (exact match). Values are scalars: string (≤500 chars), number, or boolean. At most 50 keys; keys ≤40 chars; total serialized JSON must fit in 16 KiB. Arrays and nested objects are out of scope for v1 (kept out to keep the contract scalar + exact-match). Keep a key’s value type consistent across records — filtering matches type-exactly. Never derive auth/scopes from metadata.
|
|
7493
|
+
*/
|
|
7494
|
+
metadata: {
|
|
7495
|
+
[key: string]: string | number | boolean;
|
|
7496
|
+
};
|
|
7497
|
+
/**
|
|
7498
|
+
* ISO-8601 creation time.
|
|
7499
|
+
*/
|
|
7500
|
+
created_at: string;
|
|
7501
|
+
/**
|
|
7502
|
+
* ISO-8601 last-update time.
|
|
7503
|
+
*/
|
|
7504
|
+
updated_at: string;
|
|
7505
|
+
};
|
|
6847
7506
|
}>;
|
|
6848
7507
|
} | {
|
|
6849
7508
|
platform: 'instagram';
|
|
@@ -6939,6 +7598,99 @@ type PostsCreateResponses = {
|
|
|
6939
7598
|
* Per-variant alt text; falls back to the asset’s alt_text.
|
|
6940
7599
|
*/
|
|
6941
7600
|
alt_text_override: string | null;
|
|
7601
|
+
/**
|
|
7602
|
+
* The full media asset (kind, content_type, source dimensions, per-platform renditions) — the same shape as GET /v1/media.
|
|
7603
|
+
*/
|
|
7604
|
+
media: {
|
|
7605
|
+
id: string;
|
|
7606
|
+
object: 'media';
|
|
7607
|
+
profile_id: string;
|
|
7608
|
+
/**
|
|
7609
|
+
* The detected asset family (image/video/gif/document). We sniff it from the uploaded bytes. null only in the brief pre-detection window while status is `uploading`; non-null once probed.
|
|
7610
|
+
*/
|
|
7611
|
+
kind: 'image' | 'video' | 'gif' | 'document' | null;
|
|
7612
|
+
/**
|
|
7613
|
+
* The detected MIME of the uploaded original (e.g. video/mp4), sniffed from the bytes. null only in the brief pre-detection window while status is `uploading`.
|
|
7614
|
+
*/
|
|
7615
|
+
content_type: string | null;
|
|
7616
|
+
status: 'uploading' | 'processing' | 'ready' | 'failed';
|
|
7617
|
+
/**
|
|
7618
|
+
* In-pipeline progress: the current step (stage) and a 0–100 bar (percent). Read `status` for the outcome; `percent` can regress on a transient retry.
|
|
7619
|
+
*/
|
|
7620
|
+
progress: {
|
|
7621
|
+
stage: 'queued' | 'analyzing' | 'transcoding' | 'done';
|
|
7622
|
+
percent: number;
|
|
7623
|
+
};
|
|
7624
|
+
raw: boolean;
|
|
7625
|
+
/**
|
|
7626
|
+
* Asset-wide failure (the original itself is unusable, so no platform can succeed); null otherwise.
|
|
7627
|
+
*/
|
|
7628
|
+
error: {
|
|
7629
|
+
code: 'media_unprobeable' | 'media_format_indeterminate' | 'media_format_unsupported' | 'media_too_large' | 'media_aspect_ratio_unsupported' | 'media_resolution_too_low' | 'media_gif_unsupported' | 'media_format_recompressed' | 'media_resolution_downscaled' | 'video_container_unsupported' | 'video_codec_unsupported' | 'video_audio_codec_unsupported' | 'video_too_large' | 'video_too_small' | 'video_dimensions_unsupported' | 'video_dimensions_too_large' | 'video_fps_unsupported' | 'video_fps_too_low' | 'video_aspect_unsupported' | 'video_duration_too_short' | 'video_duration_exceeds_max' | 'video_transform_failed' | 'media_fetch_failed' | 'document_format_unsupported' | 'document_too_large' | 'document_too_many_pages' | 'media_unsupported';
|
|
7630
|
+
message: string;
|
|
7631
|
+
hint?: string;
|
|
7632
|
+
allowed?: Array<string>;
|
|
7633
|
+
got?: string;
|
|
7634
|
+
/**
|
|
7635
|
+
* A short, friendly end-user line for `code` (render verbatim). `message` stays developer-grade; this is the display string. Size/limit codes interpolate the human cap/size.
|
|
7636
|
+
*/
|
|
7637
|
+
display_error: string;
|
|
7638
|
+
} | null;
|
|
7639
|
+
source: {
|
|
7640
|
+
/**
|
|
7641
|
+
* MIME of the original, e.g. image/heic.
|
|
7642
|
+
*/
|
|
7643
|
+
format: string;
|
|
7644
|
+
bytes: number;
|
|
7645
|
+
width: number | null;
|
|
7646
|
+
height: number | null;
|
|
7647
|
+
duration_ms: number | null;
|
|
7648
|
+
} | null;
|
|
7649
|
+
alt_text: string | null;
|
|
7650
|
+
per_platform: {
|
|
7651
|
+
[key: string]: {
|
|
7652
|
+
status: 'processing' | 'ready' | 'failed';
|
|
7653
|
+
/**
|
|
7654
|
+
* Public URL of this platform’s rendition (null until ready).
|
|
7655
|
+
*/
|
|
7656
|
+
url: string | null;
|
|
7657
|
+
width: number | null;
|
|
7658
|
+
height: number | null;
|
|
7659
|
+
bytes: number | null;
|
|
7660
|
+
warnings: Array<{
|
|
7661
|
+
code?: unknown;
|
|
7662
|
+
message?: unknown;
|
|
7663
|
+
hint?: unknown;
|
|
7664
|
+
allowed?: unknown;
|
|
7665
|
+
got?: unknown;
|
|
7666
|
+
display_error?: unknown;
|
|
7667
|
+
}>;
|
|
7668
|
+
errors: Array<{
|
|
7669
|
+
code?: unknown;
|
|
7670
|
+
message?: unknown;
|
|
7671
|
+
hint?: unknown;
|
|
7672
|
+
allowed?: unknown;
|
|
7673
|
+
got?: unknown;
|
|
7674
|
+
display_error?: unknown;
|
|
7675
|
+
}>;
|
|
7676
|
+
};
|
|
7677
|
+
};
|
|
7678
|
+
external_id: string | null;
|
|
7679
|
+
/**
|
|
7680
|
+
* Customer-owned key/value context, returned on reads and filterable on list endpoints (exact match). Values are scalars: string (≤500 chars), number, or boolean. At most 50 keys; keys ≤40 chars; total serialized JSON must fit in 16 KiB. Arrays and nested objects are out of scope for v1 (kept out to keep the contract scalar + exact-match). Keep a key’s value type consistent across records — filtering matches type-exactly. Never derive auth/scopes from metadata.
|
|
7681
|
+
*/
|
|
7682
|
+
metadata: {
|
|
7683
|
+
[key: string]: string | number | boolean;
|
|
7684
|
+
};
|
|
7685
|
+
/**
|
|
7686
|
+
* ISO-8601 creation time.
|
|
7687
|
+
*/
|
|
7688
|
+
created_at: string;
|
|
7689
|
+
/**
|
|
7690
|
+
* ISO-8601 last-update time.
|
|
7691
|
+
*/
|
|
7692
|
+
updated_at: string;
|
|
7693
|
+
};
|
|
6942
7694
|
}>;
|
|
6943
7695
|
} | {
|
|
6944
7696
|
platform: 'tiktok';
|
|
@@ -7029,6 +7781,99 @@ type PostsCreateResponses = {
|
|
|
7029
7781
|
* Per-variant alt text; falls back to the asset’s alt_text.
|
|
7030
7782
|
*/
|
|
7031
7783
|
alt_text_override: string | null;
|
|
7784
|
+
/**
|
|
7785
|
+
* The full media asset (kind, content_type, source dimensions, per-platform renditions) — the same shape as GET /v1/media.
|
|
7786
|
+
*/
|
|
7787
|
+
media: {
|
|
7788
|
+
id: string;
|
|
7789
|
+
object: 'media';
|
|
7790
|
+
profile_id: string;
|
|
7791
|
+
/**
|
|
7792
|
+
* The detected asset family (image/video/gif/document). We sniff it from the uploaded bytes. null only in the brief pre-detection window while status is `uploading`; non-null once probed.
|
|
7793
|
+
*/
|
|
7794
|
+
kind: 'image' | 'video' | 'gif' | 'document' | null;
|
|
7795
|
+
/**
|
|
7796
|
+
* The detected MIME of the uploaded original (e.g. video/mp4), sniffed from the bytes. null only in the brief pre-detection window while status is `uploading`.
|
|
7797
|
+
*/
|
|
7798
|
+
content_type: string | null;
|
|
7799
|
+
status: 'uploading' | 'processing' | 'ready' | 'failed';
|
|
7800
|
+
/**
|
|
7801
|
+
* In-pipeline progress: the current step (stage) and a 0–100 bar (percent). Read `status` for the outcome; `percent` can regress on a transient retry.
|
|
7802
|
+
*/
|
|
7803
|
+
progress: {
|
|
7804
|
+
stage: 'queued' | 'analyzing' | 'transcoding' | 'done';
|
|
7805
|
+
percent: number;
|
|
7806
|
+
};
|
|
7807
|
+
raw: boolean;
|
|
7808
|
+
/**
|
|
7809
|
+
* Asset-wide failure (the original itself is unusable, so no platform can succeed); null otherwise.
|
|
7810
|
+
*/
|
|
7811
|
+
error: {
|
|
7812
|
+
code: 'media_unprobeable' | 'media_format_indeterminate' | 'media_format_unsupported' | 'media_too_large' | 'media_aspect_ratio_unsupported' | 'media_resolution_too_low' | 'media_gif_unsupported' | 'media_format_recompressed' | 'media_resolution_downscaled' | 'video_container_unsupported' | 'video_codec_unsupported' | 'video_audio_codec_unsupported' | 'video_too_large' | 'video_too_small' | 'video_dimensions_unsupported' | 'video_dimensions_too_large' | 'video_fps_unsupported' | 'video_fps_too_low' | 'video_aspect_unsupported' | 'video_duration_too_short' | 'video_duration_exceeds_max' | 'video_transform_failed' | 'media_fetch_failed' | 'document_format_unsupported' | 'document_too_large' | 'document_too_many_pages' | 'media_unsupported';
|
|
7813
|
+
message: string;
|
|
7814
|
+
hint?: string;
|
|
7815
|
+
allowed?: Array<string>;
|
|
7816
|
+
got?: string;
|
|
7817
|
+
/**
|
|
7818
|
+
* A short, friendly end-user line for `code` (render verbatim). `message` stays developer-grade; this is the display string. Size/limit codes interpolate the human cap/size.
|
|
7819
|
+
*/
|
|
7820
|
+
display_error: string;
|
|
7821
|
+
} | null;
|
|
7822
|
+
source: {
|
|
7823
|
+
/**
|
|
7824
|
+
* MIME of the original, e.g. image/heic.
|
|
7825
|
+
*/
|
|
7826
|
+
format: string;
|
|
7827
|
+
bytes: number;
|
|
7828
|
+
width: number | null;
|
|
7829
|
+
height: number | null;
|
|
7830
|
+
duration_ms: number | null;
|
|
7831
|
+
} | null;
|
|
7832
|
+
alt_text: string | null;
|
|
7833
|
+
per_platform: {
|
|
7834
|
+
[key: string]: {
|
|
7835
|
+
status: 'processing' | 'ready' | 'failed';
|
|
7836
|
+
/**
|
|
7837
|
+
* Public URL of this platform’s rendition (null until ready).
|
|
7838
|
+
*/
|
|
7839
|
+
url: string | null;
|
|
7840
|
+
width: number | null;
|
|
7841
|
+
height: number | null;
|
|
7842
|
+
bytes: number | null;
|
|
7843
|
+
warnings: Array<{
|
|
7844
|
+
code?: unknown;
|
|
7845
|
+
message?: unknown;
|
|
7846
|
+
hint?: unknown;
|
|
7847
|
+
allowed?: unknown;
|
|
7848
|
+
got?: unknown;
|
|
7849
|
+
display_error?: unknown;
|
|
7850
|
+
}>;
|
|
7851
|
+
errors: Array<{
|
|
7852
|
+
code?: unknown;
|
|
7853
|
+
message?: unknown;
|
|
7854
|
+
hint?: unknown;
|
|
7855
|
+
allowed?: unknown;
|
|
7856
|
+
got?: unknown;
|
|
7857
|
+
display_error?: unknown;
|
|
7858
|
+
}>;
|
|
7859
|
+
};
|
|
7860
|
+
};
|
|
7861
|
+
external_id: string | null;
|
|
7862
|
+
/**
|
|
7863
|
+
* Customer-owned key/value context, returned on reads and filterable on list endpoints (exact match). Values are scalars: string (≤500 chars), number, or boolean. At most 50 keys; keys ≤40 chars; total serialized JSON must fit in 16 KiB. Arrays and nested objects are out of scope for v1 (kept out to keep the contract scalar + exact-match). Keep a key’s value type consistent across records — filtering matches type-exactly. Never derive auth/scopes from metadata.
|
|
7864
|
+
*/
|
|
7865
|
+
metadata: {
|
|
7866
|
+
[key: string]: string | number | boolean;
|
|
7867
|
+
};
|
|
7868
|
+
/**
|
|
7869
|
+
* ISO-8601 creation time.
|
|
7870
|
+
*/
|
|
7871
|
+
created_at: string;
|
|
7872
|
+
/**
|
|
7873
|
+
* ISO-8601 last-update time.
|
|
7874
|
+
*/
|
|
7875
|
+
updated_at: string;
|
|
7876
|
+
};
|
|
7032
7877
|
}>;
|
|
7033
7878
|
}>;
|
|
7034
7879
|
/**
|
|
@@ -7633,7 +8478,100 @@ type PostsGetResponses = {
|
|
|
7633
8478
|
* Per-variant alt text; falls back to the asset’s alt_text.
|
|
7634
8479
|
*/
|
|
7635
8480
|
alt_text_override: string | null;
|
|
7636
|
-
|
|
8481
|
+
/**
|
|
8482
|
+
* The full media asset (kind, content_type, source dimensions, per-platform renditions) — the same shape as GET /v1/media.
|
|
8483
|
+
*/
|
|
8484
|
+
media: {
|
|
8485
|
+
id: string;
|
|
8486
|
+
object: 'media';
|
|
8487
|
+
profile_id: string;
|
|
8488
|
+
/**
|
|
8489
|
+
* The detected asset family (image/video/gif/document). We sniff it from the uploaded bytes. null only in the brief pre-detection window while status is `uploading`; non-null once probed.
|
|
8490
|
+
*/
|
|
8491
|
+
kind: 'image' | 'video' | 'gif' | 'document' | null;
|
|
8492
|
+
/**
|
|
8493
|
+
* The detected MIME of the uploaded original (e.g. video/mp4), sniffed from the bytes. null only in the brief pre-detection window while status is `uploading`.
|
|
8494
|
+
*/
|
|
8495
|
+
content_type: string | null;
|
|
8496
|
+
status: 'uploading' | 'processing' | 'ready' | 'failed';
|
|
8497
|
+
/**
|
|
8498
|
+
* In-pipeline progress: the current step (stage) and a 0–100 bar (percent). Read `status` for the outcome; `percent` can regress on a transient retry.
|
|
8499
|
+
*/
|
|
8500
|
+
progress: {
|
|
8501
|
+
stage: 'queued' | 'analyzing' | 'transcoding' | 'done';
|
|
8502
|
+
percent: number;
|
|
8503
|
+
};
|
|
8504
|
+
raw: boolean;
|
|
8505
|
+
/**
|
|
8506
|
+
* Asset-wide failure (the original itself is unusable, so no platform can succeed); null otherwise.
|
|
8507
|
+
*/
|
|
8508
|
+
error: {
|
|
8509
|
+
code: 'media_unprobeable' | 'media_format_indeterminate' | 'media_format_unsupported' | 'media_too_large' | 'media_aspect_ratio_unsupported' | 'media_resolution_too_low' | 'media_gif_unsupported' | 'media_format_recompressed' | 'media_resolution_downscaled' | 'video_container_unsupported' | 'video_codec_unsupported' | 'video_audio_codec_unsupported' | 'video_too_large' | 'video_too_small' | 'video_dimensions_unsupported' | 'video_dimensions_too_large' | 'video_fps_unsupported' | 'video_fps_too_low' | 'video_aspect_unsupported' | 'video_duration_too_short' | 'video_duration_exceeds_max' | 'video_transform_failed' | 'media_fetch_failed' | 'document_format_unsupported' | 'document_too_large' | 'document_too_many_pages' | 'media_unsupported';
|
|
8510
|
+
message: string;
|
|
8511
|
+
hint?: string;
|
|
8512
|
+
allowed?: Array<string>;
|
|
8513
|
+
got?: string;
|
|
8514
|
+
/**
|
|
8515
|
+
* A short, friendly end-user line for `code` (render verbatim). `message` stays developer-grade; this is the display string. Size/limit codes interpolate the human cap/size.
|
|
8516
|
+
*/
|
|
8517
|
+
display_error: string;
|
|
8518
|
+
} | null;
|
|
8519
|
+
source: {
|
|
8520
|
+
/**
|
|
8521
|
+
* MIME of the original, e.g. image/heic.
|
|
8522
|
+
*/
|
|
8523
|
+
format: string;
|
|
8524
|
+
bytes: number;
|
|
8525
|
+
width: number | null;
|
|
8526
|
+
height: number | null;
|
|
8527
|
+
duration_ms: number | null;
|
|
8528
|
+
} | null;
|
|
8529
|
+
alt_text: string | null;
|
|
8530
|
+
per_platform: {
|
|
8531
|
+
[key: string]: {
|
|
8532
|
+
status: 'processing' | 'ready' | 'failed';
|
|
8533
|
+
/**
|
|
8534
|
+
* Public URL of this platform’s rendition (null until ready).
|
|
8535
|
+
*/
|
|
8536
|
+
url: string | null;
|
|
8537
|
+
width: number | null;
|
|
8538
|
+
height: number | null;
|
|
8539
|
+
bytes: number | null;
|
|
8540
|
+
warnings: Array<{
|
|
8541
|
+
code?: unknown;
|
|
8542
|
+
message?: unknown;
|
|
8543
|
+
hint?: unknown;
|
|
8544
|
+
allowed?: unknown;
|
|
8545
|
+
got?: unknown;
|
|
8546
|
+
display_error?: unknown;
|
|
8547
|
+
}>;
|
|
8548
|
+
errors: Array<{
|
|
8549
|
+
code?: unknown;
|
|
8550
|
+
message?: unknown;
|
|
8551
|
+
hint?: unknown;
|
|
8552
|
+
allowed?: unknown;
|
|
8553
|
+
got?: unknown;
|
|
8554
|
+
display_error?: unknown;
|
|
8555
|
+
}>;
|
|
8556
|
+
};
|
|
8557
|
+
};
|
|
8558
|
+
external_id: string | null;
|
|
8559
|
+
/**
|
|
8560
|
+
* Customer-owned key/value context, returned on reads and filterable on list endpoints (exact match). Values are scalars: string (≤500 chars), number, or boolean. At most 50 keys; keys ≤40 chars; total serialized JSON must fit in 16 KiB. Arrays and nested objects are out of scope for v1 (kept out to keep the contract scalar + exact-match). Keep a key’s value type consistent across records — filtering matches type-exactly. Never derive auth/scopes from metadata.
|
|
8561
|
+
*/
|
|
8562
|
+
metadata: {
|
|
8563
|
+
[key: string]: string | number | boolean;
|
|
8564
|
+
};
|
|
8565
|
+
/**
|
|
8566
|
+
* ISO-8601 creation time.
|
|
8567
|
+
*/
|
|
8568
|
+
created_at: string;
|
|
8569
|
+
/**
|
|
8570
|
+
* ISO-8601 last-update time.
|
|
8571
|
+
*/
|
|
8572
|
+
updated_at: string;
|
|
8573
|
+
};
|
|
8574
|
+
}>;
|
|
7637
8575
|
} | {
|
|
7638
8576
|
platform: 'linkedin';
|
|
7639
8577
|
post_type: 'text' | 'single_image' | 'multi_image' | 'video';
|
|
@@ -7759,6 +8697,99 @@ type PostsGetResponses = {
|
|
|
7759
8697
|
* Per-variant alt text; falls back to the asset’s alt_text.
|
|
7760
8698
|
*/
|
|
7761
8699
|
alt_text_override: string | null;
|
|
8700
|
+
/**
|
|
8701
|
+
* The full media asset (kind, content_type, source dimensions, per-platform renditions) — the same shape as GET /v1/media.
|
|
8702
|
+
*/
|
|
8703
|
+
media: {
|
|
8704
|
+
id: string;
|
|
8705
|
+
object: 'media';
|
|
8706
|
+
profile_id: string;
|
|
8707
|
+
/**
|
|
8708
|
+
* The detected asset family (image/video/gif/document). We sniff it from the uploaded bytes. null only in the brief pre-detection window while status is `uploading`; non-null once probed.
|
|
8709
|
+
*/
|
|
8710
|
+
kind: 'image' | 'video' | 'gif' | 'document' | null;
|
|
8711
|
+
/**
|
|
8712
|
+
* The detected MIME of the uploaded original (e.g. video/mp4), sniffed from the bytes. null only in the brief pre-detection window while status is `uploading`.
|
|
8713
|
+
*/
|
|
8714
|
+
content_type: string | null;
|
|
8715
|
+
status: 'uploading' | 'processing' | 'ready' | 'failed';
|
|
8716
|
+
/**
|
|
8717
|
+
* In-pipeline progress: the current step (stage) and a 0–100 bar (percent). Read `status` for the outcome; `percent` can regress on a transient retry.
|
|
8718
|
+
*/
|
|
8719
|
+
progress: {
|
|
8720
|
+
stage: 'queued' | 'analyzing' | 'transcoding' | 'done';
|
|
8721
|
+
percent: number;
|
|
8722
|
+
};
|
|
8723
|
+
raw: boolean;
|
|
8724
|
+
/**
|
|
8725
|
+
* Asset-wide failure (the original itself is unusable, so no platform can succeed); null otherwise.
|
|
8726
|
+
*/
|
|
8727
|
+
error: {
|
|
8728
|
+
code: 'media_unprobeable' | 'media_format_indeterminate' | 'media_format_unsupported' | 'media_too_large' | 'media_aspect_ratio_unsupported' | 'media_resolution_too_low' | 'media_gif_unsupported' | 'media_format_recompressed' | 'media_resolution_downscaled' | 'video_container_unsupported' | 'video_codec_unsupported' | 'video_audio_codec_unsupported' | 'video_too_large' | 'video_too_small' | 'video_dimensions_unsupported' | 'video_dimensions_too_large' | 'video_fps_unsupported' | 'video_fps_too_low' | 'video_aspect_unsupported' | 'video_duration_too_short' | 'video_duration_exceeds_max' | 'video_transform_failed' | 'media_fetch_failed' | 'document_format_unsupported' | 'document_too_large' | 'document_too_many_pages' | 'media_unsupported';
|
|
8729
|
+
message: string;
|
|
8730
|
+
hint?: string;
|
|
8731
|
+
allowed?: Array<string>;
|
|
8732
|
+
got?: string;
|
|
8733
|
+
/**
|
|
8734
|
+
* A short, friendly end-user line for `code` (render verbatim). `message` stays developer-grade; this is the display string. Size/limit codes interpolate the human cap/size.
|
|
8735
|
+
*/
|
|
8736
|
+
display_error: string;
|
|
8737
|
+
} | null;
|
|
8738
|
+
source: {
|
|
8739
|
+
/**
|
|
8740
|
+
* MIME of the original, e.g. image/heic.
|
|
8741
|
+
*/
|
|
8742
|
+
format: string;
|
|
8743
|
+
bytes: number;
|
|
8744
|
+
width: number | null;
|
|
8745
|
+
height: number | null;
|
|
8746
|
+
duration_ms: number | null;
|
|
8747
|
+
} | null;
|
|
8748
|
+
alt_text: string | null;
|
|
8749
|
+
per_platform: {
|
|
8750
|
+
[key: string]: {
|
|
8751
|
+
status: 'processing' | 'ready' | 'failed';
|
|
8752
|
+
/**
|
|
8753
|
+
* Public URL of this platform’s rendition (null until ready).
|
|
8754
|
+
*/
|
|
8755
|
+
url: string | null;
|
|
8756
|
+
width: number | null;
|
|
8757
|
+
height: number | null;
|
|
8758
|
+
bytes: number | null;
|
|
8759
|
+
warnings: Array<{
|
|
8760
|
+
code?: unknown;
|
|
8761
|
+
message?: unknown;
|
|
8762
|
+
hint?: unknown;
|
|
8763
|
+
allowed?: unknown;
|
|
8764
|
+
got?: unknown;
|
|
8765
|
+
display_error?: unknown;
|
|
8766
|
+
}>;
|
|
8767
|
+
errors: Array<{
|
|
8768
|
+
code?: unknown;
|
|
8769
|
+
message?: unknown;
|
|
8770
|
+
hint?: unknown;
|
|
8771
|
+
allowed?: unknown;
|
|
8772
|
+
got?: unknown;
|
|
8773
|
+
display_error?: unknown;
|
|
8774
|
+
}>;
|
|
8775
|
+
};
|
|
8776
|
+
};
|
|
8777
|
+
external_id: string | null;
|
|
8778
|
+
/**
|
|
8779
|
+
* Customer-owned key/value context, returned on reads and filterable on list endpoints (exact match). Values are scalars: string (≤500 chars), number, or boolean. At most 50 keys; keys ≤40 chars; total serialized JSON must fit in 16 KiB. Arrays and nested objects are out of scope for v1 (kept out to keep the contract scalar + exact-match). Keep a key’s value type consistent across records — filtering matches type-exactly. Never derive auth/scopes from metadata.
|
|
8780
|
+
*/
|
|
8781
|
+
metadata: {
|
|
8782
|
+
[key: string]: string | number | boolean;
|
|
8783
|
+
};
|
|
8784
|
+
/**
|
|
8785
|
+
* ISO-8601 creation time.
|
|
8786
|
+
*/
|
|
8787
|
+
created_at: string;
|
|
8788
|
+
/**
|
|
8789
|
+
* ISO-8601 last-update time.
|
|
8790
|
+
*/
|
|
8791
|
+
updated_at: string;
|
|
8792
|
+
};
|
|
7762
8793
|
}>;
|
|
7763
8794
|
} | {
|
|
7764
8795
|
platform: 'facebook_page';
|
|
@@ -7813,6 +8844,99 @@ type PostsGetResponses = {
|
|
|
7813
8844
|
* Per-variant alt text; falls back to the asset’s alt_text.
|
|
7814
8845
|
*/
|
|
7815
8846
|
alt_text_override: string | null;
|
|
8847
|
+
/**
|
|
8848
|
+
* The full media asset (kind, content_type, source dimensions, per-platform renditions) — the same shape as GET /v1/media.
|
|
8849
|
+
*/
|
|
8850
|
+
media: {
|
|
8851
|
+
id: string;
|
|
8852
|
+
object: 'media';
|
|
8853
|
+
profile_id: string;
|
|
8854
|
+
/**
|
|
8855
|
+
* The detected asset family (image/video/gif/document). We sniff it from the uploaded bytes. null only in the brief pre-detection window while status is `uploading`; non-null once probed.
|
|
8856
|
+
*/
|
|
8857
|
+
kind: 'image' | 'video' | 'gif' | 'document' | null;
|
|
8858
|
+
/**
|
|
8859
|
+
* The detected MIME of the uploaded original (e.g. video/mp4), sniffed from the bytes. null only in the brief pre-detection window while status is `uploading`.
|
|
8860
|
+
*/
|
|
8861
|
+
content_type: string | null;
|
|
8862
|
+
status: 'uploading' | 'processing' | 'ready' | 'failed';
|
|
8863
|
+
/**
|
|
8864
|
+
* In-pipeline progress: the current step (stage) and a 0–100 bar (percent). Read `status` for the outcome; `percent` can regress on a transient retry.
|
|
8865
|
+
*/
|
|
8866
|
+
progress: {
|
|
8867
|
+
stage: 'queued' | 'analyzing' | 'transcoding' | 'done';
|
|
8868
|
+
percent: number;
|
|
8869
|
+
};
|
|
8870
|
+
raw: boolean;
|
|
8871
|
+
/**
|
|
8872
|
+
* Asset-wide failure (the original itself is unusable, so no platform can succeed); null otherwise.
|
|
8873
|
+
*/
|
|
8874
|
+
error: {
|
|
8875
|
+
code: 'media_unprobeable' | 'media_format_indeterminate' | 'media_format_unsupported' | 'media_too_large' | 'media_aspect_ratio_unsupported' | 'media_resolution_too_low' | 'media_gif_unsupported' | 'media_format_recompressed' | 'media_resolution_downscaled' | 'video_container_unsupported' | 'video_codec_unsupported' | 'video_audio_codec_unsupported' | 'video_too_large' | 'video_too_small' | 'video_dimensions_unsupported' | 'video_dimensions_too_large' | 'video_fps_unsupported' | 'video_fps_too_low' | 'video_aspect_unsupported' | 'video_duration_too_short' | 'video_duration_exceeds_max' | 'video_transform_failed' | 'media_fetch_failed' | 'document_format_unsupported' | 'document_too_large' | 'document_too_many_pages' | 'media_unsupported';
|
|
8876
|
+
message: string;
|
|
8877
|
+
hint?: string;
|
|
8878
|
+
allowed?: Array<string>;
|
|
8879
|
+
got?: string;
|
|
8880
|
+
/**
|
|
8881
|
+
* A short, friendly end-user line for `code` (render verbatim). `message` stays developer-grade; this is the display string. Size/limit codes interpolate the human cap/size.
|
|
8882
|
+
*/
|
|
8883
|
+
display_error: string;
|
|
8884
|
+
} | null;
|
|
8885
|
+
source: {
|
|
8886
|
+
/**
|
|
8887
|
+
* MIME of the original, e.g. image/heic.
|
|
8888
|
+
*/
|
|
8889
|
+
format: string;
|
|
8890
|
+
bytes: number;
|
|
8891
|
+
width: number | null;
|
|
8892
|
+
height: number | null;
|
|
8893
|
+
duration_ms: number | null;
|
|
8894
|
+
} | null;
|
|
8895
|
+
alt_text: string | null;
|
|
8896
|
+
per_platform: {
|
|
8897
|
+
[key: string]: {
|
|
8898
|
+
status: 'processing' | 'ready' | 'failed';
|
|
8899
|
+
/**
|
|
8900
|
+
* Public URL of this platform’s rendition (null until ready).
|
|
8901
|
+
*/
|
|
8902
|
+
url: string | null;
|
|
8903
|
+
width: number | null;
|
|
8904
|
+
height: number | null;
|
|
8905
|
+
bytes: number | null;
|
|
8906
|
+
warnings: Array<{
|
|
8907
|
+
code?: unknown;
|
|
8908
|
+
message?: unknown;
|
|
8909
|
+
hint?: unknown;
|
|
8910
|
+
allowed?: unknown;
|
|
8911
|
+
got?: unknown;
|
|
8912
|
+
display_error?: unknown;
|
|
8913
|
+
}>;
|
|
8914
|
+
errors: Array<{
|
|
8915
|
+
code?: unknown;
|
|
8916
|
+
message?: unknown;
|
|
8917
|
+
hint?: unknown;
|
|
8918
|
+
allowed?: unknown;
|
|
8919
|
+
got?: unknown;
|
|
8920
|
+
display_error?: unknown;
|
|
8921
|
+
}>;
|
|
8922
|
+
};
|
|
8923
|
+
};
|
|
8924
|
+
external_id: string | null;
|
|
8925
|
+
/**
|
|
8926
|
+
* Customer-owned key/value context, returned on reads and filterable on list endpoints (exact match). Values are scalars: string (≤500 chars), number, or boolean. At most 50 keys; keys ≤40 chars; total serialized JSON must fit in 16 KiB. Arrays and nested objects are out of scope for v1 (kept out to keep the contract scalar + exact-match). Keep a key’s value type consistent across records — filtering matches type-exactly. Never derive auth/scopes from metadata.
|
|
8927
|
+
*/
|
|
8928
|
+
metadata: {
|
|
8929
|
+
[key: string]: string | number | boolean;
|
|
8930
|
+
};
|
|
8931
|
+
/**
|
|
8932
|
+
* ISO-8601 creation time.
|
|
8933
|
+
*/
|
|
8934
|
+
created_at: string;
|
|
8935
|
+
/**
|
|
8936
|
+
* ISO-8601 last-update time.
|
|
8937
|
+
*/
|
|
8938
|
+
updated_at: string;
|
|
8939
|
+
};
|
|
7816
8940
|
}>;
|
|
7817
8941
|
} | {
|
|
7818
8942
|
platform: 'instagram';
|
|
@@ -7908,6 +9032,99 @@ type PostsGetResponses = {
|
|
|
7908
9032
|
* Per-variant alt text; falls back to the asset’s alt_text.
|
|
7909
9033
|
*/
|
|
7910
9034
|
alt_text_override: string | null;
|
|
9035
|
+
/**
|
|
9036
|
+
* The full media asset (kind, content_type, source dimensions, per-platform renditions) — the same shape as GET /v1/media.
|
|
9037
|
+
*/
|
|
9038
|
+
media: {
|
|
9039
|
+
id: string;
|
|
9040
|
+
object: 'media';
|
|
9041
|
+
profile_id: string;
|
|
9042
|
+
/**
|
|
9043
|
+
* The detected asset family (image/video/gif/document). We sniff it from the uploaded bytes. null only in the brief pre-detection window while status is `uploading`; non-null once probed.
|
|
9044
|
+
*/
|
|
9045
|
+
kind: 'image' | 'video' | 'gif' | 'document' | null;
|
|
9046
|
+
/**
|
|
9047
|
+
* The detected MIME of the uploaded original (e.g. video/mp4), sniffed from the bytes. null only in the brief pre-detection window while status is `uploading`.
|
|
9048
|
+
*/
|
|
9049
|
+
content_type: string | null;
|
|
9050
|
+
status: 'uploading' | 'processing' | 'ready' | 'failed';
|
|
9051
|
+
/**
|
|
9052
|
+
* In-pipeline progress: the current step (stage) and a 0–100 bar (percent). Read `status` for the outcome; `percent` can regress on a transient retry.
|
|
9053
|
+
*/
|
|
9054
|
+
progress: {
|
|
9055
|
+
stage: 'queued' | 'analyzing' | 'transcoding' | 'done';
|
|
9056
|
+
percent: number;
|
|
9057
|
+
};
|
|
9058
|
+
raw: boolean;
|
|
9059
|
+
/**
|
|
9060
|
+
* Asset-wide failure (the original itself is unusable, so no platform can succeed); null otherwise.
|
|
9061
|
+
*/
|
|
9062
|
+
error: {
|
|
9063
|
+
code: 'media_unprobeable' | 'media_format_indeterminate' | 'media_format_unsupported' | 'media_too_large' | 'media_aspect_ratio_unsupported' | 'media_resolution_too_low' | 'media_gif_unsupported' | 'media_format_recompressed' | 'media_resolution_downscaled' | 'video_container_unsupported' | 'video_codec_unsupported' | 'video_audio_codec_unsupported' | 'video_too_large' | 'video_too_small' | 'video_dimensions_unsupported' | 'video_dimensions_too_large' | 'video_fps_unsupported' | 'video_fps_too_low' | 'video_aspect_unsupported' | 'video_duration_too_short' | 'video_duration_exceeds_max' | 'video_transform_failed' | 'media_fetch_failed' | 'document_format_unsupported' | 'document_too_large' | 'document_too_many_pages' | 'media_unsupported';
|
|
9064
|
+
message: string;
|
|
9065
|
+
hint?: string;
|
|
9066
|
+
allowed?: Array<string>;
|
|
9067
|
+
got?: string;
|
|
9068
|
+
/**
|
|
9069
|
+
* A short, friendly end-user line for `code` (render verbatim). `message` stays developer-grade; this is the display string. Size/limit codes interpolate the human cap/size.
|
|
9070
|
+
*/
|
|
9071
|
+
display_error: string;
|
|
9072
|
+
} | null;
|
|
9073
|
+
source: {
|
|
9074
|
+
/**
|
|
9075
|
+
* MIME of the original, e.g. image/heic.
|
|
9076
|
+
*/
|
|
9077
|
+
format: string;
|
|
9078
|
+
bytes: number;
|
|
9079
|
+
width: number | null;
|
|
9080
|
+
height: number | null;
|
|
9081
|
+
duration_ms: number | null;
|
|
9082
|
+
} | null;
|
|
9083
|
+
alt_text: string | null;
|
|
9084
|
+
per_platform: {
|
|
9085
|
+
[key: string]: {
|
|
9086
|
+
status: 'processing' | 'ready' | 'failed';
|
|
9087
|
+
/**
|
|
9088
|
+
* Public URL of this platform’s rendition (null until ready).
|
|
9089
|
+
*/
|
|
9090
|
+
url: string | null;
|
|
9091
|
+
width: number | null;
|
|
9092
|
+
height: number | null;
|
|
9093
|
+
bytes: number | null;
|
|
9094
|
+
warnings: Array<{
|
|
9095
|
+
code?: unknown;
|
|
9096
|
+
message?: unknown;
|
|
9097
|
+
hint?: unknown;
|
|
9098
|
+
allowed?: unknown;
|
|
9099
|
+
got?: unknown;
|
|
9100
|
+
display_error?: unknown;
|
|
9101
|
+
}>;
|
|
9102
|
+
errors: Array<{
|
|
9103
|
+
code?: unknown;
|
|
9104
|
+
message?: unknown;
|
|
9105
|
+
hint?: unknown;
|
|
9106
|
+
allowed?: unknown;
|
|
9107
|
+
got?: unknown;
|
|
9108
|
+
display_error?: unknown;
|
|
9109
|
+
}>;
|
|
9110
|
+
};
|
|
9111
|
+
};
|
|
9112
|
+
external_id: string | null;
|
|
9113
|
+
/**
|
|
9114
|
+
* Customer-owned key/value context, returned on reads and filterable on list endpoints (exact match). Values are scalars: string (≤500 chars), number, or boolean. At most 50 keys; keys ≤40 chars; total serialized JSON must fit in 16 KiB. Arrays and nested objects are out of scope for v1 (kept out to keep the contract scalar + exact-match). Keep a key’s value type consistent across records — filtering matches type-exactly. Never derive auth/scopes from metadata.
|
|
9115
|
+
*/
|
|
9116
|
+
metadata: {
|
|
9117
|
+
[key: string]: string | number | boolean;
|
|
9118
|
+
};
|
|
9119
|
+
/**
|
|
9120
|
+
* ISO-8601 creation time.
|
|
9121
|
+
*/
|
|
9122
|
+
created_at: string;
|
|
9123
|
+
/**
|
|
9124
|
+
* ISO-8601 last-update time.
|
|
9125
|
+
*/
|
|
9126
|
+
updated_at: string;
|
|
9127
|
+
};
|
|
7911
9128
|
}>;
|
|
7912
9129
|
} | {
|
|
7913
9130
|
platform: 'tiktok';
|
|
@@ -7998,6 +9215,99 @@ type PostsGetResponses = {
|
|
|
7998
9215
|
* Per-variant alt text; falls back to the asset’s alt_text.
|
|
7999
9216
|
*/
|
|
8000
9217
|
alt_text_override: string | null;
|
|
9218
|
+
/**
|
|
9219
|
+
* The full media asset (kind, content_type, source dimensions, per-platform renditions) — the same shape as GET /v1/media.
|
|
9220
|
+
*/
|
|
9221
|
+
media: {
|
|
9222
|
+
id: string;
|
|
9223
|
+
object: 'media';
|
|
9224
|
+
profile_id: string;
|
|
9225
|
+
/**
|
|
9226
|
+
* The detected asset family (image/video/gif/document). We sniff it from the uploaded bytes. null only in the brief pre-detection window while status is `uploading`; non-null once probed.
|
|
9227
|
+
*/
|
|
9228
|
+
kind: 'image' | 'video' | 'gif' | 'document' | null;
|
|
9229
|
+
/**
|
|
9230
|
+
* The detected MIME of the uploaded original (e.g. video/mp4), sniffed from the bytes. null only in the brief pre-detection window while status is `uploading`.
|
|
9231
|
+
*/
|
|
9232
|
+
content_type: string | null;
|
|
9233
|
+
status: 'uploading' | 'processing' | 'ready' | 'failed';
|
|
9234
|
+
/**
|
|
9235
|
+
* In-pipeline progress: the current step (stage) and a 0–100 bar (percent). Read `status` for the outcome; `percent` can regress on a transient retry.
|
|
9236
|
+
*/
|
|
9237
|
+
progress: {
|
|
9238
|
+
stage: 'queued' | 'analyzing' | 'transcoding' | 'done';
|
|
9239
|
+
percent: number;
|
|
9240
|
+
};
|
|
9241
|
+
raw: boolean;
|
|
9242
|
+
/**
|
|
9243
|
+
* Asset-wide failure (the original itself is unusable, so no platform can succeed); null otherwise.
|
|
9244
|
+
*/
|
|
9245
|
+
error: {
|
|
9246
|
+
code: 'media_unprobeable' | 'media_format_indeterminate' | 'media_format_unsupported' | 'media_too_large' | 'media_aspect_ratio_unsupported' | 'media_resolution_too_low' | 'media_gif_unsupported' | 'media_format_recompressed' | 'media_resolution_downscaled' | 'video_container_unsupported' | 'video_codec_unsupported' | 'video_audio_codec_unsupported' | 'video_too_large' | 'video_too_small' | 'video_dimensions_unsupported' | 'video_dimensions_too_large' | 'video_fps_unsupported' | 'video_fps_too_low' | 'video_aspect_unsupported' | 'video_duration_too_short' | 'video_duration_exceeds_max' | 'video_transform_failed' | 'media_fetch_failed' | 'document_format_unsupported' | 'document_too_large' | 'document_too_many_pages' | 'media_unsupported';
|
|
9247
|
+
message: string;
|
|
9248
|
+
hint?: string;
|
|
9249
|
+
allowed?: Array<string>;
|
|
9250
|
+
got?: string;
|
|
9251
|
+
/**
|
|
9252
|
+
* A short, friendly end-user line for `code` (render verbatim). `message` stays developer-grade; this is the display string. Size/limit codes interpolate the human cap/size.
|
|
9253
|
+
*/
|
|
9254
|
+
display_error: string;
|
|
9255
|
+
} | null;
|
|
9256
|
+
source: {
|
|
9257
|
+
/**
|
|
9258
|
+
* MIME of the original, e.g. image/heic.
|
|
9259
|
+
*/
|
|
9260
|
+
format: string;
|
|
9261
|
+
bytes: number;
|
|
9262
|
+
width: number | null;
|
|
9263
|
+
height: number | null;
|
|
9264
|
+
duration_ms: number | null;
|
|
9265
|
+
} | null;
|
|
9266
|
+
alt_text: string | null;
|
|
9267
|
+
per_platform: {
|
|
9268
|
+
[key: string]: {
|
|
9269
|
+
status: 'processing' | 'ready' | 'failed';
|
|
9270
|
+
/**
|
|
9271
|
+
* Public URL of this platform’s rendition (null until ready).
|
|
9272
|
+
*/
|
|
9273
|
+
url: string | null;
|
|
9274
|
+
width: number | null;
|
|
9275
|
+
height: number | null;
|
|
9276
|
+
bytes: number | null;
|
|
9277
|
+
warnings: Array<{
|
|
9278
|
+
code?: unknown;
|
|
9279
|
+
message?: unknown;
|
|
9280
|
+
hint?: unknown;
|
|
9281
|
+
allowed?: unknown;
|
|
9282
|
+
got?: unknown;
|
|
9283
|
+
display_error?: unknown;
|
|
9284
|
+
}>;
|
|
9285
|
+
errors: Array<{
|
|
9286
|
+
code?: unknown;
|
|
9287
|
+
message?: unknown;
|
|
9288
|
+
hint?: unknown;
|
|
9289
|
+
allowed?: unknown;
|
|
9290
|
+
got?: unknown;
|
|
9291
|
+
display_error?: unknown;
|
|
9292
|
+
}>;
|
|
9293
|
+
};
|
|
9294
|
+
};
|
|
9295
|
+
external_id: string | null;
|
|
9296
|
+
/**
|
|
9297
|
+
* Customer-owned key/value context, returned on reads and filterable on list endpoints (exact match). Values are scalars: string (≤500 chars), number, or boolean. At most 50 keys; keys ≤40 chars; total serialized JSON must fit in 16 KiB. Arrays and nested objects are out of scope for v1 (kept out to keep the contract scalar + exact-match). Keep a key’s value type consistent across records — filtering matches type-exactly. Never derive auth/scopes from metadata.
|
|
9298
|
+
*/
|
|
9299
|
+
metadata: {
|
|
9300
|
+
[key: string]: string | number | boolean;
|
|
9301
|
+
};
|
|
9302
|
+
/**
|
|
9303
|
+
* ISO-8601 creation time.
|
|
9304
|
+
*/
|
|
9305
|
+
created_at: string;
|
|
9306
|
+
/**
|
|
9307
|
+
* ISO-8601 last-update time.
|
|
9308
|
+
*/
|
|
9309
|
+
updated_at: string;
|
|
9310
|
+
};
|
|
8001
9311
|
}>;
|
|
8002
9312
|
}>;
|
|
8003
9313
|
/**
|
|
@@ -8801,6 +10111,99 @@ type PostsUpdateResponses = {
|
|
|
8801
10111
|
* Per-variant alt text; falls back to the asset’s alt_text.
|
|
8802
10112
|
*/
|
|
8803
10113
|
alt_text_override: string | null;
|
|
10114
|
+
/**
|
|
10115
|
+
* The full media asset (kind, content_type, source dimensions, per-platform renditions) — the same shape as GET /v1/media.
|
|
10116
|
+
*/
|
|
10117
|
+
media: {
|
|
10118
|
+
id: string;
|
|
10119
|
+
object: 'media';
|
|
10120
|
+
profile_id: string;
|
|
10121
|
+
/**
|
|
10122
|
+
* The detected asset family (image/video/gif/document). We sniff it from the uploaded bytes. null only in the brief pre-detection window while status is `uploading`; non-null once probed.
|
|
10123
|
+
*/
|
|
10124
|
+
kind: 'image' | 'video' | 'gif' | 'document' | null;
|
|
10125
|
+
/**
|
|
10126
|
+
* The detected MIME of the uploaded original (e.g. video/mp4), sniffed from the bytes. null only in the brief pre-detection window while status is `uploading`.
|
|
10127
|
+
*/
|
|
10128
|
+
content_type: string | null;
|
|
10129
|
+
status: 'uploading' | 'processing' | 'ready' | 'failed';
|
|
10130
|
+
/**
|
|
10131
|
+
* In-pipeline progress: the current step (stage) and a 0–100 bar (percent). Read `status` for the outcome; `percent` can regress on a transient retry.
|
|
10132
|
+
*/
|
|
10133
|
+
progress: {
|
|
10134
|
+
stage: 'queued' | 'analyzing' | 'transcoding' | 'done';
|
|
10135
|
+
percent: number;
|
|
10136
|
+
};
|
|
10137
|
+
raw: boolean;
|
|
10138
|
+
/**
|
|
10139
|
+
* Asset-wide failure (the original itself is unusable, so no platform can succeed); null otherwise.
|
|
10140
|
+
*/
|
|
10141
|
+
error: {
|
|
10142
|
+
code: 'media_unprobeable' | 'media_format_indeterminate' | 'media_format_unsupported' | 'media_too_large' | 'media_aspect_ratio_unsupported' | 'media_resolution_too_low' | 'media_gif_unsupported' | 'media_format_recompressed' | 'media_resolution_downscaled' | 'video_container_unsupported' | 'video_codec_unsupported' | 'video_audio_codec_unsupported' | 'video_too_large' | 'video_too_small' | 'video_dimensions_unsupported' | 'video_dimensions_too_large' | 'video_fps_unsupported' | 'video_fps_too_low' | 'video_aspect_unsupported' | 'video_duration_too_short' | 'video_duration_exceeds_max' | 'video_transform_failed' | 'media_fetch_failed' | 'document_format_unsupported' | 'document_too_large' | 'document_too_many_pages' | 'media_unsupported';
|
|
10143
|
+
message: string;
|
|
10144
|
+
hint?: string;
|
|
10145
|
+
allowed?: Array<string>;
|
|
10146
|
+
got?: string;
|
|
10147
|
+
/**
|
|
10148
|
+
* A short, friendly end-user line for `code` (render verbatim). `message` stays developer-grade; this is the display string. Size/limit codes interpolate the human cap/size.
|
|
10149
|
+
*/
|
|
10150
|
+
display_error: string;
|
|
10151
|
+
} | null;
|
|
10152
|
+
source: {
|
|
10153
|
+
/**
|
|
10154
|
+
* MIME of the original, e.g. image/heic.
|
|
10155
|
+
*/
|
|
10156
|
+
format: string;
|
|
10157
|
+
bytes: number;
|
|
10158
|
+
width: number | null;
|
|
10159
|
+
height: number | null;
|
|
10160
|
+
duration_ms: number | null;
|
|
10161
|
+
} | null;
|
|
10162
|
+
alt_text: string | null;
|
|
10163
|
+
per_platform: {
|
|
10164
|
+
[key: string]: {
|
|
10165
|
+
status: 'processing' | 'ready' | 'failed';
|
|
10166
|
+
/**
|
|
10167
|
+
* Public URL of this platform’s rendition (null until ready).
|
|
10168
|
+
*/
|
|
10169
|
+
url: string | null;
|
|
10170
|
+
width: number | null;
|
|
10171
|
+
height: number | null;
|
|
10172
|
+
bytes: number | null;
|
|
10173
|
+
warnings: Array<{
|
|
10174
|
+
code?: unknown;
|
|
10175
|
+
message?: unknown;
|
|
10176
|
+
hint?: unknown;
|
|
10177
|
+
allowed?: unknown;
|
|
10178
|
+
got?: unknown;
|
|
10179
|
+
display_error?: unknown;
|
|
10180
|
+
}>;
|
|
10181
|
+
errors: Array<{
|
|
10182
|
+
code?: unknown;
|
|
10183
|
+
message?: unknown;
|
|
10184
|
+
hint?: unknown;
|
|
10185
|
+
allowed?: unknown;
|
|
10186
|
+
got?: unknown;
|
|
10187
|
+
display_error?: unknown;
|
|
10188
|
+
}>;
|
|
10189
|
+
};
|
|
10190
|
+
};
|
|
10191
|
+
external_id: string | null;
|
|
10192
|
+
/**
|
|
10193
|
+
* Customer-owned key/value context, returned on reads and filterable on list endpoints (exact match). Values are scalars: string (≤500 chars), number, or boolean. At most 50 keys; keys ≤40 chars; total serialized JSON must fit in 16 KiB. Arrays and nested objects are out of scope for v1 (kept out to keep the contract scalar + exact-match). Keep a key’s value type consistent across records — filtering matches type-exactly. Never derive auth/scopes from metadata.
|
|
10194
|
+
*/
|
|
10195
|
+
metadata: {
|
|
10196
|
+
[key: string]: string | number | boolean;
|
|
10197
|
+
};
|
|
10198
|
+
/**
|
|
10199
|
+
* ISO-8601 creation time.
|
|
10200
|
+
*/
|
|
10201
|
+
created_at: string;
|
|
10202
|
+
/**
|
|
10203
|
+
* ISO-8601 last-update time.
|
|
10204
|
+
*/
|
|
10205
|
+
updated_at: string;
|
|
10206
|
+
};
|
|
8804
10207
|
}>;
|
|
8805
10208
|
} | {
|
|
8806
10209
|
platform: 'linkedin';
|
|
@@ -8927,6 +10330,99 @@ type PostsUpdateResponses = {
|
|
|
8927
10330
|
* Per-variant alt text; falls back to the asset’s alt_text.
|
|
8928
10331
|
*/
|
|
8929
10332
|
alt_text_override: string | null;
|
|
10333
|
+
/**
|
|
10334
|
+
* The full media asset (kind, content_type, source dimensions, per-platform renditions) — the same shape as GET /v1/media.
|
|
10335
|
+
*/
|
|
10336
|
+
media: {
|
|
10337
|
+
id: string;
|
|
10338
|
+
object: 'media';
|
|
10339
|
+
profile_id: string;
|
|
10340
|
+
/**
|
|
10341
|
+
* The detected asset family (image/video/gif/document). We sniff it from the uploaded bytes. null only in the brief pre-detection window while status is `uploading`; non-null once probed.
|
|
10342
|
+
*/
|
|
10343
|
+
kind: 'image' | 'video' | 'gif' | 'document' | null;
|
|
10344
|
+
/**
|
|
10345
|
+
* The detected MIME of the uploaded original (e.g. video/mp4), sniffed from the bytes. null only in the brief pre-detection window while status is `uploading`.
|
|
10346
|
+
*/
|
|
10347
|
+
content_type: string | null;
|
|
10348
|
+
status: 'uploading' | 'processing' | 'ready' | 'failed';
|
|
10349
|
+
/**
|
|
10350
|
+
* In-pipeline progress: the current step (stage) and a 0–100 bar (percent). Read `status` for the outcome; `percent` can regress on a transient retry.
|
|
10351
|
+
*/
|
|
10352
|
+
progress: {
|
|
10353
|
+
stage: 'queued' | 'analyzing' | 'transcoding' | 'done';
|
|
10354
|
+
percent: number;
|
|
10355
|
+
};
|
|
10356
|
+
raw: boolean;
|
|
10357
|
+
/**
|
|
10358
|
+
* Asset-wide failure (the original itself is unusable, so no platform can succeed); null otherwise.
|
|
10359
|
+
*/
|
|
10360
|
+
error: {
|
|
10361
|
+
code: 'media_unprobeable' | 'media_format_indeterminate' | 'media_format_unsupported' | 'media_too_large' | 'media_aspect_ratio_unsupported' | 'media_resolution_too_low' | 'media_gif_unsupported' | 'media_format_recompressed' | 'media_resolution_downscaled' | 'video_container_unsupported' | 'video_codec_unsupported' | 'video_audio_codec_unsupported' | 'video_too_large' | 'video_too_small' | 'video_dimensions_unsupported' | 'video_dimensions_too_large' | 'video_fps_unsupported' | 'video_fps_too_low' | 'video_aspect_unsupported' | 'video_duration_too_short' | 'video_duration_exceeds_max' | 'video_transform_failed' | 'media_fetch_failed' | 'document_format_unsupported' | 'document_too_large' | 'document_too_many_pages' | 'media_unsupported';
|
|
10362
|
+
message: string;
|
|
10363
|
+
hint?: string;
|
|
10364
|
+
allowed?: Array<string>;
|
|
10365
|
+
got?: string;
|
|
10366
|
+
/**
|
|
10367
|
+
* A short, friendly end-user line for `code` (render verbatim). `message` stays developer-grade; this is the display string. Size/limit codes interpolate the human cap/size.
|
|
10368
|
+
*/
|
|
10369
|
+
display_error: string;
|
|
10370
|
+
} | null;
|
|
10371
|
+
source: {
|
|
10372
|
+
/**
|
|
10373
|
+
* MIME of the original, e.g. image/heic.
|
|
10374
|
+
*/
|
|
10375
|
+
format: string;
|
|
10376
|
+
bytes: number;
|
|
10377
|
+
width: number | null;
|
|
10378
|
+
height: number | null;
|
|
10379
|
+
duration_ms: number | null;
|
|
10380
|
+
} | null;
|
|
10381
|
+
alt_text: string | null;
|
|
10382
|
+
per_platform: {
|
|
10383
|
+
[key: string]: {
|
|
10384
|
+
status: 'processing' | 'ready' | 'failed';
|
|
10385
|
+
/**
|
|
10386
|
+
* Public URL of this platform’s rendition (null until ready).
|
|
10387
|
+
*/
|
|
10388
|
+
url: string | null;
|
|
10389
|
+
width: number | null;
|
|
10390
|
+
height: number | null;
|
|
10391
|
+
bytes: number | null;
|
|
10392
|
+
warnings: Array<{
|
|
10393
|
+
code?: unknown;
|
|
10394
|
+
message?: unknown;
|
|
10395
|
+
hint?: unknown;
|
|
10396
|
+
allowed?: unknown;
|
|
10397
|
+
got?: unknown;
|
|
10398
|
+
display_error?: unknown;
|
|
10399
|
+
}>;
|
|
10400
|
+
errors: Array<{
|
|
10401
|
+
code?: unknown;
|
|
10402
|
+
message?: unknown;
|
|
10403
|
+
hint?: unknown;
|
|
10404
|
+
allowed?: unknown;
|
|
10405
|
+
got?: unknown;
|
|
10406
|
+
display_error?: unknown;
|
|
10407
|
+
}>;
|
|
10408
|
+
};
|
|
10409
|
+
};
|
|
10410
|
+
external_id: string | null;
|
|
10411
|
+
/**
|
|
10412
|
+
* Customer-owned key/value context, returned on reads and filterable on list endpoints (exact match). Values are scalars: string (≤500 chars), number, or boolean. At most 50 keys; keys ≤40 chars; total serialized JSON must fit in 16 KiB. Arrays and nested objects are out of scope for v1 (kept out to keep the contract scalar + exact-match). Keep a key’s value type consistent across records — filtering matches type-exactly. Never derive auth/scopes from metadata.
|
|
10413
|
+
*/
|
|
10414
|
+
metadata: {
|
|
10415
|
+
[key: string]: string | number | boolean;
|
|
10416
|
+
};
|
|
10417
|
+
/**
|
|
10418
|
+
* ISO-8601 creation time.
|
|
10419
|
+
*/
|
|
10420
|
+
created_at: string;
|
|
10421
|
+
/**
|
|
10422
|
+
* ISO-8601 last-update time.
|
|
10423
|
+
*/
|
|
10424
|
+
updated_at: string;
|
|
10425
|
+
};
|
|
8930
10426
|
}>;
|
|
8931
10427
|
} | {
|
|
8932
10428
|
platform: 'facebook_page';
|
|
@@ -8981,6 +10477,99 @@ type PostsUpdateResponses = {
|
|
|
8981
10477
|
* Per-variant alt text; falls back to the asset’s alt_text.
|
|
8982
10478
|
*/
|
|
8983
10479
|
alt_text_override: string | null;
|
|
10480
|
+
/**
|
|
10481
|
+
* The full media asset (kind, content_type, source dimensions, per-platform renditions) — the same shape as GET /v1/media.
|
|
10482
|
+
*/
|
|
10483
|
+
media: {
|
|
10484
|
+
id: string;
|
|
10485
|
+
object: 'media';
|
|
10486
|
+
profile_id: string;
|
|
10487
|
+
/**
|
|
10488
|
+
* The detected asset family (image/video/gif/document). We sniff it from the uploaded bytes. null only in the brief pre-detection window while status is `uploading`; non-null once probed.
|
|
10489
|
+
*/
|
|
10490
|
+
kind: 'image' | 'video' | 'gif' | 'document' | null;
|
|
10491
|
+
/**
|
|
10492
|
+
* The detected MIME of the uploaded original (e.g. video/mp4), sniffed from the bytes. null only in the brief pre-detection window while status is `uploading`.
|
|
10493
|
+
*/
|
|
10494
|
+
content_type: string | null;
|
|
10495
|
+
status: 'uploading' | 'processing' | 'ready' | 'failed';
|
|
10496
|
+
/**
|
|
10497
|
+
* In-pipeline progress: the current step (stage) and a 0–100 bar (percent). Read `status` for the outcome; `percent` can regress on a transient retry.
|
|
10498
|
+
*/
|
|
10499
|
+
progress: {
|
|
10500
|
+
stage: 'queued' | 'analyzing' | 'transcoding' | 'done';
|
|
10501
|
+
percent: number;
|
|
10502
|
+
};
|
|
10503
|
+
raw: boolean;
|
|
10504
|
+
/**
|
|
10505
|
+
* Asset-wide failure (the original itself is unusable, so no platform can succeed); null otherwise.
|
|
10506
|
+
*/
|
|
10507
|
+
error: {
|
|
10508
|
+
code: 'media_unprobeable' | 'media_format_indeterminate' | 'media_format_unsupported' | 'media_too_large' | 'media_aspect_ratio_unsupported' | 'media_resolution_too_low' | 'media_gif_unsupported' | 'media_format_recompressed' | 'media_resolution_downscaled' | 'video_container_unsupported' | 'video_codec_unsupported' | 'video_audio_codec_unsupported' | 'video_too_large' | 'video_too_small' | 'video_dimensions_unsupported' | 'video_dimensions_too_large' | 'video_fps_unsupported' | 'video_fps_too_low' | 'video_aspect_unsupported' | 'video_duration_too_short' | 'video_duration_exceeds_max' | 'video_transform_failed' | 'media_fetch_failed' | 'document_format_unsupported' | 'document_too_large' | 'document_too_many_pages' | 'media_unsupported';
|
|
10509
|
+
message: string;
|
|
10510
|
+
hint?: string;
|
|
10511
|
+
allowed?: Array<string>;
|
|
10512
|
+
got?: string;
|
|
10513
|
+
/**
|
|
10514
|
+
* A short, friendly end-user line for `code` (render verbatim). `message` stays developer-grade; this is the display string. Size/limit codes interpolate the human cap/size.
|
|
10515
|
+
*/
|
|
10516
|
+
display_error: string;
|
|
10517
|
+
} | null;
|
|
10518
|
+
source: {
|
|
10519
|
+
/**
|
|
10520
|
+
* MIME of the original, e.g. image/heic.
|
|
10521
|
+
*/
|
|
10522
|
+
format: string;
|
|
10523
|
+
bytes: number;
|
|
10524
|
+
width: number | null;
|
|
10525
|
+
height: number | null;
|
|
10526
|
+
duration_ms: number | null;
|
|
10527
|
+
} | null;
|
|
10528
|
+
alt_text: string | null;
|
|
10529
|
+
per_platform: {
|
|
10530
|
+
[key: string]: {
|
|
10531
|
+
status: 'processing' | 'ready' | 'failed';
|
|
10532
|
+
/**
|
|
10533
|
+
* Public URL of this platform’s rendition (null until ready).
|
|
10534
|
+
*/
|
|
10535
|
+
url: string | null;
|
|
10536
|
+
width: number | null;
|
|
10537
|
+
height: number | null;
|
|
10538
|
+
bytes: number | null;
|
|
10539
|
+
warnings: Array<{
|
|
10540
|
+
code?: unknown;
|
|
10541
|
+
message?: unknown;
|
|
10542
|
+
hint?: unknown;
|
|
10543
|
+
allowed?: unknown;
|
|
10544
|
+
got?: unknown;
|
|
10545
|
+
display_error?: unknown;
|
|
10546
|
+
}>;
|
|
10547
|
+
errors: Array<{
|
|
10548
|
+
code?: unknown;
|
|
10549
|
+
message?: unknown;
|
|
10550
|
+
hint?: unknown;
|
|
10551
|
+
allowed?: unknown;
|
|
10552
|
+
got?: unknown;
|
|
10553
|
+
display_error?: unknown;
|
|
10554
|
+
}>;
|
|
10555
|
+
};
|
|
10556
|
+
};
|
|
10557
|
+
external_id: string | null;
|
|
10558
|
+
/**
|
|
10559
|
+
* Customer-owned key/value context, returned on reads and filterable on list endpoints (exact match). Values are scalars: string (≤500 chars), number, or boolean. At most 50 keys; keys ≤40 chars; total serialized JSON must fit in 16 KiB. Arrays and nested objects are out of scope for v1 (kept out to keep the contract scalar + exact-match). Keep a key’s value type consistent across records — filtering matches type-exactly. Never derive auth/scopes from metadata.
|
|
10560
|
+
*/
|
|
10561
|
+
metadata: {
|
|
10562
|
+
[key: string]: string | number | boolean;
|
|
10563
|
+
};
|
|
10564
|
+
/**
|
|
10565
|
+
* ISO-8601 creation time.
|
|
10566
|
+
*/
|
|
10567
|
+
created_at: string;
|
|
10568
|
+
/**
|
|
10569
|
+
* ISO-8601 last-update time.
|
|
10570
|
+
*/
|
|
10571
|
+
updated_at: string;
|
|
10572
|
+
};
|
|
8984
10573
|
}>;
|
|
8985
10574
|
} | {
|
|
8986
10575
|
platform: 'instagram';
|
|
@@ -9076,6 +10665,99 @@ type PostsUpdateResponses = {
|
|
|
9076
10665
|
* Per-variant alt text; falls back to the asset’s alt_text.
|
|
9077
10666
|
*/
|
|
9078
10667
|
alt_text_override: string | null;
|
|
10668
|
+
/**
|
|
10669
|
+
* The full media asset (kind, content_type, source dimensions, per-platform renditions) — the same shape as GET /v1/media.
|
|
10670
|
+
*/
|
|
10671
|
+
media: {
|
|
10672
|
+
id: string;
|
|
10673
|
+
object: 'media';
|
|
10674
|
+
profile_id: string;
|
|
10675
|
+
/**
|
|
10676
|
+
* The detected asset family (image/video/gif/document). We sniff it from the uploaded bytes. null only in the brief pre-detection window while status is `uploading`; non-null once probed.
|
|
10677
|
+
*/
|
|
10678
|
+
kind: 'image' | 'video' | 'gif' | 'document' | null;
|
|
10679
|
+
/**
|
|
10680
|
+
* The detected MIME of the uploaded original (e.g. video/mp4), sniffed from the bytes. null only in the brief pre-detection window while status is `uploading`.
|
|
10681
|
+
*/
|
|
10682
|
+
content_type: string | null;
|
|
10683
|
+
status: 'uploading' | 'processing' | 'ready' | 'failed';
|
|
10684
|
+
/**
|
|
10685
|
+
* In-pipeline progress: the current step (stage) and a 0–100 bar (percent). Read `status` for the outcome; `percent` can regress on a transient retry.
|
|
10686
|
+
*/
|
|
10687
|
+
progress: {
|
|
10688
|
+
stage: 'queued' | 'analyzing' | 'transcoding' | 'done';
|
|
10689
|
+
percent: number;
|
|
10690
|
+
};
|
|
10691
|
+
raw: boolean;
|
|
10692
|
+
/**
|
|
10693
|
+
* Asset-wide failure (the original itself is unusable, so no platform can succeed); null otherwise.
|
|
10694
|
+
*/
|
|
10695
|
+
error: {
|
|
10696
|
+
code: 'media_unprobeable' | 'media_format_indeterminate' | 'media_format_unsupported' | 'media_too_large' | 'media_aspect_ratio_unsupported' | 'media_resolution_too_low' | 'media_gif_unsupported' | 'media_format_recompressed' | 'media_resolution_downscaled' | 'video_container_unsupported' | 'video_codec_unsupported' | 'video_audio_codec_unsupported' | 'video_too_large' | 'video_too_small' | 'video_dimensions_unsupported' | 'video_dimensions_too_large' | 'video_fps_unsupported' | 'video_fps_too_low' | 'video_aspect_unsupported' | 'video_duration_too_short' | 'video_duration_exceeds_max' | 'video_transform_failed' | 'media_fetch_failed' | 'document_format_unsupported' | 'document_too_large' | 'document_too_many_pages' | 'media_unsupported';
|
|
10697
|
+
message: string;
|
|
10698
|
+
hint?: string;
|
|
10699
|
+
allowed?: Array<string>;
|
|
10700
|
+
got?: string;
|
|
10701
|
+
/**
|
|
10702
|
+
* A short, friendly end-user line for `code` (render verbatim). `message` stays developer-grade; this is the display string. Size/limit codes interpolate the human cap/size.
|
|
10703
|
+
*/
|
|
10704
|
+
display_error: string;
|
|
10705
|
+
} | null;
|
|
10706
|
+
source: {
|
|
10707
|
+
/**
|
|
10708
|
+
* MIME of the original, e.g. image/heic.
|
|
10709
|
+
*/
|
|
10710
|
+
format: string;
|
|
10711
|
+
bytes: number;
|
|
10712
|
+
width: number | null;
|
|
10713
|
+
height: number | null;
|
|
10714
|
+
duration_ms: number | null;
|
|
10715
|
+
} | null;
|
|
10716
|
+
alt_text: string | null;
|
|
10717
|
+
per_platform: {
|
|
10718
|
+
[key: string]: {
|
|
10719
|
+
status: 'processing' | 'ready' | 'failed';
|
|
10720
|
+
/**
|
|
10721
|
+
* Public URL of this platform’s rendition (null until ready).
|
|
10722
|
+
*/
|
|
10723
|
+
url: string | null;
|
|
10724
|
+
width: number | null;
|
|
10725
|
+
height: number | null;
|
|
10726
|
+
bytes: number | null;
|
|
10727
|
+
warnings: Array<{
|
|
10728
|
+
code?: unknown;
|
|
10729
|
+
message?: unknown;
|
|
10730
|
+
hint?: unknown;
|
|
10731
|
+
allowed?: unknown;
|
|
10732
|
+
got?: unknown;
|
|
10733
|
+
display_error?: unknown;
|
|
10734
|
+
}>;
|
|
10735
|
+
errors: Array<{
|
|
10736
|
+
code?: unknown;
|
|
10737
|
+
message?: unknown;
|
|
10738
|
+
hint?: unknown;
|
|
10739
|
+
allowed?: unknown;
|
|
10740
|
+
got?: unknown;
|
|
10741
|
+
display_error?: unknown;
|
|
10742
|
+
}>;
|
|
10743
|
+
};
|
|
10744
|
+
};
|
|
10745
|
+
external_id: string | null;
|
|
10746
|
+
/**
|
|
10747
|
+
* Customer-owned key/value context, returned on reads and filterable on list endpoints (exact match). Values are scalars: string (≤500 chars), number, or boolean. At most 50 keys; keys ≤40 chars; total serialized JSON must fit in 16 KiB. Arrays and nested objects are out of scope for v1 (kept out to keep the contract scalar + exact-match). Keep a key’s value type consistent across records — filtering matches type-exactly. Never derive auth/scopes from metadata.
|
|
10748
|
+
*/
|
|
10749
|
+
metadata: {
|
|
10750
|
+
[key: string]: string | number | boolean;
|
|
10751
|
+
};
|
|
10752
|
+
/**
|
|
10753
|
+
* ISO-8601 creation time.
|
|
10754
|
+
*/
|
|
10755
|
+
created_at: string;
|
|
10756
|
+
/**
|
|
10757
|
+
* ISO-8601 last-update time.
|
|
10758
|
+
*/
|
|
10759
|
+
updated_at: string;
|
|
10760
|
+
};
|
|
9079
10761
|
}>;
|
|
9080
10762
|
} | {
|
|
9081
10763
|
platform: 'tiktok';
|
|
@@ -9166,6 +10848,99 @@ type PostsUpdateResponses = {
|
|
|
9166
10848
|
* Per-variant alt text; falls back to the asset’s alt_text.
|
|
9167
10849
|
*/
|
|
9168
10850
|
alt_text_override: string | null;
|
|
10851
|
+
/**
|
|
10852
|
+
* The full media asset (kind, content_type, source dimensions, per-platform renditions) — the same shape as GET /v1/media.
|
|
10853
|
+
*/
|
|
10854
|
+
media: {
|
|
10855
|
+
id: string;
|
|
10856
|
+
object: 'media';
|
|
10857
|
+
profile_id: string;
|
|
10858
|
+
/**
|
|
10859
|
+
* The detected asset family (image/video/gif/document). We sniff it from the uploaded bytes. null only in the brief pre-detection window while status is `uploading`; non-null once probed.
|
|
10860
|
+
*/
|
|
10861
|
+
kind: 'image' | 'video' | 'gif' | 'document' | null;
|
|
10862
|
+
/**
|
|
10863
|
+
* The detected MIME of the uploaded original (e.g. video/mp4), sniffed from the bytes. null only in the brief pre-detection window while status is `uploading`.
|
|
10864
|
+
*/
|
|
10865
|
+
content_type: string | null;
|
|
10866
|
+
status: 'uploading' | 'processing' | 'ready' | 'failed';
|
|
10867
|
+
/**
|
|
10868
|
+
* In-pipeline progress: the current step (stage) and a 0–100 bar (percent). Read `status` for the outcome; `percent` can regress on a transient retry.
|
|
10869
|
+
*/
|
|
10870
|
+
progress: {
|
|
10871
|
+
stage: 'queued' | 'analyzing' | 'transcoding' | 'done';
|
|
10872
|
+
percent: number;
|
|
10873
|
+
};
|
|
10874
|
+
raw: boolean;
|
|
10875
|
+
/**
|
|
10876
|
+
* Asset-wide failure (the original itself is unusable, so no platform can succeed); null otherwise.
|
|
10877
|
+
*/
|
|
10878
|
+
error: {
|
|
10879
|
+
code: 'media_unprobeable' | 'media_format_indeterminate' | 'media_format_unsupported' | 'media_too_large' | 'media_aspect_ratio_unsupported' | 'media_resolution_too_low' | 'media_gif_unsupported' | 'media_format_recompressed' | 'media_resolution_downscaled' | 'video_container_unsupported' | 'video_codec_unsupported' | 'video_audio_codec_unsupported' | 'video_too_large' | 'video_too_small' | 'video_dimensions_unsupported' | 'video_dimensions_too_large' | 'video_fps_unsupported' | 'video_fps_too_low' | 'video_aspect_unsupported' | 'video_duration_too_short' | 'video_duration_exceeds_max' | 'video_transform_failed' | 'media_fetch_failed' | 'document_format_unsupported' | 'document_too_large' | 'document_too_many_pages' | 'media_unsupported';
|
|
10880
|
+
message: string;
|
|
10881
|
+
hint?: string;
|
|
10882
|
+
allowed?: Array<string>;
|
|
10883
|
+
got?: string;
|
|
10884
|
+
/**
|
|
10885
|
+
* A short, friendly end-user line for `code` (render verbatim). `message` stays developer-grade; this is the display string. Size/limit codes interpolate the human cap/size.
|
|
10886
|
+
*/
|
|
10887
|
+
display_error: string;
|
|
10888
|
+
} | null;
|
|
10889
|
+
source: {
|
|
10890
|
+
/**
|
|
10891
|
+
* MIME of the original, e.g. image/heic.
|
|
10892
|
+
*/
|
|
10893
|
+
format: string;
|
|
10894
|
+
bytes: number;
|
|
10895
|
+
width: number | null;
|
|
10896
|
+
height: number | null;
|
|
10897
|
+
duration_ms: number | null;
|
|
10898
|
+
} | null;
|
|
10899
|
+
alt_text: string | null;
|
|
10900
|
+
per_platform: {
|
|
10901
|
+
[key: string]: {
|
|
10902
|
+
status: 'processing' | 'ready' | 'failed';
|
|
10903
|
+
/**
|
|
10904
|
+
* Public URL of this platform’s rendition (null until ready).
|
|
10905
|
+
*/
|
|
10906
|
+
url: string | null;
|
|
10907
|
+
width: number | null;
|
|
10908
|
+
height: number | null;
|
|
10909
|
+
bytes: number | null;
|
|
10910
|
+
warnings: Array<{
|
|
10911
|
+
code?: unknown;
|
|
10912
|
+
message?: unknown;
|
|
10913
|
+
hint?: unknown;
|
|
10914
|
+
allowed?: unknown;
|
|
10915
|
+
got?: unknown;
|
|
10916
|
+
display_error?: unknown;
|
|
10917
|
+
}>;
|
|
10918
|
+
errors: Array<{
|
|
10919
|
+
code?: unknown;
|
|
10920
|
+
message?: unknown;
|
|
10921
|
+
hint?: unknown;
|
|
10922
|
+
allowed?: unknown;
|
|
10923
|
+
got?: unknown;
|
|
10924
|
+
display_error?: unknown;
|
|
10925
|
+
}>;
|
|
10926
|
+
};
|
|
10927
|
+
};
|
|
10928
|
+
external_id: string | null;
|
|
10929
|
+
/**
|
|
10930
|
+
* Customer-owned key/value context, returned on reads and filterable on list endpoints (exact match). Values are scalars: string (≤500 chars), number, or boolean. At most 50 keys; keys ≤40 chars; total serialized JSON must fit in 16 KiB. Arrays and nested objects are out of scope for v1 (kept out to keep the contract scalar + exact-match). Keep a key’s value type consistent across records — filtering matches type-exactly. Never derive auth/scopes from metadata.
|
|
10931
|
+
*/
|
|
10932
|
+
metadata: {
|
|
10933
|
+
[key: string]: string | number | boolean;
|
|
10934
|
+
};
|
|
10935
|
+
/**
|
|
10936
|
+
* ISO-8601 creation time.
|
|
10937
|
+
*/
|
|
10938
|
+
created_at: string;
|
|
10939
|
+
/**
|
|
10940
|
+
* ISO-8601 last-update time.
|
|
10941
|
+
*/
|
|
10942
|
+
updated_at: string;
|
|
10943
|
+
};
|
|
9169
10944
|
}>;
|
|
9170
10945
|
}>;
|
|
9171
10946
|
/**
|