> ## 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.

# Models

<ParamField body="roleString" type="string">
  Usually either `teacher` or `student`
</ParamField>

<ParamField body="datetimeString" type="string">
  *pattern: `/^\d{4}-\d{2}-\d{2}T\d{2}\:\d{2}\:\d{2}\.\d{3}Z$/`*
</ParamField>

<ParamField body="objectIdString" type="string">
  \_pattern: `/^[0-9a-f]{24}$/_`
</ParamField>

<ResponseField name="UserResponse" type="">
  <Expandable title="Subset of properties listed here">
    <ResponseField name="_id" type="string">
      **objectIdString** *pattern: `/^[0-9a-f]{24}$/`*
    </ResponseField>

    <ResponseField name="email" type="string" />

    <ResponseField name="name" type="string" />

    <ResponseField name="slug" type="string" />

    <ResponseField name="role" type="string">
      **roleString** Usually either ‘teacher’ or ‘student’
    </ResponseField>

    <ResponseField name="stats">
      <Expandable title="Properties">
        <ResponseField name="gamesCompleted" type="number" />

        <ResponseField name="concepts" type="number" />

        <ResponseField name="playTime" type="number">
          Included only when specifically requested on the endpoint
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="oAuthIdentities">
      <Expandable title="Properties">
        <ResponseField name="provider" type="string" />

        <ResponseField name="id" type="string" />
      </Expandable>
    </ResponseField>

    <ResponseField name="subscription">
      <Expandable title="Properties">
        <ResponseField name="ends" type="string">
          **datetimeString** *pattern: `/^\d{4}-\d{2}-\d{2}T\d{2}\:\d{2}\:\d{2}\.\d{3}Z$/`*
        </ResponseField>

        <ResponseField name="active" type="boolean" />
      </Expandable>
    </ResponseField>

    <ResponseField name="license">
      <Expandable title="Properties">
        <ResponseField name="ends" type="string">
          **datetimeString** *pattern: `/^\d{4}-\d{2}-\d{2}T\d{2}\:\d{2}\:\d{2}\.\d{3}Z$/`*
        </ResponseField>

        <ResponseField name="active" type="boolean" />
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="ClassroomResponse">
  <Expandable title="Subset of properties listed here">
    <ResponseField name="_id" type="string">
      **objectIdString** *pattern: `/^[0-9a-f]{24}$/`*
    </ResponseField>

    <ResponseField name="name" type="string" />

    <ResponseField name="members" type="string">
      **objectIdString** *pattern: `/^[0-9a-f]{24}$/]`*
    </ResponseField>

    <ResponseField name="ownerID" type="string">
      **objectIdString** *pattern: `/^[0-9a-f]{24}$/`*
    </ResponseField>

    <ResponseField name="description" type="string" />

    <ResponseField name="courses">
      **objectIdString** *pattern: `/^[0-9a-f]{24}$/`*

      <Expandable title="Properties">
        <ResponseField name="_id" type="string" />

        <ResponseField name="levels" type="string" />

        <ResponseField name="enrolled" type="string" />

        <ResponseField name="instance_id" type="string" />
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="ClassroomResponseWithCode">
  <Expandable title="Subset of properties listed here">
    <ResponseField name="_id" type="string">
      **objectIdString** *pattern: `/^[0-9a-f]{24}$/`*
    </ResponseField>

    <ResponseField name="name" type="string" />

    <ResponseField name="members" type="string">
      **objectIdString** *pattern: `/^[0-9a-f]{24}$/]`*
    </ResponseField>

    <ResponseField name="ownerID" type="string">
      **objectIdString** *pattern: `/^[0-9a-f]{24}$/`*
    </ResponseField>

    <ResponseField name="description" type="string" />

    <ResponseField name="code" type="string" />

    <ResponseField name="codeCamel" type="string" />

    <ResponseField name="courses">
      **objectIdString** *pattern: `/^[0-9a-f]{24}$/`*

      <Expandable title="Properties">
        <ResponseField name="_id" type="string" />

        <ResponseField name="levels" type="string" />

        <ResponseField name="enrolled" type="string" />

        <ResponseField name="instance_id" type="string" />
      </Expandable>
    </ResponseField>

    <ResponseField name="clanId" type="string">
      **objectIdString** *pattern: `/^[0-9a-f]{24}$/`*
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="PlaytimeStatsResponse">
  <Expandable title="Subset of properties listed here">
    <ResponseField name="playTime" type="number">
      Total play time in seconds
    </ResponseField>

    <ResponseField name="gamesPlayed" type="number">
      Number of levels played
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="LicenseStatsResponse">
  <Expandable title="Subset of properties listed here">
    <ResponseField name="licenseDaysGranted" type="number">
      Total number of license days granted
    </ResponseField>

    <ResponseField name="licenseDaysUsed" type="number">
      Number of license days used
    </ResponseField>

    <ResponseField name="licenseDaysRemaining" type="number">
      Number of license days remaining
    </ResponseField>

    <ResponseField name="activeLicenses" type="number">
      Number of active/valid licenses
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="LevelSessionResponse">
  <Expandable title="Subset of properties listed here">
    <ResponseField name="state" type="boolean">
      **complete**
    </ResponseField>

    <ResponseField name="level" type="string">
      *original*\*\* The id for the level.
    </ResponseField>

    <ResponseField name="levelID" type="string">
      Level slug like wakka-maul
    </ResponseField>

    <ResponseField name="creator" type="string">
      **objectIdString** *pattern: `/^[0-9a-f]{24}$/`*
    </ResponseField>

    <ResponseField name="playtime" type="integer">
      Time played in seconds.
    </ResponseField>

    <ResponseField name="changed" type="string">
      **datetimeString** \_pattern: *`/^\d{4}-\d{2}-\d{2}T\d{2}\:\d{2}\:\d{2}\.\d{3}Z$/`*
    </ResponseField>

    <ResponseField name="created" type="string">
      **datetimeString** \_pattern: *`/^\d{4}-\d{2}-\d{2}T\d{2}\:\d{2}\:\d{2}\.\d{3}Z$/`*
    </ResponseField>

    <ResponseField name="dateFirstCompleted" type="string">
      **datetimeString** \_pattern: *`/^\d{4}-\d{2}-\d{2}T\d{2}\:\d{2}\:\d{2}\.\d{3}Z$/`*
    </ResponseField>

    <ResponseField name="submitted" type="boolean">
      For arenas. Whether or not the level has been added to the ladder.
    </ResponseField>

    <ResponseField name="published" type="boolean">
      For shareable projects. Whether or not the project has been shared with classmates.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="ClanResponse">
  <Expandable title="Subset of properties listed here">
    <ResponseField name="_id" type="string">
      **objectIdString** *pattern: `/^[0-9a-f]{24}$/`*
    </ResponseField>

    <ResponseField name="name" type="string" />

    <ResponseField name="displayName" type="string" />

    <ResponseField name="members" type="string">
      **objectIdString** *pattern: `/^[0-9a-f]{24}$/`*
    </ResponseField>

    <ResponseField name="ownerID" type="string">
      **objectIdString** *pattern: `/^[0-9a-f]{24}$/`*
    </ResponseField>

    <ResponseField name="description" type="string" />

    <ResponseField name="type" type="string" />

    <ResponseField name="kind" type="string" />

    <ResponseField name="metadata" />
  </Expandable>
</ResponseField>
