POST/api/v1/boshu/drafts/preview
「BOSHU の外部 API」の分類の、新しく作る、または操作を実行するために内容を送る API。ログインした本人として呼ぶ。
- 要約
募集の設計を保存と同じ判定で検証・正規化する(書込みなし)
- 呼び方と印
ログイン・レート制限
短い時間に呼びすぎると断られる API(レート制限)。断られたら Retry-After の秒数を待って呼び直す。
送るもの(本文)application/json
送る本文の欄。「必須」の印がある欄は省けない。
sourceKey必須string/^[A-Za-z0-9][A-Za-z0-9_.:-]{0,63}$/subject必須object | object | object|1必須objectkind必須"platform"|2必須objectkind必須"person"|3必須objectkind必須"event" | "guild" | "venture"id必須string(uuid)eventId必須string(uuid) | nullcall必須objectsignupPolicy任意"required" | "optional"ticketOffer任意booleangroupSubmissionPolicy任意"managers" | "confirmed_members"defaultMailPreviewHash任意string/^[a-f0-9]{64}$/applicantKind必須"individual" | "guild" | "venture"template必須enum(10) | null- "member"
- "talk"
- "pitch"
- "hackathon"
- "student_guild"
- "student_venture"
- "guild_royale"
- "creative_blitz"
- "open_meeting"
- "partner"
profilePolicy必須"kind" | "required" | "basic"portfolioRequired必須booleanmessagePolicy必須"legacy" | "required" | "optional" | "off"applicationFields任意object | nullheadline任意objectenabled必須booleanrequired必須booleanlabel必須string長さ 1–120placeholder必須string長さ ≤200message任意objectenabled必須booleanrequired必須booleanlabel必須string長さ 1–120placeholder必須string長さ ≤200links任意objectenabled必須booleanrequired必須booleanlabel必須string長さ 1–120placeholder必須string長さ ≤200portfolio任意objectenabled必須booleanrequired必須booleanlabel必須string長さ 1–120placeholder必須string長さ ≤200contentId必須string(uuid) | nullkeyVisualUploadId任意string(uuid) | nullaudience任意"all" | "student" | "professional"既定 "all"kind必須"staff" | "talk" | "pitch" | "other"title必須string長さ 1–60description任意string | null長さ ≤2000requirements任意string | null長さ ≤600sessionId任意string(uuid) | nullcapacity必須integer | null1–500talkMinutes任意integer | null1–120opensAt必須stringclosesAt必須stringmode任意"review" | "first_come"既定 "review"paid任意boolean既定 falsecompensation任意string | null長さ ≤120ribbonLabel任意string | null長さ ≤16questions必須array<object>件数 ≤60id必須string/^q_[a-z0-9]{4,24}$/type必須enum(9)- "short"
- "long"
- "single"
- "multi"
- "check"
- "url"
- "date"
- "image"
- "document"
label必須string長さ 1–120help任意string | null長さ ≤1000required任意boolean既定 falseenabled任意booleanoptions任意array<object>件数 ≤20 · 既定 []id必須string/^o_[a-z0-9]{1,24}$/label必須string長さ 1–60sensitive任意boolean既定 falsemaxLength任意integer1–2000section任意string長さ 1–80organizationField任意enum(11)- "name"
- "nameKana"
- "organizationType"
- "baseUniversities"
- "foundedYearMonth"
- "memberCount"
- "studentMemberCount"
- "genres"
- "links"
- "catchphrase"
- "activitySummary"
profileField任意enum(9)- "displayName"
- "title"
- "orgName"
- "schoolName"
- "gradYear"
- "organizations"
- "faculty"
- "standing"
- "grade"
memberSelection任意objectkind必須"active_student"min必須1max必須3condition任意objectquestionId必須string/^q_[a-z0-9]{4,24}$/optionId必須string/^o_[a-z0-9]{1,24}$/coManagerUserIds任意array<string(uuid)>件数 ≤10 · 既定 []adoptCallId任意string(uuid)expectedHash任意string | null/^[0-9a-f]{64}$/
返るもの(応答)200 · application/json
成功したときに返る形。入れ子の欄は、その行を押すと開く・閉じる。「任意」の印がある欄は返らないことがある。
status"draft" | "published" | "closed"approval"not_required" | "pending" | "approved" | "rejected"subjectobjectkindenum(5)"platform" "event" "guild" "venture" "person"idstring(uuid) | nullnamestring
eventIdstring(uuid) | nullcallobjectkeyVisualUploadId任意string(uuid) | nulltemplatestring | nullkind"staff" | "talk" | "pitch" | "other"titlestringdescriptionstring | nullrequirementsstring | nullapplicantKind"individual" | "guild" | "venture"audience"all" | "student" | "professional"profilePolicy"kind" | "required" | "basic"messagePolicy"legacy" | "required" | "optional" | "off"portfolioRequiredbooleancontentIdstring(uuid) | nullsessionIdstring(uuid) | nullcapacityinteger | nulltalkMinutesinteger | nullopensAtstring(date-time)closesAtstring(date-time)modestringpaidbooleancompensationstring | nullribbonLabelstring | nullquestionsarray<object>idstringtypeenum(9)"short" "long" "single" "multi" "check" "url" "date" "image" "document"labelstringhelpstring | nullrequiredbooleanoptionsarray<object>idstringlabelstring
sensitivebooleanmaxLength任意integercondition任意objectquestionIdstringoptionIdstring
enabled任意booleansection任意stringorganizationField任意enum(11)"name" "nameKana" "organizationType" "baseUniversities" "foundedYearMonth" "memberCount" "studentMemberCount" "genres" "links" "catchphrase" "activitySummary"profileField任意enum(9)"displayName" "title" "orgName" "schoolName" "gradYear" "organizations" "faculty" "standing" "grade"memberSelection任意objectkind"active_student"min1max3
ticketOffer任意true
questionVersionintegercoManagerUserIdsarray<string(uuid)>wouldCreatebooleancurrentHashstring | null/^[0-9a-f]{64}$/changedFieldsarray<string>publication"draft_only"writes0
失敗したとき(エラー)
失敗したときの状態コードと、その意味。本文の error の値で、プログラムが失敗の種類を見分けられる。
- 400HTTP 400(x-bounty-error-codes を参照)
- 401未ログイン(unauthorized)/ Bearer が無効(invalid_token。WWW-Authenticate 付き)
- 403HTTP 403(x-bounty-error-codes を参照)
- 404HTTP 404(x-bounty-error-codes を参照)
- 409HTTP 409(x-bounty-error-codes を参照)
- 413HTTP 413(x-bounty-error-codes を参照)
- 428HTTP 428(x-bounty-error-codes を参照)
- 429レート制限(Retry-After 付き)
- 503HTTP 503(x-bounty-error-codes を参照)
- invalid_token
- forbidden
- consent_required
- rate_limited
- partner_owner_not_allowed
- partner_applicant_kind
- invalid_input
- event_link_mismatch
- owner_not_found
- call_not_found
- content_not_found
- revision_conflict
- published_call_locked
- subject_change_not_supported
- co_manager_forbidden
- account_not_found
呼び出しの見本
そのまま試せる呼び出しの例。curl と fetch をタブで切り替える。ID やトークンは自分の値に置き換える。
curl -X POST "https://bounty.spikes.4s.link/api/v1/boshu/drafts/preview" \
-H "Authorization: Bearer $BEARER_AUTH" \
-H "Content-Type: application/json" \
-d '{
"sourceKey": "string",
"subject": {
"kind": "platform"
},
"eventId": "00000000-0000-4000-8000-000000000000",
"call": {
"applicantKind": "individual",
"template": "member",
"profilePolicy": "kind",
"portfolioRequired": false,
"messagePolicy": "legacy",
"contentId": "00000000-0000-4000-8000-000000000000",
"kind": "staff",
"title": "string",
"capacity": 1,
"opensAt": "string",
"closesAt": "string",
"questions": []
}
}'