2 operations. Every schema and example on this page is generated from the platform contract.
The gym whose welcome the member has just seen.
True when a pending welcome was marked delivered. False is NOT an error, it means there was nothing owed (already seen, already texted by the gym, or never queued), which is exactly what a retried ack should report.
curl -X POST "https://www.membber.com/api/v1/membership/welcome/ack" \
-H "Authorization: Bearer $MEMBBER_TOKEN" \
-H "Idempotency-Key: 1f0e2d3c-4b5a-4678-9abc-def012345678" \
-H "Content-Type: application/json" \
-d '{
"store_id": "6659c139-0000-4000-8000-d0c500000066"
}'import { createMembberClient } from "@membber/sdk-ts";
const membber = createMembberClient({
getAccessToken: () => process.env.MEMBBER_TOKEN,
});
const { data, error } = await membber.raw.POST("/api/v1/membership/welcome/ack", {
body: {
store_id: "6659c139-0000-4000-8000-d0c500000066"
},
headers: { "Idempotency-Key": crypto.randomUUID() },
});
if (error) {
// Typed error envelope: { error: { code, message, requestId } }
throw new Error(`${error.error.code}: ${error.error.message}`);
}
console.log(data);import MembberSwift
let client = MembberClient(
serverURL: MembberClient.productionServerURL,
tokenProvider: { session.accessToken }
)
let response = try await client.api.ackMemberWelcome(
body: .json(.init(
storeId: "6659c139-0000-4000-8000-d0c500000066"
))
).ok.body.json
print(response){
"success": true,
"acknowledged": true
}The gym (also authorises the merchant).
The member who was texted.
True when a pending welcome was marked texted. False is NOT an error, it means nothing was owed (already seen in-app, or already texted).
curl -X POST "https://www.membber.com/api/v1/membership/welcome/texted" \
-H "Authorization: Bearer $MEMBBER_TOKEN" \
-H "Idempotency-Key: 1f0e2d3c-4b5a-4678-9abc-def012345678" \
-H "Content-Type: application/json" \
-d '{
"store_id": "6659c139-0000-4000-8000-d0c500000066",
"customer_id": "96607d1c-0000-4000-8000-d0c500000096"
}'import { createMembberClient } from "@membber/sdk-ts";
const membber = createMembberClient({
getAccessToken: () => process.env.MEMBBER_TOKEN,
});
const { data, error } = await membber.raw.POST("/api/v1/membership/welcome/texted", {
body: {
store_id: "6659c139-0000-4000-8000-d0c500000066",
customer_id: "96607d1c-0000-4000-8000-d0c500000096"
},
headers: { "Idempotency-Key": crypto.randomUUID() },
});
if (error) {
// Typed error envelope: { error: { code, message, requestId } }
throw new Error(`${error.error.code}: ${error.error.message}`);
}
console.log(data);import MembberSwift
let client = MembberClient(
serverURL: MembberClient.productionServerURL,
tokenProvider: { session.accessToken }
)
let response = try await client.api.markMemberWelcomeTexted(
body: .json(.init(
storeId: "6659c139-0000-4000-8000-d0c500000066",
customerId: "96607d1c-0000-4000-8000-d0c500000096"
))
).ok.body.json
print(response){
"success": true,
"recorded": true
}