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

# Detalhe público de item elegível do catálogo

> Retorna somente campos públicos de um item ativo e vigente.



## OpenAPI

````yaml https://raw.githubusercontent.com/prefeitura-rio/app-catalogo/refs/heads/main/docs/openapi-v3.json get /api/public/catalog/{id}
openapi: 3.0.0
info:
  contact:
    name: Prefeitura do Rio de Janeiro
    url: https://github.com/prefeitura-rio/app-catalogo
  description: >-
    Discovery layer unificada da Prefeitura do Rio de Janeiro. Indexa serviços
    públicos, cursos, vagas e oportunidades MEI com busca full-text e
    recomendação personalizada por perfil de cidadão.
  title: app-catalogo
  version: '1.0'
servers:
  - url: https://services.staging.app.dados.rio/catalogo
    description: Staging
  - url: https://services.pref.rio/catalogo
    description: Produção
security: []
paths:
  /api/public/catalog/{id}:
    get:
      tags:
        - catálogo
      summary: Detalhe público de item elegível do catálogo
      description: Retorna somente campos públicos de um item ativo e vigente.
      parameters:
        - description: UUID v4 do item
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.PublicCatalogItem'
          description: OK
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        '400':
          content:
            application/json:
              schema:
                additionalProperties:
                  type: string
                type: object
          description: Bad Request
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        '404':
          content:
            application/json:
              schema:
                additionalProperties:
                  type: string
                type: object
          description: Not Found
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                additionalProperties:
                  type: string
                type: object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
components:
  schemas:
    models.PublicCatalogItem:
      properties:
        bairros:
          items:
            type: string
            minLength: 1
            maxLength: 500
            pattern: \S
          type: array
          minItems: 1
          maxItems: 50
        description:
          type: string
          minLength: 1
          maxLength: 16000
        id:
          format: uuid
          type: string
        image_url:
          format: uri
          type: string
          minLength: 1
          maxLength: 2048
          pattern: ^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\s]+($|[/?#]($|.*\S$))
        modalidade:
          type: string
          minLength: 1
          maxLength: 100
        organization:
          type: string
          minLength: 1
          maxLength: 500
        short_desc:
          type: string
          minLength: 1
          maxLength: 2000
        source:
          $ref: '#/components/schemas/models.ItemSource'
        source_id:
          type: string
          minLength: 1
          maxLength: 255
          pattern: \S
        source_updated_at:
          format: date-time
          type: string
        tags:
          items:
            type: string
            minLength: 1
            maxLength: 500
            pattern: \S
          type: array
          minItems: 1
          maxItems: 50
        title:
          type: string
          minLength: 1
          maxLength: 500
          pattern: \S
        type:
          $ref: '#/components/schemas/models.ItemType'
        url:
          format: uri
          type: string
          minLength: 1
          maxLength: 2048
          pattern: ^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\s]+($|[/?#]($|.*\S$))
        valid_from:
          format: date-time
          type: string
        valid_until:
          format: date-time
          type: string
      required:
        - id
        - source
        - source_id
        - title
        - type
      type: object
      additionalProperties: false
    models.ItemSource:
      enum:
        - salesforce
        - courses
        - jobs
        - mei
        - app-go-api
        - typesense
      type: string
      x-enum-comments:
        SourceAppGoAPI: 'fonte composta: courses + jobs + mei'
        SourceTypesense: 'temporário: Carta de Serviços até migração para SalesForce'
      x-enum-descriptions:
        - ''
        - ''
        - ''
        - ''
        - 'fonte composta: courses + jobs + mei'
        - 'temporário: Carta de Serviços até migração para SalesForce'
      x-enum-varnames:
        - SourceSalesForce
        - SourceCourses
        - SourceJobs
        - SourceMEI
        - SourceAppGoAPI
        - SourceTypesense
    models.ItemType:
      enum:
        - service
        - course
        - job
        - mei_opportunity
      type: string
      x-enum-varnames:
        - TypeService
        - TypeCourse
        - TypeJob
        - TypeMEIOpportunity
  headers:
    X-Request-ID:
      description: Canonical UUID used to correlate the response with application logs.
      schema:
        format: uuid
        type: string

````