Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/Taykl12/Classify/llms.txt

Use this file to discover all available pages before exploring further.

The update endpoint accepts a partial body — only the fields you include are changed. This makes it suitable for targeted edits such as updating just the project name, replacing the member list, or toggling a single lock, without needing to re-send the entire project state. Role-based lock enforcement is applied server-side: if a section is locked and the caller is a student owner, the server returns a 403 rather than applying the change. Assigned professors and admins bypass all lock checks and are additionally permitted to modify the locks object itself.

Endpoint

PUT /api/projects/:id

Path Parameters

id
string
required
The numeric project identifier.

Request

Headers

HeaderValue
AuthorizationBearer <token>
Content-Typeapplication/json

Body Parameters

All fields are optional. Omitted fields are left unchanged.
name
string
Updated project display name.
description
string
Updated short description.
status
"Abierto" | "Cerrado"
Updated lifecycle state. Set to "Cerrado" to conclude a project.
memberEmails
string[]
Replacement member list. This is a full replace — any email currently in grupo_estudiante that is absent from this array will be removed, and any new address will be added. Every address must exist in sistema.
objective
string
Project objective statement (descripcion config field).
scopeDetail
string
Detailed scope definition (alcance_detalle). Blocked by the scope lock for student owners.
scopeNotes
string
Supplementary scope notes (notas_alcance). Blocked by the scope lock for student owners.
preprojectValidated
boolean
Mark the pre-project document as validated. Restricted to assigned professors and admins. Student owners receive a 403 when sending this field.
URL for the project’s backup storage (link_respaldo).
URL for the grades document (link_calificaciones).
documents
array
Replacement documents array stored as JSONB. Replaces the entire existing list.
locks
object
Section lock overrides. Restricted to assigned professors and admins. Sending this field as a student results in a 403. Individual lock keys may be omitted to leave them unchanged.

Lock Enforcement Summary

Caller roleCan edit unlocked fieldsCan edit locked fieldsCan set locks
Student owner❌ (403)❌ (403)
Assigned professor
Admin

Example Request

curl -X PUT https://your-domain.com/api/projects/42 \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "AI Grading System v2",
    "scopeDetail": "Covers Python, JavaScript, and Java submissions.",
    "locks": {
      "scope": true
    }
  }'

Response

Returns 200 OK with the full project detail shape reflecting all applied changes. The response structure is identical to GET /api/projects/:id.

Example Response

{
  "id": "42",
  "name": "AI Grading System v2",
  "description": "Automated rubric evaluation using NLP",
  "scopeNotes": "LMS integration is out of scope for this cycle.",
  "status": "Abierto",
  "isFavorite": true,
  "createdAt": "01/09/2024",
  "preprojectValidated": false,
  "objective": "Build a fully automated grading pipeline for programming assignments.",
  "scopeDetail": "Covers Python, JavaScript, and Java submissions.",
  "backupLink": "https://github.com/org/ai-grading-backup",
  "gradesLink": "https://docs.example.com/grades/42",
  "documents": [
    { "name": "Project Charter", "url": "https://storage.example.com/charter.pdf" }
  ],
  "locks": {
    "scope": true,
    "documentation": false,
    "team": false
  },
  "memberEmails": ["alice@university.edu", "bob@university.edu"],
  "ownerEmail": "prof.garcia@university.edu",
  "assignedProfessorEmails": ["prof.garcia@university.edu"],
  "isOwner": false,
  "isAssignedProfessor": true,
  "canManageProject": true,
  "canManageLocks": true
}

Error Responses

StatusDescription
400 Bad RequestOne or more emails in memberEmails were not found in sistema.
401 UnauthorizedMissing or invalid bearer token.
403 ForbiddenCaller is a student owner and attempted to edit a locked section, set locks, or set preprojectValidated.
404 Not FoundNo project exists with the given ID.

Build docs developers (and LLMs) love