POST
/
users
/
{user_id}
/
contributions
/
self
cURL
curl --request POST \
  --url http://localhost:8080/users/{user_id}/contributions/self \
  --header 'Content-Type: application/json' \
  --data '{
  "amount": 123
}'
{
  "account_id": "<string>",
  "amount": {
    "value": 123
  },
  "created_at": "<string>",
  "id": "<string>",
  "last_modified_at": "<string>",
  "payload": "<unknown>",
  "source": "<string>",
  "user_id": "012345678901",
  "external_status": "<string>"
}

Path Parameters

user_id
string
required

User ID

Body

application/json
amount
number<double>
required
currency
enum<string>
required

ISO 4217 three-letter currency codes.

Currently INR only; add variants as the product expands.

Available options:
INR

Response

Self-contribution session opened

account_id
string
required
amount
object
required
created_at
string
required
id
string
required
last_modified_at
string
required
payload
any
required
source
string
required
user_id
string
required

A validated 12-digit numeric user identifier.

Every external entry point validates:

  • JSON Deserialize runs [UserId::parse] (outer whitespace trimmed, length and digit-only enforced) via #[serde(try_from = "String")].
  • DB FromSql runs [UserId::parse] on every row read.

Display / Deref<Target = str> / AsRef<str> / Into<String> are derived via derive_more — the inner String is pass-through for every read-only borrow, display, and move-out.

Example:

"012345678901"

external_status
string | null