Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • Single point of reporting. Bokbasen will distribute reports to all relevant product owners (publisher) to be used for invoicing the subscription service and calculation of royalty to authors, etc.

  • The report should only include reads above the threshold (i.e 10%), as agreed upon with the publisher.

  • All data within a reporting period must be delivered simultaneously.

  •  If a product changes product owner within a reporting period, the product must be reported twice (one time on each owner) 

  • Frequency as agreed upon with the publisher, but should not include partial months, making a month the shortest reporting period possible.

Info

...

 For information about authentication see Authentication Service

URL

https://api.bokbasen.io/reporting/loan/tibi/v1

Method

POST

Request headers

Authorization

Required

The token acquired from the Authentication Service

Audience: https://api.bokbasen.io/reporting/

JSON attributes

(for each item in items)

isbn

Required

ISBN of the book you are reporting numbers for, mandatory

periodFrom

Required

Start of the reporting period on the format yyyy-MM

periodTo

Required

End of the reporting period on the format yyyy-MM

productOwnerId

Required

Numeric ID of the publisher who owned the rights to the book during the reporting period

productOwnerName

Optional

Name of the publisher who owned the rights to the book during the reporting period

cost.totalCost

Required

The total cost that will be billed for this ISBN

cost.paidCost

Optional

Can be sent in addition to cost.totalCost if you separate between trial and subscription

cost.trialCost

consumption.total

Required

The total amount of books read

consumption.paid

Optional

Can be sent in addition to consumption.total if you separate between trial and subscription

consumption.trial

price.ppu

Optional

The price per book read (price per unit)

price.paidPpu

Optional

Can be sent in addition to price.ppu if you separate between trial and subscription

price.trialPpu

currency

Optional

The currency of the cost/ppu-fields

market

Optional

The market you are reporting for

Response headers

Response body

Empty on success

Returns

204

No success

40x

On errors

413

Status
colourGreen
titlenew

If payload is too big (6MB limit)

...

Confluence open api
docExpansionfull
operationsSortermethod
showCommonExtensionstrue
tagsSorteralpha
openapi: 3.0.3
info:
  title: Reporting API Specification
  description: Reporting API Specification. All operations requires Bearer token from login-process. For more information, please visit https://bokbasen.jira.com/wiki/spaces/api/pages/2994962433/Authentication+Service+upcoming
  version: 1.0.0

servers:
  - url: 'https://api.bokbasen.io/reporting'

paths:
  
  /loan/tibi/v1:
      post:
        summary: POST TIBI loan report
        operationId: postTibiLoanReport
        requestBody:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TibiLoanReport'
          required: true
        responses:
          201:
            description: Successfully registered streaming report
            content:
              application/json:
                schema:
                  $ref: '#/components/schemas/LoanReportResponse'
          400:
            $ref: '#/components/responses/BadRequest'
          413:
            description: Payload is to large. 10 MB limit. 

components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
  schemas:
    
    LoanReportResponse:
      type: object
      required:
      - id
      properties:
        id:
          type: string
          format: uuid
          description: The report ID.
    TibiLoanReport:
      type: object
      required:
      - reportInfo
      - items
      properties:
        reportInfo:
          type: object
          required:
          - period
          properties:
            id:
              type: string
              format: uuid
              description: Report id in UUID format. Can be used to update a reports content. Must exist if used.
              example: "feeada9c-af12-4733-86fe-4b60fa70b669"
            period:
              type: string
              format: year-month
              description: The period the report is for in the YYYY-mm format
              example: 2024-05
        items:
          type: array
          x-field-extra-annotation: "@lombok.Builder.Default"
          items:
            $ref: '#/components/schemas/TibiItem'
    TibiItem:
      type: object
      required:
      - ean
      - count
      - libraryUnit
      - adaptedVersion
      properties:
        ean:
          type: string
          example: "9782123456789"
          description: EAN of the original book you are reporting numbers for
        count:
          type: integer
          example: "55"
          description: The number of loans of the ean in the given period
        libraryUnit:
          type: string
          description: The library where the loan happened
          example: "NLB"
        adaptedVersion:
          $ref: '#/components/schemas/TibiAdaptedVersionInfo'
    TibiAdaptedVersionInfo:
      type: object
      required:
      - format
      - availableDate
      - audioContent
      - textContent
      - brailleContent
      - speechSynthesis
      properties:
        reference:
          type: string
          description: Internal reference to product. Eg. booknumber.
          example: "686512"
        format:
          type: string
          description: The format of the edition
          example: "DAISY2.0"
        availableDate:
          type: string
          format: date
          description: The date the adapted version was ready for loan
          example: "2024-09-01"
        ean:
          type: string
          description: The ean of the adapted book version if any
          example: "9876543212345"
        audioContent:
          type: boolean
          description: True if the adapted version contains audio content
          example: true
        textContent:
          type: boolean
          description: True if the adapted version contains text content
          example: true
        brailleContent:
          type: boolean
          description: True if the adapted version contains braille content
          example: true
        speechSynthesis:
          type: boolean
          description: True if the adapted version contains speech synthesis
          example: true
    ProblemDetail:
      title: An RFC 9457 problem object
      type: object
      properties:
        type:
          type: string
          format: uri-reference
        title:
          type: string
        status:
          type: integer
          description: HTTP status code
          minimum: 100
          maximum: 599
        detail:
          type: string
          description: A human-readable explanation specific to this occurrence of the problem.
  responses:
    BadRequest:
      description: Bad Request
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ProblemDetail'
security:
  - bearerAuth: [ ]