Skip to content
Ask Otto AI
Help

What is this page?

Admissions API

Role aware

This page proves the first versioned admissions JSON API contract, including Zod schemas, local lead-list responses, create-lead validation, stage-change preview, and OpenAPI output.

Audience
Staff
Current limits
It uses local invented proof data only. It does not create or update leads, persist idempotency keys, enforce OAuth scopes, run rate limits, write audit logs, publish SDKs, or create Person, Student, Enrollment, Student 360, enrollment agreement, or communications records.

Support request boundary

Use Sev3 if endpoint behavior, validation errors, or proof-only write boundaries are unclear and Sev4 for labels, ordering, or proof-copy feedback. This panel does not submit a support case.

Sev1: Critical outage or data-risk emergency

Target: 1-hour response, 24/7 paging during pilot

Sev2: Major workflow blocked

Target: 4 business hours

Sev3: Standard product question or non-urgent issue

Target: 1 business day

Sev4: How-to, cosmetic, or future enhancement

Target: 2 business days

These preview controls are placeholders. Real AI answers, search, walkthroughs, and support submission come in later tickets.

Notifications13

Static proof preview

Real notification feeds, delivery, and preferences arrive in a later ticket.

Mina Patel

Mina Patel

mina.patel@otto-fixture.test

Switch local proof role

This changes only the local shell proof. Production role changes remain server-validated future work.

Search is a keyboard-focusable skeleton. No real index or permissioned search results are implemented in this ticket.

Admissions CRM

Admissions API

A local proof surface for versioned admissions JSON endpoints, Zod schemas, generated OpenAPI components, and disabled write behavior.

Otto Fixture BPPE Career School · API proof

Admissions Representative · Mina Patel

Admissions API

Zod schemas and versioned endpoints

Ticket 036 exposes the local admissions proof through versioned JSON endpoints. Read routes return fixture data, while write routes only validate payloads and return previews with no accepted writes.

API version

API version

v1

Versioned contract rooted under /api/v1.

Paths

Paths

3

Route paths described in the OpenAPI proof document.

Schemas

Schemas

9

OpenAPI components generated from Zod contracts.

Writes

Writes

0

POST and PATCH validate only.

Endpoint contract

The first admissions API endpoints cover lead listing, create-lead validation, stage-change preview, and the generated OpenAPI document.

read-only

List admissions leads

GET
Path
/api/v1/leads
Status codes
200, 400
Schemas
ListAdmissionsLeadsQuery, AdmissionsApiLeadListResponse, AdmissionsApiErrorEnvelope

Local only: true · database backed: false

validation-preview

Validate new lead payload

POST
Path
/api/v1/leads
Status codes
200, 400
Schemas
CreateAdmissionsLeadRequest, AdmissionsApiCreateLeadPreviewResponse, AdmissionsApiErrorEnvelope

Local only: true · database backed: false

validation-preview

Preview stage movement

PATCH
Path
/api/v1/leads/{id}/stage
Status codes
200, 400, 404
Schemas
UpdateAdmissionsLeadStageRequest, AdmissionsApiStagePreviewResponse, AdmissionsApiErrorEnvelope

Local only: true · database backed: false

read-only

OpenAPI contract

GET
Path
/api/v1/openapi
Status codes
200
Schemas
AdmissionsApiLead, AdmissionsApiStage, ListAdmissionsLeadsQuery

Local only: true · database backed: false

Schema registry

Shared Zod contracts

Generated components
AdmissionsApiLead
AdmissionsApiStage
ListAdmissionsLeadsQuery
CreateAdmissionsLeadRequest
UpdateAdmissionsLeadStageRequest
AdmissionsApiLeadListResponse
AdmissionsApiCreateLeadPreviewResponse
AdmissionsApiStagePreviewResponse
AdmissionsApiErrorEnvelope

POST /api/v1/leads

Create-lead validation

Dry run
{
  "legalName": "Nadia Torres",
  "preferredName": "Nadia",
  "email": "nadia.torres@example.test",
  "phone": "(408) 555-0144",
  "source": "Website form",
  "campaign": "Fall program interest",
  "program": "Medical Assistant Certificate",
  "campus": "San Jose",
  "startDateLabel": "March 2027",
  "assignedRep": "Mina Patel",
  "consentChannels": [
    "email",
    "sms"
  ],
  "consentWording": "Applicant agreed to be contacted by Otto Demo Career School about admissions.",
  "idempotencyKey": "idem_036_nadia_torres",
  "dryRun": true
}

PATCH /api/v1/leads/id/stage

Stage-change preview

No write
{
  "targetStageId": "applied",
  "expectedVersion": "lead-local-proof-v1",
  "reason": "Applicant submitted the proof application form.",
  "idempotencyKey": "idem_036_stage_preview"
}

Proof boundary

Ticket 036 stops at contracts and previews

No production API writes
Production lead creation, lead updates, or stage-change writes
Database reads/writes, RLS-gated tenancy, OAuth client credentials, or user-session authorization
Idempotency persistence, ETags, rate limits, cursor tokens, and request audit logs
OpenAPI publishing pipeline, SDK generation, external webhook delivery, and integration tokens
Person, Student, Enrollment, Student 360, enrollment agreement, or communications event creation