Versions Compared

Key

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

...

Code Block
languagejson
{
  items: [
    {
      "isbn": "9782123456789",
      "period": "2021-05",
      "productOwnerId": "9999",
      "productOwnerName": "Example name",
      "cost": {
        "totalCost": "600",
        "paidCost": "450",
        "trialCost": "150"
      },
      "consumption": {
        "total": "30",
        "paid": "15",
        "trial": "15"
      },
      "price": {
        "ppu": "20",
        "paidPpu": "30",
        "trialPpu": "10"
      },
      "currency": "NOK",
      "market": "NO"
    }
  ], ...
}

 

Confluence open api
docExpansionfull
defaultModelRenderingmodel
filter/loan/tibi/v1
operationsSortermethod
tagsSorteralpha
showExtensionstrue
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:
  /rental/v1:
    post:
      summary: POST rental report
      operationId: createRentalReport
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RentalReport'
        required: true
      responses:
        '204':
          description: Successfully created
        '400':
          description: Bad Request
  /streaming/v1:
    post:
      summary: POST streaming report
      operationId: postStreamingData
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StreamingReport'
        required: true
      responses:
        '204':
          description: Successfully registered streaming report
        '400':
          description: Bad Request
  /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'

components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
  schemas:
    RentalReport:
      type: object
      required:
        - period
        - items
      properties:
        period:
          type: object
          required:
            - year
            - month
          properties:
            year:
              type: integer
              example: 2023
            month:
              type: integer
              minimum: 1
              maximum: 12
              example: 8
        items:
          type: array
          x-field-extra-annotation: "@lombok.Builder.Default"
          minItems: 1
          items:
            $ref: '#/components/schemas/RentalItem'
    RentalItem:
      type: object
      required:
        - isbn
        - number
        - pricePrItem
        - sum
        - net
      properties:
        isbn:
          type: string
          example: "9788252119695"
        number:
          type: integer
          example: 10
        pricePrItem:
          type: number
          example: 99.99
        sum:
          type: number
          example: 999.9
        net:
          type: number
          example: 949.99
    StreamingReport:
      type: object
      required:
        - items
      properties:
        items:
          type: array
          x-field-extra-annotation: "@lombok.Builder.Default"
          minItems: 1
          items:
            $ref: '#/components/schemas/StreamingItem'
        reportId:
          type: string
          format: uuid
          description: "Used to write over existing streaming report"
    StreamingItem:
      type: object
      required:
        - isbn
        - periodFrom
        - periodTo
        - productOwnerId
        - cost
        - consumption
      properties:
        isbn:
          type: string
          example: "9782123456789"
          description: ISBN of the book you are reporting numbers for
        periodFrom:
          type: string
          format: year-month
          description: Start of the reporting period on the format yyyy-MM
          example: "2024-05"
        periodTo:
          type: string
          format: year-month
          description: End of the reporting period on the format yyyy-MM
          example: "2024-06"
        productOwnerId:
          type: string
          example: "9999"
          description: Numeric ID of the publisher who owned the rights to the book during the reporting period
        cost:
          $ref: '#/components/schemas/StreamingCost'
        consumption:
          $ref: '#/components/schemas/StreamingConsumption'
        price:
          $ref: '#/components/schemas/StreamingPricePerUnit'
        productOwnerName:
          type: string
          example: "Bokbasen AS"
          description: Name of the publisher who owned the rights to the book during the reporting period
        currency:
          type: string
          example: "NOK"
          description: The currency of the cost/ppu-fields
        market:
          type: string
          example: "NO"
          description: The market you are reporting for
    StreamingCost:
      type: object
      required:
        - totalCost
      properties:
        totalCost:
          type: string
          example: "600"
          description: The total cost that will be billed for this ISBN
        paidCost:
          type: string
          example: "450"
          description: Can be sent in addition to totalCost if you separate between trial and subscription
        trialCost:
          type: string
          example: "150"
          description: Can be sent in addition to totalCost if you separate between trial and subscription
    StreamingConsumption:
      type: object
      required:
        - total
      properties:
        total:
          type: string
          example: "30"
          description: The total amount of books read
        paid:
          type: string
          example: "15"
          description: Can be sent in addition to total if you separate between trial and subscription
        trial:
          type: string
          example: "15"
          description: Can be sent in addition to total if you separate between trial and subscription
    StreamingPricePerUnit:
      type: object
      properties:
        ppu:
          type: string
          example: "20"
          description: The price per book read (price per unit)
        paidPpu:
          type: string
          example: "30"
          description: Can be sent in addition to ppu if you separate between trial and subscription
        trialPpu:
          type: string
          example: "10"
          description: Can be sent in addition to ppu if you separate between trial and subscription
    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: [ ]