> ## Documentation Index
> Fetch the complete documentation index at: https://docs.extole.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get report type schema

> Returns the schema a report type produces - ordered `columns` for flat output, or representative `sample_rows` for nested JSON output. For report types with fixed columns, these are the report type's preview columns. For configurable report types, they are the client-named columns defined by the report type's column mapping parameters. Report types whose schema depends on the client's own configuration resolve it against the report type's declared parameter defaults, which the response echoes as `context_parameters`. To resolve the schema against your own parameter values instead, post them to this same path. Use this to discover a report type's output shape without running the report.



## OpenAPI

````yaml /api-reference/management.json get /v6/report-types/{id}/schema
openapi: 3.0.1
info:
  description: >-
    Configuration endpoints for the Extole platform: campaigns, components,
    audiences, persons, rewards, reporting, integrations setup, and
    administrative tooling.


    ## Updating a resource


    `PUT` merges. A field you omit from the body is left at its stored value, so
    you do not need to read a resource and send it back whole in order to change
    one field. This is a deliberate departure from the HTTP convention that
    `PUT` replaces, and it holds across this API.


    Two qualifications, both visible on each operation's own request schema:


    - Some operations mark fields `required` in their request schema. Those must
    be sent on every request, whether or not you are changing them.

    - A field that holds a list or a map is replaced, not merged, when you
    supply it. Sending one entry of a collection stores that entry and drops the
    rest, so to change one member of a collection you must send the collection's
    other members alongside it.
  title: Management API
  version: '1.0'
servers:
  - description: Production
    url: https://api.extole.io
security:
  - HEADER: []
  - QUERY: []
  - COOKIE: []
tags:
  - name: Audiences
  - name: Authentication
  - name: Batch Jobs
  - name: Batch Jobs (Legacy)
  - name: Blocks
  - name: Campaigns
  - name: Components
  - name: Components Operations
  - name: Domains
  - name: Email
  - name: Erasure
  - name: Event Streams
  - name: Optout
  - name: Profiles
  - name: Promotion Links
  - name: Report Schedules
  - name: Report Types
  - name: Reports
  - name: Reward Suppliers
  - name: SFTP Servers
  - name: Security Keys
  - name: Settings
  - name: User Notifications
  - name: User Subscriptions
  - name: Users
  - name: Webhooks
paths:
  /v6/report-types/{id}/schema:
    get:
      tags:
        - Report Types
      summary: Get report type schema
      description: >-
        Returns the schema a report type produces - ordered `columns` for flat
        output, or representative `sample_rows` for nested JSON output. For
        report types with fixed columns, these are the report type's preview
        columns. For configurable report types, they are the client-named
        columns defined by the report type's column mapping parameters. Report
        types whose schema depends on the client's own configuration resolve it
        against the report type's declared parameter defaults, which the
        response echoes as `context_parameters`. To resolve the schema against
        your own parameter values instead, post them to this same path. Use this
        to discover a report type's output shape without running the report.
      parameters:
        - description: The Extole unique report type identifier.
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportTypeSchemaResponse'
          description: >-
            Schema the report type produces, with output columns or
            representative nested JSON row shapes, alongside the parameter
            values it was resolved against.
        '400':
          content:
            application/json:
              examples:
                report_type_missing:
                  $ref: '#/components/examples/report_type_missing'
                report_type_schema_not_supported:
                  $ref: '#/components/examples/report_type_schema_not_supported'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: >-
            The request cannot be fulfilled. Either the report type id is
            missing from the request (`report_type_missing`), or the report type
            does not describe its output shape at all, in `columns` or in
            `sample_rows` (`report_type_schema_not_supported`) - inspect the
            response `code` field for the specific error.
        '401':
          content:
            application/json:
              examples:
                method_unauthorized:
                  $ref: '#/components/examples/method_unauthorized'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Unauthorized
        '402':
          content:
            application/json:
              examples:
                payment_required:
                  $ref: '#/components/examples/payment_required'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Payment Required
        '403':
          content:
            application/json:
              examples:
                access_denied:
                  $ref: '#/components/examples/access_denied'
                method_unauthorized:
                  $ref: '#/components/examples/method_unauthorized'
                missing_access_token:
                  $ref: '#/components/examples/missing_access_token'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              examples:
                report_type_not_found:
                  $ref: '#/components/examples/report_type_not_found'
          description: >-
            Report type was not found. The supplied id does not match any report
            type accessible to the calling client.
        '415':
          content:
            application/json:
              examples:
                unsupported_media_type:
                  $ref: '#/components/examples/unsupported_media_type'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Unsupported Media Type
        '429':
          content:
            application/json:
              examples:
                too_many_requests:
                  $ref: '#/components/examples/too_many_requests'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Too Many Requests
components:
  schemas:
    ReportTypeSchemaResponse:
      properties:
        columns:
          description: Columns the report type produces, in output order.
          items:
            $ref: '#/components/schemas/ReportTypeColumnResponse'
          type: array
        context_parameters:
          additionalProperties:
            description: >-
              Report parameters this schema was resolved against, keyed by
              parameter name. Each one can change the schema; supply report
              parameter values in the POST request body to resolve the schema
              against a different context. A value is what the caller supplied,
              otherwise the report type's declared default; parameters with
              neither are absent, and leaving one out resolves the schema
              against the report type's own default behavior rather than making
              the answer partial. Run the report with these same parameter
              values to get these same columns and representative rows. Empty
              for report types whose schema does not depend on context.
            readOnly: true
            type: string
          description: >-
            Report parameters this schema was resolved against, keyed by
            parameter name. Each one can change the schema; supply report
            parameter values in the POST request body to resolve the schema
            against a different context. A value is what the caller supplied,
            otherwise the report type's declared default; parameters with
            neither are absent, and leaving one out resolves the schema against
            the report type's own default behavior rather than making the answer
            partial. Run the report with these same parameter values to get
            these same columns and representative rows. Empty for report types
            whose schema does not depend on context.
          readOnly: true
          type: object
        report_type_id:
          description: >-
            Id of the report type this schema belongs to. Pass it to `GET
            /v6/report-types/{id}/schema` to fetch this schema on its own.
          readOnly: true
          type: string
        sample_rows:
          description: >-
            Representative nested JSON output row shapes for this context. These
            are mock shapes, not report data and not a JSON Schema.
          items:
            $ref: '#/components/schemas/JsonNode'
          type: array
      required:
        - columns
        - context_parameters
        - report_type_id
        - sample_rows
      type: object
    RestExceptionResponse:
      description: Represents the API error response
      properties:
        code:
          description: Specific error code for this error type, documented per endpoint
          type: string
        http_status_code:
          description: >-
            HTTP status code that was returned with this error, useful if client
            get response code
          format: int32
          type: integer
        message:
          description: User readable English description of the error
          type: string
        parameters:
          additionalProperties:
            description: >-
              Attributes related to the error, varies be error code, documented
              per endpoint
            type: object
          description: >-
            Attributes related to the error, varies be error code, documented
            per endpoint
          type: object
        unique_id:
          description: >-
            Unique id associated with this error, useful for discussions with
            Extole
          type: string
      required:
        - code
        - http_status_code
        - message
        - parameters
        - unique_id
      type: object
    ReportTypeColumnResponse:
      description: Column metadata for the report type's preview output.
      properties:
        name:
          type: string
        note:
          nullable: true
          type: string
        sample_value:
          nullable: true
          type: string
      type: object
    JsonNode:
      type: object
  examples:
    report_type_missing:
      summary: report_type_missing
      value:
        code: report_type_missing
        http_status_code: 400
        message: Report type is missing
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    report_type_schema_not_supported:
      summary: report_type_schema_not_supported
      value:
        code: report_type_schema_not_supported
        http_status_code: 400
        message: Schema is not supported for this report type
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    method_unauthorized:
      summary: method_unauthorized
      value:
        code: method_unauthorized
        http_status_code: 401
        message: Unauthorized access to this endpoint
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    payment_required:
      summary: payment_required
      value:
        code: payment_required
        http_status_code: 402
        message: The access_token provided is associated with an unpaid account.
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    access_denied:
      summary: access_denied
      value:
        code: access_denied
        http_status_code: 403
        message: >-
          The access_token provided is not permitted to access the specified
          resource.
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    missing_access_token:
      summary: missing_access_token
      value:
        code: missing_access_token
        http_status_code: 403
        message: No access_token was provided with this request.
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    report_type_not_found:
      summary: report_type_not_found
      value:
        code: report_type_not_found
        http_status_code: 400
        message: Report type referenced by the component is not found
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    unsupported_media_type:
      summary: unsupported_media_type
      value:
        code: unsupported_media_type
        http_status_code: 415
        message: Request had an unsupported or no media type
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    too_many_requests:
      summary: too_many_requests
      value:
        code: too_many_requests
        http_status_code: 429
        message: >-
          The server is unable to process your request at the moment, please
          retry later.
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
  securitySchemes:
    HEADER:
      in: header
      name: Authorization
      type: apiKey
      x-bearer-format: bearer
    QUERY:
      in: query
      name: access_token
      type: apiKey
    COOKIE:
      in: cookie
      name: extole_token
      type: apiKey

````

## Related topics

- [Get report type schema for a context](/api-reference/report-types/get-report-type-schema-for-a-context.md)
- [List report type schemas](/api-reference/report-types/list-report-type-schemas.md)
- [Get report type mapping suggestions](/api-reference/report-types/get-report-type-mapping-suggestions.md)
- [Get report type](/api-reference/report-types/get-report-type.md)
- [Get a component operation](/api-reference/components-operations/get-a-component-operation.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.