Add account user

Overview

Create a new user under the authenticated account with a role (admin / location_assign / basic), optional per-store assignments and default reports (activity, review-response, insight). Emails first-login credentials via the white-label welcome email.

Prerequisites

  • A bearer token in the Authorization header.

Base URL

EnvironmentURL
Productionhttps://production-api.shoutaboutus.com
Developmenthttps://development-api.shoutaboutus.com

Endpoint

POST /api/v1/user/add

Authentication

  • Requires a bearer token in the Authorization: Bearer <bearer-token> header.

  • Account admin — collection bearer token.

  • authorize requires the caller's company bundle_id (the company type — 1 = partner, 2 = location, 3 = account) to be ACCOUNT. Otherwise it returns 403 (This action is unauthorized.).

Rate limit

  • No rate limit.

Request body

FieldTypeRequiredDescription
first_namestringRequired≤255 chars; no angle brackets.
last_namestringOptional≤255 chars.
titlestringOptional≤50 chars.
emailstringRequiredValid email; unique in users.
passwordstringRequired8–100 chars, mixed case + number + special char, no spaces/quotes.
user_typestringRequiredadmin, location_assign, or basic.
store_idsinteger[]Required if user_type=location_assign, or basic with assign_all_accounts=0Store ids under the caller's account (an ownership check).
assign_all_accountsintegerRequired if user_type=basic0/1.
send_default_reportsintegerOptional0/1; 1 enables default reports (account companies only).
inactive_atstringOptionalY-m-d H:i:s deactivation date.
{
  "first_name": "Jane",
  "last_name": "Smith",
  "title": "Manager",
  "email": "[email protected]",
  "password": "<your-password>",
  "user_type": "location_assign",
  "store_ids": [
    12
  ],
  "assign_all_accounts": 1,
  "send_default_reports": 1,
  "inactive_at": null
}

How it works

  • Synchronous (DB transaction). 200 returns per-report error/info/success arrays alongside the success message.
  • 403 when the caller is not an account company (authorize fails).
  • 422 on validation failure; 500 on save failure (rolled back).

Response

200 OK · 200

{
  "data": {
    "status": "success",
    "response": "User has been created successfully",
    "error": [],
    "info": [],
    "success": [
      "Activity Report has been enabled.",
      "Review Response Report has been enabled.",
      "Insight Report has been enabled."
    ]
  }
}

403 Unauthorized (not an account) · 403

{
  "message": "This action is unauthorized."
}

422 Validation error · 422

{
  "message": "The email has already been taken.",
  "errors": {
    "email": [
      "The email has already been taken."
    ],
    "store_ids": [
      "The store ids field is required."
    ]
  }
}

Errors

StatusMeaning
401The bearer token is missing, expired or invalid
403Unauthorized (not an account)
422Validation error
500Returned on save failure (rolled back)

Example request

curl --request POST \
  --url "https://production-api.shoutaboutus.com/api/v1/user/add" \
  --header 'Authorization: Bearer <bearer-token>' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"first_name": "Jane", "last_name": "Smith", "title": "Manager", "email": "[email protected]", "password": "<your-password>", "user_type": "location_assign", "store_ids": [12], "assign_all_accounts": 1, "send_default_reports": 1, "inactive_at": null}'

Notes

  • Creates User + Person + Email + UserStore (+ Report) rows, sends a welcome email, writes a USER_CREATED audit event.

Did this page help you?