Workspace API

Kursy i quizy

Endpointy „Kursy i quizy” Zanfia Workspace API — ze schematami i przykładami kodu.

9 min czytaniaOstatnia aktualizacja: 26 lip 2026

Treści kursu adresowane są przez id produktu. Statusy lekcji i modułów: draft, public, hidden, locked. Pole content lekcji to Markdown, a PATCH zastępuje całą treść. Wszystkie endpointy wymagają nagłówka Authorization: Bearer — zobacz Uwierzytelnianie.

Struktura kursu

GET/products/{productId}/course

Authorization

bearerAuth
AuthorizationBearer <token>

API key from Dashboard → Integrations → API, MCP and CLI.

In: header

Path Parameters

productId*string

Product id

Response Body

application/json

application/json

curl -X GET "https://example.com/products/string/course"
{  "courseId": "string",  "modulesCount": 0,  "modules": [    {      "id": "string",      "name": "string",      "description": "string",      "status": "draft",      "lessonsCount": 0,      "lessons": [        {          "id": "string",          "title": "string",          "description": "string",          "type": "video",          "status": "draft",          "videoStatus": "Pending",          "length": 0        }      ]    }  ]}
{  "error": "string"}

Szczegóły lekcji

GET/products/{productId}/course/lessons/{lessonId}

Authorization

bearerAuth
AuthorizationBearer <token>

API key from Dashboard → Integrations → API, MCP and CLI.

In: header

Path Parameters

productId*string

Product id

lessonId*string

Lesson id

Response Body

application/json

application/json

curl -X GET "https://example.com/products/string/course/lessons/string"
{  "courseId": "string",  "lesson": {    "id": "string",    "moduleId": "string",    "title": "string",    "description": "string",    "type": "video",    "status": "draft",    "content": "string",    "attachments": [      {        "uid": "string",        "name": "string",        "url": "string"      }    ],    "video": {      "type": "bunny",      "status": "Pending",      "url": "string",      "length": 0    },    "audio": {      "url": "string",      "mimeType": "string",      "length": 0,      "size": 0    },    "createdAt": "string",    "updatedAt": "string"  }}
{  "error": "string"}

Aktualizuj lekcję

PATCH/products/{productId}/course/lessons/{lessonId}

Authorization

bearerAuth
AuthorizationBearer <token>

API key from Dashboard → Integrations → API, MCP and CLI.

In: header

Path Parameters

productId*string

Product id

lessonId*string

Lesson id

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X PATCH "https://example.com/products/string/course/lessons/string" \  -H "Content-Type: application/json" \  -d '{}'
{  "lessonId": "string"}
{  "error": "string"}

Usuń lekcję (trwale)

DELETE/products/{productId}/course/lessons/{lessonId}

Authorization

bearerAuth
AuthorizationBearer <token>

API key from Dashboard → Integrations → API, MCP and CLI.

In: header

Path Parameters

productId*string

Product id

lessonId*string

Lesson id

Response Body

application/json

application/json

curl -X DELETE "https://example.com/products/string/course/lessons/string"
{  "deleted": true}
{  "error": "string"}

Dodaj moduł

POST/products/{productId}/course/modules

Authorization

bearerAuth
AuthorizationBearer <token>

API key from Dashboard → Integrations → API, MCP and CLI.

In: header

Path Parameters

productId*string

Product id

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X POST "https://example.com/products/string/course/modules" \  -H "Content-Type: application/json" \  -d '{    "name": "string"  }'
{  "moduleId": "string",  "name": "string"}
{  "error": "string"}

Aktualizuj moduł

PATCH/products/{productId}/course/modules/{moduleId}

Authorization

bearerAuth
AuthorizationBearer <token>

API key from Dashboard → Integrations → API, MCP and CLI.

In: header

Path Parameters

productId*string

Product id

moduleId*string

Module id

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X PATCH "https://example.com/products/string/course/modules/string" \  -H "Content-Type: application/json" \  -d '{}'
{  "moduleId": "string"}
{  "error": "string"}

Usuń moduł (trwale)

DELETE/products/{productId}/course/modules/{moduleId}

Authorization

bearerAuth
AuthorizationBearer <token>

API key from Dashboard → Integrations → API, MCP and CLI.

In: header

Path Parameters

productId*string

Product id

moduleId*string

Module id

Response Body

application/json

application/json

curl -X DELETE "https://example.com/products/string/course/modules/string"
{  "deleted": true}
{  "error": "string"}

Dodaj lekcję

POST/products/{productId}/course/modules/{moduleId}/lessons

Authorization

bearerAuth
AuthorizationBearer <token>

API key from Dashboard → Integrations → API, MCP and CLI.

In: header

Path Parameters

productId*string

Product id

moduleId*string

Module id

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X POST "https://example.com/products/string/course/modules/string/lessons" \  -H "Content-Type: application/json" \  -d '{    "title": "string",    "type": "video"  }'
{  "lessonId": "string",  "moduleId": "string",  "title": "string"}
{  "error": "string"}

Zbiorcza zmiana statusu lekcji

POST/products/{productId}/course/lessons/status

Authorization

bearerAuth
AuthorizationBearer <token>

API key from Dashboard → Integrations → API, MCP and CLI.

In: header

Path Parameters

productId*string

Product id

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X POST "https://example.com/products/string/course/lessons/status" \  -H "Content-Type: application/json" \  -d '{    "lessonIds": [      "string"    ],    "status": "draft"  }'
{  "updated": 0}
{  "error": "string"}

Zmień kolejność modułów

PUT/products/{productId}/course/modules/order

Authorization

bearerAuth
AuthorizationBearer <token>

API key from Dashboard → Integrations → API, MCP and CLI.

In: header

Path Parameters

productId*string

Product id

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X PUT "https://example.com/products/string/course/modules/order" \  -H "Content-Type: application/json" \  -d '{    "moduleIds": [      "string"    ]  }'
{  "courseId": "string"}
{  "error": "string"}

Zmień kolejność lekcji w module

PUT/products/{productId}/course/modules/{moduleId}/lessons/order

Authorization

bearerAuth
AuthorizationBearer <token>

API key from Dashboard → Integrations → API, MCP and CLI.

In: header

Path Parameters

productId*string

Product id

moduleId*string

Module id

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X PUT "https://example.com/products/string/course/modules/string/lessons/order" \  -H "Content-Type: application/json" \  -d '{    "lessonIds": [      "string"    ]  }'
{  "moduleId": "string"}
{  "error": "string"}

Pytania i ustawienia quizu

GET/products/{productId}/course/lessons/{lessonId}/quiz

Authorization

bearerAuth
AuthorizationBearer <token>

API key from Dashboard → Integrations → API, MCP and CLI.

In: header

Path Parameters

productId*string

Product id

lessonId*string

Lesson id

Response Body

application/json

application/json

curl -X GET "https://example.com/products/string/course/lessons/string/quiz"
{  "questions": [    {      "id": "string",      "question": "string",      "explanation": "string",      "points": 0,      "order": 0,      "mediaUrl": "string",      "source": {        "snippet": "string",        "startSeconds": 0      },      "type": "single_choice",      "options": [        {          "id": "string",          "text": "string",          "isCorrect": true,          "mediaUrl": "string"        }      ]    }  ],  "settings": {    "passingScore": 0,    "maxAttempts": 0,    "timeLimitSeconds": 0,    "shuffleQuestions": true,    "shuffleOptions": true,    "showCorrectAnswers": true,    "requirePassToProgress": true,    "questionCount": 0,    "totalPoints": 0  }}
{  "error": "string"}

Dodaj pytanie do quizu

POST/products/{productId}/course/lessons/{lessonId}/quiz/questions

Authorization

bearerAuth
AuthorizationBearer <token>

API key from Dashboard → Integrations → API, MCP and CLI.

In: header

Path Parameters

productId*string

Product id

lessonId*string

Lesson id

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X POST "https://example.com/products/string/course/lessons/string/quiz/questions" \  -H "Content-Type: application/json" \  -d '{    "question": {      "question": "string",      "type": "single_choice",      "options": [        {          "text": "string",          "isCorrect": true        }      ]    }  }'
{  "questionId": "string"}
{  "error": "string"}

Zmień kolejność pytań quizu

PUT/products/{productId}/course/lessons/{lessonId}/quiz/questions/order

Authorization

bearerAuth
AuthorizationBearer <token>

API key from Dashboard → Integrations → API, MCP and CLI.

In: header

Path Parameters

productId*string

Product id

lessonId*string

Lesson id

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X PUT "https://example.com/products/string/course/lessons/string/quiz/questions/order" \  -H "Content-Type: application/json" \  -d '{    "orderedQuestionIds": [      "string"    ]  }'
{  "reordered": true}
{  "error": "string"}

Zastąp pytanie quizu

PATCH/products/{productId}/course/lessons/{lessonId}/quiz/questions/{questionId}

Authorization

bearerAuth
AuthorizationBearer <token>

API key from Dashboard → Integrations → API, MCP and CLI.

In: header

Path Parameters

productId*string

Product id

lessonId*string

Lesson id

questionId*string

Quiz question id

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X PATCH "https://example.com/products/string/course/lessons/string/quiz/questions/string" \  -H "Content-Type: application/json" \  -d '{    "question": {      "question": "string",      "type": "single_choice",      "options": [        {          "text": "string",          "isCorrect": true        }      ]    }  }'
{  "updated": true}
{  "error": "string"}

Usuń pytanie quizu (trwale)

DELETE/products/{productId}/course/lessons/{lessonId}/quiz/questions/{questionId}

Authorization

bearerAuth
AuthorizationBearer <token>

API key from Dashboard → Integrations → API, MCP and CLI.

In: header

Path Parameters

productId*string

Product id

lessonId*string

Lesson id

questionId*string

Quiz question id

Response Body

application/json

application/json

curl -X DELETE "https://example.com/products/string/course/lessons/string/quiz/questions/string"
{  "deleted": true}
{  "error": "string"}

Aktualizuj ustawienia quizu

PATCH/products/{productId}/course/lessons/{lessonId}/quiz/settings

Authorization

bearerAuth
AuthorizationBearer <token>

API key from Dashboard → Integrations → API, MCP and CLI.

In: header

Path Parameters

productId*string

Product id

lessonId*string

Lesson id

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X PATCH "https://example.com/products/string/course/lessons/string/quiz/settings" \  -H "Content-Type: application/json" \  -d '{    "settings": {}  }'
{  "updated": true}
{  "error": "string"}

Czy ten artykuł był pomocny?

Powiązane artykuły

Coś się nie zgadza? Napisz do nas na support@zanfia.com.