Skip to content

Accept an invitation

POST
/storefront/sites/{host}/account/join
curl --request POST \
--url https://example.com/storefront/sites/northgate.shop.getbottle.app/account/join \
--header 'Content-Type: application/json' \
--data '{ "token": "example" }'

Deliberately without a staff session: a shopper on the business’s own shop. With the token from the invitation email. Signed in, the account must have the invited email (403 wrong_email). Signed out, an account with that email must exist (409 sign_up_first) and the link both confirms its email and signs it in. Joins with the role given.

host
required
string
Example
northgate.shop.getbottle.app
Media typeapplication/json
object
token
required
string
>= 10 characters <= 200 characters
Examplegenerated
{
"token": "example"
}

Joined

Media typeapplication/json
object
name
required
string
email
required
string
emailVerified
required
boolean
twoFactor
required
boolean
hasPin
required
boolean
marketingConsent
boolean
customers
required
Array<object>
object
id
required

UUID v7

string format: uuid
name
required
string
kind
required
string
Allowed values: domestic commercial
paymentTerms
required
string | null
canPayOnAccount
required
boolean
trade
required
boolean
role
required
string
Allowed values: manager buyer accounts
canOrder
required
boolean
addresses
required
Array<object>
object
id
required

UUID v7

string format: uuid
customerId
required

UUID v7

string format: uuid
label
required
string
line1
required
string
line2
required
string | null
city
required
string | null
postcode
required
string | null
tradeApplication
required
object
status
required
string
Allowed values: none pending approved declined
reason
required
string | null
submittedAt
required
string | null format: date-time
joined
required
object
customerId
required

UUID v7

string format: uuid
customerName
required
string
role
required
string
Allowed values: manager buyer accounts
Example
{
"customers": [
{
"id": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f",
"kind": "domestic",
"role": "manager"
}
],
"addresses": [
{
"id": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f",
"customerId": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f"
}
],
"tradeApplication": {
"status": "none"
},
"joined": {
"customerId": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f",
"role": "manager"
}
}

Refused: the message says why

Media typeapplication/json
object
error
required
string
message
required
string
Example
{
"error": "not_found",
"message": "Customer not found"
}

Not signed in

Media typeapplication/json
object
error
required
string
message
required
string
Example
{
"error": "not_found",
"message": "Customer not found"
}

Not from the shop itself, or the email is not confirmed yet

Media typeapplication/json
object
error
required
string
message
required
string
Example
{
"error": "not_found",
"message": "Customer not found"
}

Not a shop. No body.

Sign up first, or the shop is not selling now (shop_closed)

Media typeapplication/json
object
error
required
string
message
required
string
Example
{
"error": "not_found",
"message": "Customer not found"
}

Validation failed

Media typeapplication/json
object
error
required
string
Allowed values: validation
message
required
string
issues
required
Array<object>
object
path
required
string
message
required
string
Example
{
"error": "validation",
"issues": [
{
"path": "email",
"message": "Invalid email"
}
]
}

Too many tries

Media typeapplication/json
object
error
required
string
message
required
string
Example
{
"error": "not_found",
"message": "Customer not found"
}