POST
/country/:countryCode/names
Bulk upload country names

Authentication

Requires a valid X-APIKEY header. The key must have upload permission. Keys without upload permission receive 403 Forbidden.

URL parameter

ParameterNotes
:countryCodeTwo-letter country code for an existing country (e.g. ZA). Must already exist in the database.

Request body

{
  "male": {
    "mode": "add",
    "names": [
      "Sipho",
      "Themba"
    ]
  },
  "female": {
    "mode": "replace",
    "names": [
      "Naledi",
      "Thandiwe"
    ]
  },
  "surnames": {
    "mode": "add",
    "names": [
      "Mthembu",
      "Ndlovu"
    ]
  }
}

Each collection requires a mode ("add" or "replace") and a names array. Collections are processed independently.

Upload modes

ModeBehaviour
addKeeps existing names. Inserts new names not already present. Empty list makes no changes.
replaceDeletes all existing names for that category, then inserts the supplied list. An empty list clears the category.

Example response (200 OK)

{
  "success": true,
  "countryCode": "ZA",
  "male": {
    "mode": "add",
    "submitted": 2,
    "inserted": 2,
    "duplicates": 0,
    "rejected": 0,
    "removed": 0,
    "rejectedNames": []
  },
  "female": {
    "mode": "replace",
    "submitted": 2,
    "inserted": 2,
    "duplicates": 0,
    "rejected": 0,
    "removed": 50,
    "rejectedNames": []
  },
  "surnames": {
    "mode": "add",
    "submitted": 2,
    "inserted": 1,
    "duplicates": 0,
    "rejected": 1,
    "removed": 0,
    "rejectedNames": [
      {
        "value": "",
        "reason": "EMPTY_NAME"
      }
    ]
  }
}

Name rejection reasons

ReasonDescription
EMPTY_NAMEName is empty or contains only whitespace.
INVALID_TYPEName value is not a string.
NAME_TOO_LONGName exceeds 255 characters.
UNSUPPORTED_CHARACTERSName contains non-Latin characters.

Error responses

StatusCodeReason
403FORBIDDENMissing, invalid, or insufficiently-permissioned API key.
400INVALID_COUNTRYCountry code not found in database.
400INVALID_REQUESTMalformed body, missing collection, or invalid mode.
500INTERNAL_ERRORUnexpected server error. All changes rolled back.