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 - 'null' database_id: description: internally assigned database identifier readOnly: true type: integer 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: name of the platform type: - string - 'null' publisher: description: publisher of the database data type: - string - 'null' publisher_id: description: publisher_id of the database data type: - string - 'null' usage_data_provider_id: description: usage_data_provider the database is harvested by type: integer required: - database - usage_data_provider_id type: object erm_usage_item_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 item: description: item of the item type: - string - 'null' item_id: description: internally assigned item identifier readOnly: true type: integer platform: description: name of the platform type: - string - 'null' publisher: description: publisher of the item data type: - string - 'null' usage_data_provider_id: description: usage_data_provider the item is harvested by type: integer required: - item - usage_data_provider_id type: object erm_counter_file_yaml: additionalProperties: false properties: counter_logs: description: counter logs items: $ref: '#/components/schemas/erm_counter_log_yaml' type: array date_uploaded: description: Timestamp for the date of upload format: date-time type: string erm_counter_files_id: description: internally assigned counter_files identifier readOnly: true type: integer file_content: description: file_content type: string filename: description: filename type: string type: description: type of the counter_files type: - string - 'null' usage_data_provider_id: description: usage_data_provider_id of the counter_files type: integer required: - usage_data_provider_id - filename - file_content type: object erm_counter_log_yaml: additionalProperties: false properties: borrowernumber: description: borrowernumber of the counter_log type: - integer - 'null' counter_files_id: description: counter_files_id of the counter_log type: - integer - 'null' erm_counter_log_id: description: internally assigned counter_log identifier readOnly: true type: integer filename: description: filename of the counter_file type: - string - 'null' importdate: description: Timestamp for the date of upload format: date-time type: string logdetails: description: logdetails of the counter_log type: - string - 'null' usage_data_provider_id: description: logdetails of the counter_log type: - integer - 'null' required: - filename - borrowernumber - counter_files_id type: object erm_usage_yus_yaml: additionalProperties: false properties: access_type: description: access type of the yearly usage summary type: - string - 'null' database_id: description: database_id of the yearly usage summary type: - integer - 'null' item_id: description: item_id of the yearly usage summary type: - integer - 'null' metric_type: description: metric type of the yearly usage summary type: - string - 'null' platform_id: description: platform_id of the yearly usage summary type: - integer - 'null' report_type: description: report type of the yearly usage summary type: - string - 'null' title_id: description: title_id of the yearly usage summary type: - integer - 'null' totalcount: description: total count of the yearly usage summary type: - integer - 'null' usage_data_provider_id: description: usage_data_provider_id of the yearly usage summary type: - integer - 'null' year: description: year of the yearly usage summary type: - integer - 'null' yearly_usage_summary_id: description: internally assigned yearly usage summary identifier readOnly: true type: integer yop: description: year of publication of the yearly usage summary type: - string - 'null' required: - title_id - usage_data_provider_id type: object erm_usage_data_provider_yaml: additionalProperties: false properties: active: description: status of the harvester type: - integer - 'null' aggregator: description: aggregator of the harvester type: - string - 'null' api_key: description: api_key of the harvester type: - string - 'null' counter_files: description: counter files items: $ref: '#/components/schemas/erm_counter_file_yaml' type: array customer_id: description: customer_id of the harvester type: - string - 'null' description: description: description of the data provider type: - string - 'null' earliest_database: description: time period of data harvested type: - string - 'null' earliest_item: description: time period of data harvested type: - string - 'null' earliest_platform: description: time period of data harvested type: - string - 'null' earliest_title: description: time period of data harvested type: - string - 'null' erm_usage_data_provider_id: description: internally assigned data provider identifier readOnly: true type: integer erm_usage_databases: description: usage databases items: $ref: '#/components/schemas/erm_usage_database_yaml' type: array erm_usage_items: description: usage items items: $ref: '#/components/schemas/erm_usage_item_yaml' type: array erm_usage_platforms: description: usage platforms items: $ref: '#/components/schemas/erm_usage_platform_yaml' type: array erm_usage_titles: description: usage titles items: $ref: '#/components/schemas/erm_usage_title_yaml' type: array last_run: description: last time the harvester was run type: - string - 'null' latest_database: description: time period of data harvested type: - string - 'null' latest_item: description: time period of data harvested type: - string - 'null' latest_platform: description: time period of data harvested type: - string - 'null' latest_title: description: time period of data harvested type: - string - 'null' method: description: method of the harvester type: - string - 'null' metric_type: description: metric type of the harvester when reporting type: - string - 'null' name: description: name of the data provider type: string report_release: description: report_release of the harvester type: - string - 'null' report_types: description: report types of the harvester type: - string - 'null' requestor_email: description: requestor_email of the harvester type: - string - 'null' requestor_id: description: requestor_id of the harvester type: - string - 'null' requestor_name: description: requestor_name of the harvester type: - string - 'null' service_type: description: service_type of the harvester type: - string - 'null' service_url: description: service_url of the harvester type: - string - 'null' required: - name - customer_id - requestor_id - service_url - report_release type: object DefaultResponse: properties: errors: items: properties: message: type: string path: type: string required: - message type: object type: array required: - errors type: object erm_usage_title_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 isbn: description: isbn of the title type: - string - 'null' metric_type: description: metric_type of the title data type: - string - 'null' online_issn: description: online_issn number of the title type: - string - 'null' platform: description: platform of the title type: - string - 'null' print_issn: description: print_issn number of the title type: - string - 'null' proprietary_id: description: proprietary_id of the title type: - string - 'null' provider_name: description: provider_name of the title type: - string - 'null' publisher: description: publisher of the title data type: - string - 'null' publisher_id: description: publisher_id of the title data type: - string - 'null' title: description: title of the title type: - string - 'null' title_doi: description: doi number of the title type: - string - 'null' title_id: description: internally assigned title identifier readOnly: true type: integer title_uri: description: title_uri number of the title type: - string - 'null' usage_data_provider_id: description: usage_data_provider the title is harvested by type: integer required: - title - usage_data_provider_id type: object