Bulk-provision stores into a tier

Overview

Moves up to 1,000 stores into one tier in a single call. Safe to re-run: sending the same list again moves nothing further, so a retry after a timeout does not double-charge. Stores outside your partner account are skipped rather than rejected — read skipped_out_of_scope in the response.

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/partner/provisioning/bulk

Authentication

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

  • Bearer — partner token. The platform resolves the partner account your user belongs to, and only stores under that account can be moved.

Rate limit

  • No rate limit.

Request body

FieldTypeRequiredDescription
tierstringRequiredOne of core, mgmt, plus, dormant. Ask your account manager which value matches each subscription.
store_idsinteger[]Required1–1000 store ids.
store_ids.*integerRequiredEach entry must be an integer.
{
  "tier": "mgmt",
  "store_ids": [
    123,
    27
  ]
}

How it works

  • 200 with { provisioned, skipped_out_of_scope } (arrays of store ids). Safe to re-run: repeating the call for a store already on the target tier clears only cancel_subscription_at marker.
  • 400 unknown tier slug · 403 partner scope unresolvable · 422 validation (missing tier / store_ids).

Response

200 OK · 200

{
  "data": {
    "provisioned": [
      26,
      27
    ],
    "skipped_out_of_scope": [
      99
    ]
  }
}

403 Forbidden · 403

{
  "message": "Partner scope could not be resolved for this user.",
  "status": "error",
  "errors": {}
}

422 Unprocessable Entity · 422

{
  "message": "The tier field is required.",
  "errors": {
    "tier": [
      "The tier field is required."
    ],
    "store_ids": [
      "The store ids field is required."
    ]
  }
}

Errors

StatusMeaning
400The request was rejected — the response explains why
401The bearer token is missing, expired or invalid
403Forbidden
422Unprocessable Entity
500Unexpected server error

Example request

curl --request POST \
  --url "https://production-api.shoutaboutus.com/api/v1/partner/provisioning/bulk" \
  --header 'Authorization: Bearer <bearer-token>' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"tier": "mgmt", "store_ids": [123, 27]}'

Did this page help you?