POST/v1/uploads
Έναρξη μεταφόρτωσης σε τμήματα
create_upload
Ανοίγει μια συνεδρία μεταφόρτωσης για ένα μεγάλο αρχείο (έως το όριο της εγκατάστασης για τις μεταφορτώσεις σε τμήματα, 5 GB από προεπιλογή): το όνομα, ο τύπος περιεχομένου, το μέγεθος και το purpose, που δηλώνει τι θα χρησιμοποιήσει τη μεταφόρτωση: card_file (POST /v1/cards), archive (POST /v1/cards/archive) ή import_attachment (συνημμένο εγγράφου προσαρμοσμένης πηγής). Η απόκριση περιέχει το id (upl_ και ακολουθούν 32 δεκαεξαδικοί χαρακτήρες), το μέγεθος τμήματος part_size και τον αριθμό τμημάτων part_count. Κάθε τμήμα εκτός από το τελευταίο έχει ακριβώς part_size byte (από 5 έως 100 MiB), και το τελευταίο τμήμα είναι το υπόλοιπο. Μια μη ολοκληρωμένη μεταφόρτωση διατηρείται για 24 ώρες (expires_at).
Επέκταση ονόματος αρχείου εκτός των μορφών του σκοπού επιστρέφει 415 uploads.unsupported_format (ένα συνημμένο εισαγωγής δέχεται οποιαδήποτε επέκταση). Αρχείο μεγαλύτερο από το όριο της εγκατάστασης ή από τον συνολικό χώρο αποθήκευσης του οργανισμού βάσει του πακέτου του επιστρέφει 413 uploads.too_large. Αν δεν απομένει αρκετός χώρος αποθήκευσης, μετρώντας και τις μη ολοκληρωμένες μεταφορτώσεις του οργανισμού, επιστρέφεται 402 limits.storage.
Τα τμήματα περνούν μέσα από τη Sursa (PUT /v1/uploads/{upload_id}/parts/{n}) και κρυπτογραφούνται με το κλειδί του οργανισμού στον χώρο αποθήκευσης αρχείων· δεν υπάρχουν απευθείας σύνδεσμοι προς τον χώρο αποθήκευσης. Μόνο το κλειδί API ή ο χρήστης που δημιούργησε τη μεταφόρτωση μπορεί να τη δει και να τη χρησιμοποιήσει. Προστέθηκε στην έκδοση 1.62.0.
Έλεγχος ταυτότητας
Στείλτε ένα κλειδί API στην κεφαλίδα Authorization: Authorization: Bearer <κλειδί>.
Παράμετροι κεφαλίδας
Idempotency-KeystringΚλειδί για ασφαλή επανάληψη μιας εγγραφής δεδομένων: 1 έως 255 εκτυπώσιμοι χαρακτήρες ASCII· συνιστάται ένα UUID v4 ανά λογική λειτουργία. Επανάληψη με το ίδιο κλειδί εντός 24 ωρών δεν εκτελεί ξανά τη λειτουργία: επιστρέφει την αποθηκευμένη απόκριση (κατάσταση, κεφαλίδες και σώμα) με την κεφαλίδα
Idempotency-Replayed: true. Το ίδιο κλειδί με διαφορετική μέθοδο, διαδρομή,Content-Typeή σώμα επιστρέφει409 api.idempotency_mismatch· όσο το πρώτο αίτημα εκτελείται ακόμη –409 api.idempotency_in_progressμεRetry-After: 1. Μετά από απόκριση 5xx ή 429 το κλειδί αποδεσμεύεται, και η επανάληψη εκτελεί ξανά τη λειτουργία. Το κλειδί ισχύει στο πλαίσιο του οργανισμού και του πελάτη που καλεί το API (κλειδί API, χρήστης ή κλειδί προσαρμοσμένης πηγής).length ≥ 1, length ≤ 255
Σώμα αιτήματος
application/json
filenamestringυποχρεωτικόΤο όνομα του αρχείου με την επέκτασή του· η επέκταση καθορίζει τη μορφή.
length ≥ 1, length ≤ 255
content_typestringΟ δηλωμένος τύπος περιεχομένου (MIME)· συγκρίνεται με την υπογραφή του αρχείου.
length ≤ 255
sizeinteger (int64)υποχρεωτικόΤο μέγεθος του αρχείου σε byte.
≥ 1
sha256stringΤο SHA-256 του αρχείου, αν είναι γνωστό εκ των προτέρων· το
completeσυγκρίνει με αυτό το άθροισμα ελέγχου του αρχείου.
Αποκρίσεις
201Η συνεδρία μεταφόρτωσης δημιουργήθηκε.
Κεφαλίδες απόκρισης
RateLimit-PolicyΤα όρια σε ισχύ, στη μορφή του προσχεδίου IETF
draft-ietf-httpapi-ratelimit-headers: στοιχεία χωρισμένα με κόμμα"<name>";q=<quota>;w=<window in seconds>. Τοkeyείναι ο ρυθμός αιτημάτων του κλειδιού API (η ποσόστωση είναι η ριπή, το παράθυρο είναι ο χρόνος για την πλήρη αναπλήρωσή της· για μια συνεδρία είναιuser, χωρίς διαπιστευτήριαip)· ταminute,dayκαιmonthείναι οι ποσοστώσεις του οργανισμού για το ημερολογιακό λεπτό, την ημέρα και τον μήνα σε UTC.RateLimitΤι απομένει από κάθε όριο του
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitΌριο της αυστηρότερης εγγραφής του
RateLimit-Policy(εκείνης με τα λιγότερα εναπομείναντα αιτήματα).X-RateLimit-RemainingΑιτήματα που απομένουν στο αυστηρότερο όριο.
X-RateLimit-ResetΔευτερόλεπτα έως τον μηδενισμό του αυστηρότερου ορίου.
Idempotency-ReplayedΤο
trueσημαίνει ότι η απόκριση επαναλήφθηκε από την αποθηκευμένη για αυτό τοIdempotency-Key: η λειτουργία δεν εκτελέστηκε ξανά.
application/json
idstringυποχρεωτικόΤο ID της μεταφόρτωσης (
upl_και 32 δεκαεξαδικοί χαρακτήρες).filenamestringυποχρεωτικόΤο όνομα του αρχείου (χωρίς φακέλους).
content_typestringυποχρεωτικόΟ δηλωμένος τύπος περιεχομένου· κενό, αν δεν δηλώθηκε.
sizeinteger (int64)υποχρεωτικόΤο μέγεθος του αρχείου σε byte.
sha256string | nullυποχρεωτικόΤο SHA-256 του αρχείου, δηλωμένο κατά τη δημιουργία ή κατά το
complete·null, αν δεν είναι ακόμη γνωστό.part_sizeinteger (int64)υποχρεωτικόΤο μέγεθος κάθε τμήματος εκτός από το τελευταίο (από 5 έως 100 MiB).
part_countintegerυποχρεωτικόΟ αριθμός των τμημάτων.
≥ 1, ≤ 1000
parts_receivedintegerυποχρεωτικόΟ αριθμός των τμημάτων που ελήφθησαν.
≥ 0
Τα τμήματα που ελήφθησαν, ανά αριθμό (κενό στην απόκριση του
POST /v1/uploads).reject_reasonstring | nullυποχρεωτικόΟ λόγος απόρριψης (
rejected):checksum_mismatch,type_mismatch,unsupported_format,infected,scan_unavailable,unsafe_content. Η απαρίθμηση μπορεί να επεκταθεί·null, αν δεν απορρίφθηκε.reject_detailsobject | nullυποχρεωτικόΛεπτομέρειες της απόρριψης (η επέκταση, η δηλωμένη και η ανιχνευμένη μορφή, αθροίσματα ελέγχου)·
null, αν δεν απορρίφθηκε.created_atstring (date-time)υποχρεωτικόΠότε δημιουργήθηκε η μεταφόρτωση.
expires_atstring (date-time)υποχρεωτικόΗ προθεσμία για την ολοκλήρωση της μεταφόρτωσης και, μόλις είναι έτοιμη, για τη χρήση της.
completed_atstring (date-time) | nullυποχρεωτικόΠότε ολοκληρώθηκε ο έλεγχος (
readyήrejected).consumed_atstring (date-time) | nullυποχρεωτικόΠότε χρησιμοποιήθηκε η μεταφόρτωση (από μια κάρτα, ένα αρχείο ZIP ή μια εισαγωγή).
401Δεν στάλθηκαν διαπιστευτήρια (ούτε cookie συνεδρίας ούτε κλειδί API) ή το κλειδί δεν βρέθηκε.
Κεφαλίδες απόκρισης
RateLimit-PolicyΤα όρια σε ισχύ, στη μορφή του προσχεδίου IETF
draft-ietf-httpapi-ratelimit-headers: στοιχεία χωρισμένα με κόμμα"<name>";q=<quota>;w=<window in seconds>. Τοkeyείναι ο ρυθμός αιτημάτων του κλειδιού API (η ποσόστωση είναι η ριπή, το παράθυρο είναι ο χρόνος για την πλήρη αναπλήρωσή της· για μια συνεδρία είναιuser, χωρίς διαπιστευτήριαip)· ταminute,dayκαιmonthείναι οι ποσοστώσεις του οργανισμού για το ημερολογιακό λεπτό, την ημέρα και τον μήνα σε UTC.RateLimitΤι απομένει από κάθε όριο του
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitΌριο της αυστηρότερης εγγραφής του
RateLimit-Policy(εκείνης με τα λιγότερα εναπομείναντα αιτήματα).X-RateLimit-RemainingΑιτήματα που απομένουν στο αυστηρότερο όριο.
X-RateLimit-ResetΔευτερόλεπτα έως τον μηδενισμό του αυστηρότερου ορίου.
application/json
402Ο οργανισμός έφτασε σε όριο του πακέτου (κάρτες, χώρος αποθήκευσης ή χρήστες). Το `error.details` περιέχει τα `kind`, `limit` και `used`.
Κεφαλίδες απόκρισης
RateLimit-PolicyΤα όρια σε ισχύ, στη μορφή του προσχεδίου IETF
draft-ietf-httpapi-ratelimit-headers: στοιχεία χωρισμένα με κόμμα"<name>";q=<quota>;w=<window in seconds>. Τοkeyείναι ο ρυθμός αιτημάτων του κλειδιού API (η ποσόστωση είναι η ριπή, το παράθυρο είναι ο χρόνος για την πλήρη αναπλήρωσή της· για μια συνεδρία είναιuser, χωρίς διαπιστευτήριαip)· ταminute,dayκαιmonthείναι οι ποσοστώσεις του οργανισμού για το ημερολογιακό λεπτό, την ημέρα και τον μήνα σε UTC.RateLimitΤι απομένει από κάθε όριο του
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitΌριο της αυστηρότερης εγγραφής του
RateLimit-Policy(εκείνης με τα λιγότερα εναπομείναντα αιτήματα).X-RateLimit-RemainingΑιτήματα που απομένουν στο αυστηρότερο όριο.
X-RateLimit-ResetΔευτερόλεπτα έως τον μηδενισμό του αυστηρότερου ορίου.
application/json
403Η ενέργεια δεν επιτρέπεται: ο ρόλος δεν επαρκεί, δεν υπάρχει πρόσβαση στη συλλογή ή στην κάρτα, το αίτημα εκτελείται στη λειτουργία «View as» ή ο οργανισμός έχει ανασταλεί ή διαγραφεί (το `detail` είναι αντικείμενο με `code: org_suspended | org_deleted`).
Κεφαλίδες απόκρισης
RateLimit-PolicyΤα όρια σε ισχύ, στη μορφή του προσχεδίου IETF
draft-ietf-httpapi-ratelimit-headers: στοιχεία χωρισμένα με κόμμα"<name>";q=<quota>;w=<window in seconds>. Τοkeyείναι ο ρυθμός αιτημάτων του κλειδιού API (η ποσόστωση είναι η ριπή, το παράθυρο είναι ο χρόνος για την πλήρη αναπλήρωσή της· για μια συνεδρία είναιuser, χωρίς διαπιστευτήριαip)· ταminute,dayκαιmonthείναι οι ποσοστώσεις του οργανισμού για το ημερολογιακό λεπτό, την ημέρα και τον μήνα σε UTC.RateLimitΤι απομένει από κάθε όριο του
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitΌριο της αυστηρότερης εγγραφής του
RateLimit-Policy(εκείνης με τα λιγότερα εναπομείναντα αιτήματα).X-RateLimit-RemainingΑιτήματα που απομένουν στο αυστηρότερο όριο.
X-RateLimit-ResetΔευτερόλεπτα έως τον μηδενισμό του αυστηρότερου ορίου.
application/json
413Το σώμα του αιτήματος υπερβαίνει το επιτρεπόμενο μέγεθος.
Κεφαλίδες απόκρισης
RateLimit-PolicyΤα όρια σε ισχύ, στη μορφή του προσχεδίου IETF
draft-ietf-httpapi-ratelimit-headers: στοιχεία χωρισμένα με κόμμα"<name>";q=<quota>;w=<window in seconds>. Τοkeyείναι ο ρυθμός αιτημάτων του κλειδιού API (η ποσόστωση είναι η ριπή, το παράθυρο είναι ο χρόνος για την πλήρη αναπλήρωσή της· για μια συνεδρία είναιuser, χωρίς διαπιστευτήριαip)· ταminute,dayκαιmonthείναι οι ποσοστώσεις του οργανισμού για το ημερολογιακό λεπτό, την ημέρα και τον μήνα σε UTC.RateLimitΤι απομένει από κάθε όριο του
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitΌριο της αυστηρότερης εγγραφής του
RateLimit-Policy(εκείνης με τα λιγότερα εναπομείναντα αιτήματα).X-RateLimit-RemainingΑιτήματα που απομένουν στο αυστηρότερο όριο.
X-RateLimit-ResetΔευτερόλεπτα έως τον μηδενισμό του αυστηρότερου ορίου.
application/json
415Η μορφή του αρχείου δεν υποστηρίζεται.
Κεφαλίδες απόκρισης
RateLimit-PolicyΤα όρια σε ισχύ, στη μορφή του προσχεδίου IETF
draft-ietf-httpapi-ratelimit-headers: στοιχεία χωρισμένα με κόμμα"<name>";q=<quota>;w=<window in seconds>. Τοkeyείναι ο ρυθμός αιτημάτων του κλειδιού API (η ποσόστωση είναι η ριπή, το παράθυρο είναι ο χρόνος για την πλήρη αναπλήρωσή της· για μια συνεδρία είναιuser, χωρίς διαπιστευτήριαip)· ταminute,dayκαιmonthείναι οι ποσοστώσεις του οργανισμού για το ημερολογιακό λεπτό, την ημέρα και τον μήνα σε UTC.RateLimitΤι απομένει από κάθε όριο του
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitΌριο της αυστηρότερης εγγραφής του
RateLimit-Policy(εκείνης με τα λιγότερα εναπομείναντα αιτήματα).X-RateLimit-RemainingΑιτήματα που απομένουν στο αυστηρότερο όριο.
X-RateLimit-ResetΔευτερόλεπτα έως τον μηδενισμό του αυστηρότερου ορίου.
application/json
422Σφάλμα επικύρωσης: το σώμα ή οι παράμετροι δεν αντιστοιχούν στο σχήμα (το `detail` είναι λίστα σφαλμάτων επικύρωσης) ή η τιμή μιας παραμέτρου είναι εκτός εύρους (το `detail` είναι μήνυμα).
Κεφαλίδες απόκρισης
RateLimit-PolicyΤα όρια σε ισχύ, στη μορφή του προσχεδίου IETF
draft-ietf-httpapi-ratelimit-headers: στοιχεία χωρισμένα με κόμμα"<name>";q=<quota>;w=<window in seconds>. Τοkeyείναι ο ρυθμός αιτημάτων του κλειδιού API (η ποσόστωση είναι η ριπή, το παράθυρο είναι ο χρόνος για την πλήρη αναπλήρωσή της· για μια συνεδρία είναιuser, χωρίς διαπιστευτήριαip)· ταminute,dayκαιmonthείναι οι ποσοστώσεις του οργανισμού για το ημερολογιακό λεπτό, την ημέρα και τον μήνα σε UTC.RateLimitΤι απομένει από κάθε όριο του
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitΌριο της αυστηρότερης εγγραφής του
RateLimit-Policy(εκείνης με τα λιγότερα εναπομείναντα αιτήματα).X-RateLimit-RemainingΑιτήματα που απομένουν στο αυστηρότερο όριο.
X-RateLimit-ResetΔευτερόλεπτα έως τον μηδενισμό του αυστηρότερου ορίου.
application/json
429Πάρα πολλά αιτήματα (`api.rate_limited`), η ποσόστωση του οργανισμού για το λεπτό, την ημέρα ή τον μήνα εξαντλήθηκε (`api.quota_exceeded`· το `error.details` περιέχει τα `quota`, `limit` και `reset_at`), ο οργανισμός έφτασε στο όριό του ή η υπηρεσία απαντήσεων είναι απασχολημένη (`answers.engine_busy`). Περιμένετε τον χρόνο που δίνει η κεφαλίδα `Retry-After`.
Κεφαλίδες απόκρισης
Retry-AfterΑριθμός δευτερολέπτων αναμονής πριν επαναλάβετε το αίτημα.
RateLimit-PolicyΤα όρια σε ισχύ, στη μορφή του προσχεδίου IETF
draft-ietf-httpapi-ratelimit-headers: στοιχεία χωρισμένα με κόμμα"<name>";q=<quota>;w=<window in seconds>. Τοkeyείναι ο ρυθμός αιτημάτων του κλειδιού API (η ποσόστωση είναι η ριπή, το παράθυρο είναι ο χρόνος για την πλήρη αναπλήρωσή της· για μια συνεδρία είναιuser, χωρίς διαπιστευτήριαip)· ταminute,dayκαιmonthείναι οι ποσοστώσεις του οργανισμού για το ημερολογιακό λεπτό, την ημέρα και τον μήνα σε UTC.RateLimitΤι απομένει από κάθε όριο του
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitΌριο της αυστηρότερης εγγραφής του
RateLimit-Policy(εκείνης με τα λιγότερα εναπομείναντα αιτήματα).X-RateLimit-RemainingΑιτήματα που απομένουν στο αυστηρότερο όριο.
X-RateLimit-ResetΔευτερόλεπτα έως τον μηδενισμό του αυστηρότερου ορίου.
application/json
Κωδικοί σφαλμάτων
Κωδικοί που μπορεί να επιστρέψει αυτό το τελικό σημείο στο error.code, εκτός από τους γενικούς κωδικούς κάθε αιτήματος.
Ασφαλείς επαναλήψεις
Στείλτε μια κεφαλίδα Idempotency-Key (για παράδειγμα ένα UUID) με κάθε POST και PATCH. Μια επανάληψη με το ίδιο κλειδί εντός 24 ωρών επιστρέφει την αποθηκευμένη απόκριση αντί να εκτελέσει ξανά το αίτημα.
Όρια ρυθμού
Οι αποκρίσεις περιέχουν τις κεφαλίδες RateLimit και RateLimit-Policy, καθώς και τις παλαιότερες X-RateLimit-Limit, X-RateLimit-Remaining και X-RateLimit-Reset. Μια απόκριση 429 έχει την κεφαλίδα Retry-After σε δευτερόλεπτα: περιμένετε και επαναλάβετε το αίτημα.