Skip to content
Menu
SilktideDevelopers

Set some of a section's metadata

POST/v1/websites/{websiteId}/sections/{sectionId}/meta
View as Markdown

Sets some of a section's metadata values and returns all of them, as Get a section's metadata does. Section 0 is the whole website. Send only the values you want to change; the rest keep theirs.

Setting metadata needs "Can admin this website", like the website's other settings. Reading it needs only "Can see section".

Each value is checked against its property before anything is saved:

  • An int takes a whole number, and a float any number. Either may be sent as a number or as a string such as "2023". min and max are the smallest and largest allowed.
  • A bool takes true or false, or "true", "false", 1 or 0.
  • A url takes an http or https address.
  • A string takes text, at least min and at most max characters long.
  • When a property has choices and allowOther is false, the value must be one of them.
  • No value may be longer than 1,024 characters.

Send null or "" to empty a value, unless the property isRequired. An emptied int reads back as 0, and an emptied bool as false.

A value equal to the one already stored is always accepted, even if it no longer fits its property, so you can send every value back unchanged.

If any value is refused, nothing is saved. The answer is 400 InvalidRequest; its message says what is wrong and properties.field names the property:

{
  "error": {
    "type": "InvalidRequest",
    "message": "Year created must be at least 1995.",
    "properties": { "field": "year" }
  }
}
Request
curl -X POST "https://api.eu.silktide.com/v1/websites/3/sections/2/meta" \
  -H "Authorization: silktide token=$SILKTIDE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "values": {
    "region": "US",
    "author": "Jane Doe",
    "year": 2023
  }
}'
Response: Set a section's region, author and year
{
  "values": {
    "region": "US",
    "author": "Jane Doe",
    "year": 2023
  },
  "properties": [
    {
      "name": "region",
      "label": "Region",
      "propertyType": "string",
      "isRequired": true,
      "min": null,
      "max": null,
      "choices": [
        "UK",
        "US",
        "Europe",
        "AU"
      ],
      "allowOther": false
    },
    {
      "name": "author",
      "label": "Author",
      "propertyType": "string",
      "isRequired": false,
      "min": null,
      "max": null,
      "choices": [
        "John Smith",
        "Jane Doe",
        "Joe Bloggs"
      ],
      "allowOther": true
    },
    {
      "name": "year",
      "label": "Year created",
      "propertyType": "int",
      "isRequired": false,
      "min": 1995,
      "max": 3000,
      "choices": null,
      "allowOther": false
    }
  ]
}

Request

Path parameters

  • websiteIdintegerrequiredat least 1

    The website.

  • sectionIdintegerrequired

    The section. 0 is the whole website.

Body

JSON, sent with Content-Type: application/json.

  • valuesmap of strings or numbers or booleans

    The values to set, by property name. Properties left out keep their value, and null or "" empties one. Each value is checked against its property. Left out, nothing changes.

Response

200JSON.

  • valuesmap of strings or numbers or booleans or empty listrequired

    The section's values, by property name. Only properties that have been given a value are here. An empty array ([]), not an object, when none have.

  • propertieslist of objectsrequired

    Every metadata property the account defines for sections, in the account's order.

    Show 8 fields
    • namestringrequired

      The property's name: the key of its value in values.

    • labelstringrequired

      Its name as people see it.

    • propertyTypestringrequired

      The type of value it holds.

      One ofstringintfloatboolurl

    • isRequiredbooleanrequired

      Whether every section is meant to have a value for it.

    • minintegerrequiredcan be null

      The smallest value (int, float) or shortest length (string, url) it is meant to take. Null for no limit.

    • maxintegerrequiredcan be null

      The largest value or longest length it is meant to take. Null for no limit.

    • choiceslist of stringsrequiredcan be null

      The values to pick from. Null when it has no list.

    • allowOtherbooleanrequired

      With choices, whether a value not in the list is meant to be allowed.

Errors

StatusTypeWhen
404ModelNotFoundNo website or section with those ids exists in the account, or the API key's user cannot see it.
403AccessDeniedThe API key's user cannot admin this website.
400InvalidRequestA value does not fit its property, names no property the account has, or values is not an object. properties.field names the property, and nothing is saved.
401NotLoggedInNo API key was sent, or it is not a key for this region.(any operation)
429TooManyRequestsToo many requests to this path in five seconds. Retry after the number of seconds in the Retry-After header, which properties.retryAfter repeats.(any operation)
503-Silktide is busy. Retry after the number of seconds in the Retry-After header.(any operation)

Every error has the same body. See Errors.

Access

Permission
Can admin this website
Plan feature
None
Edition
Silktide 4 and Silktide 5
Cost
Free
Available since
v1.0.0

Try it

Sends a real request to your account from this browser. Your key stays in this tab and goes only to the Silktide API.

This changes your account. It is not a sandbox.