Indian Institute of Technology Kanpur funds API

Manage funds for the acquisitions module

OpenAPI Specification

iit-kanpur-funds-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  contact:
    name: Koha Development Team
    url: https://koha-community.org/
  description: "## Background\n\nThe API supports two sets of endpoints, one targetted at library staff and the other at at library users.\n\nThose endpoints under the `/public` path are aimed at delivering functionality tailored to library users and offer\na more restricted set of functions, overrides and data in thier responses for data privacy and library policy\nreasons. Many of these endpoints do not require authentication for fetching public data, though an authenticated\nsession will expose additional options and allow users to see more data where it is part of their own record.\n\nAll other endpoints are targetted at the staff interface level and allow for additional functionality and a more\nunrestricted view of data.  These endpoints, however, have a level of redaction built in for resources that the\napi consumer should not have access to.  For example, user data for users who do not belong to the same library\nor library group of your api user will be reduced to just minimum neccesary for a valid response. Object keys will\nbe consistent for all responses, but their values may be removed depending on access.\n\n## Authentication\n\nThe API supports the following authentication mechanisms\n\n* HTTP Basic authentication\n* OAuth2 (client credentials grant)\n* Cookie-based\n\nBoth _Basic authentication_ and the _OAuth2_ flow, need to be enabled\nby system preferences.\n\n## Authorization\n\nThe API uses existing user profiles to restrict access to resources based on user permissions and the library the\nAPI user is assigned to.  This may result, at times, in resources being returned in a redacted form with all keys\npresent but sensative values nulled.\n\nWe do not yet support OAuth Scopes or the Authorization Code grant flow.\n\n## Errors\n\nThe API uses standard HTTP status codes to indicate the success or failure\nof the API call. The body of the response will be JSON in the following format:\n\n```\n{\n  \"error\": \"Current settings prevent the passed due date to be applied\",\n  \"error_code\": \"invalid_due_date\"\n}\n```\n\nNote: Some routes might offer additional attributes in their error responses but that\"s\nsubject to change and thus not documented.\n\n## Filtering responses\n\nThe API allows for some advanced response filtering using a JSON based query syntax. The\nquery can be added to the requests:\n\n* as a query parameter `q=`\n* in the request body\n\nFor simple field equality matches we can use `{ \"fieldname\": \"value\" }` where the fieldname\nmatches one of the fields as described in the particular endpoints response object.\n\nWe can refine that with more complex matching clauses by nesting a the clause into the\nobject; `{ \"fieldname\": { \"clause\": \"value\" } }`.\n\nAvailable matching clauses include `=`, `!=`, `<`, `>`, `<=`, `>=` and `-not`. We also support `-like`\nand `-not_like` string comparisons with `%` used to denote wildcards, thus you can pass\n`{ \"fieldname\": { \"-like\": \"value%\" } }` to do a 'starts with' string match for example.\n\nWe can filter on multiple fields by adding them to the JSON respresentation. Adding at `HASH`\nlevel will result in an \"AND\" query, whilst combinding them in an `ARRAY` will result in an\n\"OR\" query: `{ \"field1\": \"value2\", \"field2\": \"value2\" }` will filter the response to only those\nresults with both field1 containing value2 AND field2 containing value2 for example.\n\nThere is a collection of special operators also available to you, including:\n\n* `-in` - Expects an array of values to perform an OR match against\n* `-not_in` - Expects an array of values to perform a NOR match against\n* `-between` - Expects two values which the value of the field is expected to fall between\n* `-not_between` - Expects two values which the value of the field is expected to fall outside of\n* `-ident` - Expects a second field name to match the two field values against\n* `-regexp` - Expects a perl compatible regular expression for which the value should match\n\nLogic and nesting is also supported and you may use `-and` and `-or` to change the logic of an ARRAY\nor HASH as described above.\n\nAdditionally, if you are requesting related data be embedded into the response one can query\non the related data using dot notation in the field names.\n\n### Examples\n\nThe following request would return any patron with firstname \"Henry\" and lastname \"Acevedo\";\n\n`curl -u koha:koha --request GET \"http://127.0.0.1:8081/api/v1/patrons/\" --data-raw '{ \"surname\": \"Acevedo\", \"firstname\": \"Henry\" }'`\n\nThe following request would return any patron whose lastname begins with \"Ace\";\n\n`curl -u koha:koha --request GET \"http://127.0.0.1:8081/api/v1/patrons/\" --data-raw '{ \"surname\": { \"-like\": \"Ace%\" }'`\n\nThe following request would return any patron whose lastname is \"Acevedo\" OR \"Bernardo\"\n\n`curl -u koha:koha --request GET \"http://127.0.0.1:8081/api/v1/patrons/\" --data-raw '{ \"surname\": [ \"Acevedo\", \"Bernardo\" ] }'`\n\nThe following request embeds the related patron extended attributes data and filters on it.\n\n`curl -u koha:koha =--request GET 'http://127.0.0.1:8081/api/v1/patrons/' --header 'x-koha-embed: extended_attributes' --data-raw '{ \"extended_attributes.code\": \"internet\", \"extended_attributes.attribute\": \"1\" }'`\n\n## Special headers\n\n### x-koha-embed\n\nThis optional header allows the api consumer to request additional related data\nto be returned in the api response.  It also allows for cross referencing in the\nqueries as described above. It accepts a comma delimited list of relation names.\n\nRelations may on occasion also support dot delimited nesting to allow traversal.\n\n### x-koha-library\n\nThis optional header should be passed to give your api request a library\ncontext; If it is not included in the request, then the request context\nwill default to using your api comsumer\"s assigned home library.\n"
  license:
    name: GPL v3,
    url: http://www.gnu.org/licenses/gpl.txt
  title: Koha REST 2fa funds API
  version: '1'
servers:
- url: https://libserv.iitk.ac.in/api/v1
  description: PKK Library Koha REST API (production)
tags:
- description: 'Manage funds for the acquisitions module

    '
  name: funds
  x-displayName: Funds
paths:
  /acquisitions/funds:
    get:
      tags:
      - funds
      summary: List funds
      operationId: listFunds
      parameters:
      - name: name
        in: query
        required: false
        description: Case insensitive search on fund name
        schema:
          type: string
      - name: fund_owner_id
        in: query
        required: false
        description: Display only the funds that belongs to the given patron ID
        schema:
          type: integer
      - name: _match
        in: query
        required: false
        description: Matching criteria
        schema:
          type: string
          enum:
          - contains
          - exact
          - starts_with
          - ends_with
      - name: _order_by
        in: query
        required: false
        description: Sorting criteria
        schema:
          type: array
          items:
            type: string
      - name: _page
        in: query
        required: false
        description: Page number, for paginated object listing
        schema:
          type: integer
      - name: _per_page
        in: query
        required: false
        description: Page size, for paginated object listing
        schema:
          type: integer
      - name: q
        in: query
        required: false
        description: Query filter sent as a request parameter
        style: form
        explode: true
        schema:
          type: array
          items:
            type: string
      - name: x-koha-request-id
        in: header
        required: false
        description: Request id header
        schema:
          type: integer
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
        description: Query filter sent through request"s body
      responses:
        '200':
          description: A list of funds
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/fund_yaml'
                type: array
        '400':
          description: "Bad request. Possible `error_code` attribute values:\n\n  * `invalid_query`\n"
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_yaml'
        '401':
          description: Authentication required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_yaml'
        '403':
          description: Access forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_yaml'
        '404':
          description: Fund not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_yaml'
        '500':
          description: 'Internal server error. Possible `error_code` attribute values:


            * `internal_server_error`

            '
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_yaml'
        '501':
          description: Default response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefaultResponse'
        '503':
          description: Under maintenance
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_yaml'
  /acquisitions/funds/owners:
    get:
      tags:
      - funds
      summary: List possibe owners for funds
      description: This resource returns a list of patron allowed to be owner of funds
      operationId: listFundsOwners
      parameters:
      - name: _match
        in: query
        required: false
        description: Matching criteria
        schema:
          type: string
          enum:
          - contains
          - exact
          - starts_with
          - ends_with
      - name: _order_by
        in: query
        required: false
        description: Sorting criteria
        schema:
          type: array
          items:
            type: string
      - name: _page
        in: query
        required: false
        description: Page number, for paginated object listing
        schema:
          type: integer
      - name: _per_page
        in: query
        required: false
        description: Page size, for paginated object listing
        schema:
          type: integer
      - name: q
        in: query
        required: false
        description: Query filter sent as a request parameter
        style: form
        explode: true
        schema:
          type: array
          items:
            type: string
      - name: x-koha-embed
        in: header
        required: false
        description: Embed list sent as a request header
        schema:
          type: array
          items:
            enum:
            - extended_attributes
            type: string
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
        description: Query filter sent through request"s body
      responses:
        '200':
          description: A list of funds' owners
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/patron_yaml'
                type: array
        '400':
          description: "Bad request. Possible `error_code` attribute values:\n\n  * `invalid_query`\n"
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_yaml'
        '401':
          description: Default response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefaultResponse'
        '403':
          description: Access forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_yaml'
        '404':
          description: Default response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefaultResponse'
        '500':
          description: 'Internal server error. Possible `error_code` attribute values:


            * `internal_server_error`

            '
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_yaml'
        '501':
          description: Default response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefaultResponse'
        '503':
          description: Under maintenance
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_yaml'
  /acquisitions/funds/users:
    get:
      tags:
      - funds
      summary: List possibe users for funds
      description: This resource returns a list of patron allowed to be owner of funds
      operationId: listFundsUsers
      parameters:
      - name: _match
        in: query
        required: false
        description: Matching criteria
        schema:
          type: string
          enum:
          - contains
          - exact
          - starts_with
          - ends_with
      - name: _order_by
        in: query
        required: false
        description: Sorting criteria
        schema:
          type: array
          items:
            type: string
      - name: _page
        in: query
        required: false
        description: Page number, for paginated object listing
        schema:
          type: integer
      - name: _per_page
        in: query
        required: false
        description: Page size, for paginated object listing
        schema:
          type: integer
      - name: q
        in: query
        required: false
        description: Query filter sent as a request parameter
        style: form
        explode: true
        schema:
          type: array
          items:
            type: string
      - name: x-koha-embed
        in: header
        required: false
        description: Embed list sent as a request header
        schema:
          type: array
          items:
            enum:
            - extended_attributes
            type: string
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
        description: Query filter sent through request"s body
      responses:
        '200':
          description: A list of funds' users
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/patron_yaml'
                type: array
        '400':
          description: "Bad request. Possible `error_code` attribute values:\n\n  * `invalid_query`\n"
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_yaml'
        '401':
          description: Default response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefaultResponse'
        '403':
          description: Access forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_yaml'
        '404':
          description: Default response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefaultResponse'
        '500':
          description: 'Internal server error. Possible `error_code` attribute values:


            * `internal_server_error`

            '
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_yaml'
        '501':
          description: Default response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefaultResponse'
        '503':
          description: Under maintenance
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_yaml'
components:
  schemas:
    error_yaml:
      additionalProperties: true
      properties:
        error:
          description: Error message
          type: string
        error_code:
          description: Error code
          type: string
      type: object
    patron_yaml:
      additionalProperties: false
      properties:
        _strings:
          description: A list of stringified coded values
          type:
          - object
          - 'null'
        account_balance:
          description: Balance of the patron's account
          type:
          - number
          - 'null'
        address:
          description: first address line of patron's primary address
          type:
          - string
          - 'null'
        address2:
          description: second address line of patron's primary address
          type:
          - string
          - 'null'
        altaddress_address:
          description: first address line of patron's alternate address
          type:
          - string
          - 'null'
        altaddress_address2:
          description: second address line of patron's alternate address
          type:
          - string
          - 'null'
        altaddress_city:
          description: city or town of patron's alternate address
          type:
          - string
          - 'null'
        altaddress_country:
          description: country of patron's alternate address
          type:
          - string
          - 'null'
        altaddress_email:
          description: email address for patron's alternate address
          type:
          - string
          - 'null'
        altaddress_notes:
          description: a note related to patron's alternate address
          type:
          - string
          - 'null'
        altaddress_phone:
          description: phone number for patron's alternate address
          type:
          - string
          - 'null'
        altaddress_postal_code:
          description: zip or postal code of patron's alternate address
          type:
          - string
          - 'null'
        altaddress_state:
          description: state or province of patron's alternate address
          type:
          - string
          - 'null'
        altaddress_street_number:
          description: street number of patron's alternate address
          type:
          - string
          - 'null'
        altaddress_street_type:
          description: street type of patron's alternate address
          type:
          - string
          - 'null'
        altcontact_address:
          description: the first address line for the alternate contact for the patron
          type:
          - string
          - 'null'
        altcontact_address2:
          description: the second address line for the alternate contact for the patron
          type:
          - string
          - 'null'
        altcontact_city:
          description: the city for the alternate contact for the patron
          type:
          - string
          - 'null'
        altcontact_country:
          description: the country for the alternate contact for the patron
          type:
          - string
          - 'null'
        altcontact_firstname:
          description: first name of alternate contact for the patron
          type:
          - string
          - 'null'
        altcontact_phone:
          description: the phone number for the alternate contact for the patron
          type:
          - string
          - 'null'
        altcontact_postal_code:
          description: the zipcode for the alternate contact for the patron
          type:
          - string
          - 'null'
        altcontact_state:
          description: the state for the alternate contact for the patron
          type:
          - string
          - 'null'
        altcontact_surname:
          description: surname or last name of the alternate contact for the patron
          type:
          - string
          - 'null'
        anonymized:
          description: If the patron has been anonymized
          readOnly: true
          type: boolean
        autorenew_checkouts:
          description: indicate whether auto-renewal is allowed for patron
          type: boolean
        cardnumber:
          description: library assigned user identifier
          type:
          - string
          - 'null'
        category_id:
          description: Internal identifier for the patron's category
          type: string
        check_previous_checkout:
          description: produce a warning for this patron if this item has previously been checked out to this patron if 'yes', not if 'no', defer to category setting if 'inherit'
          type: string
        checkouts_count:
          description: Number of checkouts
          type:
          - integer
          - 'null'
        city:
          description: city or town of patron's primary address
          type:
          - string
          - 'null'
        country:
          description: country of patron's primary address
          type:
          - string
          - 'null'
        date_enrolled:
          description: date the patron was added to Koha
          format: date
          type:
          - string
          - 'null'
        date_of_birth:
          description: patron's date of birth
          format: date
          type:
          - string
          - 'null'
        date_renewed:
          description: date the patron's card was last renewed
          format: date
          type:
          - string
          - 'null'
        email:
          description: primary email address for patron's primary address
          type:
          - string
          - 'null'
        expiry_date:
          description: date the patron's card is set to expire
          format: date
          type:
          - string
          - 'null'
        extended_attributes:
          description: patron's extended attributes
          items:
            $ref: '#/components/schemas/patron_extended_attribute_yaml'
          type: array
        fax:
          description: fax number for patron's primary address
          type:
          - string
          - 'null'
        firstname:
          description: patron's first name
          type:
          - string
          - 'null'
        gender:
          description: patron's gender
          type:
          - string
          - 'null'
        incorrect_address:
          description: set to 1 if library marked this patron as having an unconfirmed address
          type:
          - boolean
          - 'null'
        initials:
          description: initials of the patron
          type:
          - string
          - 'null'
        lang:
          description: lang to use to send notices to this patron
          type: string
        last_seen:
          description: last time a patron has been seen (connected at the OPAC or staff interface)
          format: date-time
          type:
          - string
          - 'null'
        library:
          description: Library of the patron
          type:
          - object
          - 'null'
        library_id:
          description: Internal identifier for the patron's home library
          type: string
        login_attempts:
          description: number of failed login attemps
          type:
          - integer
          - 'null'
        middle_name:
          description: patron's middle name
          type:
          - string
          - 'null'
        mobile:
          description: the other phone number for patron's primary address
          type:
          - string
          - 'null'
        opac_notes:
          description: a note on the patron's account visible in OPAC and staff interface
          type:
          - string
          - 'null'
        other_name:
          description: any other names associated with the patron
          type:
          - string
          - 'null'
        overdrive_auth_token:
          description: persist OverDrive auth token
          type:
          - string
          - 'null'
        overdues_count:
          description: Number of overdued checkouts
          type:
          - integer
          - 'null'
        patron_card_lost:
          description: set to 1 if library marked this patron as having lost his card
          type:
          - boolean
          - 'null'
        patron_id:
          description: Internal patron identifier
          type: integer
        phone:
          description: primary phone number for patron's primary address
          type:
          - string
          - 'null'
        postal_code:
          description: zip or postal code of patron's primary address
          type:
          - string
          - 'null'
        privacy:
          description: patron's privacy settings related to their checkout history
          type: integer
        privacy_guarantor_checkouts:
          description: controls if relatives can see this patron's checkouts
          type: integer
        privacy_guarantor_fines:
          description: controls if relatives can see this patron's fines
          type: boolean
        pronouns:
          description: pronouns of the patron
          type:
          - string
          - 'null'
        protected:
          description: Protected status of the patron
          type:
          - boolean
        relationship_type:
          description: used for children to include the relationship to their guarantor
          type:
          - string
          - 'null'
        restricted:
          description: If any restriction applies to the patron
          readOnly: true
          type: boolean
        secondary_email:
          description: secondary email address for patron's primary address
          type:
          - string
          - 'null'
        secondary_phone:
          description: secondary phone number for patron's primary address
          type:
          - string
          - 'null'
        sms_number:
          description: the mobile phone number where the patron would like to receive notices (if SMS turned on)
          type:
          - string
          - 'null'
        sms_provider_id:
          description: the provider of the mobile phone number defined in smsalertnumber
          type:
          - integer
          - 'null'
        staff_notes:
          description: a note on the patron's account
          type:
          - string
          - 'null'
        state:
          description: state or province of patron's primary address
          type:
          - string
          - 'null'
        statistics_1:
          description: a field that can be used for any information unique to the library
          type:
          - string
          - 'null'
        statistics_2:
          description: a field that can be used for any information unique to the library
          type:
          - string
          - 'null'
        street_number:
          description: street number of patron's primary address
          type:
          - string
          - 'null'
        street_type:
          description: street type of patron's primary address
          type:
          - string
          - 'null'
        surname:
          description: patron's last name
          type:
          - string
          - 'null'
        title:
          description: patron's title
          type:
          - string
          - 'null'
        updated_on:
          description: time of last change could be useful for synchronization with external systems (among others)
          format: date-time
          type: string
        userid:
          description: patron's login
          type:
          - string
          - 'null'
      required:
      - surname
      - library_id
      - category_id
      type: object
    patron_extended_attribute_yaml:
      additionalProperties: false
      properties:
        extended_attribute_id:
          description: Internal ID for the extended attribute
          type: integer
        type:
          description: Extended attribute type
          type: string
        value:
          description: Extended attribute value
          type:
          - string
          - 'null'
      required:
      - type
      - value
      type: object
    fund_yaml:
      additionalProperties: false
      properties:
        budget_id:
          description: Internal identifier for the budget
          type:
          - number
          - 'null'
        code:
          description: Code assigned to the fund by the user
          type:
          - string
          - 'null'
        fund_access:
          description: 'Level of permission for this fund (1: owner, 2: owner, users and library, 3: owner and users)'
          type:
          - number
          - 'null'
        fund_id:
          description: internally assigned fund identifier
          readOnly: true
          type: integer
        fund_owner_id:
          description: Internal identifier for the fund owner
          type:
          - number
          - 'null'
        library_id:
          description: Internal identifier for the library that this fund belongs to
          type:
          - string
          - 'null'
        name:
          description: Name assigned to the fund by the user
          type:
          - string
          - 'null'
        notes:
          description: Notes related to this fund
          type:
          - string
          - 'null'
        parent_fund_id:
          description: Internal identifier for parent fund
          type:
          - integer
          - 'null'
        statistic1_auth_value_category:
          description: Statistical category for this fund
          type:
          - string
          - 'null'
        statistic2_auth_value_category:
          description: Second statistical category for this fund
          type:
          - string
          - 'null'
        timestamp:
          description: Timestamp
          format: date-time
          type:
          - string
        total_amount:
          description: Total amount for this fund
          type:
          - number
          - 'null'
        warn_at_amount:
          description: Warning at amount
          type:
          - number
          - 'null'
        warn_at_percentage:
          description: Warning at percentage
          type:
          - number
          - 'null'
      required:
      - name
      type: object
    DefaultResponse:
      properties:
        errors:
          items:
            properties:
              message:
                type: string
              path:
                type: string
            required:
            - message
            type: object
          type: array
      required:
      - errors
      type: object