InstiApp API

IIT Bombay's campus-life API and the single largest first-party programmable surface the institution operates. 112 paths and 164 operations over student bodies and their role graphs (154 bodies live), institute events and calendar, the news feed, hostel mess menus (22 messes), 427 named campus map locations with institute-map coordinates, a public grievance register, a student marketplace, lost-and-found, achievements, and placement/internship blogs. A substantial read surface answers with no credential at all; user-scoped and placement paths require a session. The specification is autogenerated by drf-yasg from the live Django routes and is served at /docs/.

Operations 164

GET /achievements #
POST /achievements #
GET /achievements-body/{id} #
POST /achievements-offer #
GET /achievements-offer/{id} #
POST /achievements-offer/{id} #
PUT /achievements-offer/{id} #
DELETE /achievements-offer/{id} #
GET /achievements/{id} #
PUT /achievements/{id} #
PATCH /achievements/{id} #
DELETE /achievements/{id} #
GET /alumniLogin #
GET /alumniOTP #
GET /bans/ #
POST /bans/ #
GET /bans/{id}/ #
PUT /bans/{id}/ #
PATCH /bans/{id}/ #
DELETE /bans/{id}/ #
GET /bodies #
POST /bodies #
GET /bodies-with-privilege #
GET /bodies-with-privilege/ #
GET /bodies/{id} #
PUT /bodies/{id} #
DELETE /bodies/{id} #
GET /bodies/{id}/events #
GET /bodies/{id}/follow #
GET /bodies/{id}/followers #
GET /buy/categories #
GET /buy/products #
POST /buy/products #
GET /buy/products/{id} #
PUT /buy/products/{id} #
DELETE /buy/products/{id} #
POST /buy/products/{id}/sold #
POST /buy/report/{id} #
GET /buy/v2/products #
POST /buy/v2/products #
GET /calendar/feed/ #
GET /calendar/preferences/ #
PATCH /calendar/preferences/ #
GET /calendar/preferences/bodies/ #
PATCH /calendar/preferences/bodies/{body_id}/ #
GET /calendar/shared/ #
POST /calendar/shared/ #
PATCH /calendar/shared/ #
DELETE /calendar/shared/ #
GET /calendar/shared/{slug}/ #
POST /calendar/shared/{slug}/ #
PATCH /calendar/shared/{slug}/ #
DELETE /calendar/shared/{slug}/ #
GET /calendar/shared/{slug}/events/ #
POST /calendar/shared/{slug}/events/ #
PATCH /calendar/shared/{slug}/events/ #
DELETE /calendar/shared/{slug}/events/ #
GET /calendar/shared/{slug}/events/{event_id}/ #
POST /calendar/shared/{slug}/events/{event_id}/ #
PATCH /calendar/shared/{slug}/events/{event_id}/ #
DELETE /calendar/shared/{slug}/events/{event_id}/ #
POST /calendar/shared/{slug}/subscribe/ #
PATCH /calendar/shared/{slug}/subscribe/ #
POST /calendar/shared/{slug}/toggle/ #
PATCH /calendar/shared/{slug}/toggle/ #
POST /calendar/shared/{slug}/unsubscribe/ #
PATCH /calendar/shared/{slug}/unsubscribe/ #
GET /check/ #
GET /communities #
POST /communities #
GET /communities/{id} #
GET /communityposts #
POST /communityposts #
PUT /communityposts/moderator/{id} #
PUT /communityposts/{action}/{id} #
GET /communityposts/{id} #
PUT /communityposts/{id} #
GET /events #
POST /events #
GET /events-all #
GET /events/{id} #
PUT /events/{id} #
DELETE /events/{id} #
POST /events/{id}/approve-mail #
POST /events/{id}/reject-mail #
POST /events/{id}/resubmit #
GET /external-blog #
GET /getEncr #
GET /getUserMess #
POST /interests #
DELETE /interests/{id} #
GET /internship/filters/ #
GET /internship/posts/ #
GET /internship/posts/latest/ #
GET /internship/threads/ #
GET /internship/threads/{company_slug}/ #
GET /lnf/products/ #
GET /lnf/products/{id}/ #
GET /locations #
POST /locations #
GET /locations/{id} #
PUT /locations/{id} #
DELETE /locations/{id} #
GET /login #
GET /login/get-user #
GET /logout #
GET /mess #
GET /my-events #
POST /nearest/ #
GET /news #
GET /notifications #
GET /notifications/read #
GET /notifications/read/{id} #
GET /pass-login #
GET /placement-blog #
GET /placementblogs/filters/ #
GET /placementblogs/posts/ #
GET /placementblogs/posts/latest/ #
GET /placementblogs/threads/ #
GET /placementblogs/threads/{company_slug}/ #
GET /popup-notification/ #
POST /popup-notification/{popup_id}/mark-as-read/ #
POST /query/add #
GET /query/categories #
GET /resendAlumniOTP #
POST /roles #
GET /roles/{id} #
PUT /roles/{id} #
DELETE /roles/{id} #
POST /shortestpath/ #
GET /test/notification #
GET /training-blog #
POST /upload #
GET /upload/{id} #
DELETE /upload/{id} #
GET /user-me #
PUT /user-me #
PATCH /user-me #
GET /user-me/events #
GET /user-me/roles #
GET /user-me/signatures #
POST /user-me/signatures #
DELETE /user-me/signatures/{id} #
POST /user-me/subscribe-wp #
GET /user-me/ucpr/{post_pk} #
POST /user-me/ucr/ #
GET /user-me/ues/{event_pk} #
GET /user-me/unr/{news_pk} #
GET /user-tags #
POST /user-tags/reach #
GET /users/{id} #
GET /venter/comments/{id} #
PUT /venter/comments/{id} #
DELETE /venter/comments/{id} #
GET /venter/complaints #
POST /venter/complaints #
GET /venter/complaints/{id} #
POST /venter/complaints/{id}/comments #
GET /venter/complaints/{id}/subscribe #
GET /venter/complaints/{id}/upvote #
GET /venter/tags #
GET /verifier-events #

Documentation

Specifications

Schemas & Data

Other Resources

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/instiapp-api"
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 email required.

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

OpenAPI Specification

iit-bombay-instiapp-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: InstiApp API
  description: InstiApp IIT Bombay API
  termsOfService: https://insti.app/tos.html
  contact:
    email: devcom@iitb.ac.in
  license:
    name: AGPLv3
  version: v1
  x-provenance:
    generated: '2026-08-30'
    method: derived
    source: https://gymkhana.iitb.ac.in/instiapp/api/docs/?format=openapi
    note: 'Mechanical Swagger 2.0 -> OpenAPI 3.0.0 conversion (swagger2openapi 7.0.8) of the first-party
      autogenerated specification published by IIT Bombay at https://gymkhana.iitb.ac.in/instiapp/api/docs/.
      The pristine pre-conversion document is openapi/_original/iit-bombay-instiapp-api-openapi.json (method:
      searched). No paths, schemas or descriptions were added, removed or reworded.'
    x-operator: institution
    operator-evidence: servers[0].url host gymkhana.iitb.ac.in is under the institution registrable domain
      iitb.ac.in; info.contact.email is devcom@iitb.ac.in; source code is published by the institution
      at github.com/DevCom-IITB/instiapp-api under AGPL-3.0.
  x-source-license: AGPL-3.0
security:
- Basic: []
paths:
  /achievements:
    get:
      operationId: achievements_list
      description: List the user's achivements and requests.
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AchievementUser'
      tags:
      - achievements
    post:
      operationId: achievements_create
      description: Make a request to a body for a new achievement.
      requestBody:
        $ref: '#/components/requestBodies/AchievementUser'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AchievementUser'
      tags:
      - achievements
    parameters: []
  /achievements-body/{id}:
    get:
      operationId: list_body
      description: List the user's achivements and requests.
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AchievementUser'
      tags:
      - list_body
    parameters:
    - name: id
      in: path
      description: A UUID string identifying this achievement.
      required: true
      schema:
        type: string
        format: uuid
  /achievements-offer:
    post:
      operationId: achievements-offer_create
      description: Offer a new achievement for an event.
      requestBody:
        $ref: '#/components/requestBodies/OfferedAchievement'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OfferedAchievement'
      tags:
      - achievements-offer
    parameters: []
  /achievements-offer/{id}:
    get:
      operationId: achievements-offer_read
      description: Get a achievement offer.
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OfferedAchievement'
      tags:
      - achievements-offer
    post:
      operationId: achievements-offer_create
      description: Claim and try to get an achievement with its secret.
      requestBody:
        $ref: '#/components/requestBodies/OfferedAchievement'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OfferedAchievement'
      tags:
      - achievements-offer
    put:
      operationId: achievements-offer_update
      description: Update an offered achievement.
      requestBody:
        $ref: '#/components/requestBodies/OfferedAchievement'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OfferedAchievement'
      tags:
      - achievements-offer
    delete:
      operationId: achievements-offer_delete
      description: Update an offered achievement.
      responses:
        '204':
          description: ''
      tags:
      - achievements-offer
    parameters:
    - name: id
      in: path
      description: A UUID string identifying this offered achievement.
      required: true
      schema:
        type: string
        format: uuid
  /achievements/{id}:
    get:
      operationId: achievements_read
      description: Views for Achievements
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AchievementUser'
      tags:
      - achievements
    put:
      operationId: achievements_update
      description: 'Update/Verify an achievement.

        Needs BodyRole with `VerA` or can patch own achievement'
      requestBody:
        $ref: '#/components/requestBodies/AchievementUser'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AchievementUser'
      tags:
      - achievements
    patch:
      operationId: achievements_update
      description: 'Update/Verify an achievement.

        Needs BodyRole with `VerA` or can patch own achievement'
      requestBody:
        $ref: '#/components/requestBodies/AchievementUser'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AchievementUser'
      tags:
      - achievements
    delete:
      operationId: achievements_delete
      description: 'Delete an achievement or request.

        Needs BodyRole with `VerA`'
      responses:
        '204':
          description: ''
      tags:
      - achievements
    parameters:
    - name: id
      in: path
      description: A UUID string identifying this achievement.
      required: true
      schema:
        type: string
        format: uuid
  /alumniLogin:
    get:
      operationId: alumni_login
      description: Login
      responses:
        '200':
          description: ''
      tags:
      - alumni_login
    parameters: []
  /alumniOTP:
    get:
      operationId: alumni_otp_conf
      description: Login
      responses:
        '200':
          description: ''
      tags:
      - alumni_otp_conf
    parameters: []
  /bans/:
    get:
      operationId: bans_list
      description: List all the banned Accounts.
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SSOBans'
      tags:
      - bans
    post:
      operationId: bans_create
      description: ''
      requestBody:
        $ref: '#/components/requestBodies/SSOBans'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SSOBans'
      tags:
      - bans
    parameters: []
  /bans/{id}/:
    get:
      operationId: bans_read
      description: ''
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SSOBans'
      tags:
      - bans
    put:
      operationId: bans_update
      description: ''
      requestBody:
        $ref: '#/components/requestBodies/SSOBans'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SSOBans'
      tags:
      - bans
    patch:
      operationId: bans_update
      description: ''
      requestBody:
        $ref: '#/components/requestBodies/SSOBans'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SSOBans'
      tags:
      - bans
    delete:
      operationId: bans_delete
      description: ''
      responses:
        '204':
          description: ''
      tags:
      - bans
    parameters:
    - name: id
      in: path
      description: A UUID string identifying this sso ban.
      required: true
      schema:
        type: string
        format: uuid
  /bodies:
    get:
      operationId: bodies_list
      description: Body
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Body'
      tags:
      - bodies
    post:
      operationId: bodies_create
      description: 'Create Body.

        Needs the `AddB` Institute Role permission.'
      requestBody:
        $ref: '#/components/requestBodies/Body'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Body'
      tags:
      - bodies
    parameters: []
  /bodies-with-privilege:
    get:
      operationId: get_bodies
      description: Get bodies with users having a specific privilege.
      responses:
        '200':
          description: ''
      tags:
      - get_bodies
    parameters: []
  /bodies-with-privilege/:
    get:
      operationId: get_bodies
      description: Get bodies with users having a specific privilege.
      responses:
        '200':
          description: ''
      tags:
      - get_bodies
    parameters: []
  /bodies/{id}:
    get:
      operationId: bodies_read
      description: 'Get Body.

        Retrieve by `uuid` or `str_id`.'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Body'
      tags:
      - bodies
    put:
      operationId: bodies_update
      description: 'Update Body.

        Needs the `UpdB` permission.'
      requestBody:
        $ref: '#/components/requestBodies/Body'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Body'
      tags:
      - bodies
    delete:
      operationId: bodies_delete
      description: 'Delete Body.

        Needs the `DelB` institute permission.'
      responses:
        '204':
          description: ''
      tags:
      - bodies
    parameters:
    - name: id
      in: path
      description: A UUID string identifying this Body.
      required: true
      schema:
        type: string
        format: uuid
  /bodies/{id}/events:
    get:
      operationId: bodies_get_events
      description: 'Get all events from pk uuid or strid.

        {?archived} is optional arguement to fetch all events'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Body'
      tags:
      - bodies
    parameters:
    - name: id
      in: path
      description: A UUID string identifying this Body.
      required: true
      schema:
        type: string
        format: uuid
  /bodies/{id}/follow:
    get:
      operationId: bodies_follow
      description: Follow or unfollow a body {?action}=0,1
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Body'
      tags:
      - bodies
    parameters:
    - name: id
      in: path
      description: A UUID string identifying this Body.
      required: true
      schema:
        type: string
        format: uuid
  /bodies/{id}/followers:
    get:
      operationId: bodies_followers_read
      description: List followers of body.
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BodyFollowers'
      tags:
      - bodies
    parameters:
    - name: id
      in: path
      description: A UUID string identifying this Body.
      required: true
      schema:
        type: string
        format: uuid
  /buy/categories:
    get:
      operationId: buy_get_categories
      description: ''
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Product'
      tags:
      - buy
    parameters: []
  /buy/products:
    get:
      operationId: buy_products_list
      description: ''
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Product'
      tags:
      - buy
    post:
      operationId: buy_products_create
      description: 'Creates product if the user isn''t banned and form is filled

        correctly. Ban checking is yet to be incorporated.'
      requestBody:
        $ref: '#/components/requestBodies/Product'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Product'
      tags:
      - buy
    parameters: []
  /buy/products/{id}:
    get:
      operationId: buy_products_read
      description: ''
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Product'
      tags:
      - buy
    put:
      operationId: buy_products_update
      description: ''
      requestBody:
        $ref: '#/components/requestBodies/Product'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Product'
      tags:
      - buy
    delete:
      operationId: buy_products_delete
      description: ''
      responses:
        '204':
          description: ''
      tags:
      - buy
    parameters:
    - name: id
      in: path
      description: A UUID string identifying this Product.
      required: true
      schema:
        type: string
        format: uuid
  /buy/products/{id}/sold:
    post:
      operationId: buy_products_mark_sold
      description: ''
      requestBody:
        $ref: '#/components/requestBodies/Product'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Product'
      tags:
      - buy
    parameters:
    - name: id
      in: path
      description: A UUID string identifying this Product.
      required: true
      schema:
        type: string
        format: uuid
  /buy/report/{id}:
    post:
      operationId: buy_report
      description: ''
      requestBody:
        $ref: '#/components/requestBodies/Product'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Product'
      tags:
      - buy
    parameters:
    - name: id
      in: path
      description: A UUID string identifying this Product.
      required: true
      schema:
        type: string
        format: uuid
  /buy/v2/products:
    get:
      operationId: buy_v2_products_read
      description: ''
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Product'
      tags:
      - buy
    post:
      operationId: buy_v2_products_create
      description: 'Creates product if the user isn''t banned and form is filled

        correctly. Ban checking is yet to be incorporated.'
      requestBody:
        $ref: '#/components/requestBodies/Product'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Product'
      tags:
      - buy
    parameters: []
  /calendar/feed/:
    get:
      operationId: calendar_feed_list
      description: View class for the Feed
      responses:
        '200':
          description: ''
      tags:
      - calendar
    parameters: []
  /calendar/preferences/:
    get:
      operationId: calendar_preferences_list
      description: ''
      responses:
        '200':
          description: ''
      tags:
      - calendar
    patch:
      operationId: calendar_preferences_partial_update
      description: ''
      responses:
        '200':
          description: ''
      tags:
      - calendar
    parameters: []
  /calendar/preferences/bodies/:
    get:
      operationId: calendar_preferences_bodies_list
      description: ''
      responses:
        '200':
          description: ''
      tags:
      - calendar
    parameters: []
  /calendar/preferences/bodies/{body_id}/:
    patch:
      operationId: calendar_preferences_bodies_partial_update
      description: ''
      responses:
        '200':
          description: ''
      tags:
      - calendar
    parameters:
    - name: body_id
      in: path
      required: true
      schema:
        type: string
  /calendar/shared/:
    get:
      operationId: calendar_shared_list
      description: ''
      responses:
        '200':
          description: ''
      tags:
      - calendar
    post:
      operationId: calendar_shared_create
      description: ''
      responses:
        '201':
          description: ''
      tags:
      - calendar
    patch:
      operationId: calendar_shared_partial_update
      description: ''
      responses:
        '200':
          description: ''
      tags:
      - calendar
    delete:
      operationId: calendar_shared_delete
      description: ''
      responses:
        '204':
          description: ''
      tags:
      - calendar
    parameters: []
  /calendar/shared/{slug}/:
    get:
      operationId: calendar_shared_read
      description: ''
      responses:
        '200':
          description: ''
      tags:
      - calendar
    post:
      operationId: calendar_shared_create
      description: ''
      responses:
        '201':
          description: ''
      tags:
      - calendar
    patch:
      operationId: calendar_shared_partial_update
      description: ''
      responses:
        '200':
          description: ''
      tags:
      - calendar
    delete:
      operationId: calendar_shared_delete
      description: ''
      responses:
        '204':
          description: ''
      tags:
      - calendar
    parameters:
    - name: slug
      in: path
      required: true
      schema:
        type: string
  /calendar/shared/{slug}/events/:
    get:
      operationId: calendar_shared_events_list
      description: ''
      responses:
        '200':
          description: ''
      tags:
      - calendar
    post:
      operationId: calendar_shared_events_create
      description: ''
      responses:
        '201':
          description: ''
      tags:
      - calendar
    patch:
      operationId: calendar_shared_events_partial_update
      description: ''
      responses:
        '200':
          description: ''
      tags:
      - calendar
    delete:
      operationId: calendar_shared_events_delete
      description: ''
      responses:
        '204':
          description: ''
      tags:
      - calendar
    parameters:
    - name: slug
      in: path
      required: true
      schema:
        type: string
  /calendar/shared/{slug}/events/{event_id}/:
    get:
      operationId: calendar_shared_events_read
      description: ''
      responses:
        '200':
          description: ''
      tags:
      - calendar
    post:
      operationId: calendar_shared_events_create
      description: ''
      responses:
        '201':
          description: ''
      tags:
      - calendar
    patch:
      operationId: calendar_shared_events_partial_update
      description: ''
      responses:
        '200':
          description: ''
      tags:
      - calendar
    delete:
      operationId: calendar_shared_events_delete
      description: ''
      responses:
        '204':
          description: ''
      tags:
      - calendar
    parameters:
    - name: slug
      in: path
      required: true
      schema:
        type: string
    - name: event_id
      in: path
      required: true
      schema:
        type: string
  /calendar/shared/{slug}/subscribe/:
    post:
      operationId: calendar_shared_subscribe_create
      description: ''
      responses:
        '201':
          description: ''
      tags:
      - calendar
    patch:
      operationId: calendar_shared_subscribe_partial_update
      description: ''
      responses:
        '200':
          description: ''
      tags:
      - calendar
    parameters:
    - name: slug
      in: path
      required: true
      schema:
        type: string
  /calendar/shared/{slug}/toggle/:
    post:
      operationId: calendar_shared_toggle_create
      description: ''
      responses:
        '201':
          description: ''
      tags:
      - calendar
    patch:
      operationId: calendar_shared_toggle_partial_update
      description: ''
      responses:
        '200':
          description: ''
      tags:
      - calendar
    parameters:
    - name: slug
      in: path
      required: true
      schema:
        type: string
  /calendar/shared/{slug}/unsubscribe/:
    post:
      operationId: calendar_shared_unsubscribe_create
      description: ''
      responses:
        '201':
          description: ''
      tags:
      - calendar
    patch:
      operationId: calendar_shared_unsubscribe_partial_update
      description: ''
      responses:
        '200':
          description: ''
      tags:
      - calendar
    parameters:
    - name: slug
      in: path
      required: true
      schema:
        type: string
  /check/:
    get:
      operationId: check_list
      description: ''
      responses:
        '200':
          description: ''
      tags:
      - check
    parameters: []
  /communities:
    get:
      operationId: communities_list
      description: ''
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CommunitySerializers'
      tags:
      - communities
    post:
      operationId: communities_create
      description: ''
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CommunitySerializers'
        required: true
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommunitySerializers'
      tags:
      - communities
    parameters: []
  /communities/{id}:
    get:
      operationId: communities_read
      description: ''
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommunitySerializers'
      tags:
      - communities
    parameters:
    - name: id
      in: path
      description: A UUID string identifying this Community.
      required: true
      schema:
        type: string
        format: uuid
  /communityposts:
    get:
      operationId: communityposts_list
      description: 'List Of Posts.

        List fresh posts arranged chronologiaclly for the current user.'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CommunityPostSerializers'
      tags:
      - communityposts
    post:
      operationId: communityposts_create
      description: 'Create Post and Comments.

        Needs `AddP` permission for each body to be associated.'
      requestBody:
        $ref: '#/components/requestBodies/CommunityPostSerializers'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommunityPostSerializers'
      tags:
      - communityposts
    parameters: []
  /communityposts/moderator/{id}:
    put:
      operationId: communityposts_change_status
      description: ''
      requestBody:
        $ref: '#/components/requestBodies/CommunityPostSerializers'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommunityPostSerializers'
      tags:
      - communityposts
    parameters:
    - name: id
      in: path
      description: A UUID string identifying this Community Post.
      required: true
      schema:
        type: string
        format: uuid
  /communityposts/{action}/{id}:
    put:
      operationId: perform_action
      description: action==feature for featuring a post
      requestBody:
        $ref: '#/components/requestBodies/CommunityPostSerializers'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommunityPostSerializers'
      tags:
      - perform_action
    parameters:
    - name: action
      in: path
      required: true
      schema:
        type: string
    - name: id
      in: path
      description: A UUID string identifying this Community Post.
      required: true
      schema:
        type: string
        format: uuid
  /communityposts/{id}:
    get:
      operationId: communityposts_read
      description: 'Get full Post.

        Get by `uuid` or `str_id`'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CommunityPostSerializers'
      tags:
      - communityposts
    put:
      operationId: communityposts_update
      description: 'Update Event.

        Needs BodyRole with `UpdE` for at least one associated body.

        Disassociating bodies from the event requires the `DelE`

        permission and associating needs `AddE`'
      requestBody:
        $ref: '#/components/requestBodies/CommunityPostSerializers'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommunityPostSerializers'
      tags:
      - communityposts
    parameters:
    - name: id
      in: path
      description: A UUID string identifying this Community Post.
      required: true
      schema:
        type: string
        format: uuid
  /events:
    get:
      operationId: events_list
      description: 'List Events.

        List fresh events prioritized for the current user.'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/EventFull'
      tags:
      - events
    post:
      operationId: events_create
      description: 'Create Event.

        Needs `AddE` permission for each body to be associated.'
      requestBody:
        $ref: '#/components/requestBodies/EventFull'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventFull'
      tags:
      - events
    parameters: []
  /events-all:
    get:
      operationId: list_all
      description: 'List Events.

        List fresh events prioritized for the current user.'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/EventFull'
      tags:
      - list_all
    parameters: []
  /events/{id}:
    get:
      operationId: events_read
      description: Get Event with permission check and retry-safe transaction.
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventFull'
      tags:
      - events
    put:
      operationId: events_update
      description: 'Update Event.

        Needs BodyRole with `UpdE` for at least one associated body.

        Disassociating bodies from the event requires the `DelE`

        permission and associating needs `AddE`'
      requestBody:
        $ref: '#/components/requestBodies/EventFull'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventFull'
      tags:
      - events
    delete:
      operationId: events_delete
      description: 'Delete Event.

        Needs `DelE` permission for all associated bodies.'
      responses:
        '204':
          description: ''
      tags:
      - events
    parameters:
    - name: id
      in: path
      description: A UUID string identifying this Event.
      required: true
      schema:
        type: string
        format: uuid
  /events/{id}/approve-mail:
    post:
      operationId: events_approve_mail
      description: ''
      responses:
        '201':
          description: ''
      tags:
      - events
    parameters:
    - name: id
      in: path
      required: true
      schema:
        type: string
  /events/{id}/reject-mail:
    post:
      operationId: events_reject_mail
      description: ''
      responses:
        '201':
          description: ''
      tags:
      - events
    parameters:
    - name: id
      in: path
      required: true
      schema:
        type: string
  /events/{id}/resubmit:
    post:
      operationId: events_resubmit
      description: ''
      responses:
        '201':
          description: ''
      tags:
      - events
    parameters:
    - name: id
      in: path
      required: true
      schema:
        type: string
  /external-blog:
    get:
      operationId: external_blog
      description: Get External Blog.
      responses:
        '200':
          description: ''
      tags:
      - external_blog
    parameters: []
  /getEncr:
    get:
      operationId: getEncr_list
      description: ''
      responses:
        '200':
          description: ''
      tags:
      - getEncr
    parameters: []
  /getUserMess:
    get:
      operationId: getUserMess_list
      description: Get mess status for a user
      responses:
        '200':
          description: ''
      tags:
      - getUserMess
    parameters: []
  /interests:
    post:
      operationId: interests_create
      description: Add a user interest.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserInterest'
        required: true
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserInterest'
      tags:
      - interests
    parameters: []
  /interests/{id}:
    delete:
      operationId: delete
      description: Delete a user interest.
      responses:
        '204':
          description: ''
      tags:
      - delete
    parameters:
    - name: id
      in: path
      description: A UUID string identifying this user interest.
      required: true
      schema:
        type: string
        format: uuid
  /internship/filters/:
    get:
      operationId: internship_filters_list
      description

# --- truncated at 32 KB (107 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/iit-bombay/refs/heads/main/openapi/iit-bombay-instiapp-api-openapi.yml