Developers/OpenAPI

Machine-readable contract

Build from the public API schema

Inspect DocIntel's versioned public REST contract, generate typed clients, validate requests, and detect integration changes before deployment.

Contract endpoint

Retrieve the current schema

OpenAPI JSONhttps://docintel.adar.agomoniai.com/openapi.json
REST basehttps://docintel.adar.agomoniai.com/api/v1
Validate the document
curl -sS https://docintel.adar.agomoniai.com/openapi.json \
  | jq -r '.openapi, .info.title, (.paths | length)'

Public boundary

Expose integration contracts, not administration internals

The exported public contract includes versioned public API operations plus OAuth discovery and token metadata needed by clients. Internal developer-administration routes are excluded from generated public artifacts.

Public API paths under /api/v1OAuth discovery metadataToken endpoint contractRequest and response schemasSecurity requirements and scopesNo internal developer administration paths

Complete public contract

Operations and component schemas

This catalog is generated from the DocIntel OpenAPI document. It contains 66 public paths, 79 operations, and all 32 component schemas referenced by those operations.

66 public paths79 operations32 referenced schemas

REST operations

OAuth and discovery3 operations
Method and pathOperationParametersRequestResponses
GET /.well-known/oauth-authorization-serverauthorization_server_metadata__well_known_oauth_authorization_server_getNoneNone200
GET /.well-known/oauth-protected-resource/apiapi_protected_resource_metadata__well_known_oauth_protected_resource_api_getNoneNone200
POST /tokentoken_token_postNoneNone200
Identity2 operations
Method and pathOperationParametersRequestResponses
GET /api/v1api_catalog_api_v1_getNoneNone200
GET /api/v1/meapi_current_identity_api_v1_me_getNoneNone200
Workspaces12 operations
Method and pathOperationParametersRequestResponses
GET /api/v1/me/workspacesapi_my_workspaces_api_v1_me_workspaces_getNoneNone200
POST /api/v1/workspace-contextapi_select_workspace_context_api_v1_workspace_context_postNoneWorkspaceContextInput200
422 HTTPValidationError
GET /api/v1/workspacesapi_list_workspaces_api_v1_workspaces_getNoneNone200
POST /api/v1/workspacesapi_create_workspace_api_v1_workspaces_postNoneWorkspaceCreateInput201
422 HTTPValidationError
GET /api/v1/workspaces/{workspace_id}api_get_workspace_api_v1_workspaces__workspace_id__getworkspace_id path*None200
422 HTTPValidationError
PATCH /api/v1/workspaces/{workspace_id}api_update_workspace_api_v1_workspaces__workspace_id__patchworkspace_id path*WorkspaceUpdateInput200
422 HTTPValidationError
DELETE /api/v1/workspaces/{workspace_id}api_delete_workspace_api_v1_workspaces__workspace_id__deleteworkspace_id path*None200
422 HTTPValidationError
GET /api/v1/workspaces/{workspace_id}/documentsapi_list_workspace_documents_api_v1_workspaces__workspace_id__documents_getworkspace_id path*None200
422 HTTPValidationError
POST /api/v1/workspaces/{workspace_id}/leaveapi_leave_workspace_api_v1_workspaces__workspace_id__leave_postworkspace_id path*None200
422 HTTPValidationError
POST /api/v1/workspaces/{workspace_id}/membersapi_add_workspace_member_api_v1_workspaces__workspace_id__members_postworkspace_id path*WorkspaceMemberInput201
422 HTTPValidationError
PATCH /api/v1/workspaces/{workspace_id}/members/{user_id}api_update_workspace_member_api_v1_workspaces__workspace_id__members__user_id__patchworkspace_id path*
user_id path*
WorkspaceRoleInput200
422 HTTPValidationError
DELETE /api/v1/workspaces/{workspace_id}/members/{user_id}api_remove_workspace_member_api_v1_workspaces__workspace_id__members__user_id__deleteworkspace_id path*
user_id path*
None200
422 HTTPValidationError
Documents and uploads9 operations
Method and pathOperationParametersRequestResponses
GET /api/v1/documentsapi_list_documents_api_v1_documents_getNoneNone200
GET /api/v1/documents/{document_id}api_get_document_api_v1_documents__document_id__getdocument_id path*None200
422 HTTPValidationError
DELETE /api/v1/documents/{document_id}api_delete_document_api_v1_documents__document_id__deletedocument_id path*None200
422 HTTPValidationError
GET /api/v1/documents/{document_id}/chunksapi_get_document_chunks_api_v1_documents__document_id__chunks_getdocument_id path*None200
422 HTTPValidationError
POST /api/v1/documents/{document_id}/embeddingapi_embed_document_api_v1_documents__document_id__embedding_postdocument_id path*None202
422 HTTPValidationError
GET /api/v1/documents/{document_id}/versionsapi_list_document_versions_api_v1_documents__document_id__versions_getdocument_id path*None200
422 HTTPValidationError
POST /api/v1/documents/{document_id}/versionsapi_register_document_version_api_v1_documents__document_id__versions_postdocument_id path*VersionInput201
422 HTTPValidationError
POST /api/v1/uploadsapi_create_upload_api_v1_uploads_postNoneDirectUploadSessionRequest201
422 HTTPValidationError
POST /api/v1/uploads/completeapi_complete_upload_api_v1_uploads_complete_postNoneDirectUploadCompleteRequest202
422 HTTPValidationError
Knowledge2 operations
Method and pathOperationParametersRequestResponses
POST /api/v1/knowledge/query/streamapi_grounded_query_api_v1_knowledge_query_stream_postNoneChatRequest200
422 HTTPValidationError
POST /api/v1/summaries/documents/{document_id}/streamapi_summarize_document_api_v1_summaries_documents__document_id__stream_postdocument_id path*SummarizeRequest200
422 HTTPValidationError
Knowledge Academy20 operations
Method and pathOperationParametersRequestResponses
GET /api/v1/learning/coursesapi_list_learning_courses_api_v1_learning_courses_getworkspace_id query*None200
422 HTTPValidationError
POST /api/v1/learning/coursesapi_create_learning_course_api_v1_learning_courses_postNoneCourseCreate201
422 HTTPValidationError
GET /api/v1/learning/courses/{course_id}api_get_learning_course_api_v1_learning_courses__course_id__getcourse_id path*None200
422 HTTPValidationError
PATCH /api/v1/learning/courses/{course_id}api_update_learning_course_api_v1_learning_courses__course_id__patchcourse_id path*CourseUpdate200
422 HTTPValidationError
DELETE /api/v1/learning/courses/{course_id}api_delete_learning_course_api_v1_learning_courses__course_id__deletecourse_id path*None200
422 HTTPValidationError
GET /api/v1/learning/courses/{course_id}/artifactsapi_list_learning_artifacts_api_v1_learning_courses__course_id__artifacts_getcourse_id path*None200
422 HTTPValidationError
POST /api/v1/learning/courses/{course_id}/artifactsapi_save_learning_artifact_api_v1_learning_courses__course_id__artifacts_postcourse_id path*ArtifactCreate201
422 HTTPValidationError
DELETE /api/v1/learning/courses/{course_id}/artifacts/{artifact_id}api_delete_learning_artifact_api_v1_learning_courses__course_id__artifacts__artifact_id__deletecourse_id path*
artifact_id path*
None200
422 HTTPValidationError
POST /api/v1/learning/courses/{course_id}/artifacts/{artifact_id}/attemptsapi_submit_learning_quiz_api_v1_learning_courses__course_id__artifacts__artifact_id__attempts_postcourse_id path*
artifact_id path*
QuizAttemptCreate200
422 HTTPValidationError
POST /api/v1/learning/courses/{course_id}/assetsapi_attach_learning_content_api_v1_learning_courses__course_id__assets_postcourse_id path*AssetCreate200
422 HTTPValidationError
DELETE /api/v1/learning/courses/{course_id}/assets/{asset_id}api_remove_learning_content_api_v1_learning_courses__course_id__assets__asset_id__deletecourse_id path*
asset_id path*
None200
422 HTTPValidationError
PUT /api/v1/learning/courses/{course_id}/curriculumapi_save_learning_curriculum_api_v1_learning_courses__course_id__curriculum_putcourse_id path*CurriculumSave200
422 HTTPValidationError
POST /api/v1/learning/courses/{course_id}/membersapi_enroll_learning_member_api_v1_learning_courses__course_id__members_postcourse_id path*MemberCreate200
422 HTTPValidationError
DELETE /api/v1/learning/courses/{course_id}/members/{member_user_id}api_remove_learning_member_api_v1_learning_courses__course_id__members__member_user_id__deletecourse_id path*
member_user_id path*
None200
422 HTTPValidationError
GET /api/v1/learning/courses/{course_id}/progressapi_get_learning_progress_api_v1_learning_courses__course_id__progress_getcourse_id path*None200
422 HTTPValidationError
POST /api/v1/learning/courses/{course_id}/questionsapi_ask_learning_person_api_v1_learning_courses__course_id__questions_postcourse_id path*QuestionCreate201
422 HTTPValidationError
PATCH /api/v1/learning/courses/{course_id}/questions/{question_id}api_update_learning_question_api_v1_learning_courses__course_id__questions__question_id__patchcourse_id path*
question_id path*
QuestionUpdate200
422 HTTPValidationError
GET /api/v1/learning/courses/{course_id}/scopeapi_resolve_learning_scope_api_v1_learning_courses__course_id__scope_getcourse_id path*
module_id query
lesson_id query
None200
422 HTTPValidationError
POST /api/v1/learning/courses/{course_id}/tutor/query/streamapi_ask_learning_tutor_api_v1_learning_courses__course_id__tutor_query_stream_postcourse_id path*LearningTutorRequest200
422 HTTPValidationError
GET /api/v1/learning/documentsapi_list_learning_documents_api_v1_learning_documents_getworkspace_id query*None200
422 HTTPValidationError
Batch operations11 operations
Method and pathOperationParametersRequestResponses
GET /api/v1/batchesapi_list_batch_jobs_api_v1_batches_getworkspace_id query
operation query
status query
limit query
None200
422 HTTPValidationError
POST /api/v1/batches/classificationapi_start_batch_classification_api_v1_batches_classification_postNoneDocumentBatchRequest202
422 HTTPValidationError
POST /api/v1/batches/embeddingapi_start_batch_embedding_api_v1_batches_embedding_postNoneDocumentBatchRequest202
422 HTTPValidationError
POST /api/v1/batches/uploadsapi_create_batch_upload_api_v1_batches_uploads_postNoneBatchUploadRequest201
422 HTTPValidationError
POST /api/v1/batches/workspace-summaryapi_start_workspace_summary_api_v1_batches_workspace_summary_postNoneWorkspaceSummaryRequest202
422 HTTPValidationError
GET /api/v1/batches/{job_id}api_get_batch_status_api_v1_batches__job_id__getjob_id path*None200
422 HTTPValidationError
POST /api/v1/batches/{job_id}/cancelapi_cancel_batch_api_v1_batches__job_id__cancel_postjob_id path*None202
422 HTTPValidationError
GET /api/v1/batches/{job_id}/resultsapi_get_batch_results_api_v1_batches__job_id__results_getjob_id path*None200
422 HTTPValidationError
POST /api/v1/batches/{job_id}/resumeapi_resume_batch_api_v1_batches__job_id__resume_postjob_id path*None202
422 HTTPValidationError
POST /api/v1/batches/{job_id}/retryapi_retry_batch_api_v1_batches__job_id__retry_postjob_id path*None202
422 HTTPValidationError
POST /api/v1/batches/{job_id}/uploads/completeapi_complete_batch_upload_api_v1_batches__job_id__uploads_complete_postjob_id path*CompleteBatchUploadRequest202
422 HTTPValidationError
Operations and workflows5 operations
Method and pathOperationParametersRequestResponses
GET /api/v1/operationsapi_list_operations_api_v1_operations_getworkspace_id query
status query
limit query
None200
422 HTTPValidationError
GET /api/v1/operations/catalogapi_operations_catalog_api_v1_operations_catalog_getNoneNone200
GET /api/v1/operations/{operation_id}api_get_operation_api_v1_operations__operation_id__getoperation_id path*None200
422 HTTPValidationError
GET /api/v1/workflows/{workflow}/schemaapi_workflow_schema_api_v1_workflows__workflow__schema_getworkflow path*None200
422 HTTPValidationError
POST /api/v1/workflows/{workflow}/validateapi_validate_workflow_api_v1_workflows__workflow__validate_postworkflow path*application/json object200
422 HTTPValidationError
Events and webhooks8 operations
Method and pathOperationParametersRequestResponses
GET /api/v1/event-subscriptionsapi_list_event_subscriptions_api_v1_event_subscriptions_getNoneNone200
POST /api/v1/event-subscriptionsapi_create_event_subscription_api_v1_event_subscriptions_postNoneSubscriptionInput201
422 HTTPValidationError
DELETE /api/v1/event-subscriptions/{subscription_id}api_delete_event_subscription_api_v1_event_subscriptions__subscription_id__deletesubscription_id path*None200
422 HTTPValidationError
GET /api/v1/eventsapi_list_events_api_v1_events_getafter query
resource_type query
resource_id query
limit query
None200
422 HTTPValidationError
POST /api/v1/events/{event_id}/replayapi_replay_event_api_v1_events__event_id__replay_postevent_id path*None202
422 HTTPValidationError
GET /api/v1/webhook-deliveriesapi_list_webhook_deliveries_api_v1_webhook_deliveries_getsubscription_id query
status query
limit query
None200
422 HTTPValidationError
POST /api/v1/webhook-deliveries/process-dueapi_process_due_webhook_deliveries_api_v1_webhook_deliveries_process_due_postlimit queryNone202
422 HTTPValidationError
POST /api/v1/webhook-deliveries/{delivery_id}/retryapi_retry_webhook_delivery_api_v1_webhook_deliveries__delivery_id__retry_postdelivery_id path*None202
422 HTTPValidationError
Review, artifacts, and evaluation7 operations
Method and pathOperationParametersRequestResponses
GET /api/v1/artifactsapi_list_artifacts_api_v1_artifacts_getworkspace_id queryNone200
422 HTTPValidationError
POST /api/v1/artifactsapi_create_artifact_api_v1_artifacts_postNoneArtifactInput201
422 HTTPValidationError
POST /api/v1/evaluationsapi_run_evaluation_api_v1_evaluations_postNoneEvaluationInput201
422 HTTPValidationError
GET /api/v1/reviewsapi_list_reviews_api_v1_reviews_getstatus query
limit query
None200
422 HTTPValidationError
POST /api/v1/reviewsapi_create_review_api_v1_reviews_postNoneReviewTaskInput201
422 HTTPValidationError
POST /api/v1/reviews/{task_id}/assignapi_assign_review_api_v1_reviews__task_id__assign_posttask_id path*None200
422 HTTPValidationError
POST /api/v1/reviews/{task_id}/decisionapi_decide_review_api_v1_reviews__task_id__decision_posttask_id path*ReviewDecisionInput200
422 HTTPValidationError

OpenAPI schema contracts

Expand a schema to inspect every field, required-property rule, constraint, and the complete JSON Schema definition.

ArtifactCreate6 fields, 2 requiredJSON Schema

Reusable public API component schema.

FieldTypeRequiredRules
artifact_typestringYesenum=summary, study_guide, key_concepts, flashcards, practice_questions
titlestringNodefault=
contentstringYesminLength=1
source_document_idsarray[string]Nodefault=[]
module_idstring | nullNo-
lesson_idstring | nullNo-
View complete JSON Schema
{
  "properties": {
    "artifact_type": {
      "type": "string",
      "enum": [
        "summary",
        "study_guide",
        "key_concepts",
        "flashcards",
        "practice_questions"
      ],
      "title": "Artifact Type"
    },
    "title": {
      "type": "string",
      "title": "Title",
      "default": ""
    },
    "content": {
      "type": "string",
      "minLength": 1,
      "title": "Content"
    },
    "source_document_ids": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Source Document Ids",
      "default": []
    },
    "module_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Module Id"
    },
    "lesson_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Lesson Id"
    }
  },
  "type": "object",
  "required": [
    "artifact_type",
    "content"
  ],
  "title": "ArtifactCreate"
}
ArtifactInput7 fields, 3 requiredJSON Schema

Reusable public API component schema.

FieldTypeRequiredRules
artifact_typestringYesminLength=2; maxLength=80
titlestringYesminLength=2; maxLength=240
contentobjectYes-
workspace_idstring | nullNo-
source_document_idsarray[string]No-
source_trace_idstring | nullNo-
statusstringNodefault=draft; enum=draft, reviewed, approved
View complete JSON Schema
{
  "properties": {
    "artifact_type": {
      "type": "string",
      "maxLength": 80,
      "minLength": 2,
      "title": "Artifact Type"
    },
    "title": {
      "type": "string",
      "maxLength": 240,
      "minLength": 2,
      "title": "Title"
    },
    "content": {
      "additionalProperties": true,
      "type": "object",
      "title": "Content"
    },
    "workspace_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Workspace Id"
    },
    "source_document_ids": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "maxItems": 500,
      "title": "Source Document Ids"
    },
    "source_trace_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Source Trace Id"
    },
    "status": {
      "type": "string",
      "enum": [
        "draft",
        "reviewed",
        "approved"
      ],
      "title": "Status",
      "default": "draft"
    }
  },
  "type": "object",
  "required": [
    "artifact_type",
    "title",
    "content"
  ],
  "title": "ArtifactInput"
}
AssetCreate4 fields, 1 requiredJSON Schema

Reusable public API component schema.

FieldTypeRequiredRules
document_idstringYes-
module_idstring | nullNo-
lesson_idstring | nullNo-
titlestringNodefault=
View complete JSON Schema
{
  "properties": {
    "document_id": {
      "type": "string",
      "title": "Document Id"
    },
    "module_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Module Id"
    },
    "lesson_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Lesson Id"
    },
    "title": {
      "type": "string",
      "title": "Title",
      "default": ""
    }
  },
  "type": "object",
  "required": [
    "document_id"
  ],
  "title": "AssetCreate"
}
BatchUploadRequest4 fields, 1 requiredJSON Schema

Reusable public API component schema.

FieldTypeRequiredRules
filesarray[UploadFileManifest]Yes-
workspace_idstring | nullNo-
redact_piibooleanNodefault=False
idempotency_keystring | nullNo-
View complete JSON Schema
{
  "properties": {
    "files": {
      "items": {
        "$ref": "#/components/schemas/UploadFileManifest"
      },
      "type": "array",
      "minItems": 1,
      "title": "Files"
    },
    "workspace_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Workspace Id"
    },
    "redact_pii": {
      "type": "boolean",
      "title": "Redact Pii",
      "default": false
    },
    "idempotency_key": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 200
        },
        {
          "type": "null"
        }
      ],
      "title": "Idempotency Key"
    }
  },
  "type": "object",
  "required": [
    "files"
  ],
  "title": "BatchUploadRequest"
}
ChatRequest7 fields, 2 requiredJSON Schema

Reusable public API component schema.

FieldTypeRequiredRules
questionstringYes-
document_idsarray[string]Yes-
historyarray[object]Nodefault=[]
workspace_idstring | nullNo-
redact_piibooleanNodefault=False
agent_modestringNodefault=auto
response_languagestring | nullNo-
View complete JSON Schema
{
  "properties": {
    "question": {
      "type": "string",
      "title": "Question"
    },
    "document_ids": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Document Ids"
    },
    "history": {
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "type": "array",
      "title": "History",
      "default": []
    },
    "workspace_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Workspace Id"
    },
    "redact_pii": {
      "type": "boolean",
      "title": "Redact Pii",
      "default": false
    },
    "agent_mode": {
      "type": "string",
      "title": "Agent Mode",
      "default": "auto"
    },
    "response_language": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "en",
            "es",
            "bn",
            "hi",
            "ar"
          ]
        },
        {
          "type": "null"
        }
      ],
      "title": "Response Language"
    }
  },
  "type": "object",
  "required": [
    "question",
    "document_ids"
  ],
  "title": "ChatRequest"
}
CompleteBatchUploadRequest2 fields, 0 requiredJSON Schema

Reusable public API component schema.

FieldTypeRequiredRules
document_idsarray[string]Nodefault=[]
concurrencyintegerNodefault=3; minimum=1.0; maximum=10.0
View complete JSON Schema
{
  "properties": {
    "document_ids": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Document Ids",
      "default": []
    },
    "concurrency": {
      "type": "integer",
      "maximum": 10.0,
      "minimum": 1.0,
      "title": "Concurrency",
      "default": 3
    }
  },
  "type": "object",
  "title": "CompleteBatchUploadRequest"
}
CourseCreate7 fields, 2 requiredJSON Schema

Reusable public API component schema.

FieldTypeRequiredRules
workspace_idstringYes-
titlestringYesminLength=1; maxLength=180
course_codestringNodefault=; maxLength=60
semesterstringNodefault=; maxLength=80
descriptionstringNodefault=; maxLength=4000
instructor_namestringNodefault=; maxLength=180
objectivesarray[string]Nodefault=[]
View complete JSON Schema
{
  "properties": {
    "workspace_id": {
      "type": "string",
      "title": "Workspace Id"
    },
    "title": {
      "type": "string",
      "maxLength": 180,
      "minLength": 1,
      "title": "Title"
    },
    "course_code": {
      "type": "string",
      "maxLength": 60,
      "title": "Course Code",
      "default": ""
    },
    "semester": {
      "type": "string",
      "maxLength": 80,
      "title": "Semester",
      "default": ""
    },
    "description": {
      "type": "string",
      "maxLength": 4000,
      "title": "Description",
      "default": ""
    },
    "instructor_name": {
      "type": "string",
      "maxLength": 180,
      "title": "Instructor Name",
      "default": ""
    },
    "objectives": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Objectives",
      "default": []
    }
  },
  "type": "object",
  "required": [
    "workspace_id",
    "title"
  ],
  "title": "CourseCreate"
}
CourseUpdate7 fields, 0 requiredJSON Schema

Reusable public API component schema.

FieldTypeRequiredRules
titlestring | nullNo-
course_codestring | nullNo-
semesterstring | nullNo-
descriptionstring | nullNo-
instructor_namestring | nullNo-
objectivesarray[string] | nullNo-
statusstring | nullNo-
View complete JSON Schema
{
  "properties": {
    "title": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 180,
          "minLength": 1
        },
        {
          "type": "null"
        }
      ],
      "title": "Title"
    },
    "course_code": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 60
        },
        {
          "type": "null"
        }
      ],
      "title": "Course Code"
    },
    "semester": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 80
        },
        {
          "type": "null"
        }
      ],
      "title": "Semester"
    },
    "description": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 4000
        },
        {
          "type": "null"
        }
      ],
      "title": "Description"
    },
    "instructor_name": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 180
        },
        {
          "type": "null"
        }
      ],
      "title": "Instructor Name"
    },
    "objectives": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "title": "Objectives"
    },
    "status": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "active",
            "archived"
          ]
        },
        {
          "type": "null"
        }
      ],
      "title": "Status"
    }
  },
  "type": "object",
  "title": "CourseUpdate"
}
CurriculumSave1 fields, 0 requiredJSON Schema

Reusable public API component schema.

FieldTypeRequiredRules
modulesarray[object]Nodefault=[]
View complete JSON Schema
{
  "properties": {
    "modules": {
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "type": "array",
      "title": "Modules",
      "default": []
    }
  },
  "type": "object",
  "title": "CurriculumSave"
}
DirectUploadCompleteRequest7 fields, 4 requiredJSON Schema

Reusable public API component schema.

FieldTypeRequiredRules
filenamestringYes-
content_typestringNodefault=application/octet-stream
file_sizeintegerYes-
workspace_idstring | nullNo-
redact_piibooleanNodefault=False
doc_idstringYes-
gcs_source_pathstringYes-
View complete JSON Schema
{
  "properties": {
    "filename": {
      "type": "string",
      "title": "Filename"
    },
    "content_type": {
      "type": "string",
      "title": "Content Type",
      "default": "application/octet-stream"
    },
    "file_size": {
      "type": "integer",
      "title": "File Size"
    },
    "workspace_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Workspace Id"
    },
    "redact_pii": {
      "type": "boolean",
      "title": "Redact Pii",
      "default": false
    },
    "doc_id": {
      "type": "string",
      "title": "Doc Id"
    },
    "gcs_source_path": {
      "type": "string",
      "title": "Gcs Source Path"
    }
  },
  "type": "object",
  "required": [
    "filename",
    "file_size",
    "doc_id",
    "gcs_source_path"
  ],
  "title": "DirectUploadCompleteRequest"
}
DirectUploadSessionRequest5 fields, 2 requiredJSON Schema

Reusable public API component schema.

FieldTypeRequiredRules
filenamestringYes-
content_typestringNodefault=application/octet-stream
file_sizeintegerYes-
workspace_idstring | nullNo-
redact_piibooleanNodefault=False
View complete JSON Schema
{
  "properties": {
    "filename": {
      "type": "string",
      "title": "Filename"
    },
    "content_type": {
      "type": "string",
      "title": "Content Type",
      "default": "application/octet-stream"
    },
    "file_size": {
      "type": "integer",
      "title": "File Size"
    },
    "workspace_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Workspace Id"
    },
    "redact_pii": {
      "type": "boolean",
      "title": "Redact Pii",
      "default": false
    }
  },
  "type": "object",
  "required": [
    "filename",
    "file_size"
  ],
  "title": "DirectUploadSessionRequest"
}
DocumentBatchRequest5 fields, 1 requiredJSON Schema

Reusable public API component schema.

FieldTypeRequiredRules
document_idsarray[string]Yes-
workspace_idstring | nullNo-
concurrencyintegerNodefault=3; minimum=1.0; maximum=10.0
forcebooleanNodefault=False
idempotency_keystring | nullNo-
View complete JSON Schema
{
  "properties": {
    "document_ids": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "minItems": 1,
      "title": "Document Ids"
    },
    "workspace_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Workspace Id"
    },
    "concurrency": {
      "type": "integer",
      "maximum": 10.0,
      "minimum": 1.0,
      "title": "Concurrency",
      "default": 3
    },
    "force": {
      "type": "boolean",
      "title": "Force",
      "default": false
    },
    "idempotency_key": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 200
        },
        {
          "type": "null"
        }
      ],
      "title": "Idempotency Key"
    }
  },
  "type": "object",
  "required": [
    "document_ids"
  ],
  "title": "DocumentBatchRequest"
}
EvaluationInput2 fields, 1 requiredJSON Schema

Reusable public API component schema.

FieldTypeRequiredRules
trace_idstringYes-
evaluation_typestringNodefault=groundedness
View complete JSON Schema
{
  "properties": {
    "trace_id": {
      "type": "string",
      "title": "Trace Id"
    },
    "evaluation_type": {
      "type": "string",
      "title": "Evaluation Type",
      "default": "groundedness"
    }
  },
  "type": "object",
  "required": [
    "trace_id"
  ],
  "title": "EvaluationInput"
}
HTTPValidationError1 fields, 0 requiredJSON Schema

Reusable public API component schema.

FieldTypeRequiredRules
detailarray[ValidationError]No-
View complete JSON Schema
{
  "properties": {
    "detail": {
      "items": {
        "$ref": "#/components/schemas/ValidationError"
      },
      "type": "array",
      "title": "Detail"
    }
  },
  "type": "object",
  "title": "HTTPValidationError"
}
LearningTutorRequest6 fields, 1 requiredJSON Schema

Reusable public API component schema.

FieldTypeRequiredRules
questionstringYesminLength=1; maxLength=12000
module_idstring | nullNo-
lesson_idstring | nullNo-
historyarray[object]No-
response_languagestring | nullNo-
redact_piibooleanNodefault=False
View complete JSON Schema
{
  "properties": {
    "question": {
      "type": "string",
      "maxLength": 12000,
      "minLength": 1,
      "title": "Question"
    },
    "module_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Module Id"
    },
    "lesson_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Lesson Id"
    },
    "history": {
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "type": "array",
      "maxItems": 30,
      "title": "History"
    },
    "response_language": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "en",
            "es",
            "bn",
            "hi",
            "ar"
          ]
        },
        {
          "type": "null"
        }
      ],
      "title": "Response Language"
    },
    "redact_pii": {
      "type": "boolean",
      "title": "Redact Pii",
      "default": false
    }
  },
  "type": "object",
  "required": [
    "question"
  ],
  "title": "LearningTutorRequest"
}
MemberCreate2 fields, 1 requiredJSON Schema

Reusable public API component schema.

FieldTypeRequiredRules
emailstringYes-
personastringNodefault=student; enum=admin, teacher, student, advisor
View complete JSON Schema
{
  "properties": {
    "email": {
      "type": "string",
      "title": "Email"
    },
    "persona": {
      "type": "string",
      "enum": [
        "admin",
        "teacher",
        "student",
        "advisor"
      ],
      "title": "Persona",
      "default": "student"
    }
  },
  "type": "object",
  "required": [
    "email"
  ],
  "title": "MemberCreate"
}
QuestionCreate3 fields, 1 requiredJSON Schema

Reusable public API component schema.

FieldTypeRequiredRules
target_rolestringNodefault=teacher; enum=teacher, advisor
questionstringYesminLength=1; maxLength=8000
contextobjectNodefault={}
View complete JSON Schema
{
  "properties": {
    "target_role": {
      "type": "string",
      "enum": [
        "teacher",
        "advisor"
      ],
      "title": "Target Role",
      "default": "teacher"
    },
    "question": {
      "type": "string",
      "maxLength": 8000,
      "minLength": 1,
      "title": "Question"
    },
    "context": {
      "additionalProperties": true,
      "type": "object",
      "title": "Context",
      "default": {}
    }
  },
  "type": "object",
  "required": [
    "question"
  ],
  "title": "QuestionCreate"
}
QuestionUpdate3 fields, 0 requiredJSON Schema

Reusable public API component schema.

FieldTypeRequiredRules
answerstring | nullNo-
statusstring | nullNo-
assigned_tostring | nullNo-
View complete JSON Schema
{
  "properties": {
    "answer": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Answer"
    },
    "status": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "open",
            "answered",
            "closed"
          ]
        },
        {
          "type": "null"
        }
      ],
      "title": "Status"
    },
    "assigned_to": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Assigned To"
    }
  },
  "type": "object",
  "title": "QuestionUpdate"
}
QuizAttemptCreate2 fields, 0 requiredJSON Schema

Reusable public API component schema.

FieldTypeRequiredRules
answersobjectNodefault={}
replacebooleanNodefault=False
View complete JSON Schema
{
  "properties": {
    "answers": {
      "additionalProperties": {
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "type": "object",
      "title": "Answers",
      "default": {}
    },
    "replace": {
      "type": "boolean",
      "title": "Replace",
      "default": false
    }
  },
  "type": "object",
  "title": "QuizAttemptCreate"
}
ReviewDecisionInput2 fields, 1 requiredJSON Schema

Reusable public API component schema.

FieldTypeRequiredRules
decisionstringYesenum=approved, changes_requested, rejected
reviewer_notesstringNodefault=; maxLength=5000
View complete JSON Schema
{
  "properties": {
    "decision": {
      "type": "string",
      "enum": [
        "approved",
        "changes_requested",
        "rejected"
      ],
      "title": "Decision"
    },
    "reviewer_notes": {
      "type": "string",
      "maxLength": 5000,
      "title": "Reviewer Notes",
      "default": ""
    }
  },
  "type": "object",
  "required": [
    "decision"
  ],
  "title": "ReviewDecisionInput"
}
ReviewTaskInput7 fields, 3 requiredJSON Schema

Reusable public API component schema.

FieldTypeRequiredRules
verticalstringYes-
run_idstringYes-
titlestringYesminLength=2; maxLength=240
workspace_idstring | nullNo-
prioritystringNodefault=normal; enum=low, normal, high, urgent
due_atstring | nullNo-
metadataobjectNo-
View complete JSON Schema
{
  "properties": {
    "vertical": {
      "type": "string",
      "title": "Vertical"
    },
    "run_id": {
      "type": "string",
      "title": "Run Id"
    },
    "title": {
      "type": "string",
      "maxLength": 240,
      "minLength": 2,
      "title": "Title"
    },
    "workspace_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Workspace Id"
    },
    "priority": {
      "type": "string",
      "enum": [
        "low",
        "normal",
        "high",
        "urgent"
      ],
      "title": "Priority",
      "default": "normal"
    },
    "due_at": {
      "anyOf": [
        {
          "type": "string",
          "format": "date-time"
        },
        {
          "type": "null"
        }
      ],
      "title": "Due At"
    },
    "metadata": {
      "additionalProperties": true,
      "type": "object",
      "title": "Metadata"
    }
  },
  "type": "object",
  "required": [
    "vertical",
    "run_id",
    "title"
  ],
  "title": "ReviewTaskInput"
}
SubscriptionInput5 fields, 0 requiredJSON Schema

Reusable public API component schema.

FieldTypeRequiredRules
event_typesarray[string]No-
workspace_idstring | nullNo-
resource_typestring | nullNo-
resource_idstring | nullNo-
webhook_urlstring | nullNo-
View complete JSON Schema
{
  "properties": {
    "event_types": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "maxItems": 50,
      "title": "Event Types"
    },
    "workspace_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Workspace Id"
    },
    "resource_type": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 80
        },
        {
          "type": "null"
        }
      ],
      "title": "Resource Type"
    },
    "resource_id": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 200
        },
        {
          "type": "null"
        }
      ],
      "title": "Resource Id"
    },
    "webhook_url": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Webhook Url"
    }
  },
  "type": "object",
  "title": "SubscriptionInput"
}
SummarizeRequest4 fields, 0 requiredJSON Schema

Reusable public API component schema.

FieldTypeRequiredRules
summary_typestringNodefault=executive
custom_promptstringNodefault=
chunk_indicesarray[integer]Nodefault=[]
redact_piibooleanNodefault=False
View complete JSON Schema
{
  "properties": {
    "summary_type": {
      "type": "string",
      "title": "Summary Type",
      "default": "executive"
    },
    "custom_prompt": {
      "type": "string",
      "title": "Custom Prompt",
      "default": ""
    },
    "chunk_indices": {
      "items": {
        "type": "integer"
      },
      "type": "array",
      "title": "Chunk Indices",
      "default": []
    },
    "redact_pii": {
      "type": "boolean",
      "title": "Redact Pii",
      "default": false
    }
  },
  "type": "object",
  "title": "SummarizeRequest"
}
UploadFileManifest3 fields, 2 requiredJSON Schema

Reusable public API component schema.

FieldTypeRequiredRules
filenamestringYes-
content_typestringNodefault=application/octet-stream
file_sizeintegerYes-
View complete JSON Schema
{
  "properties": {
    "filename": {
      "type": "string",
      "title": "Filename"
    },
    "content_type": {
      "type": "string",
      "title": "Content Type",
      "default": "application/octet-stream"
    },
    "file_size": {
      "type": "integer",
      "exclusiveMinimum": 0.0,
      "title": "File Size"
    }
  },
  "type": "object",
  "required": [
    "filename",
    "file_size"
  ],
  "title": "UploadFileManifest"
}
ValidationError3 fields, 3 requiredJSON Schema

Reusable public API component schema.

FieldTypeRequiredRules
locarray[string | integer]Yes-
msgstringYes-
typestringYes-
View complete JSON Schema
{
  "properties": {
    "loc": {
      "items": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "integer"
          }
        ]
      },
      "type": "array",
      "title": "Location"
    },
    "msg": {
      "type": "string",
      "title": "Message"
    },
    "type": {
      "type": "string",
      "title": "Error Type"
    }
  },
  "type": "object",
  "required": [
    "loc",
    "msg",
    "type"
  ],
  "title": "ValidationError"
}
VersionInput3 fields, 0 requiredJSON Schema

Reusable public API component schema.

FieldTypeRequiredRules
previous_document_idstring | nullNo-
change_summarystringNodefault=; maxLength=2000
changed_pagesarray[integer]No-
View complete JSON Schema
{
  "properties": {
    "previous_document_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Previous Document Id"
    },
    "change_summary": {
      "type": "string",
      "maxLength": 2000,
      "title": "Change Summary",
      "default": ""
    },
    "changed_pages": {
      "items": {
        "type": "integer"
      },
      "type": "array",
      "maxItems": 5000,
      "title": "Changed Pages"
    }
  },
  "type": "object",
  "title": "VersionInput"
}
WorkspaceContextInput1 fields, 0 requiredJSON Schema

Reusable public API component schema.

FieldTypeRequiredRules
workspace_idstring | nullNo-
View complete JSON Schema
{
  "properties": {
    "workspace_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Workspace Id"
    }
  },
  "type": "object",
  "title": "WorkspaceContextInput"
}
WorkspaceCreateInput1 fields, 1 requiredJSON Schema

Reusable public API component schema.

FieldTypeRequiredRules
namestringYesminLength=1; maxLength=200
View complete JSON Schema
{
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1,
      "title": "Name"
    }
  },
  "type": "object",
  "required": [
    "name"
  ],
  "title": "WorkspaceCreateInput"
}
WorkspaceMemberInput2 fields, 1 requiredJSON Schema

Reusable public API component schema.

FieldTypeRequiredRules
emailstringYesminLength=3; maxLength=320
rolestringNodefault=viewer
View complete JSON Schema
{
  "properties": {
    "email": {
      "type": "string",
      "maxLength": 320,
      "minLength": 3,
      "title": "Email"
    },
    "role": {
      "type": "string",
      "title": "Role",
      "default": "viewer"
    }
  },
  "type": "object",
  "required": [
    "email"
  ],
  "title": "WorkspaceMemberInput"
}
WorkspaceRoleInput1 fields, 1 requiredJSON Schema

Reusable public API component schema.

FieldTypeRequiredRules
rolestringYes-
View complete JSON Schema
{
  "properties": {
    "role": {
      "type": "string",
      "title": "Role"
    }
  },
  "type": "object",
  "required": [
    "role"
  ],
  "title": "WorkspaceRoleInput"
}
WorkspaceSummaryRequest8 fields, 1 requiredJSON Schema

Reusable public API component schema.

FieldTypeRequiredRules
workspace_idstringYes-
document_idsarray[string]Nodefault=[]
summary_typestringNodefault=executive
custom_promptstringNodefault=
redact_piibooleanNodefault=False
languagestringNodefault=en
concurrencyintegerNodefault=2; minimum=1.0; maximum=6.0
idempotency_keystring | nullNo-
View complete JSON Schema
{
  "properties": {
    "workspace_id": {
      "type": "string",
      "title": "Workspace Id"
    },
    "document_ids": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Document Ids",
      "default": []
    },
    "summary_type": {
      "type": "string",
      "title": "Summary Type",
      "default": "executive"
    },
    "custom_prompt": {
      "type": "string",
      "title": "Custom Prompt",
      "default": ""
    },
    "redact_pii": {
      "type": "boolean",
      "title": "Redact Pii",
      "default": false
    },
    "language": {
      "type": "string",
      "title": "Language",
      "default": "en"
    },
    "concurrency": {
      "type": "integer",
      "maximum": 6.0,
      "minimum": 1.0,
      "title": "Concurrency",
      "default": 2
    },
    "idempotency_key": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 200
        },
        {
          "type": "null"
        }
      ],
      "title": "Idempotency Key"
    }
  },
  "type": "object",
  "required": [
    "workspace_id"
  ],
  "title": "WorkspaceSummaryRequest"
}
WorkspaceUpdateInput1 fields, 1 requiredJSON Schema

Reusable public API component schema.

FieldTypeRequiredRules
namestringYesminLength=1; maxLength=200
View complete JSON Schema
{
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1,
      "title": "Name"
    }
  },
  "type": "object",
  "required": [
    "name"
  ],
  "title": "WorkspaceUpdateInput"
}

Generation workflow

Pin, compare, generate, test

01FetchRetrieve the schema from the target environment.
02PinCommit a reviewed contract version with the integration.
03CompareDetect removed paths, required fields, and incompatible schema changes.
04GenerateCreate clients and run contract smoke tests against a test workspace.
OpenAPI and MCP are complementary

OpenAPI describes explicit REST contracts for application code. MCP enables runtime discovery of governed tools and resources for compatible AI clients.

Client responsibilities

Keep runtime policy outside generated models

OAuth

Acquire an access token for the REST resource audience.

Workspace

Send the selected team workspace header on scoped requests.

Idempotency

Attach stable keys when safely retrying mutating operations.

Durable status

Persist operation IDs and use bounded polling or webhooks.

Rate limits

Honor remaining, reset, and retry headers.

Tracing

Preserve request and trace identifiers through logs and support workflows.