Email reports list

Overview

Returns a paginated list of the authenticated user's company email reports (recipient + cadence + targeted stores/accounts), with optional sorting and single-field search.

Prerequisites

  • A bearer token. Callable with Partner and Account tokens.

Base URL

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

Endpoint

POST /api/v1/email-report/list

Authentication

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

  • Who can call it: Partner and Account tokens.

  • Mounted under the role-agnostic account/* group (no bundle gate).

  • The list is hard-scoped to the auth user's company. A partner sees partner-level reports; an account user sees account-level reports for their own company.

  • If the user has no company, the response is an empty collection.

Rate limit

  • No rate limit.

Request body

  • Body (all optional):
FieldTypeRequiredDescription
sort_fieldstringnoOne of first_name, last_name, email, report_type, report_period_type_id.
sort_bystringnoasc/ASC/desc/DESC (defaults to ASC when sort_field set).
search_fieldstringnoOne of first_name, last_name, email, report_type, report_period_type_id, store_name.
search_valuestringnoFilter value (paired with search_field); NameNoAngleBrackets rule.
limitintegernoPage size, 10–100 (values below 10 are raised to 10); defaults to 10.
{
  "sort_field": "email",
  "sort_by": "ASC",
  "search_field": "store_name",
  "search_value": "Main",
  "limit": 10
}

Response

  • id (integer) — report id.
  • first_name (string|null) — recipient first name (from emails).
  • last_name (string|null) — recipient last name.
  • email (string|null) — recipient email.
  • report_type (integer) — the report's report_type_id aliased as report_type.
  • report_period_type_id (integer) — cadence period type id.
  • all_store (integer) — 0/1.
  • store_list (array) — objects { value: store_id, label: name [+ ' - ' + storeid] }.
  • account_list (array) — objects { value: company_id, label: company name }.

200 OK · 200

{
  "data": [
    {
      "id": 12,
      "first_name": "John",
      "last_name": "Doe",
      "email": "[email protected]",
      "report_type": 1,
      "report_period_type_id": 2,
      "all_store": 0,
      "store_list": [
        { "value": 8748, "label": "Downtown Location - LOC-001" }
      ],
      "account_list": [
        { "value": 31, "label": "Brand A" }
      ]
    }
  ],
  "links": {
    "first": "https://api.example.com/api/v1/email-report/list?page=1",
    "last": "https://api.example.com/api/v1/email-report/list?page=5",
    "prev": null,
    "next": "https://api.example.com/api/v1/email-report/list?page=2"
  },
  "meta": {
    "current_page": 1,
    "per_page": 10,
    "total": 50
  }
}

422 Validation error · 422

{
  "message": "The selected sort field is invalid.",
  "errors": {
    "sort_field": ["The selected sort field is invalid."],
    "limit": ["The limit field must not be greater than 100."]
  }
}

Errors

StatusMeaning
401The bearer token is missing, expired or invalid
422Validation error
500Unexpected server error

Example request

curl --request POST \
  --url "https://production-api.shoutaboutus.com/api/v1/email-report/list" \
  --header 'Authorization: Bearer <bearer-token>' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"sort_field": "email", "sort_by": "ASC", "search_field": "store_name", "search_value": "Main", "limit": 10}'

Did this page help you?