Skip to Main Content
IBM Data and AI Ideas Portal for Customers


This portal is to open public enhancement requests against products and services offered by the IBM Data & AI organization. To view all of your ideas submitted to IBM, create and manage groups of Ideas, or create an idea explicitly set to be either visible by all (public) or visible only to you and IBM (private), use the IBM Unified Ideas Portal (https://ideas.ibm.com).


Shape the future of IBM!

We invite you to shape the future of IBM, including product roadmaps, by submitting ideas that matter to you the most. Here's how it works:


Search existing ideas

Start by searching and reviewing ideas and requests to enhance a product or service. Take a look at ideas others have posted, and add a comment, vote, or subscribe to updates on them if they matter to you. If you can't find what you are looking for,


Post your ideas

Post ideas and requests to enhance a product or service. Take a look at ideas others have posted and upvote them if they matter to you,

  1. Post an idea

  2. Upvote ideas that matter most to you

  3. Get feedback from the IBM team to refine your idea


Specific links you will want to bookmark for future use

Welcome to the IBM Ideas Portal (https://www.ibm.com/ideas) - Use this site to find out additional information and details about the IBM Ideas process and statuses.

IBM Unified Ideas Portal (https://ideas.ibm.com) - Use this site to view all of your ideas, create new ideas for any IBM product, or search for ideas across all of IBM.

ideasibm@us.ibm.com - Use this email to suggest enhancements to the Ideas process or request help from IBM for submitting your Ideas.

IBM Employees should enter Ideas at https://ideas.ibm.com


Status Submitted
Workspace Planning Analytics
Created by Guest
Created on Oct 7, 2024

Extend the TM1 Rest API to replicate the existing functionality in the legacy C API

The REST API lacks similar functionality in manipulating BLOB objects.

 

TM1 Legacy C API - Allows to WRITE n bytes at a starting position x within an existing BLOB
https://www.ibm.com/docs/en/planning-analytics/2.0.0?topic=c-tm1blobput

 

However, with the REST API, we can only make a PUT request, but without an ACTION we can't WRITE a specific number of bytes to a location within an existing object. Essentially we can't append bytes to an existing blob.

Example REST call:-

`http://tm1server:8000/api/v1/Contents('Blobs')/Contents('My-XML-CSDL')/Content`
 

Request is a bring the REST API in-line with the legacy C-API functionality

Needed By Not sure -- Just thought it was cool
  • Guest
    Reply
    |
    Oct 7, 2024

    Hi Hubert,

    Thanks for the rapid feedback. Yes, alas we are focussed on v11. 

    As the `RANGE` header is not available in v11, reusing `POST` with the intent to append to a file seems a good option. Append is our use-case atm anyway.  As for v12; the `PATCH` - `RANGE` option looks great :-)

    Many thanks , Adam

     

    1 reply
  • Guest
    Reply
    |
    Oct 7, 2024

    Hi Adam,

    As of TM1 v12 we have support for `Range` header. The `Range` header allows for partial content manipulation, typically used for downloading parts of a file (like TM1 v12 does thus far), but some services are known to extend this feature to allow partial file uploads as well. In such a case, a client could append to or update part of a file using byte-range updates.

    Whilst that would most closely mimic what the C-API used to do, albeit not the intend by itself, appending would require you to know what the size of the file is first. The most commonly used pattern for this is to use a so called preflight `HEAD` request to determine the size and then subsequently use the return `Content-Length` header for the range. To be sure that the file wouldn't have changed in the meantime, read: between the preflight and append request, one could use the returned e-tag and pass it in a `If-Match` header.

    Some services, but this would be service specific (read: not standard base) reuse `POST` to say that the intend is to append to a file. Other protocols, like WebDAV (an extension of HTTP) introduced it's own `APPEND` method to make it very clear what the intend is (still service specific for an OData compliant service like TM1).

    My proposal, presuming we do this, would be to build on what's already there and add support for `PATCH` on the files on Contents (we no longer treat 'Blobs' special) where the `Range` header can be used to indicate what part of the file needs to be patched (without the Range header it would be the same as `PUT`). TM1 already supports preflight `HEAD` requests and optimistic concurrency control (read: `If-Match') so appending could be accomplished as well.

    Would that work?

    But let me guess, you'd want this in TM1 v11 as well ;-?

    Kind Regards, Hubert