University of Illinois Urbana-Champaign BBs API

APIs consumed by the platform building blocks.

OpenAPI Specification

university-of-illinois-urbana-champaign-bbs-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Rokwire Core Building Block Admin BBs API
  description: Core Building Block API Documentation
  version: 1.62.0
servers:
- url: https://api.rokwire.illinois.edu/core
tags:
- name: BBs
  description: APIs consumed by the platform building blocks.
paths:
  /bbs/test:
    get:
      tags:
      - BBs
      summary: Test API..
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                type: string
                example: Echooo
  /bbs/service-regs:
    get:
      tags:
      - BBs
      summary: Get service registrations
      description: 'Returns service registration records

        '
      parameters:
      - name: ids
        in: query
        description: A comma-separated list of service IDs to return registrations for
        required: true
        style: form
        explode: false
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AuthServiceReg'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal error
  /bbs/service-account/{id}:
    post:
      tags:
      - BBs
      summary: Get service account params
      description: 'Returns service account parameters

        '
      parameters:
      - name: id
        in: path
        description: ID of the service account
        required: true
        style: simple
        explode: false
        schema:
          type: string
      requestBody:
        description: 'Service account credentials

          '
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/_services_req_service-accounts_params'
            examples:
              static_token:
                summary: Static token
                value:
                  auth_type: static_token
                  creds:
                    token: account_token
              signature:
                summary: Signature
                value:
                  auth_type: signature
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AppOrgPair'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal error
  /bbs/access-token:
    post:
      tags:
      - BBs
      summary: Get service account access token
      description: 'Returns a new service account access token

        '
      requestBody:
        description: 'Service account credentials

          '
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/_services_req_service-accounts_access-token'
            examples:
              static_token:
                summary: Static token
                value:
                  account_id: service_account_id
                  app_id: '9766'
                  org_id: 0a2eff20-e2cd-11eb-af68-60f81db5ecc0
                  auth_type: static_token
                  creds:
                    token: account_token
              signature:
                summary: Signature
                value:
                  account_id: service_account_id
                  app_id: '9766'
                  org_id: 0a2eff20-e2cd-11eb-af68-60f81db5ecc0
                  auth_type: signature
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/_shared_res_RokwireToken'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal error
  /bbs/access-tokens:
    post:
      tags:
      - BBs
      summary: Get all service account access tokens
      description: 'Returns a new service account access token for all authorized app org pairs

        '
      requestBody:
        description: 'Service account credentials

          '
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/_services_req_service-accounts_access-tokens'
            examples:
              static_token:
                summary: Static token
                value:
                  account_id: service_account_id
                  auth_type: static_token
                  creds:
                    token: account_token
              signature:
                summary: Signature
                value:
                  account_id: service_account_id
                  auth_type: signature
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/_services_res_service-accounts_access-tokens'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal error
  /bbs/deleted-memberships:
    get:
      tags:
      - BBs
      summary: Get deleted accounts
      description: 'Returns a list of deleted account IDs


        **Auth:** Requires auth token with permission to get deleted accounts

        '
      security:
      - bearerAuth: []
      parameters:
      - name: service_id
        in: query
        description: The ID of the service making the request
        required: true
        style: form
        explode: false
        schema:
          type: string
      - name: start_time
        in: query
        description: The start time for filtering results, specified as a Unix timestamp in seconds
        required: false
        style: form
        explode: false
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DeletedAppOrgMembership'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal error
  /bbs/accounts:
    post:
      tags:
      - BBs
      summary: Finds user accounts
      description: 'Finds accounts for the given app_id and org_id (query or token)


        **Auth:** Requires service access token with `get_accounts` or `all_accounts` permission

        '
      security:
      - bearerAuth: []
      parameters:
      - name: app_id
        in: query
        description: The application ID to use to filter accounts
        required: false
        style: form
        explode: false
        schema:
          type: string
      - name: org_id
        in: query
        description: The organization ID to use to filter accounts
        required: false
        style: form
        explode: false
        schema:
          type: string
      - 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
      requestBody:
        description: 'Service account credentials

          '
        content:
          application/json:
            schema:
              type: object
            examples:
              single_value:
                summary: Multiple single-value search parameters
                value:
                  profile.first_name: Example
                  preferences.privacy_level: 4
                  external_ids.uin: '123456789'
              multiple_value:
                summary: Some single-value, some multi-value search parameters
                value:
                  profile.first_name: Example
                  preferences.privacy_level:
                  - 3
                  - 4
                  - 5
                  external_ids.uin: '123456789'
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '500':
          description: Internal error
  /bbs/accounts/count:
    post:
      tags:
      - BBs
      summary: Finds the count of user accounts
      description: 'Finds the count of accounts for the given app_id and org_id (query or token)


        **Auth:** Requires service access token with `get_accounts_count` or `get_accounts_count_limited` permission

        '
      security:
      - bearerAuth: []
      parameters:
      - name: app_id
        in: query
        description: The application ID to use to filter accounts
        required: false
        style: form
        explode: false
        schema:
          type: string
      - name: org_id
        in: query
        description: The organization ID to use to filter accounts
        required: false
        style: form
        explode: false
        schema:
          type: string
      requestBody:
        description: 'Service account credentials

          '
        content:
          application/json:
            schema:
              type: object
            examples:
              single_value:
                summary: Multiple single-value search parameters
                value:
                  profile.first_name: Example
                  preferences.privacy_level: 4
                  external_ids.uin: '123456789'
              multiple_value:
                summary: Some single-value, some multi-value search parameters
                value:
                  profile.first_name: Example
                  preferences.privacy_level:
                  - 3
                  - 4
                  - 5
                  external_ids.uin: '123456789'
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: integer
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '500':
          description: Internal error
  /bbs/accounts/ferpa:
    get:
      tags:
      - BBs
      summary: Get the account ids with FERPA filed true
      description: 'Get the account ids with FERPA filed true

        '
      security:
      - bearerAuth: []
      parameters:
      - name: ids
        in: query
        description: A comma-separated list of ids
        required: false
        style: form
        explode: false
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal error
  /api/bbs/examples/{id}:
    get:
      tags:
      - BBs
      summary: Gets example
      description: 'Gets example record


        **Auth:** Requires valid first-party service account token with `get_examples` permission

        '
      security:
      - bearerAuth: []
      parameters:
      - name: id
        in: path
        description: ID of example to retrieve
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Example'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal error
  /api/bbs/appointments/units:
    get:
      tags:
      - BBs
      summary: Gets the list of units (calendars) for a provider id
      description: "Gets the list of units (calendars) for a provider id\n\n**Auth:** Requires valid first-party service account token with `get_external_appointments` permission \n Requires the External-Authorization header containing the oidc access token from the campus provider\n"
      security:
      - bearerAuth: []
      parameters:
      - name: external_id
        in: query
        description: External system id of person making the request
        required: true
        style: form
        explode: false
        schema:
          type: string
      - name: provider_id
        in: query
        description: Rokwire provider id of the organization tracking/providing appointment data
        required: true
        style: form
        explode: false
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppointmentUnit'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal error
  /api/bbs/appointments/people:
    get:
      tags:
      - BBs
      summary: Gets People with Calendars
      description: "Gets a list of people with calendars inside of a unit\n\n**Auth:** Requires valid first-party service account token with `get_external_appointments` permission\n Requires the External-Authorization header containing the oidc access token from the campus provider\n"
      security:
      - bearerAuth: []
      parameters:
      - name: external_id
        in: query
        description: External system id of person making the request
        required: true
        style: form
        explode: false
        schema:
          type: string
      - name: provider_id
        in: query
        description: Rokwire provider id of the organization tracking/providing appointment data
        required: true
        style: form
        explode: false
        schema:
          type: string
      - name: unit_id
        in: query
        description: External id identifying the unit the calendar entries belong to
        required: true
        style: form
        explode: false
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppointmentPerson'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal error
  /api/bbs/appointments/slots:
    get:
      tags:
      - BBs
      summary: Gets available time slots on a calendar
      description: 'Gets a list of available time slots between two dates on a unit calendar


        **Auth:** Requires valid first-party service account token with `get_external_appointments` permission

        Requires the External-Authorization header containing the oidc access token from the campus provider

        '
      security:
      - bearerAuth: []
      parameters:
      - name: external_id
        in: query
        description: External system id of person making the request
        required: true
        style: form
        explode: false
        schema:
          type: string
      - name: provider_id
        in: query
        description: Rokwire provider id of the organization tracking/providing appointment data
        required: true
        style: form
        explode: false
        schema:
          type: string
      - name: unit_id
        in: query
        description: External id identifying the unit the calendar entries belong to
        required: true
        style: form
        explode: false
        schema:
          type: string
      - name: person_id
        in: query
        description: External id identifying the advisor the calendar entry belongs to
        required: true
        style: form
        explode: false
        schema:
          type: string
      - name: start_time
        in: query
        description: The first date to look for available slots (yyyy-mm-dd). Required if end_time is provided.
        required: false
        style: form
        explode: false
        schema:
          type: string
      - name: end_time
        in: query
        description: The last date to look for available slots (yyyy-mm-dd) Required if start_time is provided
        required: false
        style: form
        explode: false
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TimeSlot'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal error
  /api/bbs/appointments/questions:
    get:
      tags:
      - BBs
      summary: Gets the questions to ask when making an appointment
      description: 'Gets a list of the questions to ask when a user requests an appointment for a particular time slot.


        **Auth:** Requires valid first-party service account token with `get_external_appointments` permission

        Requires the External-Authorization header containing the oidc access token from the campus provider

        '
      security:
      - bearerAuth: []
      parameters:
      - name: external_id
        in: query
        description: External system id of person making the request
        required: true
        style: form
        explode: false
        schema:
          type: string
      - name: provider_id
        in: query
        description: Rokwire provider id of the organization tracking/providing appointment data
        required: true
        style: form
        explode: false
        schema:
          type: string
      - name: unit_id
        in: query
        description: External id identifying the unit the calendar entries belong to
        required: true
        style: form
        explode: false
        schema:
          type: string
      - name: person_id
        in: query
        description: External id identifying the advisor the calendar entry belongs to
        required: true
        style: form
        explode: false
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Question'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal error
  /api/bbs/appointments/qands:
    get:
      tags:
      - BBs
      summary: Gets available time slots on a calendar
      description: 'Gets a list of available time slots between two dates on a unit calendar


        **Auth:** Requires valid first-party service account token with `get_external_appointments` permission

        Requires the External-Authorization header containing the oidc access token from the campus provider

        '
      security:
      - bearerAuth: []
      parameters:
      - name: external_id
        in: query
        description: External system id of person making the request
        required: true
        style: form
        explode: false
        schema:
          type: string
      - name: provider_id
        in: query
        description: Rokwire provider id of the organization tracking/providing appointment data
        required: true
        style: form
        explode: false
        schema:
          type: string
      - name: unit_id
        in: query
        description: External id identifying the unit the calendar entries belong to
        required: true
        style: form
        explode: false
        schema:
          type: string
      - name: person_id
        in: query
        description: External id identifying the advisor the calendar entry belongs to
        required: true
        style: form
        explode: false
        schema:
          type: string
      - name: start_time
        in: query
        description: The first date to look for available slots (yyyy-mm-dd). Required if end_time is provided.
        required: false
        style: form
        explode: false
        schema:
          type: string
      - name: end_time
        in: query
        description: The last date to look for available slots (yyyy-mm-dd) Required if start_time is provided
        required: false
        style: form
        explode: false
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppointmentOptions'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal error
  /api/bbs/appointments/:
    post:
      tags:
      - BBs
      summary: Creates an appointment in the specified provider system and returns the appointment data to the client
      description: "Posts an appointment request to the specified provider calendar. Returns the appointment data back to the client. \n\n**Auth:** Requires valid first-party service account token with `update_external_appointments` permission\nRequires the External-Authorization header containing the oidc access token from the campus provider\n"
      security:
      - bearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AppointmentPost'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BuildingBlockAppointment'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal error
    put:
      tags:
      - BBs
      summary: updates an appointment in the specified provider system and returns the appointment data to the client
      description: 'Updates an appointment in the specified provider system and returns the appointment data to the clients.

        For an upate, the source_id field in the request body is required.


        **Auth:** Requires valid first-party service account token with `update_external_appointments` permission

        Requires the External-Authorization header containing the oidc access token from the campus provider

        '
      security:
      - bearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AppointmentPost'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BuildingBlockAppointment'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal error
  /api/bbs/appointments/{id}:
    delete:
      tags:
      - BBs
      summary: Deletes an appointment in the specified provider system.
      description: 'Deletes an appointment request in the specified provider calendar.


        **Auth:** Requires valid first-party service account token with `update_external_appointments` permission

        Requires the External-Authorization header containing the oidc access token from the campus provider

        '
      security:
      - bearerAuth: []
      parameters:
      - name: id
        in: path
        description: source id of the appointment
        required: true
        style: simple
        explode: false
        schema:
          type: string
      - name: external_id
        in: query
        description: Users UIN
        required: true
        style: form
        explode: false
        schema:
          type: string
      - name: provider_id
        in: query
        description: Rokwire provider id of the organization tracking/providing appointment data
        required: true
        style: form
        explode: false
        schema:
          type: string
      responses:
        '200':
          description: Success
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal error
  /api/bbs/events:
    get:
      tags:
      - BBs
      summary: Gets all legacy events
      description: "Gets all legacy events \n"
      security:
      - bearerAuth: []
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LegacyEvent'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal error
components:
  schemas:
    AppOrgPair:
      required:
      - app_id
      - org_id
      type: object
      properties:
        app_id:
          type: string
        org_id:
          type: string
    ExternalUserID:
      type: object
      required:
      - uin
      properties:
        uin:
          type: string
          readOnly: true
    _services_req_service-accounts_access-tokens:
      required:
      - account_id
      - auth_type
      type: object
      properties:
        account_id:
          type: string
        auth_type:
          type: string
          enum:
          - static_token
          - signature
        creds:
          $ref: '#/components/schemas/_services_service-accounts_CredsStaticToken'
    _services_req_service-accounts_params:
      required:
      - auth_type
      type: object
      properties:
        auth_type:
          type: string
          enum:
          - static_token
          - signature
        creds:
          $ref: '#/components/schemas/_services_service-accounts_CredsStaticToken'
    AppointmentHost:
      type: object
      required:
      - first_name
      - last_name
      properties:
        first_name:
          type: string
          readOnly: true
        last_name:
          type: string
          readOnly: true
    Example:
      type: object
      required:
      - id
      - app_id
      - org_id
      - data
      - date_created
      properties:
        id:
          type: string
          readOnly: true
        org_id:
          type: string
          readOnly: true
        app_id:
          type: string
          readOnly: true
        data:
          type: string
        date_created:
          type: string
          readOnly: true
        date_updated:
          type: string
          nullable: true
          readOnly: true
    TimeSlot:
      type: object
      required:
      - id
      - provider_id
      - unit_id
      - person_id
      - start_time
      - end_time
      - capacity
      - filled
      - details
      properties:
        id:
          type: integer
          readOnly: true
        provider_id:
          type: integer
          readOnly: true
        unit_id:
          type: integer
          readOnly: true
        person_id:
          type: integer
        start_time:
          type: string
        end_time:
          type: string
        capacity:
          type: integer
        filled:
          type: integer
        details:
          type: object
    _services_res_service-accounts_access-tokens:
      required:
      - app_id
      - org_id
      - token
      type: object
      properties:
        app_id:
          type: string
        org_id:
          type: string
        token:
          $ref: '#/components/schemas/_shared_res_RokwireToken'
    BuildingBlockAppointment:
      type: object
      required:
      - provider_id
      - unit_id
      - person_id
      - type
      - start_time
      - end_time
      - user_external_ids
      - source_id
      - host
      properties:
        provider_id:
          type: string
          readOnly: true
        unit_id:
          type: string
          readOnly: true
        person_id:
          type: string
          readOnly: true
        type:
          type: string
          readOnly: true
        start_time:
          type: string
          readOnly: true
        end_time:
          type: string
          readOnly: true
        user_external_ids:
          $ref: '#/components/schemas/ExternalUserID'
          readOnly: true
        source_id:
          type: string
          readOnly: true
        host:
          $ref: '#/components/schemas/AppointmentHost'
    _services_req_service-accounts_access-token:
      required:
      - account_id
      - app_id
      - org_id
      - auth_type
      type: object
      properties:
        account_id:
          type: string
        app_id:
          type: string
        org_id:
          type: string
        auth_type:
          type: string
          enum:
          - static_token
          - signature
        creds:
          $ref: '#/components/schemas/_services_service-accounts_CredsStaticToken'
    AppointmentUnit:
      type: object
      required:
      - id
      - provider_id
      - name
      - location
      - hours_of_operation
      - details
      - next_available
      - image_url
      properties:
        id:
          type: integer
          readOnly: true
        provider_id:
          type: integer
          readOnly: true
        name:
          type: string
          readOnly: true
        location:
          type: string
        hours_of_operation:
          type: string
        details:
          type: string
        next_available:
          type: string
        image_url:
          type: string
    AppointmentPost:
      type: object
      required:
      - provider_id
      - unit_id
      - person_id
      - type
      - start_time
      - end_time
      - user_external_ids
      - slot_id
      - answers
      properties:
        provider_id:
          type: string
          readOnly: true
        unit_id:
          type: string
          readOnly: true
        person_id:
          type: string
          readOnly: true
        type:
          type: string
          readOnly: true
        start_time:
          type: string
          readOnly: true
        end_time:
          type: string
          readOnly: true
        user_external_ids:
          $ref: '#/components/schemas/ExternalUserID'
          readOnly: true
        slot_id:
          type: string
          readOnly: true
        source_id:
          type: string
          readOnly: true
        answers:
          type: array
          items:
            $ref: '#/components/schemas/QuestionAnswer'
          readOnly: true
    AppointmentOptions:
      type: object
      required:
      - time_slots
      - questions
      properties:
        time_slots:
          type: array
          items:
            $ref: '#/components/schemas/TimeSlot'
          readOnly: true
        questions:
          type: array
          items:
            $ref: '#/components/schemas/Question'
          readOnly: true
    PubKey:
      required:
      - key_pem
      - alg
      type: object
      properties:
        key_pem:
          type: string
        alg:
          type: string
    AppointmentPerson:
      type: object
      required:
      - id
      - provider_id
      - unit_id
      - next_available
      - name
      - notes
      - image_url
      properties:
        id:
          type: string
          readOnly: true
        provider_id:
          type: integer
          readOnly: true
        

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