---
search:
  tags:
    - Topics
    - GET
seo:
  description: >-
    List the fields of every schema that the data of a… Reference for the GET
    /v2/topics/name/{url_quoted_topic_name}/fields endpoint in the Roboto REST
    API.
sidebar:
  label: Get schema fields of topic
  badge: GET
title: Get schema fields of topic
type: openapi-operation
---
List the fields of every schema that the data of a named topic in the resource owner org uses.

The name arrives URL-quoted in the path, since topic names can contain slashes. A name the org has no topic
identity for answers 404. Each field comes back once per schema that declares it, with that schema's
``schema_id``, type and unit, so a field that two schemas declare comes back twice. Each field's
``path_in_schema`` holds its path components as stored, so a component that contains a dot stays one component.

Records are ordered by ``(schema_id, path_in_schema)``. A page holds at most 1000 records and ends at the last
record that fits the response size limit; a first record that does not fit is still returned alone. Pass a page's
``next_token`` as ``page_token`` to read the next page. A topic with no fields gives an empty page.

The caller must hold topic view access in the resource owner org. The route checks it before the lookup, so a
caller without it gets the same 401 whether or not the name exists.

#### Access control
 - requires_resource_owner
 - Restricted tokens need the API scope `api.everything_else`

`GET /v2/topics/name/{url_quoted_topic_name}/fields`

**Responses**

- `200` — OK
- `400` — Thrown when the conversation context (messages, system prompt, tool results) exceeds the model's context window limit. The token estimate and the model's context limit are not carried on the exception, so a caller cannot read usage numbers off it.
- `401` — Thrown when authentication fails
- `403` — Thrown if an operation would exceed a user or org level limit.
- `404` — Thrown if a user is attempting to perform an action unrecognized by the Roboto platform.
- `409` — Thrown if there is a conflict between a resource you're creating and another existing resource
- `410` — Thrown if a resource is missing or expired.
- `500` — An error the platform reported that this SDK release cannot resolve to a specific exception class. Reported for an element of a :py:class:\`\~roboto.http.BatchResponse\` whose error names a code this release defines no class for, or that arrived without a code, without a message, or as text that is not an error envelope at all. It carries whatever code and message the platform sent, so a caller handling the failure still learns what went wrong; when no message could be read, the message is the error's raw text. The error envelope carries no status code, so \`\`http\_status\_code\`\` reports the 500 inherited from :py:class:\`RobotoDomainException\` rather than the status the failure actually had.
- `501` — Thrown by shimmed out APIs which have not yet been implemented
- `503` — Thrown when a service is unavailable, such as when it's under heavy load and can't accept new requests. This is expected to be transient and ought to be retried.
- `504` — Thrown when the service times out while processing a request. This is exepcted to be transient and ought to be retried.
- `507` — Thrown when the server cannot complete the request because the response payload exceeds a storage or transport capacity limit (e.g., Lambda response size). This is NOT expected to be transient and should NOT be retried.

Response example, 200:

```json
{
  "data": {
    "items": [
      {
        "canonical_data_type": "array",
        "created": null,
        "created_by": "string",
        "data_type": "string",
        "field_id": "string",
        "modified": null,
        "modified_by": "string",
        "name": "string",
        "org_id": "string",
        "path_in_schema": [
          "string"
        ],
        "schema_id": "string",
        "unit": null,
        "element_names": null
      }
    ],
    "next_token": null,
    "total_count": null
  }
}
```
