Aibidia Public OTP Management API

The deliberately-public integration surface of Aibidia's OTP Management solution. It accepts automated multi-level segmentation data injections for a given year, month and Extract Type, and returns the configuration and current upload status of the extracts bound to the calling API key. Authentication is an X-DATAINGESTION-API-KEY request header issued per Extract Type; errors are returned as RFC 7807 ProblemDetails. The published document is served by the provider at https://otpm-api.aibidia.com/swagger/public/swagger.json and is titled "Public OTP Management API".

Operations 2

POST /api/datainjections/automated Automated data injection (Multi-Level Segmentation)
GET /api/extract-types/integration Get integration data for a specific Extract Type

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/aibidia-public-otp-management-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

aibidia-otp-management-public-openapi.yml Raw ↑
openapi: 3.1.1
info:
  title: Public OTP Management API
  version: public
servers:
- url: https://otpm-api.aibidia.com
paths:
  /api/datainjections/automated:
    post:
      tags:
      - DataInjections
      summary: Automated data injection (Multi-Level Segmentation)
      description: 'Uploads data for a specific year, month, and Extract Type.


        **Special Requirements:**

        - **Consecutive Order**: Pages must be sent in consecutive order.

        - **Page Size**: Max 5000 items per page.

        - **Total Pages**: Max 2000 pages.

        - **Rate Limit**: Recommended 1 request per second.

        - **Failure Recovery**: If a request fails, restart from `currentPage: 0`.'
      requestBody:
        content:
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/InputAutomatedMultiLevelSegmentationInjectionDto'
          text/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/InputAutomatedMultiLevelSegmentationInjectionDto'
          application/*+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/InputAutomatedMultiLevelSegmentationInjectionDto'
        required: true
      responses:
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '200':
          description: OK
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/AutomatedDataInjectionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/AutomatedDataInjectionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/AutomatedDataInjectionResponse'
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: Forbidden
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '500':
          description: Internal Server Error
  /api/extract-types/integration:
    get:
      tags:
      - ExtractTypes
      summary: Get integration data for a specific Extract Type
      description: Retrieves the configuration and current status of extracts for the Extract Type associated with
        the provided API key.
      responses:
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '200':
          description: OK
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExtractTypeIntegrationDto'
            application/json:
              schema:
                $ref: '#/components/schemas/ExtractTypeIntegrationDto'
            text/json:
              schema:
                $ref: '#/components/schemas/ExtractTypeIntegrationDto'
components:
  schemas:
    AutomatedDataInjectionResponse:
      required:
      - extractId
      type: object
      properties:
        extractId:
          type: integer
          format: int32
      additionalProperties: false
    ExtractIntegrationDto:
      required:
      - id
      - month
      - name
      - reportingYear
      - uploadState
      - validationStatus
      type: object
      properties:
        id:
          type: integer
          format: int32
        name:
          type: string
        reportingYear:
          type: string
        month:
          allOf:
          - $ref: '#/components/schemas/Month'
        uploadState:
          allOf:
          - $ref: '#/components/schemas/ExtractUploadState'
        validationStatus:
          allOf:
          - $ref: '#/components/schemas/ExtractValidationCalculationStatus'
      additionalProperties: false
    ExtractTypeColumn:
      enum:
      - AccountId
      - AccountDescription
      - CompanyId
      - CounterpartyId
      - GroupValue
      - LocalValue
      - TaxJurisdiction
      - Division
      - BusinessUnit
      - FunctionalArea
      - Department
      - ProfitCenter
      - CostCenter
      - ProductLevel1
      - ProductLevel2
      - ProductLevel3
      - ProductLevel4
      - ProductLevel5
      - ProjectCode
      - BillingDocument
      - BillingType
      - DocumentCurrency
      - TpRequestNumber
      - ContractNumber
      - BillingDate
      - Incoterms
      - NetValueBillingDocument
      - SoldToParty
      - SoldToPartyName
      - DestinationCountry
      - BillingItem
      - NetValueBillingItem
      - MaterialCode
      - MaterialDescription
      - Description
      - FobPrice
      - TpInSellCurrency
      - SapTpPrice
      - TpBaseCost
      - MarkupPercentage
      - MarkupAmount
      - TransferPriceMethod
      - OtherCosts
      - TotalTpCost
      - Period
      - Quantity
      - UnitOfMeasure
      - UnitPrice
      type: string
    ExtractTypeIntegrationColumnMappingDto:
      required:
      - callbackColumnName
      - columnType
      - defaultMaxLength
      - displayName
      - extractTypeColumn
      - id
      - isAlwaysRequired
      - labelName
      - originalName
      - requiredOnlyIfTheseColsAreNull
      type: object
      properties:
        id:
          type: integer
          format: int32
        originalName:
          type: string
        extractTypeColumn:
          allOf:
          - $ref: '#/components/schemas/ExtractTypeColumn'
        labelName:
          type:
          - 'null'
          - string
        callbackColumnName:
          type: string
        columnType:
          type: string
        isAlwaysRequired:
          type: boolean
        defaultMaxLength:
          type: integer
          format: int32
        requiredOnlyIfTheseColsAreNull:
          type:
          - 'null'
          - array
          items:
            type: string
        displayName:
          type: string
      additionalProperties: false
    ExtractTypeIntegrationDto:
      required:
      - columnMappings
      - extracts
      - id
      - name
      type: object
      properties:
        id:
          type: integer
          format: int32
        name:
          type: string
        columnMappings:
          type: array
          items:
            $ref: '#/components/schemas/ExtractTypeIntegrationColumnMappingDto'
        extracts:
          type: array
          items:
            $ref: '#/components/schemas/ExtractIntegrationDto'
      additionalProperties: false
    ExtractUploadState:
      enum:
      - Created
      - Initiated
      - Completed
      - Failed
      type: string
    ExtractValidationCalculationStatus:
      enum:
      - Created
      - Pending
      - Processing
      - Completed
      - Failed
      type: string
    InputAutomatedMultiLevelSegmentationInjectionDto:
      required:
      - currentPage
      - data
      - month
      - pages
      - year
      type: object
      properties:
        pages:
          maximum: 2000
          minimum: 1
          type: integer
          format: int32
        currentPage:
          type: integer
          format: int32
        data:
          maxItems: 5000
          type: array
          items:
            $ref: '#/components/schemas/InputAutomatedMultiLevelSegmentationInjectionItemDto'
        year:
          type: integer
          format: int32
        month:
          maximum: 13
          minimum: 1
          type: integer
          format: int32
      additionalProperties: false
    InputAutomatedMultiLevelSegmentationInjectionItemDto:
      required:
      - account
      - accountDescription
      - businessUnit
      - costCenter
      - counterpartyLegalEntity
      - department
      - division
      - functionalArea
      - groupValue
      - legalEntity
      - localValue
      - productLevel1
      - productLevel2
      - productLevel3
      - productLevel4
      - productLevel5
      - profitCenter
      - projectCode
      - taxJurisdiction
      type: object
      properties:
        account:
          maxLength: 255
          minLength: 1
          type: string
        accountDescription:
          maxLength: 1000
          type: string
        legalEntity:
          maxLength: 50
          minLength: 1
          type: string
        counterpartyLegalEntity:
          maxLength: 50
          type:
          - 'null'
          - string
        groupValue:
          type:
          - 'null'
          - number
          format: double
        localValue:
          type:
          - 'null'
          - number
          format: double
        taxJurisdiction:
          maxLength: 255
          type:
          - 'null'
          - string
        division:
          maxLength: 255
          type:
          - 'null'
          - string
        businessUnit:
          maxLength: 255
          type:
          - 'null'
          - string
        functionalArea:
          maxLength: 255
          type:
          - 'null'
          - string
        department:
          maxLength: 255
          type:
          - 'null'
          - string
        profitCenter:
          maxLength: 255
          type:
          - 'null'
          - string
        costCenter:
          maxLength: 255
          type:
          - 'null'
          - string
        productLevel1:
          maxLength: 255
          type:
          - 'null'
          - string
        productLevel2:
          maxLength: 255
          type:
          - 'null'
          - string
        productLevel3:
          maxLength: 255
          type:
          - 'null'
          - string
        productLevel4:
          maxLength: 255
          type:
          - 'null'
          - string
        productLevel5:
          maxLength: 255
          type:
          - 'null'
          - string
        projectCode:
          maxLength: 255
          type:
          - 'null'
          - string
      additionalProperties: false
    Month:
      enum:
      - 1
      - 2
      - 3
      - 4
      - 5
      - 6
      - 7
      - 8
      - 9
      - 10
      - 11
      - 12
      - 13
      type: integer
      format: int32
    ProblemDetails:
      required:
      - detail
      - instance
      - status
      - title
      - type
      type: object
      properties:
        type:
          type:
          - 'null'
          - string
        title:
          type:
          - 'null'
          - string
        status:
          type:
          - 'null'
          - integer
          format: int32
        detail:
          type:
          - 'null'
          - string
        instance:
          type:
          - 'null'
          - string
      additionalProperties: {}
  securitySchemes:
    X-DATAINGESTION-API-KEY:
      type: apiKey
      description: API Key authentication using the X-DATAINGESTION-API-KEY header.
      name: X-DATAINGESTION-API-KEY
      in: header
tags:
- name: DataInjections
- name: ExtractTypes