Skip to content

Instantly share code, notes, and snippets.

@steppat
Last active March 25, 2026 14:39
Show Gist options
  • Select an option

  • Save steppat/7a336117f24845834427de2f7fea6ed9 to your computer and use it in GitHub Desktop.

Select an option

Save steppat/7a336117f24845834427de2f7fea6ed9 to your computer and use it in GitHub Desktop.
openapi: 3.0.3
info:
title: Course API
version: 1.0.0
paths:
/api/course:
get:
summary: Retorna os dados de um curso
parameters:
- in: query
name: course_id
required: true
description: ID inteiro do curso
schema:
type: integer
format: int32
responses:
'200':
description: Curso encontrado
content:
application/json:
schema:
$ref: '#/components/schemas/CourseResponse'
'400':
description: course_id inválido
'404':
description: Curso não encontrado
components:
schemas:
CourseResponse:
type: object
additionalProperties: false
required:
- showable
- id
- slug
- nome
- metadescription
- meta_title
- categoria
- categorias
- subcategoria
- subcategorias
- quantidade_aulas
- minutos_video
- nota
- nota_disponivel
- quantidade_avaliacoes
- quantidade_alunos
- carga_horaria
- quantidade_atividades
- data_criacao
- data_atualizacao
- video_1a_aula
- publico_alvo
- chamadas
- ementa
- instrutores
- carreiras
- trilhas
- curso_substituto
- requerimentos
- transcriptions
properties:
showable:
type: boolean
id:
type: integer
format: int32
slug:
type: string
nome:
type: string
metadescription:
type: string
meta_title:
type: string
categoria:
$ref: '#/components/schemas/Category'
categorias:
type: array
items:
$ref: '#/components/schemas/Category'
subcategoria:
$ref: '#/components/schemas/Subcategory'
subcategorias:
type: array
items:
$ref: '#/components/schemas/Subcategory'
quantidade_aulas:
type: integer
format: int32
minutos_video:
type: integer
format: int32
nota:
type: number
format: float
nota_disponivel:
type: boolean
quantidade_avaliacoes:
type: integer
format: int32
quantidade_alunos:
type: integer
format: int32
carga_horaria:
type: integer
format: int32
quantidade_atividades:
type: integer
format: int32
data_criacao:
type: string
format: date
data_atualizacao:
type: string
format: date
data_publicacao:
type: string
format: date
video_1a_aula:
type: string
format: uri
publico_alvo:
type: string
chamadas:
type: array
items:
type: string
ementa:
type: array
items:
$ref: '#/components/schemas/SyllabusChapter'
instrutores:
type: array
items:
$ref: '#/components/schemas/Instructor'
carreiras:
type: array
items: {}
avaliacoes:
type: array
items:
$ref: '#/components/schemas/Avaliacao'
trilhas:
type: array
items:
$ref: '#/components/schemas/Trilha'
topic:
type: array
items:
$ref: '#/components/schemas/Topic'
curso_substituto:
nullable: true
requerimentos:
type: array
items: {}
transcriptions:
type: array
items:
$ref: '#/components/schemas/Transcription'
Category:
type: object
additionalProperties: false
required:
- nome
properties:
slug:
type: string
nome:
type: string
subcategorias:
type: array
nullable: true
items: {}
Subcategory:
type: object
additionalProperties: false
required:
- slug
- nome
- metaTitle
- metaDescription
- description
properties:
slug:
type: string
nome:
type: string
metaTitle:
type: string
nullable: true
metaDescription:
type: string
nullable: true
description:
type: string
nullable: true
SyllabusChapter:
type: object
additionalProperties: false
required:
- capitulo
- secoes
properties:
capitulo:
type: string
secoes:
type: array
items:
type: string
Instructor:
type: object
additionalProperties: false
required:
- twitter
- linkedin
- username
- githubProfileLink
- sobre
- nome
properties:
twitter:
type: string
linkedin:
type: string
format: uri
username:
type: string
githubProfileLink:
type: string
format: uri
sobre:
type: string
nome:
type: string
Transcription:
type: object
additionalProperties: false
required:
- sectionName
- taskName
- transcription
- videoUrl
properties:
sectionName:
type: string
taskName:
type: string
transcription:
type: string
description: HTML da transcrição
videoUrl:
type: string
format: uri
Avaliacao:
type: object
additionalProperties: false
discription: "ultimos 6 meses"
required:
- nota
- depoimento
- data
- razao
- id_aluno
properties:
nota:
type: integer
format: int32
depoimento:
type: string
nullable: true
data:
type: string
format: date
description: data do depoimento
razao:
type: string
id_aluno:
type: integer
format: int32
Trilha:
type: object
additionalProperties: false
required:
- id_trilha
properties:
id_trilha:
type: integer
format: int32
nome:
type: string
Topic:
type: object
additionalProperties: false
required:
- id_topic
properties:
id_topic:
titulo
status (resolido, expired, open)
resolvido (sim ou nao)
qtd_interacoes
mensagens {texto, data}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment