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

# Read a typed source entry

> Returns persisted entry values using current source-property types and delimiters. Localized values have one property item per language. lastUpdated timestamps are UTC; all translations of a property share its stored timestamp. Cleared scalars return null, cleared lists return an empty array. Unconfigured properties return raw strings with type null. Incompatible stored values return 409. Reads reflect completed ingestion, which may lag a successful ingest request.



## OpenAPI

````yaml /api-reference/openapi/ingest.json get /v1/sources/{sourceId}/entries/{entryId}
openapi: 3.1.1
info:
  title: Occtoo Ingest API
  description: >-
    Submit source entries to the authenticated Occtoo tenant. Tenant identity
    always comes from the credential; it is never accepted from the route or
    request body.


    ## Authentication and access


    Select **Authorize** to reuse the existing Occtoo browser session, provide a
    tenant-scoped bearer token, or send an organization API key through
    `x-api-key`. The legacy import operations accept either the established
    `import-datasource` permission or the tenant-application `write:sources`
    scope. `POST /sources/<sourceId>` accepts only `write:sources`.


    Kinde application scopes are projected unchanged by the gateway.
    `AuthorizeAny` gives applications, users, and organization API keys one
    endpoint policy while preserving the established provider permission. Tenant
    applications use `write:sources` as the capability and Occtoo-owned resource
    grants to allow every source or selected sources. Legacy data-provider
    applications remain restricted to their assigned sources.


    The credential-exchange endpoint is an anonymous convenience for server-side
    data-provider integrations. It accepts a provider id and secret in the
    request body and is not an OAuth client-credentials endpoint.


    ## Payload rules


    - Entry keys must be unique within a request, compared case-insensitively.

    - Property ids are canonicalized to lowercase at rest.

    - A property id may repeat only when its language differs.

    - Reserved system properties are rejected.

    - Request, entry and property-value ceilings are tenant-configured and
    returned in validation errors when exceeded.


    `POST /sources/<sourceId>` accepts native JSON strings, numbers, booleans,
    nulls, and string arrays. Configured properties require the matching JSON
    shape. Missing or untyped properties are inferred from their JSON values;
    string arrays use the configured delimiter or `,` when none is set. Values
    are serialized to strings before they enter the existing asynchronous ingest
    pipeline.


    `POST /datasources/<dataSource>/import/verify` runs validation without
    queueing or consuming the request-rate budget. `POST
    /datasources/<dataSource>/import` returns `202` when accepted for
    asynchronous processing.


    Retry `429` and transient `5xx` responses with bounded exponential backoff.
    Do not retry a successful `202` merely because downstream processing has not
    completed.


    Machine-readable contract:
    [OpenAPI](https://api.occtoo.com/openapi/ingest.json)
  version: 1.0.0
  summary: Validate and ingest tenant-scoped source entries.
servers:
  - url: https://api.occtoo.com
    description: Occtoo public API
security: []
tags:
  - name: Ingest
    description: Verify source-entry payloads and submit them for asynchronous processing.
  - name: Sources
    description: Submit strongly typed JSON source entries.
  - name: Authentication
    description: Exchange registered data-provider credentials for an Occtoo bearer token.
paths:
  /v1/sources/{sourceId}/entries/{entryId}:
    get:
      tags:
        - Sources
      summary: Read a typed source entry
      description: >-
        Returns persisted entry values using current source-property types and
        delimiters. Localized values have one property item per language.
        lastUpdated timestamps are UTC; all translations of a property share its
        stored timestamp. Cleared scalars return null, cleared lists return an
        empty array. Unconfigured properties return raw strings with type null.
        Incompatible stored values return 409. Reads reflect completed
        ingestion, which may lag a successful ingest request.
      operationId: GetSourceEntry
      parameters:
        - name: sourceId
          in: path
          required: true
          schema:
            type: string
        - name: entryId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SourceEntryResponse'
        '400':
          description: Bad Request
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/HttpValidationProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: Forbidden
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: Not Found
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '409':
          description: Conflict
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '429':
          description: Too Many Requests
          headers:
            Retry-After:
              description: Optional number of seconds to wait before retrying.
              schema:
                minimum: 1
                type: integer
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '500':
          description: Internal Server Error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - kindeOAuth: []
        - bearerAuth: []
        - apiKey: []
components:
  schemas:
    SourceEntryResponse:
      required:
        - id
        - properties
        - lastUpdated
      type: object
      properties:
        id:
          type: string
        properties:
          type: array
          items:
            $ref: '#/components/schemas/SourceEntryPropertyResponse'
        lastUpdated:
          type: string
          format: date-time
    HttpValidationProblemDetails:
      required:
        - errors
      type: object
      properties:
        type:
          type: string
          description: A URI reference identifying the problem type.
        title:
          type: string
          description: A short summary of the validation problem.
        status:
          type: integer
        detail:
          type: string
          description: A human-readable explanation of this occurrence.
        instance:
          type: string
          description: A URI reference identifying this occurrence.
        traceId:
          type: string
          description: W3C OpenTelemetry trace id for diagnostics.
        errors:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
          description: Validation messages keyed by request path.
    ProblemDetails:
      type: object
      properties:
        type:
          type: string
          description: A URI reference identifying the problem type.
        title:
          type: string
          description: A short summary of the problem.
        status:
          type: integer
        detail:
          type: string
          description: A human-readable explanation of this occurrence.
        instance:
          type: string
          description: A URI reference identifying this occurrence.
        traceId:
          type: string
          description: W3C OpenTelemetry trace id for diagnostics.
    SourceEntryPropertyResponse:
      required:
        - id
        - value
        - type
        - delimiter
        - lastUpdated
        - language
      type: object
      properties:
        id:
          type: string
        value:
          oneOf:
            - type: string
            - type: number
            - type: boolean
            - type: array
              items:
                type: string
            - type: 'null'
        type:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/PropertyDataType'
        delimiter:
          type:
            - 'null'
            - string
        lastUpdated:
          type: string
          format: date-time
        language:
          type:
            - 'null'
            - string
    PropertyDataType:
      enum:
        - Text
        - LocalizedText
        - List
        - LocalizedList
        - Boolean
        - Timestamp
        - Integer
        - Decimal
        - Wildcard
        - null
  securitySchemes:
    kindeOAuth:
      type: oauth2
      description: >-
        Sign in with the existing Occtoo Studio identity and selected
        organization.
      flows:
        authorizationCode:
          authorizationUrl: >-
            https://auth.occtoo.com/oauth2/auth?audience=https%3A%2F%2Fapi-weu.occtoo.com
          tokenUrl: https://auth.occtoo.com/oauth2/token
          scopes:
            openid: Authenticate the user with OpenID Connect.
            profile: Read the user's basic profile.
            email: Read the user's email address.
            offline: Refresh the access token without another interactive sign-in.
          x-usePkce: SHA-256
          x-scalar-redirect-uri: https://api.occtoo.com/docs/
    bearerAuth:
      type: http
      description: >-
        Tenant-scoped Occtoo access token, including Kinde machine-to-machine
        application tokens.
      scheme: bearer
      bearerFormat: JWT
    apiKey:
      type: apiKey
      description: Occtoo organization API key.
      name: x-api-key
      in: header

````

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