curl -X POST https://acme.orgo.space/api/v1/users \
-H "Content-Type: application/json" \
-d '{
"firstName": "James",
"lastName": "Patterson",
"email": "james.patterson@example.com",
"plainPassword": "Sup3rSecret!2026",
"localCenter": "/api/v1/local_centers/4",
"type": "/api/v1/roles/12"
}'const res = await fetch("https://acme.orgo.space/api/v1/users", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
firstName: "James",
lastName: "Patterson",
email: "james.patterson@example.com",
plainPassword: "Sup3rSecret!2026",
localCenter: "/api/v1/local_centers/4",
type: "/api/v1/roles/12",
}),
});
const user = await res.json();
use GuzzleHttp\Client;
$client = new Client(['base_uri' => 'https://acme.orgo.space']);
$response = $client->post('/api/v1/users', [
'json' => [
'firstName' => 'James',
'lastName' => 'Patterson',
'email' => 'james.patterson@example.com',
'plainPassword' => 'Sup3rSecret!2026',
'localCenter' => '/api/v1/local_centers/4',
'type' => '/api/v1/roles/12',
],
]);
$user = json_decode($response->getBody(), true);
import requests
url = "https://app.orgo.space/api/v1/users"
payload = {
"firstName": "James",
"lastName": "Patterson",
"email": "james.patterson@example.com",
"plainPassword": "Sup3rSecret!2026",
"localCenter": "/api/v1/local_centers/4",
"type": "/api/v1/roles/12",
"phoneNumber": "+1 415 555 0142",
"dateBirth": "1990-04-22T00:00:00+00:00",
"gender": "M",
"language": "en",
"timezone": "America/New_York",
"isRegisterAsMember": True
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.orgo.space/api/v1/users"
payload := strings.NewReader("{\n \"firstName\": \"James\",\n \"lastName\": \"Patterson\",\n \"email\": \"james.patterson@example.com\",\n \"plainPassword\": \"Sup3rSecret!2026\",\n \"localCenter\": \"/api/v1/local_centers/4\",\n \"type\": \"/api/v1/roles/12\",\n \"phoneNumber\": \"+1 415 555 0142\",\n \"dateBirth\": \"1990-04-22T00:00:00+00:00\",\n \"gender\": \"M\",\n \"language\": \"en\",\n \"timezone\": \"America/New_York\",\n \"isRegisterAsMember\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
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://app.orgo.space/api/v1/users")
.header("Content-Type", "application/json")
.body("{\n \"firstName\": \"James\",\n \"lastName\": \"Patterson\",\n \"email\": \"james.patterson@example.com\",\n \"plainPassword\": \"Sup3rSecret!2026\",\n \"localCenter\": \"/api/v1/local_centers/4\",\n \"type\": \"/api/v1/roles/12\",\n \"phoneNumber\": \"+1 415 555 0142\",\n \"dateBirth\": \"1990-04-22T00:00:00+00:00\",\n \"gender\": \"M\",\n \"language\": \"en\",\n \"timezone\": \"America/New_York\",\n \"isRegisterAsMember\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.orgo.space/api/v1/users")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"firstName\": \"James\",\n \"lastName\": \"Patterson\",\n \"email\": \"james.patterson@example.com\",\n \"plainPassword\": \"Sup3rSecret!2026\",\n \"localCenter\": \"/api/v1/local_centers/4\",\n \"type\": \"/api/v1/roles/12\",\n \"phoneNumber\": \"+1 415 555 0142\",\n \"dateBirth\": \"1990-04-22T00:00:00+00:00\",\n \"gender\": \"M\",\n \"language\": \"en\",\n \"timezone\": \"America/New_York\",\n \"isRegisterAsMember\": true\n}"
response = http.request(request)
puts response.read_body{
"id": 42,
"firstName": "James",
"lastName": "Patterson",
"fullName": "James Patterson",
"email": "james.patterson@example.com",
"status": "NEW",
"isEmailConfirmed": false,
"localCenter": {
"id": 4,
"name": "Boston"
},
"type": {
"id": 12,
"name": "Member"
},
"phoneNumber": "+1 415 555 0142",
"dateBirth": "1990-04-22T00:00:00+00:00",
"language": "en",
"timezone": "America/New_York",
"dateCreated": "2026-01-15T10:30:00+00:00",
"dateUpdated": "2026-01-15T10:30:00+00:00"
}Register a new user
Public self-registration endpoint. Creates a new user in the specified tenant (via tenant IRI or tenantSlug). Includes anti-spam protection (honeypot field, form completion time check). Supports optional parentOptIn, volunteeringOptIn, userTypeSlug for role assignment, referrerId for referral tracking, and companyInvitationHash for company invitation acceptance. If no password is provided, a random one is generated with forcePasswordReset enabled.
curl -X POST https://acme.orgo.space/api/v1/users \
-H "Content-Type: application/json" \
-d '{
"firstName": "James",
"lastName": "Patterson",
"email": "james.patterson@example.com",
"plainPassword": "Sup3rSecret!2026",
"localCenter": "/api/v1/local_centers/4",
"type": "/api/v1/roles/12"
}'const res = await fetch("https://acme.orgo.space/api/v1/users", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
firstName: "James",
lastName: "Patterson",
email: "james.patterson@example.com",
plainPassword: "Sup3rSecret!2026",
localCenter: "/api/v1/local_centers/4",
type: "/api/v1/roles/12",
}),
});
const user = await res.json();
use GuzzleHttp\Client;
$client = new Client(['base_uri' => 'https://acme.orgo.space']);
$response = $client->post('/api/v1/users', [
'json' => [
'firstName' => 'James',
'lastName' => 'Patterson',
'email' => 'james.patterson@example.com',
'plainPassword' => 'Sup3rSecret!2026',
'localCenter' => '/api/v1/local_centers/4',
'type' => '/api/v1/roles/12',
],
]);
$user = json_decode($response->getBody(), true);
import requests
url = "https://app.orgo.space/api/v1/users"
payload = {
"firstName": "James",
"lastName": "Patterson",
"email": "james.patterson@example.com",
"plainPassword": "Sup3rSecret!2026",
"localCenter": "/api/v1/local_centers/4",
"type": "/api/v1/roles/12",
"phoneNumber": "+1 415 555 0142",
"dateBirth": "1990-04-22T00:00:00+00:00",
"gender": "M",
"language": "en",
"timezone": "America/New_York",
"isRegisterAsMember": True
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.orgo.space/api/v1/users"
payload := strings.NewReader("{\n \"firstName\": \"James\",\n \"lastName\": \"Patterson\",\n \"email\": \"james.patterson@example.com\",\n \"plainPassword\": \"Sup3rSecret!2026\",\n \"localCenter\": \"/api/v1/local_centers/4\",\n \"type\": \"/api/v1/roles/12\",\n \"phoneNumber\": \"+1 415 555 0142\",\n \"dateBirth\": \"1990-04-22T00:00:00+00:00\",\n \"gender\": \"M\",\n \"language\": \"en\",\n \"timezone\": \"America/New_York\",\n \"isRegisterAsMember\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
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://app.orgo.space/api/v1/users")
.header("Content-Type", "application/json")
.body("{\n \"firstName\": \"James\",\n \"lastName\": \"Patterson\",\n \"email\": \"james.patterson@example.com\",\n \"plainPassword\": \"Sup3rSecret!2026\",\n \"localCenter\": \"/api/v1/local_centers/4\",\n \"type\": \"/api/v1/roles/12\",\n \"phoneNumber\": \"+1 415 555 0142\",\n \"dateBirth\": \"1990-04-22T00:00:00+00:00\",\n \"gender\": \"M\",\n \"language\": \"en\",\n \"timezone\": \"America/New_York\",\n \"isRegisterAsMember\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.orgo.space/api/v1/users")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"firstName\": \"James\",\n \"lastName\": \"Patterson\",\n \"email\": \"james.patterson@example.com\",\n \"plainPassword\": \"Sup3rSecret!2026\",\n \"localCenter\": \"/api/v1/local_centers/4\",\n \"type\": \"/api/v1/roles/12\",\n \"phoneNumber\": \"+1 415 555 0142\",\n \"dateBirth\": \"1990-04-22T00:00:00+00:00\",\n \"gender\": \"M\",\n \"language\": \"en\",\n \"timezone\": \"America/New_York\",\n \"isRegisterAsMember\": true\n}"
response = http.request(request)
puts response.read_body{
"id": 42,
"firstName": "James",
"lastName": "Patterson",
"fullName": "James Patterson",
"email": "james.patterson@example.com",
"status": "NEW",
"isEmailConfirmed": false,
"localCenter": {
"id": 4,
"name": "Boston"
},
"type": {
"id": 12,
"name": "Member"
},
"phoneNumber": "+1 415 555 0142",
"dateBirth": "1990-04-22T00:00:00+00:00",
"language": "en",
"timezone": "America/New_York",
"dateCreated": "2026-01-15T10:30:00+00:00",
"dateUpdated": "2026-01-15T10:30:00+00:00"
}Body
The new User resource
255255"/api/v1/local_centers/1"
"/api/v1/towns/1"
"/api/v1/roles/1"
"/api/v1/tenants/1"
"/api/v1/towns/1"
"/api/v1/user_roles/1"
"/api/v1/profession_types/1"
"/api/v1/product_prices/1"
"/api/v1/product_prices/1"
"/api/v1/profession_jobs/1"
"/api/v1/profession_jobs/1"
Show child attributes
Show child attributes
Response
User resource created
255255Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes

