本文へ移動
Bounty Developer

POST/api/v1/boshu/drafts

「BOSHU の外部 API」の分類の、新しく作る、または操作を実行するために内容を送る API。ログインした本人として呼ぶ。

要約

募集の下書きを作る / 直す(sourceKey・idempotencyKey・expectedHash。常に下書き。公開・承認・通知なし。作成 201 / 更新・再送 200)

呼び方と印

ログイン・レート制限

短い時間に呼びすぎると断られる API(レート制限)。断られたら Retry-After の秒数を待って呼び直す。

送るもの(本文)application/json

送る本文の欄。「必須」の印がある欄は省けない。

  • sourceKey必須string
    /^[A-Za-z0-9][A-Za-z0-9_.:-]{0,63}$/
  • subject必須object | object | object
  • |1必須object
  • kind必須"platform"
  • |2必須object
  • kind必須"person"
  • |3必須object
  • kind必須"event" | "guild" | "venture"
  • id必須string(uuid)
  • eventId必須string(uuid) | null
  • call必須object
  • signupPolicy任意"required" | "optional"
  • ticketOffer任意boolean
  • groupSubmissionPolicy任意"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必須boolean
  • messagePolicy必須"legacy" | "required" | "optional" | "off"
  • applicationFields任意object | null
  • headline任意object
  • enabled必須boolean
  • required必須boolean
  • label必須string
    長さ 1–120
  • placeholder必須string
    長さ ≤200
  • message任意object
  • enabled必須boolean
  • required必須boolean
  • label必須string
    長さ 1–120
  • placeholder必須string
    長さ ≤200
  • links任意object
  • enabled必須boolean
  • required必須boolean
  • label必須string
    長さ 1–120
  • placeholder必須string
    長さ ≤200
  • portfolio任意object
  • enabled必須boolean
  • required必須boolean
  • label必須string
    長さ 1–120
  • placeholder必須string
    長さ ≤200
  • contentId必須string(uuid) | null
  • keyVisualUploadId任意string(uuid) | null
  • audience任意"all" | "student" | "professional"
    既定 "all"
  • kind必須"staff" | "talk" | "pitch" | "other"
  • title必須string
    長さ 1–60
  • description任意string | null
    長さ ≤2000
  • requirements任意string | null
    長さ ≤600
  • sessionId任意string(uuid) | null
  • capacity必須integer | null
    1–500
  • talkMinutes任意integer | null
    1–120
  • opensAt必須string
  • closesAt必須string
  • mode任意"review" | "first_come"
    既定 "review"
  • paid任意boolean
    既定 false
  • compensation任意string | null
    長さ ≤120
  • ribbonLabel任意string | null
    長さ ≤16
  • questions必須array<object>
    件数 ≤60
  • id必須string
    /^q_[a-z0-9]{4,24}$/
  • type必須enum(9)
    • "short"
    • "long"
    • "single"
    • "multi"
    • "check"
    • "url"
    • "date"
    • "image"
    • "document"
  • label必須string
    長さ 1–120
  • help任意string | null
    長さ ≤1000
  • required任意boolean
    既定 false
  • enabled任意boolean
  • options任意array<object>
    件数 ≤20 · 既定 []
  • id必須string
    /^o_[a-z0-9]{1,24}$/
  • label必須string
    長さ 1–60
  • sensitive任意boolean
    既定 false
  • maxLength任意integer
    1–2000
  • section任意string
    長さ 1–80
  • organizationField任意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任意object
  • kind必須"active_student"
  • min必須1
  • max必須3
  • condition任意object
  • questionId必須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}$/
  • idempotencyKey必須string
    /^[A-Za-z0-9][A-Za-z0-9_.:-]{15,99}$/

返るもの(応答)200 · application/json

成功したときに返る形。入れ子の欄は、その行を押すと開く・閉じる。「任意」の印がある欄は返らないことがある。

  • idstring(uuid)
  • sourceKeystring
  • status"draft"
  • publication"draft_only"
  • createdboolean
  • replayedboolean
  • hashstring/^[0-9a-f]{64}$/
  • questionVersioninteger
  • updatedAtstring(date-time)

失敗したとき(エラー)

失敗したときの状態コードと、その意味。本文の 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
  • idempotency_conflict
  • published_call_locked
  • subject_change_not_supported
  • source_key_in_use
  • draft_bound_to_another_source
  • kind_locked
  • co_manager_forbidden
  • account_not_found
  • feature_disabled

呼び出しの見本

そのまま試せる呼び出しの例。curl と fetch をタブで切り替える。ID やトークンは自分の値に置き換える。

curl -X POST "https://bounty.spikes.4s.link/api/v1/boshu/drafts" \
  -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": []
    },
    "expectedHash": "string",
    "idempotencyKey": "string"
  }'
POST /api/v1/boshu/drafts | Bounty Developer