Indian Institute of Technology Kanpur erm_usage_data_providers API

Manage ERM usage data providers

OpenAPI Specification

iit-kanpur-erm-usage-data-providers-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 erm_usage_data_providers API
  version: '1'
servers:
- url: https://libserv.iitk.ac.in/api/v1
  description: PKK Library Koha REST API (production)
tags:
- description: 'Manage ERM usage data providers

    '
  name: erm_usage_data_providers
  x-displayName: ERM usage data providers
paths:
  /erm/usage_data_providers:
    get:
      tags:
      - erm_usage_data_providers
      summary: List usage_data_providers
      operationId: listErmUsageDataProviders
      parameters:
      - name: usage_data_provider_id
        in: query
        required: false
        description: Case insensitive search on usage_data_provider usage_data_provider_id
        schema:
          type: integer
      - name: name
        in: query
        required: false
        description: Case insensitive search on usage_data_provider name
        schema:
          type: string
      - name: description
        in: query
        required: false
        description: Case insensitive search on usage_data_provider description
        schema:
          type: string
      - name: active
        in: query
        required: false
        description: Case insensitive search on usage_data_provider active
        schema:
          type: integer
      - name: method
        in: query
        required: false
        description: Case insensitive search on usage_data_provider method
        schema:
          type: string
      - name: aggregator
        in: query
        required: false
        description: Case insensitive search on usage_data_provider aggregator
        schema:
          type: string
      - name: service_type
        in: query
        required: false
        description: Case insensitive search on usage_data_provider service_type
        schema:
          type: string
      - name: service_url
        in: query
        required: false
        description: Case insensitive search on usage_data_provider service_url
        schema:
          type: string
      - name: report_release
        in: query
        required: false
        description: Case insensitive search on usage_data_provider report_release
        schema:
          type: string
      - name: customer_id
        in: query
        required: false
        description: Case insensitive search on usage_data_provider customer_id
        schema:
          type: string
      - name: requestor_id
        in: query
        required: false
        description: Case insensitive search on usage_data_provider requestor_id
        schema:
          type: string
      - name: api_key
        in: query
        required: false
        description: Case insensitive search on usage_data_provider api_key
        schema:
          type: string
      - name: requestor_name
        in: query
        required: false
        description: Case insensitive search on usage_data_provider requestor_name
        schema:
          type: string
      - name: requestor_email
        in: query
        required: false
        description: Case insensitive search on usage_data_provider requestor_email
        schema:
          type: string
      - name: report_types
        in: query
        required: false
        description: Case insensitive search on usage_data_provider report_types
        schema:
          type: string
      - name: x-koha-embed
        in: header
        required: false
        description: Embed list sent as a request header
        schema:
          type: array
          items:
            enum:
            - counter_files
            type: string
      - 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
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
        description: Query filter sent through request"s body
      responses:
        '200':
          description: A list of usage_data_providers
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/erm_usage_data_provider_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'
    post:
      tags:
      - erm_usage_data_providers
      summary: Add usage_data_provider
      operationId: addErmUsageDataProviders
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/erm_usage_data_provider_yaml'
        description: A JSON object containing information about the new usage_data_provider
      responses:
        '201':
          description: A successfully created usage_data_provider
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/erm_usage_data_provider_yaml'
        '400':
          description: Bad request
          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: Ressource not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_yaml'
        '409':
          description: Conflict in creating resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_yaml'
        '413':
          description: Payload too large
          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'
  /erm/usage_data_providers/{erm_usage_data_provider_id}:
    delete:
      tags:
      - erm_usage_data_providers
      summary: Delete usage_data_provider
      operationId: deleteERMUsageDataProviders
      parameters:
      - name: erm_usage_data_provider_id
        in: path
        required: true
        description: ERM usage_data_provider internal identifier
        schema:
          type: integer
      responses:
        '204':
          description: usage_data_provider deleted
        '400':
          description: Bad request
          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: ressource not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_yaml'
        '409':
          description: conflict in deleting resource
          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'
    get:
      tags:
      - erm_usage_data_providers
      summary: get usage_data_provider
      operationId: getERMUsageDataProvider
      parameters:
      - name: erm_usage_data_provider_id
        in: path
        required: true
        description: ERM usage_data_provider internal identifier
        schema:
          type: integer
      - name: x-koha-embed
        in: header
        required: false
        description: Embed list sent as a request header
        schema:
          type: array
          items:
            enum:
            - counter_files
            - erm_usage_titles.erm_usage_muses
            type: string
      responses:
        '200':
          description: usage_data_provider
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/erm_usage_data_provider_yaml'
        '400':
          description: Bad request
          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: ressource 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'
    put:
      tags:
      - erm_usage_data_providers
      summary: update usage_data_provider
      operationId: updateERMUsageDataProviders
      parameters:
      - name: erm_usage_data_provider_id
        in: path
        required: true
        description: ERM usage_data_provider internal identifier
        schema:
          type: integer
      - name: x-koha-embed
        in: header
        required: false
        description: Embed list sent as a request header
        schema:
          type: array
          items:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/erm_usage_data_provider_yaml'
        description: a json object containing new information about existing usage_data_provider
      responses:
        '200':
          description: a successfully updated usage_data_provider
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/erm_usage_data_provider_yaml'
        '400':
          description: Bad request
          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: ressource not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_yaml'
        '409':
          description: conflict in updating resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_yaml'
        '413':
          description: Payload too large
          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'
  /erm/usage_data_providers/{erm_usage_data_provider_id}/process_COUNTER_file:
    post:
      tags:
      - erm_usage_data_providers
      summary: Process COUNTER file upload for this data provider's harvester
      operationId: processCOUNTERFileUsageDataProviderHarvester
      parameters:
      - name: erm_usage_data_provider_id
        in: path
        required: true
        description: ERM usage_data_provider internal identifier
        schema:
          type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/erm_counter_file_yaml'
        description: A JSON object containing information about the new counter_file
      responses:
        '200':
          description: Successful COUNTER file processing
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/erm_usage_data_provider_yaml'
        '400':
          description: Bad request
          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'
        '413':
          description: Payload too large
          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'
  /erm/usage_data_providers/{erm_usage_data_provider_id}/process_SUSHI_response:
    post:
      tags:
      - erm_usage_data_providers
      summary: Process SUSHI COUNTER for this data provider's harvester
      operationId: processSUSHICounterUsageDataProviderHarvester
      parameters:
      - name: erm_usage_data_provider_id
        in: path
        required: true
        description: ERM usage_data_provider internal identifier
        schema:
          type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              additionalProperties: false
              properties:
                begin_date:
                  description: begin date of the harvest
                  format: date
                  type: string
                end_date:
                  description: end date of the harvest
                  format: date
                  type: string
              type: object
        description: A JSON object with the begin and end dates
      responses:
        '200':
          description: Successful SUSHI COUNTER processing
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/erm_usage_data_provider_yaml'
        '400':
          description: Bad request
          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'
  /erm/usage_data_providers/{erm_usage_data_provider_id}/test_connection:
    get:
      tags:
      - erm_usage_data_providers
      summary: Test this data provider's harvester
      operationId: testUsageDataProviderHarvester
      parameters:
      - name: erm_usage_data_provider_id
        in: path
        required: true
        description: ERM usage_data_provider internal identifier
        schema:
          type: integer
      responses:
        '200':
          description: Successful connection test
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/erm_usage_data_provider_yaml'
        '400':
          description: Bad request
          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:
    erm_usage_platform_yaml:
      additionalProperties: false
      properties:
        erm_usage_muses:
          description: usage mus
          items:
            $ref: '#/components/schemas/erm_usage_mus_yaml'
          type: array
        erm_usage_yuses:
          description: usage yus
          items:
            $ref: '#/components/schemas/erm_usage_yus_yaml'
          type: array
        platform:
          description: title of the platform
          type:
          - string
          - 'null'
        platform_id:
          description: internally assigned platform identifier
          readOnly: true
          type: integer
        usage_data_provider_id:
          description: usage_data_provider the platform is harvested by
          type: integer
      required:
      - platform
      - usage_data_provider_id
      type: object
    error_yaml:
      additionalProperties: true
      properties:
        error:
          description: Error message
          type: string
        error_code:
          description: Error code
          type: string
      type: object
    erm_usage_mus_yaml:
      additionalProperties: false
      properties:
        access_type:
          description: access type of the monthly usage summary
          type:
          - string
          - 'null'
        database_id:
          description: database_id of the monthly usage summary
          type:
          - integer
          - 'null'
        item_id:
          description: item_id of the monthly usage summary
          type:
          - integer
          - 'null'
        metric_type:
          description: metric type of the monthly usage summary
          type:
          - string
          - 'null'
        month:
          description: month of the monthly usage summary
          type:
          - integer
          - 'null'
        monthly_usage_summary_id:
          description: internally assigned monthly usage summary identifier
          readOnly: true
          type: integer
        platform_id:
          description: platform_id of the monthly usage summary
          type:
          - integer
          - 'null'
        report_type:
          description: report type of the monthly usage summary
          type:
          - string
          - 'null'
        title_id:
          description: title_id of the monthly usage summary
          type:
          - integer
          - 'null'
        usage_count:
          description: total count of the monthly usage summary
          type:
          - integer
          - 'null'
        usage_data_provider_id:
          description: usage_data_provider_id of the monthly usage summary
          type:
          - integer
          - 'null'
        year:
          description: year of the monthly usage summary
          type:
          - integer
          - 'null'
        yop:
          description: year of publication of the monthly usage summary
          type:
          - string
          - 'null'
      required:
      - title_id
      - usage_data_provider_id
      type: object
    erm_usage_database_yaml:
      additionalProperties: false
      properties:
        database:
          description: name of the database
          type:
          - string
      

# --- truncated at 32 KB (44 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/iit-kanpur/refs/heads/main/openapi/iit-kanpur-erm-usage-data-providers-api-openapi.yml