Files
skillfactor-pipeline/adapters/openai/openapi.yaml
skillfactor-pipeline 7a72e45b93 feat(arch): openai/gemini adapter scaffolds + MCP gateway + M365 mining specs
Same canonical content, three thin adapters; FastMCP scaffold with the
five gateway tools (layer-1 guard enforced by the lesson schema); M365
spec with assumed minimal DDL, read-only queries, extraction-time
anonymization and a review-queue with no auto-merge.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PDKeXvpT6tENSvyQGLV1Uq
2026-07-10 05:42:21 +02:00

65 lines
2.5 KiB
YAML

openapi: 3.1.0
info:
title: SkillFactor Gateway (HTTP facade for ChatGPT Actions)
version: "0.1"
description: >
Write/read path for Custom-GPT actions. Same handlers as the MCP tools
(services/skillfactor-mcp). Auth via API key header; no credentials in
this repo.
servers:
- url: https://SKILLFACTOR_GATEWAY_HOST
paths:
/actions/profession_context:
get:
operationId: getProfessionContext
summary: Knowledge cascade (community -> org overlay -> project)
parameters:
- { name: profession, in: query, required: true, schema: { type: string } }
- { name: competence, in: query, schema: { type: string } }
- { name: org, in: query, schema: { type: string } }
- { name: customer, in: query, schema: { type: string } }
- { name: project, in: query, schema: { type: string } }
responses:
"200": { description: layered context blocks }
/actions/propose_lesson:
post:
operationId: proposeLesson
summary: Submit a user-confirmed lesson as a pull request (never direct commit)
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [layer, profession, competences, title, body_markdown, source]
properties:
layer: { type: integer, enum: [1, 2, 3] }
profession: { type: string }
competences:
type: array
items:
type: object
required: [esco_uri]
properties:
esco_uri: { type: string }
onet_soc: { type: string }
customer: { type: string }
project: { type: string }
title: { type: string }
body_markdown:
type: string
description: the FULL text the user confirmed, word for word
source:
type: string
enum: [conversation, m365-mail, m365-chat, m365-transcript, promotion]
update_of: { type: string }
responses:
"201": { description: PR created (link in body) }
"409": { description: similar lesson found - update proposal returned }
"422": { description: schema violation (e.g. customer reference in layer 1) }
components:
securitySchemes:
apiKey: { type: apiKey, in: header, name: X-SkillFactor-Token }
security:
- apiKey: []