Μετάβαση στο περιεχόμενο
Sursa Developers

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

Αντικείμενο: UploadCreate

  • filenamestringυποχρεωτικό

    Το όνομα του αρχείου με την επέκτασή του· η επέκταση καθορίζει τη μορφή.

    length ≥ 1, length ≤ 255

  • content_typestring

    Ο δηλωμένος τύπος περιεχομένου (MIME)· συγκρίνεται με την υπογραφή του αρχείου.

    length ≤ 255

  • sizeinteger (int64)υποχρεωτικό

    Το μέγεθος του αρχείου σε byte.

    ≥ 1

  • purposeUploadPurposeυποχρεωτικό
  • 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

Αντικείμενο: Upload

  • idstringυποχρεωτικό

    Το ID της μεταφόρτωσης (upl_ και 32 δεκαεξαδικοί χαρακτήρες).

  • purposeUploadPurposeυποχρεωτικό
  • filenamestringυποχρεωτικό

    Το όνομα του αρχείου (χωρίς φακέλους).

  • content_typestringυποχρεωτικό

    Ο δηλωμένος τύπος περιεχομένου· κενό, αν δεν δηλώθηκε.

  • sizeinteger (int64)υποχρεωτικό

    Το μέγεθος του αρχείου σε byte.

  • sha256string | nullυποχρεωτικό

    Το SHA-256 του αρχείου, δηλωμένο κατά τη δημιουργία ή κατά το complete· null, αν δεν είναι ακόμη γνωστό.

  • statusUploadStatusυποχρεωτικό
  • part_sizeinteger (int64)υποχρεωτικό

    Το μέγεθος κάθε τμήματος εκτός από το τελευταίο (από 5 έως 100 MiB).

  • part_countintegerυποχρεωτικό

    Ο αριθμός των τμημάτων.

    ≥ 1, ≤ 1000

  • parts_receivedintegerυποχρεωτικό

    Ο αριθμός των τμημάτων που ελήφθησαν.

    ≥ 0

  • partsarray of UploadPartυποχρεωτικό

    Τα τμήματα που ελήφθησαν, ανά αριθμό (κενό στην απόκριση του 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

    Δευτερόλεπτα έως τον μηδενισμό του αυστηρότερου ορίου.

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

    Δευτερόλεπτα έως τον μηδενισμό του αυστηρότερου ορίου.

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

    Δευτερόλεπτα έως τον μηδενισμό του αυστηρότερου ορίου.

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

    Δευτερόλεπτα έως τον μηδενισμό του αυστηρότερου ορίου.

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

    Δευτερόλεπτα έως τον μηδενισμό του αυστηρότερου ορίου.

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

    Δευτερόλεπτα έως τον μηδενισμό του αυστηρότερου ορίου.

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

    Δευτερόλεπτα έως τον μηδενισμό του αυστηρότερου ορίου.

Κωδικοί σφαλμάτων

Κωδικοί που μπορεί να επιστρέψει αυτό το τελικό σημείο στο error.code, εκτός από τους γενικούς κωδικούς κάθε αιτήματος.

Ασφαλείς επαναλήψεις

Στείλτε μια κεφαλίδα Idempotency-Key (για παράδειγμα ένα UUID) με κάθε POST και PATCH. Μια επανάληψη με το ίδιο κλειδί εντός 24 ωρών επιστρέφει την αποθηκευμένη απόκριση αντί να εκτελέσει ξανά το αίτημα.

Όρια ρυθμού

Οι αποκρίσεις περιέχουν τις κεφαλίδες RateLimit και RateLimit-Policy, καθώς και τις παλαιότερες X-RateLimit-Limit, X-RateLimit-Remaining και X-RateLimit-Reset. Μια απόκριση 429 έχει την κεφαλίδα Retry-After σε δευτερόλεπτα: περιμένετε και επαναλάβετε το αίτημα.

← uploads · Αναφορά API