> ## Documentation Index
> Fetch the complete documentation index at: https://api-docs.codecombat.com/llms.txt
> Use this file to discover all available pages before exploring further.

> If the user already has access to the “Classroom” version up to a certain time, this shortens/revokes his/her access. If the ends is less than or equal to the current time, it revokes the enrollment and sets the end date to be the current time, else it just shortens the enrollment.

# Shorten User License

```
url = `https://codecombat.com/api/users/${userID}/shorten-license`
json = { ends: new Date().toISOString() }
request.put({ url, json, auth }, (err, res) => {
  console.log(res.body.license.active) // false
})
```


## OpenAPI

````yaml PUT /users/{handle}/shorten-license
openapi: 3.0.1
info:
  title: CodeCombat API
  version: 0.0.1
servers:
  - url: https://codecombat.com/api
    description: default
security: []
paths:
  /users/{handle}/shorten-license:
    put:
      tags:
        - Users
      summary: Shorten User License
      description: >
        If the user already has access to the "Classroom" version up to a
        certain time, this shortens/revokes his/her access. If the ends is less
        than or equal to the current time, it revokes the enrollment and sets
        the end date to be the current time, else it just shortens the
        enrollment.
      operationId: users_shortenLicense
      parameters:
        - name: handle
          in: path
          description: The document's `_id` or `slug`.
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                ends:
                  $ref: '#/components/schemas/datetimeString'
              required:
                - ends
      responses:
        '200':
          description: The affected user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserResponse'
      security:
        - BasicAuth: []
components:
  schemas:
    datetimeString:
      title: datetimeString
      type: string
    UserResponse:
      title: UserResponse
      type: object
      description: Subset of properties listed here
      properties:
        _id:
          $ref: '#/components/schemas/objectIdString'
          nullable: true
        email:
          type: string
          nullable: true
        name:
          type: string
          nullable: true
        slug:
          type: string
          nullable: true
        role:
          $ref: '#/components/schemas/roleString'
          nullable: true
        stats:
          $ref: '#/components/schemas/UserResponseStats'
          nullable: true
        oAuthIdentities:
          type: array
          items:
            $ref: '#/components/schemas/UserResponseOAuthIdentitiesItem'
          nullable: true
        subscription:
          $ref: '#/components/schemas/UserResponseSubscription'
          nullable: true
        license:
          $ref: '#/components/schemas/UserResponseLicense'
          nullable: true
    objectIdString:
      title: objectIdString
      type: string
    roleString:
      title: roleString
      type: string
      description: Usually either 'teacher' or 'student'
    UserResponseStats:
      title: UserResponseStats
      type: object
      properties:
        gamesCompleted:
          type: number
          format: double
          nullable: true
        concepts:
          type: object
          additionalProperties:
            type: number
            format: double
          nullable: true
        playTime:
          type: number
          format: double
          nullable: true
          description: Included only when specifically requested on the endpoint
    UserResponseOAuthIdentitiesItem:
      title: UserResponseOAuthIdentitiesItem
      type: object
      properties:
        provider:
          type: string
          nullable: true
        id:
          type: string
          nullable: true
    UserResponseSubscription:
      title: UserResponseSubscription
      type: object
      properties:
        ends:
          $ref: '#/components/schemas/datetimeString'
          nullable: true
        active:
          type: boolean
          nullable: true
    UserResponseLicense:
      title: UserResponseLicense
      type: object
      properties:
        ends:
          $ref: '#/components/schemas/datetimeString'
          nullable: true
        active:
          type: boolean
          nullable: true
  securitySchemes:
    BasicAuth:
      type: http
      scheme: basic

````