Penn Courses API (Penn Course Alert / Plan / Review / Degree Plan)

One API, four student-facing products: Penn Course Alert (PCA), Penn Course Plan (PCP), Penn Course Review (PCR) and Penn Degree Plan (PDP), plus a shared Accounts resource. The live OpenAPI 3.0.2 document at penncourseplan.com/api/openapi/ declares 45 paths across 29 tags and returned HTTP 200 (415 KB) on 2026-08-19; public course search reads anonymously while review and user-scoped resources return 403. Operated by PENN LABS, a non-profit student-run software organization at Penn, on domains registered to Penn Labs — not by the university. The 29 OpenAPI documents held here are the per-tag split of that single contract; they are one surface, not twenty-nine. The previous profile listed them as twenty-nine separate University of Pennsylvania APIs.

Operations 3

GET /accounts/me/ Retrieve user #
PUT /accounts/me/ Update user #
PATCH /accounts/me/ Partial update user #

Documentation

Specifications

⚙
OpenAPI
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/openapi/university-of-pennsylvania-accounts-user-api-openapi.yml
⚙
OpenAPI
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/openapi/university-of-pennsylvania-pca-registration-api-openapi.yml
⚙
OpenAPI
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/openapi/university-of-pennsylvania-pca-registration-history-api-openapi.yml
⚙
OpenAPI
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/openapi/university-of-pennsylvania-pcp-break-api-openapi.yml
⚙
OpenAPI
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/openapi/university-of-pennsylvania-pcp-calendar-api-openapi.yml
⚙
OpenAPI
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/openapi/university-of-pennsylvania-pcp-course-recommendations-api-openapi.yml
⚙
OpenAPI
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/openapi/university-of-pennsylvania-pcp-primary-schedule-api-openapi.yml
⚙
OpenAPI
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/openapi/university-of-pennsylvania-pcp-schedule-api-openapi.yml
⚙
OpenAPI
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/openapi/university-of-pennsylvania-pcr-autocomplete-dump-api-openapi.yml
⚙
OpenAPI
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/openapi/university-of-pennsylvania-pcr-course-reviews-api-openapi.yml
⚙
OpenAPI
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/openapi/university-of-pennsylvania-pcr-department-reviews-api-openapi.yml
⚙
OpenAPI
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/openapi/university-of-pennsylvania-pcr-instructor-reviews-api-openapi.yml
⚙
OpenAPI
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/openapi/university-of-pennsylvania-pcr-plots-api-openapi.yml
⚙
OpenAPI
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/openapi/university-of-pennsylvania-pcr-section-specific-reviews-api-openapi.yml
⚙
OpenAPI
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/openapi/university-of-pennsylvania-pcx-attributes-api-openapi.yml
⚙
OpenAPI
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/openapi/university-of-pennsylvania-pcx-course-api-openapi.yml
⚙
OpenAPI
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/openapi/university-of-pennsylvania-pcx-friendship-api-openapi.yml
⚙
OpenAPI
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/openapi/university-of-pennsylvania-pcx-healths-api-openapi.yml
⚙
OpenAPI
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/openapi/university-of-pennsylvania-pcx-ngss-restrictions-api-openapi.yml
⚙
OpenAPI
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/openapi/university-of-pennsylvania-pcx-pre-ngss-requirements-api-openapi.yml
⚙
OpenAPI
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/openapi/university-of-pennsylvania-pcx-section-api-openapi.yml
⚙
OpenAPI
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/openapi/university-of-pennsylvania-pcx-status-updates-api-openapi.yml
⚙
OpenAPI
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/openapi/university-of-pennsylvania-pdp-degree-api-openapi.yml
⚙
OpenAPI
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/openapi/university-of-pennsylvania-pdp-degree-plan-detail-api-openapi.yml
⚙
OpenAPI
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/openapi/university-of-pennsylvania-pdp-degree-plan-lists-api-openapi.yml
⚙
OpenAPI
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/openapi/university-of-pennsylvania-pdp-docked-course-api-openapi.yml
⚙
OpenAPI
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/openapi/university-of-pennsylvania-pdp-fulfillment-api-openapi.yml
⚙
OpenAPI
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/openapi/university-of-pennsylvania-pdp-onboard-from-transcript-api-openapi.yml
⚙
OpenAPI
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/openapi/university-of-pennsylvania-pdp-satisfied-rule-lists-api-openapi.yml
⚙
OpenAPI
https://penncourseplan.com/api/openapi/

Other Resources

🔗
GitHub
https://github.com/pennlabs/penn-courses
🔗
x-json-schema
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/json-schema/university-of-pennsylvania-course-schema.json
🔗
x-json-schema
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/json-schema/university-of-pennsylvania-schedule-schema.json
🔗
x-json-schema
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/json-schema/university-of-pennsylvania-section-schema.json
🔗
x-json-structure
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/json-structure/university-of-pennsylvania-course-structure.json
🔗
x-json-structure
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/json-structure/university-of-pennsylvania-section-structure.json
🔗
x-examples
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/examples/university-of-pennsylvania-course-detail-example.json
🔗
x-examples
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/examples/university-of-pennsylvania-section-detail-example.json
🔗
x-rules
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/rules/university-of-pennsylvania-rules.yml
🔗
x-rules
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/rules/university-of-pennsylvania-jsonschema-spectral-rules.yml
🔗
x-vocabulary
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/vocabulary/university-of-pennsylvania-vocabulary.yml
🔗
x-json-ld
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/json-ld/university-of-pennsylvania-context.jsonld
🔗
x-authentication
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/authentication/university-of-pennsylvania-authentication.yml
🔗
x-errors
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/errors/university-of-pennsylvania-errors.yml
🔗
x-lifecycle
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/lifecycle/university-of-pennsylvania-lifecycle.yml
🔗
x-open-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/.refine-report.opencollection.json
🔗
x-open-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-accounts-user-api.opencollection.json
🔗
x-postman-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-accounts-user-api.postman_collection.json
🔗
x-open-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pca-registration-api.opencollection.json
🔗
x-postman-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pca-registration-api.postman_collection.json
🔗
x-open-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pca-registration-history-api.opencollection.json
🔗
x-postman-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pca-registration-history-api.postman_collection.json
🔗
x-open-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pcp-break-api.opencollection.json
🔗
x-postman-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pcp-break-api.postman_collection.json
🔗
x-open-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pcp-calendar-api.opencollection.json
🔗
x-postman-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pcp-calendar-api.postman_collection.json
🔗
x-open-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pcp-course-recommendations-api.opencollection.json
🔗
x-postman-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pcp-course-recommendations-api.postman_collection.json
🔗
x-open-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pcp-primary-schedule-api.opencollection.json
🔗
x-postman-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pcp-primary-schedule-api.postman_collection.json
🔗
x-open-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pcp-schedule-api.opencollection.json
🔗
x-postman-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pcp-schedule-api.postman_collection.json
🔗
x-open-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pcr-autocomplete-dump-api.opencollection.json
🔗
x-postman-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pcr-autocomplete-dump-api.postman_collection.json
🔗
x-open-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pcr-plots-api.opencollection.json
🔗
x-postman-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pcr-plots-api.postman_collection.json
🔗
x-open-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pcx-attributes-api.opencollection.json
🔗
x-postman-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pcx-attributes-api.postman_collection.json
🔗
x-open-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pcx-course-api.opencollection.json
🔗
x-postman-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pcx-course-api.postman_collection.json
🔗
x-open-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pcx-friendship-api.opencollection.json
🔗
x-postman-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pcx-friendship-api.postman_collection.json
🔗
x-open-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pcx-healths-api.opencollection.json
🔗
x-postman-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pcx-healths-api.postman_collection.json
🔗
x-open-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pcx-ngss-restrictions-api.opencollection.json
🔗
x-postman-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pcx-ngss-restrictions-api.postman_collection.json
🔗
x-open-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pcx-pre-ngss-requirements-api.opencollection.json
🔗
x-postman-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pcx-pre-ngss-requirements-api.postman_collection.json
🔗
x-open-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pcx-section-api.opencollection.json
🔗
x-postman-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pcx-section-api.postman_collection.json
🔗
x-open-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pcx-status-updates-api.opencollection.json
🔗
x-postman-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pcx-status-updates-api.postman_collection.json
🔗
x-open-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pdp-degree-api.opencollection.json
🔗
x-postman-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pdp-degree-api.postman_collection.json
🔗
x-open-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pdp-degree-plan-detail-api.opencollection.json
🔗
x-postman-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pdp-degree-plan-detail-api.postman_collection.json
🔗
x-open-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pdp-degree-plan-lists-api.opencollection.json
🔗
x-postman-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pdp-degree-plan-lists-api.postman_collection.json
🔗
x-open-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pdp-docked-course-api.opencollection.json
🔗
x-postman-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pdp-docked-course-api.postman_collection.json
🔗
x-open-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pdp-fulfillment-api.opencollection.json
🔗
x-postman-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pdp-fulfillment-api.postman_collection.json
🔗
x-open-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pdp-onboard-from-transcript-api.opencollection.json
🔗
x-postman-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pdp-onboard-from-transcript-api.postman_collection.json
🔗
x-open-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pdp-satisfied-rule-lists-api.opencollection.json
🔗
x-postman-collection
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/collections/university-of-pennsylvania-pdp-satisfied-rule-lists-api.postman_collection.json
🔗
APIsJSON
https://raw.githubusercontent.com/api-evangelist/university-of-pennsylvania/refs/heads/main/apis.yml

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/penn-courses"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

university-of-pennsylvania-accounts-user-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Penn Courses API Documentation [Accounts] User API
  version: ''
  description: '# Introduction

    Penn Courses (GitHub) is the umbrella

    categorization for Penn Labs

    products designed to help students navigate the course registration process.'
  x-logo:
    url: https://i.imgur.com/tVsRNxJ.png
    altText: Labs Logo
  contact:
    email: contact@pennlabs.org
servers:
- url: https://penncoursereview.com
  description: Penn Course Review
- url: https://penncourseplan.com
  description: Penn Course Plan
tags:
- name: '[Accounts] User'
  description: 'These routes allow interaction with the User object of a Penn Labs Accounts user.

    We do not document `/accounts/...` authentication routes here, as they are described

    by the Authentication section, and the

    Penn Labs Account Engine

    Notion page.'
paths:
  /accounts/me/:
    get:
      operationId: Retrieve User
      description: '(GET `/accounts/me/`)


        This view exposes the Penn Labs Accounts User object.


        User authentication required.'
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                properties:
                  username:
                    type: string
                    readOnly: true
                    description: Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.
                  first_name:
                    type: string
                    maxLength: 150
                  last_name:
                    type: string
                    maxLength: 150
                  profile:
                    type: object
                    properties:
                      email:
                        type:
                        - string
                        - 'null'
                        format: email
                        description: The email of the User. Defaults to null.
                        maxLength: 254
                      phone:
                        type:
                        - string
                        - 'null'
                        description: '

                          The phone number of the user. Defaults to null.

                          The phone number will be stored in the E164 format, but any form parseable by the

                          [phonenumbers library](https://pypi.org/project/phonenumbers/)

                          will be accepted and converted to E164 format automatically upon saving.

                          '
                        maxLength: 100
                      push_notifications:
                        type: boolean
                        description: '

                          Defaults to False, changed to True if the User enables mobile push notifications

                          for PCA, rather than text notifications.

                          '
                    description: The user profile object, storing collected info about the user.
          description: ''
        '403':
          description: Access denied (missing or improper authentication).
      tags:
      - '[Accounts] User'
      summary: Retrieve user
      x-summary-source: derived
    put:
      operationId: Update User
      description: '(PUT `/accounts/me/`)


        This view exposes the Penn Labs Accounts User object.


        User authentication required.'
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                username:
                  type: string
                  readOnly: true
                  description: Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.
                first_name:
                  type: string
                  maxLength: 150
                last_name:
                  type: string
                  maxLength: 150
                profile:
                  type: object
                  properties:
                    email:
                      type:
                      - string
                      - 'null'
                      format: email
                      description: The email of the User. Defaults to null.
                      maxLength: 254
                    phone:
                      type:
                      - string
                      - 'null'
                      description: '

                        The phone number of the user. Defaults to null.

                        The phone number will be stored in the E164 format, but any form parseable by the

                        [phonenumbers library](https://pypi.org/project/phonenumbers/)

                        will be accepted and converted to E164 format automatically upon saving.

                        '
                      maxLength: 100
                    push_notifications:
                      type: boolean
                      description: '

                        Defaults to False, changed to True if the User enables mobile push notifications

                        for PCA, rather than text notifications.

                        '
                  description: The user profile object, storing collected info about the user.
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                properties:
                  username:
                    type: string
                    readOnly: true
                    description: Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.
                  first_name:
                    type: string
                    maxLength: 150
                  last_name:
                    type: string
                    maxLength: 150
                  profile:
                    type: object
                    properties:
                      email:
                        type:
                        - string
                        - 'null'
                        format: email
                        description: The email of the User. Defaults to null.
                        maxLength: 254
                      phone:
                        type:
                        - string
                        - 'null'
                        description: '

                          The phone number of the user. Defaults to null.

                          The phone number will be stored in the E164 format, but any form parseable by the

                          [phonenumbers library](https://pypi.org/project/phonenumbers/)

                          will be accepted and converted to E164 format automatically upon saving.

                          '
                        maxLength: 100
                      push_notifications:
                        type: boolean
                        description: '

                          Defaults to False, changed to True if the User enables mobile push notifications

                          for PCA, rather than text notifications.

                          '
                    description: The user profile object, storing collected info about the user.
          description: ''
        '403':
          description: Access denied (missing or improper authentication).
      tags:
      - '[Accounts] User'
      summary: Update user
      x-summary-source: derived
    patch:
      operationId: Partial Update User
      description: '(PATCH `/accounts/me/`)


        This view exposes the Penn Labs Accounts User object.


        User authentication required.'
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                username:
                  type: string
                  readOnly: true
                  description: Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.
                first_name:
                  type: string
                  maxLength: 150
                last_name:
                  type: string
                  maxLength: 150
                profile:
                  type: object
                  properties:
                    email:
                      type:
                      - string
                      - 'null'
                      format: email
                      description: The email of the User. Defaults to null.
                      maxLength: 254
                    phone:
                      type:
                      - string
                      - 'null'
                      description: '

                        The phone number of the user. Defaults to null.

                        The phone number will be stored in the E164 format, but any form parseable by the

                        [phonenumbers library](https://pypi.org/project/phonenumbers/)

                        will be accepted and converted to E164 format automatically upon saving.

                        '
                      maxLength: 100
                    push_notifications:
                      type: boolean
                      description: '

                        Defaults to False, changed to True if the User enables mobile push notifications

                        for PCA, rather than text notifications.

                        '
                  description: The user profile object, storing collected info about the user.
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                properties:
                  username:
                    type: string
                    readOnly: true
                    description: Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.
                  first_name:
                    type: string
                    maxLength: 150
                  last_name:
                    type: string
                    maxLength: 150
                  profile:
                    type: object
                    properties:
                      email:
                        type:
                        - string
                        - 'null'
                        format: email
                        description: The email of the User. Defaults to null.
                        maxLength: 254
                      phone:
                        type:
                        - string
                        - 'null'
                        description: '

                          The phone number of the user. Defaults to null.

                          The phone number will be stored in the E164 format, but any form parseable by the

                          [phonenumbers library](https://pypi.org/project/phonenumbers/)

                          will be accepted and converted to E164 format automatically upon saving.

                          '
                        maxLength: 100
                      push_notifications:
                        type: boolean
                        description: '

                          Defaults to False, changed to True if the User enables mobile push notifications

                          for PCA, rather than text notifications.

                          '
                    description: The user profile object, storing collected info about the user.
          description: ''
        '403':
          description: Access denied (missing or improper authentication).
      tags:
      - '[Accounts] User'
      summary: Partial update user
      x-summary-source: derived
x-tagGroups:
- name: Penn Course Plan
  tags:
  - '[PCP] Course Recommendations'
  - '[PCP] Schedule'
  - '[PCP] Primary Schedule'
  - '[PCP] Calendar'
  - '[PCP] Break'
- name: Penn Course Alert
  tags:
  - '[PCA] Registration History'
  - '[PCA] Registration'
- name: Penn Course Review
  tags:
  - '[PCR] Course Reviews'
  - '[PCR] Autocomplete Dump'
  - '[PCR] Department Reviews'
  - '[PCR] Section-Specific Reviews'
  - '[PCR] Plots'
  - '[PCR] Instructor Reviews'
- name: Penn Courses (Base)
  tags:
  - '[PCx] NGSS Restrictions'
  - '[PCx] Attributes'
  - '[PCx] Status Updates'
  - '[PCx] Healths'
  - '[PCx] Friendship'
  - '[PCx] Course'
  - '[PCx] Section'
  - '[PCx] Pre-NGSS Requirements'
- name: Penn Labs Accounts
  tags:
  - '[Accounts] User'
- name: Other
  tags:
  - '[PDP] Docked Course'
  - '[PDP] Degree'
  - '[PDP] Onboard From Transcript'
  - '[PDP] Fulfillment'
  - '[PDP] Degree Plan Lists'
  - '[PDP] Satisfied Rule Lists'
  - '[PDP] Degree Plan Detail'