University of Illinois Urbana-Champaign Admin API

Clients administration applications APIs.

OpenAPI Specification

university-of-illinois-urbana-champaign-admin-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Rokwire Core Building Block Admin API
  description: Core Building Block API Documentation
  version: 1.62.0
servers:
- url: https://api.rokwire.illinois.edu/core
tags:
- name: Admin
  description: Clients administration applications APIs.
paths:
  /admin/auth/login:
    post:
      tags:
      - Admin
      summary: Login
      description: 'Login using credentials to retrieve access token, refresh token, and user data


        **Auth:** Requires API key

        '
      requestBody:
        description: 'User credential details and parameters

          '
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/_shared_req_Login'
            examples:
              email:
                summary: Email
                value:
                  auth_type: email
                  app_type_identifier: edu.illinois.rokwire
                  org_id: 0a2eff20-e2cd-11eb-af68-60f81db5ecc0
                  api_key: 95a463e3-2ce8-450b-ba75-d8506b874738
                  creds:
                    email: test@example.com
                    password: test12345
                  device:
                    type: mobile
                    device_id: '5555'
                    os: Android
              illinois_oidc:
                summary: Illinois OIDC
                value:
                  auth_type: illinois_oidc
                  app_type_identifier: edu.illinois.rokwire
                  org_id: 0a2eff20-e2cd-11eb-af68-60f81db5ecc0
                  api_key: 95a463e3-2ce8-450b-ba75-d8506b874738
                  creds: https://redirect.example.com?code=ai324uith8gSEefesEguorgwsf43
                  params:
                    redirect_uri: https://redirect.example.com
                    pkce_verifier: w4iuhfq0u43hfq38ghn3gnSFSFiqp3ugnpugnqiprgUGNPINfsdoirpgia
                  preferences:
                    key1: value1
                    key2: value2
                  profile:
                    address: address
                    address2: address2
                    po_box: po box
                    city: city
                    birth_year: 1990
                    country: county
                    email: email
                    first_name: first name
                    last_name: last name
                    phone: '+000000000000'
                    photo_url: photo url
                    state: state
                    zip_code: zip code
                  privacy:
                    public: false
                  device:
                    type: mobile
                    device_id: '5555'
                    os: Android
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/_shared_res_Login_Mfa'
                - $ref: '#/components/schemas/_shared_res_Login'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal error
  /admin/auth/mfa:
    post:
      tags:
      - Admin
      summary: MFA
      description: 'Verify multi-factor authentication credentials to complete login


        **Auth:** Requires API key

        '
      parameters:
      - name: state
        in: query
        description: Login state
        required: false
        style: form
        explode: false
        schema:
          type: string
      requestBody:
        description: 'MFA credentials and parameters

          '
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/_shared_req_Login_Mfa'
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/_shared_res_Login'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal error
  /admin/auth/refresh:
    post:
      tags:
      - Admin
      summary: Refresh
      description: 'Refresh access token using a refresh token


        **Auth:** Requires API key

        '
      requestBody:
        description: 'Refresh token

          '
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/_shared_req_Refresh'
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/_shared_res_Refresh'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal error
  /admin/auth/login-url:
    post:
      tags:
      - Admin
      summary: Get SSO login url
      description: 'Retrieve a pre-formatted SSO login URL


        **Auth:** Requires API key

        '
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/_shared_req_LoginUrl'
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/_shared_res_LoginUrl'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal error
  /admin/auth/verify-mfa:
    post:
      tags:
      - Admin
      summary: MFA
      description: 'Verify multi-factor authentication credentials to complete MFA registration


        **Auth:** Requires admin access token

        '
      requestBody:
        description: 'MFA credentials and parameters

          '
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/_shared_req_Mfa'
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal error
  /admin/auth/app-token:
    get:
      tags:
      - Admin
      summary: App token
      description: 'Retrieve an admin token for the specified application


        **Auth:** Requires admin access token

        '
      security:
      - bearerAuth: []
      parameters:
      - name: app_id
        in: query
        description: The application ID of the token to return
        required: true
        style: form
        explode: false
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminToken'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal error
  /admin/account:
    get:
      tags:
      - Admin
      summary: Get user account
      description: 'Get the user account


        **Auth:** Requires admin access token

        '
      security:
      - bearerAuth: []
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Account'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal error
  /admin/account/mfa:
    get:
      tags:
      - Admin
      summary: Get account MFA types
      description: 'Get MFA types set up for an account


        **Auth:** Requires admin access token

        '
      security:
      - bearerAuth: []
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/_shared_res_Mfa'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal error
    post:
      tags:
      - Admin
      summary: Enroll in MFA type
      description: 'Add MFA type to an account


        **Auth:** Requires user auth token

        '
      security:
      - bearerAuth: []
      parameters:
      - name: type
        in: query
        description: MFA type
        required: true
        style: form
        explode: false
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/_shared_res_Mfa'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal error
    delete:
      tags:
      - Admin
      summary: Remove MFA type
      description: 'Remove MFA type from an account


        **Auth:** Requires user auth token

        '
      security:
      - bearerAuth: []
      parameters:
      - name: type
        in: query
        description: MFA type
        required: true
        style: form
        explode: false
        schema:
          type: string
      responses:
        '200':
          description: Success
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal error
  /admin/account/username:
    put:
      tags:
      - Admin
      summary: Update account username
      description: 'Update the username associated with the user''s account


        **Auth:** Requires user access token

        '
      security:
      - bearerAuth: []
      requestBody:
        description: Username
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Username'
        required: true
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                type: string
                example: Success
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal error
  /admin/app-configs:
    post:
      tags:
      - Admin
      summary: Gets default admin app config
      description: 'Returns the default admin app config for the highest version that is equal to or less than the provided version


        **Auth:** Requires a valid API Key for access.

        '
      requestBody:
        description: 'App config query

          '
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/_shared_req_app-configs'
            example:
              version: 1.0.1
              app_type_identifier: edu.illinois.rokwire.admin.android
              api_key: ''
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationConfig'
        '400':
          description: Bad request.
        '401':
          description: Unauthorized
        '404':
          description: AppConfig not found
        '500':
          description: Internal error
  /admin/app-configs/organization:
    post:
      tags:
      - Admin
      summary: Gets organization-specific admin app configs
      description: 'Returns the admin app config for the highest version that is equal to or less than the provided version for the currently authenticated organization


        **Auth:** Requires admin auth token

        '
      security:
      - bearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/_shared_req_app-configs-org'
            example:
              version: 1.0.1
              app_type_identifier: edu.illinois.rokwire.admin.android
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationConfig'
        '400':
          description: Bad request.
        '401':
          description: Unauthorized
        '404':
          description: AppConfig not found
        '500':
          description: Internal error
  /admin/application/accounts:
    get:
      tags:
      - Admin
      summary: Finds application accounts
      description: 'Finds accounts for the specified application


        **Auth:** Requires admin access token with `get_accounts`, `update_accounts`, or `all_accounts` permission

        '
      security:
      - bearerAuth: []
      parameters:
      - name: limit
        in: query
        description: The maximum number of accounts to return
        required: false
        style: form
        explode: false
        schema:
          type: integer
      - name: offset
        in: query
        description: The index of the first account to return
        required: false
        style: form
        explode: false
        schema:
          type: integer
      - name: account-id
        in: query
        description: The account ID
        required: false
        style: form
        explode: false
        schema:
          type: string
      - name: firstname
        in: query
        description: The account profile first name
        required: false
        style: form
        explode: false
        schema:
          type: string
      - name: lastname
        in: query
        description: The account profile last name
        required: false
        style: form
        explode: false
        schema:
          type: string
      - name: auth-type
        in: query
        description: The auth type
        required: false
        style: form
        explode: false
        schema:
          type: string
      - name: auth-type-identifier
        in: query
        description: The authentication type identifier
        required: false
        style: form
        explode: false
        schema:
          type: string
      - name: has-permissions
        in: query
        description: Account has permissions (permissions, roles, or groups) filter
        required: false
        style: form
        explode: false
        schema:
          type: boolean
      - name: permissions
        in: query
        description: A comma-separated list of permission names
        required: false
        style: form
        explode: false
        schema:
          type: string
      - name: role-ids
        in: query
        description: A comma-separated list of role IDs
        required: false
        style: form
        explode: false
        schema:
          type: string
      - name: user-role
        in: query
        description: The user role
        required: false
        style: form
        explode: false
        schema:
          type: string
      - name: group-ids
        in: query
        description: A comma-separated list of group IDs
        required: false
        style: form
        explode: false
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PartialAccount'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal error
    post:
      tags:
      - Admin
      summary: Create admin accounts
      deprecated: true
      description: 'Create a new admin account


        **Auth:** Requires admin access token with `create_accounts` or `all_accounts` permission

        '
      security:
      - bearerAuth: []
      requestBody:
        description: 'User account details and parameters

          '
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/_shared_req_CreateAccount'
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PartialAccount'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal error
    put:
      tags:
      - Admin
      summary: Update admin account
      description: 'Update an existing admin account


        **Auth:** Requires admin access token with `update_accounts` or `all_accounts` permission

        '
      security:
      - bearerAuth: []
      requestBody:
        description: 'User account details and parameters

          '
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/_shared_req_UpdateAccount'
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PartialAccount'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal error
  /admin/v2/application/accounts:
    post:
      tags:
      - Admin
      summary: Create accounts
      description: 'Create accounts


        **Auth:** Requires admin access token with `create_accounts` or `all_accounts` permission

        '
      security:
      - bearerAuth: []
      requestBody:
        description: 'User account details and parameters

          '
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/_shared_req_CreateAccount'
        required: true
      responses:
        '200':
          description: Success
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal error
  /admin/application/accounts/{id}/devices:
    get:
      tags:
      - Admin
      summary: Finds application account devices
      description: 'Finds devices for the specified account and application


        **Auth:** Requires admin access token with `get_account-devices` permission

        '
      security:
      - bearerAuth: []
      parameters:
      - name: id
        in: path
        description: The account ID
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Device'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal error
  /admin/application/accounts/{account_id}/login-sessions/{session_id}:
    delete:
      tags:
      - Admin
      summary: Delete an account session
      description: 'Delete an account session for specific application


        **Auth:** Requires admin access token with `delete_login-sessions` or `all_login-sessions` permission

        '
      security:
      - bearerAuth: []
      parameters:
      - name: session_id
        in: path
        description: The sessionID of the login session to delete
        required: true
        explode: false
        schema:
          type: string
      - name: account_id
        in: path
        description: The accountID of the login session to delete
        required: true
        explode: false
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                type: string
                example: Success
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal error
  /admin/application/accounts/{id}/permissions:
    put:
      tags:
      - Admin
      summary: Grant account permissions
      description: 'Grant account permissions


        **Auth:** Requires admin access token with `update_account-permissions`, `update_accounts`, or `all_accounts` permission

        '
      security:
      - bearerAuth: []
      parameters:
      - name: id
        in: path
        description: The account ID
        required: true
        style: simple
        explode: false
        schema:
          type: string
      requestBody:
        description: Permissions
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/_admin_req_grant-permissions'
        required: true
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                type: string
                example: Success
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal error
    delete:
      tags:
      - Admin
      summary: Delete permissions from account
      description: 'Deletes an existing permissions from account


        **Auth:** Requires admin access token with `update_account-permissions`, `update_accounts`, or `all_accounts` permission

        '
      security:
      - bearerAuth: []
      parameters:
      - name: id
        in: path
        description: The account ID
        required: true
        style: simple
        explode: false
        schema:
          type: string
      requestBody:
        description: Permissions
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/_admin_req_revoke-permissions'
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                type: string
                example: Success
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal error
  /admin/application/accounts/{id}/roles:
    put:
      tags:
      - Admin
      summary: Grant account roles
      description: 'Grant account roles


        **Auth:** Requires admin access token with `update_account-auth-roles`, `update_accounts`, or `all_accounts` permission

        '
      security:
      - bearerAuth: []
      parameters:
      - name: id
        in: path
        description: The account ID
        required: true
        style: simple
        explode: false
        schema:
          type: string
      requestBody:
        description: Roles
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/_admin_req_grant-roles-to-account'
        required: true
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                type: string
                example: Success
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal error
    delete:
      tags:
      - Admin
      summary: Delete roles from account
      description: 'Deletes an existing roles from account


        **Auth:** Requires admin access token with `update_account-auth-roles`, `update_accounts`, or `all_accounts` permission

        '
      security:
      - bearerAuth: []
      parameters:
      - name: id
        in: path
        description: The account ID
        required: true
        style: simple
        explode: false
        schema:
          type: string
      requestBody:
        description: Roles
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/_admin_req_revoke-roles-from-account'
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                type: string
                example: Success
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal error
  /admin/application/accounts/{id}/system-configs:
    get:
      tags:
      - Admin
      summary: Get system configs
      description: 'Returns account system configs


        **Auth:** Requires admin access token with `get_account-system-configs` or `all_account-system-configs` permission

        '
      security:
      - bearerAuth: []
      parameters:
      - name: id
        in: path
        description: The account ID
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                nullable: true
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal error
    put:
      tags:
      - Admin
      summary: Update account system configs
      description: 'Updates account system configs


        **Auth:** Requires admin access token with `update_account-system-configs` or `all_account-system-configs` permission

        '
      security:
      - bearerAuth: []
      parameters:
      - name: id
        in: path
        description: The account ID
        required: true
        style: simple
        explode: false
        schema:
          type: string
      - name: create-anonymous
        in: query
        description: Create anonymous account if account with ID cannot be found. Default is `false`
        required: false
        style: form
        explode: false
        schema:
          type: boolean
      requestBody:
        description: Account system configs (will be merged with existing configs)
        content:
          application/json:
            schema:
              type: object
        required: true
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                type: string
                example: Success
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal error
  /admin/application/accounts/{id}/verified:
    put:
      tags:
      - Admin
      summary: Update account verified flag
      description: 'Update the verified flag associated with the specified user''s account


        **Auth:** Requires admin access token with `update_account-verified` permission

        '
      security:
      - bearerAuth: []
      parameters:
      - name: id
        in: path
        description: The account ID
        required: true
        style: simple
        explode: false
        schema:
          type: string
      requestBody:
        description: Verified
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/_admin_req_verified'
        required: true
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                type: string
                example: Success
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal error
  /admin/application/configs:
    get:
      tags:
      - Admin
      summary: Reads app configs
      description: 'If version is provided, the app config for the highest version that is equal to or less than this value will be returned as the only item in the list.

        Otherwise it will return a list of all app config versions for the given app_type_id. If org_id is provided, the configs for that organization will

        be returned, otherwise the default configs will be returned.


        **Auth:** Requires admin access token with `get_app-configs`, `update_app-configs`, `delete_app-configs`, or `all_app-configs` permission

        '
      security:
      - bearerAuth: []
      parameters:
      - name: app_type_id
        in: query
        required: true
        style: form
        explode: false
        schema:
          type: string
      - name: org_id
        in: query
        style: form
        explode: false
        schema:
          type: string
      - name: version
        in: query
        style: form
        explode: false
        schema:
          type: string
      responses:
        '200':
          description: successfully read app configuration
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApplicationConfig'
        '400':
          description: Bad request.
        '401':
          description: Unauthorized
        '500':
          description: Internal error
    post:
      tags:
      - Admin
      summary: Creates app configs
      description: 'Creates a new app config


        **Auth:** Requires admin access token with `update_app-configs` or `all_app-configs` permission

        '
      security:
      - bearerAuth: []
      requestBody:
        description: New app configs
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplicationConfig'
            example:
              version: 1.0.1
              app_type_id: 7e037f2d-b423-4b4d-a1bc-18507f81c6d1
              org_id: 0a2eff20-e2cd-11eb-af68-60f81db5ecc0
              data: {}
        required: true
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                type: string
                example: Success
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal error
  /admin/application/configs/{id}:
    get:
      tags:
      - Admin
      summary: Reads app configs by ID
      description: 'Get app configs for the provided ID


        **Auth:** Requires admin access token with `get_app-configs`, `update_app-configs`, `delete_app-configs`, or `all_app-configs` permission

        '
      security:
      - bearerAuth: []
      parameters:
      - name: id
        in: path
        description: app config id to read
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationConfig'
        '400':
          description: Bad request.
        '401':
          description: Unauthorized
        '500':
          description: Internal error
    put:
      tags:
      - Admin
      summary: Updates app config by ID
      description: 'Updates app config with the provided ID


        **Auth:** Requires admin access token with `update_app-configs` or `all_app-configs` permission

        '
      security:
      - bearerAuth: []
      parameters:
      - name: id
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      requestBody:
        description: updated app config
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplicationConfig'
            example:
              version: 1.0.1
              app_type_id: 7e037f2d-b423-4b4d-a1bc-18507f81c6d1
              org_id: 0a2eff20-e2cd-11eb-af68-60f81db5ecc0
              data:
                url: rokmetro.dev
        required: true
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                type: string
                e

# --- truncated at 32 KB (107 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/university-of-illinois-urbana-champaign/refs/heads/main/openapi/university-of-illinois-urbana-champaign-admin-api-openapi.yml