POST/v1/users/import
Εισαγωγή χρηστών από CSV
users_import
Στείλτε ένα αρχείο CSV στο πεδίο csv. Η πρώτη γραμμή είναι η γραμμή κεφαλίδων. Το διαχωριστικό είναι , ή ; και εντοπίζεται από τη γραμμή κεφαλίδων. Η κωδικοποίηση είναι UTF-8 (επιτρέπεται BOM), με έως 1000 γραμμές δεδομένων.
Στήλες: email (υποχρεωτική· ψευδώνυμα e-mail, mail, почта), name (display_name, имя), role (admin, editor, verifier, viewer· ψευδώνυμο роль), groups (группы· χωρίστε πολλές ομάδες με | ή ;, με βάση το κλειδί ή το όνομα μιας κανονικής ομάδας), profile (data_profile, профиль· το κλειδί του προφίλ δεδομένων). Οι άγνωστες στήλες παραλείπονται και παρατίθενται στο ignored_columns.
Με dry_run: true (η προεπιλογή) επιστρέφει προεπισκόπηση χωρίς αλλαγές: την ενέργεια και τα σφάλματα για κάθε γραμμή. Διαφορετικά εκτελούνται οι γραμμές χωρίς σφάλματα:
- invite: στέλνει πρόσκληση με τον ρόλο, το προφίλ και το όνομα από το αρχείο. Στέλνεται email, αν το ηλεκτρονικό ταχυδρομείο είναι ρυθμισμένο, και ο σύνδεσμος επιστρέφεται στην απόκριση.
- exists: υπάρχει ήδη χρήστης με αυτό το email. Ο χρήστης προστίθεται στις ομάδες από το αρχείο· ο ρόλος και το προφίλ δεν αλλάζουν.
- pending: μια πρόσκληση σε αυτή τη διεύθυνση περιμένει ήδη αποδοχή. Οι ομάδες από το αρχείο προστίθενται σε αυτήν.
Οι γραμμές με σφάλματα παραλείπονται. Οι χρήστες που προσκλήθηκαν εντάσσονται στις ομάδες τους όταν αποδεχθούν την πρόσκληση. Το create_groups δημιουργεί τις κανονικές ομάδες που λείπουν· χωρίς αυτό, μια άγνωστη ομάδα είναι σφάλμα γραμμής. Το όριο χρηστών του πακέτου και οι θέσεις της συνδρομής ελέγχονται για όλες τις νέες προσκλήσεις μαζί: αν δεν επαρκούν, δεν εκτελείται τίποτα (402). Το όριο των χειροκίνητων προσκλήσεων (50 σε εκκρεμότητα) δεν ισχύει για τις εισαγωγές. Απαιτεί το δικαίωμα ORG_MANAGE_USERS. Καταγράφει το συμβάν users.import στο αρχείο ελέγχου και το invitation.create για κάθε πρόσκληση.
Έλεγχος ταυτότητας
Στείλτε ένα κλειδί 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
Αντικείμενο: UsersImportRequest
csvstringυποχρεωτικόΠεριεχόμενο του αρχείου CSV σε UTF-8.
length ≥ 1, length ≤ 2000000
dry_runbooleanΜόνο προεπισκόπηση (η προεπιλογή). Το
falseεκτελεί τις γραμμές χωρίς σφάλματα.Προεπιλογή: true
default_rolestringΡόλος για γραμμές χωρίς στήλη
roleή με κενό κελί.Προεπιλογή: "viewer"
default_profilestring | nullΠροφίλ δεδομένων για γραμμές χωρίς προφίλ. Αν είναι κενό, χρησιμοποιείται το προεπιλεγμένο προφίλ του οργανισμού (οι διαχειριστές λαμβάνουν πλήρη πρόσβαση).
create_groupsbooleanΔημιουργία κανονικών ομάδων που λείπουν. Χωρίς αυτή την ένδειξη, μια άγνωστη ομάδα είναι σφάλμα γραμμής.
Προεπιλογή: false
ttl_daysintegerΙσχύς των προσκλήσεων σε ημέρες.
Προεπιλογή: 7≥ 1, ≤ 30
Αποκρίσεις
200Προεπισκόπηση ή αποτέλεσμα της εισαγωγής, γραμμή προς γραμμή
Κεφαλίδες απόκρισης
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
Αντικείμενο: UsersImportResult
dry_runbooleanυποχρεωτικόtotalintegerυποχρεωτικόΑριθμός γραμμών δεδομένων στο αρχείο.
delimiterstringυποχρεωτικόΔιαχωριστικό που αναγνωρίστηκε από την κεφαλίδα.
columnsarray of stringυποχρεωτικόΑναγνωρισμένες στήλες σε κανονική μορφή (
email,name,role,groups,profile).ignored_columnsarray of stringυποχρεωτικόcreated_groupsarray of stringυποχρεωτικόΟμάδες που δημιουργήθηκαν κατά την εκτέλεση.
400Το αίτημα δεν είναι έγκυρο: η τιμή μιας παραμέτρου ή η κατάσταση του αντικειμένου δεν επιτρέπει την ενέργεια (το `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
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
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, εκτός από τους γενικούς κωδικούς κάθε αιτήματος.
- 409api.idempotency_in_progress
- 400api.idempotency_key_invalid
- 409api.idempotency_mismatch
- 403auth.admin_required
- 401auth.not_authenticated
- 403api_keys.scope
- 402limits.users
- 402billing.seats_exceeded
- 400profiles.unknown
- 413users_import.too_many_rows
- 422users_import.csv_invalid
- 422users_import.no_email_column
- 422users_import.empty
- 422validation.failed
Ασφαλείς επαναλήψεις
Στείλτε μια κεφαλίδα Idempotency-Key (για παράδειγμα ένα UUID) με κάθε POST και PATCH. Μια επανάληψη με το ίδιο κλειδί εντός 24 ωρών επιστρέφει την αποθηκευμένη απόκριση αντί να εκτελέσει ξανά το αίτημα.
Όρια ρυθμού
Οι αποκρίσεις περιέχουν τις κεφαλίδες RateLimit και RateLimit-Policy, καθώς και τις παλαιότερες X-RateLimit-Limit, X-RateLimit-Remaining και X-RateLimit-Reset. Μια απόκριση 429 έχει την κεφαλίδα Retry-After σε δευτερόλεπτα: περιμένετε και επαναλάβετε το αίτημα.