Create User
curl --request POST \
--url https://staging-api.puppetvendors.com/users \
--header 'Content-Type: application/json' \
--header 'x-access-token: <api-key>' \
--data '
{
"email": "<string>",
"password": "<string>",
"vendor": "<string>",
"approved": true,
"notifications": true,
"sendInvite": true,
"profile": {
"profile.firstName": "<string>",
"profile.lastName": "<string>",
"profile.phone": "<string>"
},
"permission": {}
}
'import requests
url = "https://staging-api.puppetvendors.com/users"
payload = {
"email": "<string>",
"password": "<string>",
"vendor": "<string>",
"approved": True,
"notifications": True,
"sendInvite": True,
"profile": {
"profile.firstName": "<string>",
"profile.lastName": "<string>",
"profile.phone": "<string>"
},
"permission": {}
}
headers = {
"x-access-token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-access-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
email: '<string>',
password: '<string>',
vendor: '<string>',
approved: true,
notifications: true,
sendInvite: true,
profile: {
'profile.firstName': '<string>',
'profile.lastName': '<string>',
'profile.phone': '<string>'
},
permission: {}
})
};
fetch('https://staging-api.puppetvendors.com/users', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://staging-api.puppetvendors.com/users",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'email' => '<string>',
'password' => '<string>',
'vendor' => '<string>',
'approved' => true,
'notifications' => true,
'sendInvite' => true,
'profile' => [
'profile.firstName' => '<string>',
'profile.lastName' => '<string>',
'profile.phone' => '<string>'
],
'permission' => [
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-access-token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://staging-api.puppetvendors.com/users"
payload := strings.NewReader("{\n \"email\": \"<string>\",\n \"password\": \"<string>\",\n \"vendor\": \"<string>\",\n \"approved\": true,\n \"notifications\": true,\n \"sendInvite\": true,\n \"profile\": {\n \"profile.firstName\": \"<string>\",\n \"profile.lastName\": \"<string>\",\n \"profile.phone\": \"<string>\"\n },\n \"permission\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-access-token", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://staging-api.puppetvendors.com/users")
.header("x-access-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"<string>\",\n \"password\": \"<string>\",\n \"vendor\": \"<string>\",\n \"approved\": true,\n \"notifications\": true,\n \"sendInvite\": true,\n \"profile\": {\n \"profile.firstName\": \"<string>\",\n \"profile.lastName\": \"<string>\",\n \"profile.phone\": \"<string>\"\n },\n \"permission\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://staging-api.puppetvendors.com/users")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-access-token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"email\": \"<string>\",\n \"password\": \"<string>\",\n \"vendor\": \"<string>\",\n \"approved\": true,\n \"notifications\": true,\n \"sendInvite\": true,\n \"profile\": {\n \"profile.firstName\": \"<string>\",\n \"profile.lastName\": \"<string>\",\n \"profile.phone\": \"<string>\"\n },\n \"permission\": {}\n}"
response = http.request(request)
puts response.read_bodyUsers
Create User
Create a new user account for the vendor
POST
/
users
Create User
curl --request POST \
--url https://staging-api.puppetvendors.com/users \
--header 'Content-Type: application/json' \
--header 'x-access-token: <api-key>' \
--data '
{
"email": "<string>",
"password": "<string>",
"vendor": "<string>",
"approved": true,
"notifications": true,
"sendInvite": true,
"profile": {
"profile.firstName": "<string>",
"profile.lastName": "<string>",
"profile.phone": "<string>"
},
"permission": {}
}
'import requests
url = "https://staging-api.puppetvendors.com/users"
payload = {
"email": "<string>",
"password": "<string>",
"vendor": "<string>",
"approved": True,
"notifications": True,
"sendInvite": True,
"profile": {
"profile.firstName": "<string>",
"profile.lastName": "<string>",
"profile.phone": "<string>"
},
"permission": {}
}
headers = {
"x-access-token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-access-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
email: '<string>',
password: '<string>',
vendor: '<string>',
approved: true,
notifications: true,
sendInvite: true,
profile: {
'profile.firstName': '<string>',
'profile.lastName': '<string>',
'profile.phone': '<string>'
},
permission: {}
})
};
fetch('https://staging-api.puppetvendors.com/users', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://staging-api.puppetvendors.com/users",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'email' => '<string>',
'password' => '<string>',
'vendor' => '<string>',
'approved' => true,
'notifications' => true,
'sendInvite' => true,
'profile' => [
'profile.firstName' => '<string>',
'profile.lastName' => '<string>',
'profile.phone' => '<string>'
],
'permission' => [
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-access-token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://staging-api.puppetvendors.com/users"
payload := strings.NewReader("{\n \"email\": \"<string>\",\n \"password\": \"<string>\",\n \"vendor\": \"<string>\",\n \"approved\": true,\n \"notifications\": true,\n \"sendInvite\": true,\n \"profile\": {\n \"profile.firstName\": \"<string>\",\n \"profile.lastName\": \"<string>\",\n \"profile.phone\": \"<string>\"\n },\n \"permission\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-access-token", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://staging-api.puppetvendors.com/users")
.header("x-access-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"<string>\",\n \"password\": \"<string>\",\n \"vendor\": \"<string>\",\n \"approved\": true,\n \"notifications\": true,\n \"sendInvite\": true,\n \"profile\": {\n \"profile.firstName\": \"<string>\",\n \"profile.lastName\": \"<string>\",\n \"profile.phone\": \"<string>\"\n },\n \"permission\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://staging-api.puppetvendors.com/users")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-access-token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"email\": \"<string>\",\n \"password\": \"<string>\",\n \"vendor\": \"<string>\",\n \"approved\": true,\n \"notifications\": true,\n \"sendInvite\": true,\n \"profile\": {\n \"profile.firstName\": \"<string>\",\n \"profile.lastName\": \"<string>\",\n \"profile.phone\": \"<string>\"\n },\n \"permission\": {}\n}"
response = http.request(request)
puts response.read_bodyV2 Alpha — This endpoint is part of the V2 API preview. Breaking changes may occur.
Overview
Create a new user account for the authenticated vendor. ThevendorId is automatically derived from the vendor token, and the user type is always set to vendor. Optionally send an invitation email to the new user.
Vendor Token Required — This endpoint requires a vendor-scoped JWT token. Merchant tokens will receive a 403 error.
Use Cases
- Invite team members to the vendor portal
- Automate account provisioning for new vendor staff
Request Body
Email address for the new user. Must be a valid email format.
Password for the new user (minimum 6 characters).
Vendor name label for the user.
Whether the account is immediately active.
Enable email notifications for the user.
Send an invitation email to the new user.
Permission configuration object for granular access control.
Response
201
{
"success": true,
"data": {
"_id": "507f1f77bcf86cd799439022",
"email": "newuser@vendor.com",
"type": "vendor",
"approved": false,
"profile": {
"firstName": "New",
"lastName": "User"
},
"notifications": true,
"permission": {},
"createdAt": "2024-06-15T12:00:00.000Z",
"updatedAt": "2024-06-15T12:00:00.000Z"
}
}
Error Responses
409
{
"success": false,
"error": "A user with this email already exists"
}
Example
curl -X POST "https://staging-api.puppetvendors.com/users" \
-H "Content-Type: application/json" \
-H "x-access-token: YOUR_VENDOR_JWT_TOKEN" \
-d '{
"email": "newuser@vendor.com",
"password": "securePass123",
"approved": true,
"sendInvite": true,
"profile": {
"firstName": "New",
"lastName": "User"
}
}'
Was this page helpful?
⌘I