POST/v1/drafts
Crear un esborrany
create_draft
Crea un esborrany d’una entrada nova (collection, requereix COLLECTION_CREATE_CARDS) o d’una edició d’una entrada existent (card_id, requereix CARD_EDIT; el títol, les etiquetes i el text es prenen de l’última versió si no s’indiquen). L’autor és el primer coautor. Un usuari pot tenir un esborrany actiu per entrada: una sol·licitud repetida retorna 409 drafts.exists amb draft_id a details (continueu en aquell esborrany amb PATCH). scheduled_publish_at programa la publicació. Una clau d’API indica l’autor de l’esborrany a author_id (des de la 1.62.0).
Autenticació
Envieu una clau d’API a la capçalera Authorization: Authorization: Bearer <clau>.
Paràmetres de capçalera
Idempotency-KeystringClau per reintentar una escriptura de manera segura: d’1 a 255 caràcters ASCII imprimibles; es recomana un UUID v4 per operació lògica. Un reintent amb la mateixa clau en un termini de 24 hores no torna a executar l’operació: retorna la resposta desada (estat, capçaleres i cos) amb la capçalera
Idempotency-Replayed: true. La mateixa clau amb un mètode, un camí, unContent-Typeo un cos diferents retorna409 api.idempotency_mismatch; mentre la primera sol·licitud encara s’executa,409 api.idempotency_in_progressambRetry-After: 1. Després d’una resposta 5xx o 429 la clau s’allibera, i un reintent torna a executar l’operació. L’abast de la clau és l’organització i qui fa la crida (clau d’API, usuari o clau de font personalitzada).length ≥ 1, length ≤ 255
Cos de la sol·licitud
application/json
card_idstring | nullcollectionstring | nullNom de la col·lecció per a una entrada nova (obligatori sense
card_id).titlestring | nulllength ≤ 200
body_markdownstring | nulllength ≤ 500000
tagsarray of string | nullitems ≤ 30
revision_notestring | nulllength ≤ 1000
verify_on_publishbooleanPer defecte: false
notify_followersbooleanPer defecte: false
scheduled_publish_atstring (date-time) | nullauthor_idintegerAutor de l’esborrany quan la crida la fa una clau d’API (des de la versió 1.62.0): un usuari actiu de l’organització de la clau; l’usuari passa a ser
created_byi el primer coautor. Obligatori per a una clau (altrament,422 validation.failed); un usuari d’una altra organització o un usuari inactiu retorna404 users.not_found. Els permisos sobre la col·lecció i l’entrada es comproven per a la clau, no per a l’autor. En una sessió, l’autor és l’usuari que ha iniciat la sessió: unauthor_iddiferent retorna422 validation.failed.≥ 1
Respostes
201Creat
Capçaleres de la resposta
RateLimit-PolicyLímits vigents, en el format de l’esborrany de l’IETF
draft-ietf-httpapi-ratelimit-headers: elements separats per comes"<name>";q=<quota>;w=<window in seconds>.keyés la freqüència de sol·licituds de la clau d’API (la quota és la ràfega, la finestra és el temps que triga a reomplir-se del tot; per a una sessió ésuser, sense credencialsip);minute,dayimonthsón les quotes de l’organització per al minut, el dia i el mes naturals en UTC.RateLimitEl que queda de cada límit de
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLímit de l’element més restrictiu de
RateLimit-Policy(el que té menys sol·licituds restants).X-RateLimit-RemainingSol·licituds restants dins del límit més restrictiu.
X-RateLimit-ResetSegons que falten perquè es restableixi el límit més restrictiu.
Idempotency-Replayedtrueindica que la resposta s’ha reproduït a partir de la desada per a aquestaIdempotency-Key: l’operació no s’ha tornat a executar.
application/json
idintegerobligatoriorg_idintegerobligatoricard_idstring | nullobligatoriEntrada que edita l’esborrany;
null: un esborrany d’una entrada nova.collection_idintegerobligatoricollectionstringobligatorititlestringobligatoribody_markdownstringobligatoritagsarray of stringobligatoribase_versioninteger | nullVersió de l’entrada a partir de la qual es va començar l’esborrany.
scheduled_publish_atstring (date-time) | nullrevision_notestring | nullverify_on_publishbooleanobligatorinotify_followersbooleanobligatoricreated_byintegerobligatoriupdated_byinteger | nullcreated_atstring (date-time)obligatoriupdated_atstring (date-time)obligatoripublish_requested_byinteger | nullpublish_requested_atstring (date-time) | nullapproved_byinteger | nullapproved_atstring (date-time) | nullconflictstring | nullcard_published: l’entrada s’ha publicat o s’ha canviat després de començar l’esborrany;card_deleted: l’entrada s’ha suprimit; ampliable.
400La sol·licitud no és vàlida: el valor d’un paràmetre o l’estat de l’objecte no permeten l’acció (`detail` és un missatge).
Capçaleres de la resposta
RateLimit-PolicyLímits vigents, en el format de l’esborrany de l’IETF
draft-ietf-httpapi-ratelimit-headers: elements separats per comes"<name>";q=<quota>;w=<window in seconds>.keyés la freqüència de sol·licituds de la clau d’API (la quota és la ràfega, la finestra és el temps que triga a reomplir-se del tot; per a una sessió ésuser, sense credencialsip);minute,dayimonthsón les quotes de l’organització per al minut, el dia i el mes naturals en UTC.RateLimitEl que queda de cada límit de
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLímit de l’element més restrictiu de
RateLimit-Policy(el que té menys sol·licituds restants).X-RateLimit-RemainingSol·licituds restants dins del límit més restrictiu.
X-RateLimit-ResetSegons que falten perquè es restableixi el límit més restrictiu.
application/json
401No s’han enviat credencials (ni una galeta de sessió ni una clau d’API), o no s’ha trobat la clau.
Capçaleres de la resposta
RateLimit-PolicyLímits vigents, en el format de l’esborrany de l’IETF
draft-ietf-httpapi-ratelimit-headers: elements separats per comes"<name>";q=<quota>;w=<window in seconds>.keyés la freqüència de sol·licituds de la clau d’API (la quota és la ràfega, la finestra és el temps que triga a reomplir-se del tot; per a una sessió ésuser, sense credencialsip);minute,dayimonthsón les quotes de l’organització per al minut, el dia i el mes naturals en UTC.RateLimitEl que queda de cada límit de
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLímit de l’element més restrictiu de
RateLimit-Policy(el que té menys sol·licituds restants).X-RateLimit-RemainingSol·licituds restants dins del límit més restrictiu.
X-RateLimit-ResetSegons que falten perquè es restableixi el límit més restrictiu.
application/json
403L’acció no està permesa: el rol és insuficient, no hi ha accés a la col·lecció o a l’entrada, la sol·licitud s’executa en mode «View as», o l’organització està suspesa o eliminada (`detail` és un objecte amb `code: org_suspended | org_deleted`).
Capçaleres de la resposta
RateLimit-PolicyLímits vigents, en el format de l’esborrany de l’IETF
draft-ietf-httpapi-ratelimit-headers: elements separats per comes"<name>";q=<quota>;w=<window in seconds>.keyés la freqüència de sol·licituds de la clau d’API (la quota és la ràfega, la finestra és el temps que triga a reomplir-se del tot; per a una sessió ésuser, sense credencialsip);minute,dayimonthsón les quotes de l’organització per al minut, el dia i el mes naturals en UTC.RateLimitEl que queda de cada límit de
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLímit de l’element més restrictiu de
RateLimit-Policy(el que té menys sol·licituds restants).X-RateLimit-RemainingSol·licituds restants dins del límit més restrictiu.
X-RateLimit-ResetSegons que falten perquè es restableixi el límit més restrictiu.
application/json
404L’objecte no existeix o no està disponible per a vós. L’API no confirma que existeixi un objecte restringit.
Capçaleres de la resposta
RateLimit-PolicyLímits vigents, en el format de l’esborrany de l’IETF
draft-ietf-httpapi-ratelimit-headers: elements separats per comes"<name>";q=<quota>;w=<window in seconds>.keyés la freqüència de sol·licituds de la clau d’API (la quota és la ràfega, la finestra és el temps que triga a reomplir-se del tot; per a una sessió ésuser, sense credencialsip);minute,dayimonthsón les quotes de l’organització per al minut, el dia i el mes naturals en UTC.RateLimitEl que queda de cada límit de
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLímit de l’element més restrictiu de
RateLimit-Policy(el que té menys sol·licituds restants).X-RateLimit-RemainingSol·licituds restants dins del límit més restrictiu.
X-RateLimit-ResetSegons que falten perquè es restableixi el límit més restrictiu.
application/json
409L’estat de l’objecte no permet l’acció; per exemple, un duplicat, una indexació en curs o un treball que ja s’ha processat.
Capçaleres de la resposta
RateLimit-PolicyLímits vigents, en el format de l’esborrany de l’IETF
draft-ietf-httpapi-ratelimit-headers: elements separats per comes"<name>";q=<quota>;w=<window in seconds>.keyés la freqüència de sol·licituds de la clau d’API (la quota és la ràfega, la finestra és el temps que triga a reomplir-se del tot; per a una sessió ésuser, sense credencialsip);minute,dayimonthsón les quotes de l’organització per al minut, el dia i el mes naturals en UTC.RateLimitEl que queda de cada límit de
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLímit de l’element més restrictiu de
RateLimit-Policy(el que té menys sol·licituds restants).X-RateLimit-RemainingSol·licituds restants dins del límit més restrictiu.
X-RateLimit-ResetSegons que falten perquè es restableixi el límit més restrictiu.
application/json
422Error de validació: el cos o els paràmetres no coincideixen amb l’esquema (`detail` és una llista d’errors de validació), o el valor d’un paràmetre és fora de l’interval permès (`detail` és un missatge).
Capçaleres de la resposta
RateLimit-PolicyLímits vigents, en el format de l’esborrany de l’IETF
draft-ietf-httpapi-ratelimit-headers: elements separats per comes"<name>";q=<quota>;w=<window in seconds>.keyés la freqüència de sol·licituds de la clau d’API (la quota és la ràfega, la finestra és el temps que triga a reomplir-se del tot; per a una sessió ésuser, sense credencialsip);minute,dayimonthsón les quotes de l’organització per al minut, el dia i el mes naturals en UTC.RateLimitEl que queda de cada límit de
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLímit de l’element més restrictiu de
RateLimit-Policy(el que té menys sol·licituds restants).X-RateLimit-RemainingSol·licituds restants dins del límit més restrictiu.
X-RateLimit-ResetSegons que falten perquè es restableixi el límit més restrictiu.
application/json
429Massa sol·licituds (`api.rate_limited`), s’ha esgotat la quota de l’organització per al minut, el dia o el mes (`api.quota_exceeded`; `error.details` conté `quota`, `limit` i `reset_at`), s’ha arribat al límit de l’organització o el servei de respostes està ocupat (`answers.engine_busy`). Espereu el temps que indica la capçalera `Retry-After`.
Capçaleres de la resposta
Retry-AfterNombre de segons que cal esperar abans de reintentar la sol·licitud.
RateLimit-PolicyLímits vigents, en el format de l’esborrany de l’IETF
draft-ietf-httpapi-ratelimit-headers: elements separats per comes"<name>";q=<quota>;w=<window in seconds>.keyés la freqüència de sol·licituds de la clau d’API (la quota és la ràfega, la finestra és el temps que triga a reomplir-se del tot; per a una sessió ésuser, sense credencialsip);minute,dayimonthsón les quotes de l’organització per al minut, el dia i el mes naturals en UTC.RateLimitEl que queda de cada límit de
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLímit de l’element més restrictiu de
RateLimit-Policy(el que té menys sol·licituds restants).X-RateLimit-RemainingSol·licituds restants dins del límit més restrictiu.
X-RateLimit-ResetSegons que falten perquè es restableixi el límit més restrictiu.
application/json
Codis d’error
Codis que aquest punt final pot retornar a error.code, a més dels codis generals de totes les sol·licituds.
Reintents segurs
Envieu una capçalera Idempotency-Key (per exemple, un UUID) amb cada POST i PATCH. Un reintent amb la mateixa clau en un termini de 24 hores retorna la resposta desada en lloc de tornar a executar la sol·licitud.
Límits de freqüència
Les respostes porten les capçaleres RateLimit i RateLimit-Policy i les anteriors X-RateLimit-Limit, X-RateLimit-Remaining i X-RateLimit-Reset. Una resposta 429 té Retry-After en segons: espereu i torneu-ho a provar.