> ## 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.

# Busca no catálogo

> Busca por serviços, cursos, vagas e oportunidades MEI. Suporta sintaxe websearch_to_tsquery: aspas para frase exata, - para exclusão, OR para alternativas.



## OpenAPI

````yaml https://raw.githubusercontent.com/prefeitura-rio/app-catalogo/refs/heads/main/docs/openapi-v3.json get /api/v1/search
openapi: 3.0.0
info:
  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
  contact:
    name: Prefeitura do Rio de Janeiro
    url: https://github.com/prefeitura-rio/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/v1/search:
    get:
      tags:
        - busca
      summary: Busca no catálogo
      description: >-
        Busca por serviços, cursos, vagas e oportunidades MEI. Suporta sintaxe
        websearch_to_tsquery: aspas para frase exata, - para exclusão, OR para
        alternativas.
      parameters:
        - description: Texto livre de busca
          name: q
          in: query
          schema:
            type: string
        - description: 'Tipos: service, course, job, mei_opportunity'
          name: types
          in: query
          explode: true
          schema:
            type: array
            items:
              type: string
        - description: 'Página (default: 1)'
          name: page
          in: query
          schema:
            type: integer
        - description: 'Itens por página, máximo 100 (default: 10)'
          name: per_page
          in: query
          schema:
            type: integer
        - description: 'Modalidade: presencial, digital, hibrido'
          name: modalidade
          in: query
          schema:
            type: string
        - description: Bairro do Rio de Janeiro
          name: bairro
          in: query
          schema:
            type: string
        - description: Órgão ou secretaria responsável
          name: orgao
          in: query
          schema:
            type: string
        - description: '[course] Apenas cursos gratuitos'
          name: gratuito
          in: query
          schema:
            type: boolean
        - description: '[course] Turno: matutino, vespertino, noturno'
          name: turno
          in: query
          schema:
            type: string
        - description: '[job] Regime: CLT, PJ, temporario'
          name: regime_contratacao
          in: query
          schema:
            type: string
        - description: '[job] Modelo: presencial, remoto, hibrido'
          name: modelo_trabalho
          in: query
          schema:
            type: string
        - description: '[job] Apenas vagas exclusivas para PCD'
          name: pcd
          in: query
          schema:
            type: boolean
        - description: '[job] Faixa salarial: ate-2sm, 2-4sm, acima-4sm'
          name: faixa_salarial
          in: query
          schema:
            type: string
        - description: '[service] Canal: presencial, digital, telefone'
          name: canal_atendimento
          in: query
          schema:
            type: string
        - description: '[service] Tema do serviço'
          name: tema
          in: query
          schema:
            type: string
        - description: '[mei_opportunity] Segmento do negócio'
          name: segmento
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.SearchResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: string
components:
  schemas:
    models.SearchResponse:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/models.SearchItem'
        page:
          type: integer
        per_page:
          type: integer
        total:
          type: integer
    models.SearchItem:
      type: object
      properties:
        bairros:
          type: array
          items:
            type: string
        highlights:
          type: array
          items:
            type: string
        id:
          type: string
        image_url:
          type: string
        metadata:
          type: object
        modalidade:
          type: string
        organization:
          type: string
        relevance_score:
          type: number
        short_desc:
          type: string
        source:
          $ref: '#/components/schemas/models.ItemSource'
        tags:
          type: array
          items:
            type: string
        title:
          type: string
        type:
          $ref: '#/components/schemas/models.ItemType'
        url:
          type: string
    models.ItemSource:
      type: string
      enum:
        - salesforce
        - courses
        - jobs
        - mei
        - app-go-api
        - typesense
      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:
      type: string
      enum:
        - service
        - course
        - job
        - mei_opportunity
      x-enum-varnames:
        - TypeService
        - TypeCourse
        - TypeJob
        - TypeMEIOpportunity

````