Jump to content

Ultimaker S5 API authentication problem


JurgenMK

Recommended Posts

Posted · Ultimaker S5 API authentication problem

Hello,

I have a question about the rest API,

When I try to authenticate using a key and id I got from /auth/request,

It always returns the 401 authentication required, no matter where I enter it on postman.

does anyone know what I am doing wrong?

thanks in advance!

  • Link to post
    Share on other sites

    Posted · Ultimaker S5 API authentication problem
    Quote

    I learned here that Postman and the firmware do not speak the same dialect of "http digest" somehow...

    But the python script works like a charm

    I tried that, but I get a missing argument error on the api.loadauth subroutine, cus the "auth.data" is going in to self, and the filename is not specified, if I add that it doesn't work either, I am using python 3.7.5

  • Link to post
    Share on other sites

    Posted · Ultimaker S5 API authentication problem

    not my field of expertise, i copied some lines from several places a while ago. 🤷‍♂️

    Windows and Python 3.5.2 in my case. I changed the initAPI function to this:

     

    # ...
    	# dunno, if this has changed too?
        def loadAuth(self, filename):
            try:
                data = json.load(open(filename, "rt"))
                self.__setAuthData(data["id"], data["key"])
            except IOError:
                self.__checkAuth()
                self.saveAuth(filename)
            self.__checkAuth()
    
    # ...
    
    # always load data file from module directory
    def initAPI(ip):
        # script name
        filename = os.path.realpath(__file__)
        sname = os.path.basename(filename)
        datafile = os.path.splitext(filename)[0] + ".data"
    
        # authenticate      
        api = Ultimaker3(ip, sname)
        api.loadAuth(datafile)
        
        return api

     

  • Link to post
    Share on other sites

    Posted · Ultimaker S5 API authentication problem
    7 hours ago, tinkergnome said:

    a complete working example was uploaded here:

     

     

    I have a problem with uploading files to the printer, when I try to, I get the error 400 bad response back.

    anyone know how to fix that?

    UM3_API.zip

  • Link to post
    Share on other sites

    Posted · Ultimaker S5 API authentication problem
    4 hours ago, JurgenMK said:

    I have a problem with uploading files to the printer, when I try to, I get the error 400 bad response back.

    anyone know how to fix that?

     

    I'm not sure, either this (older) network printing doesn't work anymore or we use it in a wrong way?

    I use only the new API for this, i hope it still works in the same way in this new "digital factory" age (my UM3 has not heard yet of those fancy things... 😏)

     

    Have a look at the documentation on the printer.

    http://169.254.168.50/cluster-api/v1/

     

    Something like this (from a windows batch file):

     

    set URL=http://169.254.168.50:80/cluster-api/v1/print_jobs/
    set FILENAME=UM3_UltimakerRobot_support.gcode
    curl -X POST --header "Content-Type: multipart/form-data" --header "Accept: application/json" -F "file=@%FILENAME%" %URL%

     

  • Link to post
    Share on other sites

    Posted · Ultimaker S5 API authentication problem
    14 hours ago, tinkergnome said:

     

    I'm not sure, either this (older) network printing doesn't work anymore or we use it in a wrong way?

    I use only the new API for this, i hope it still works in the same way in this new "digital factory" age (my UM3 has not heard yet of those fancy things... 😏)

     

    Have a look at the documentation on the printer.

    http://169.254.168.50/cluster-api/v1/

     

    Something like this (from a windows batch file):

     

    
    set URL=http://169.254.168.50:80/cluster-api/v1/print_jobs/
    set FILENAME=UM3_UltimakerRobot_support.gcode
    curl -X POST --header "Content-Type: multipart/form-data" --header "Accept: application/json" -F "file=@%FILENAME%" %URL%

    okey that works, but when I try to do the exact same thing in my python code I get a response 200 back, and the print doesn't start.

    
    import UM3_API
    UM3_API.start_print("UM3_UltimakerRobot_support.gcode")
    
    .......
    
    def start_print(file):
        api = initAPI("169.254.113.5")  
        if os.path.exists(file):
            jobname = os.path.basename(file)
            filepath = file
            print(filepath)
            print(api.post("cluster-api/v1/print_jobs", headers={"Content-Type": "multipart/form-data", "Accept": "application/json"}, files={"file": (jobname, open(filepath, "rb"))}))

    what am I doing wrong?

     

  • Link to post
    Share on other sites

    Posted · Ultimaker S5 API authentication problem

    dunno... but i would not use the "api" object at all for this task.

    The cluster-api works different, no authentification, and does not know the "jobname" parameter (AFAIK).

     

    Can't you simply mimic the curl command with a python library or such....?

    https://stackoverflow.com/questions/43246857/python-requests-post-a-file

  • Link to post
    Share on other sites

    Posted · Ultimaker S5 API authentication problem
    2 hours ago, tinkergnome said:

    dunno... but i would not use the "api" object at all for this task.

    The cluster-api works different, no authentification, and does not know the "jobname" parameter (AFAIK).

     

    Can't you simply mimic the curl command with a python library or such....?

    https://stackoverflow.com/questions/43246857/python-requests-post-a-file

    I tried that already, but then I still get the 200 back instead of 201

  • Link to post
    Share on other sites

    Create an account or sign in to comment

    You need to be a member in order to leave a comment

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now
    • Our picks

      • UltiMaker Cura 5.7 stable released
        Cura 5.7 is here and it brings a handy new workflow improvement when using Thingiverse and Cura together, as well as additional capabilities for Method series printers, and a powerful way of sharing print settings using new printer-agnostic project files! Read on to find out about all of these improvements and more. 
         
          • Like
        • 18 replies
      • S-Line Firmware 8.3.0 was released Nov. 20th on the "Latest" firmware branch.
        (Sorry, was out of office when this released)

        This update is for...
        All UltiMaker S series  
        New features
         
        Temperature status. During print preparation, the temperatures of the print cores and build plate will be shown on the display. This gives a better indication of the progress and remaining wait time. Save log files in paused state. It is now possible to save the printer's log files to USB if the currently active print job is paused. Previously, the Dump logs to USB option was only enabled if the printer was in idle state. Confirm print removal via Digital Factory. If the printer is connected to the Digital Factory, it is now possible to confirm the removal of a previous print job via the Digital Factory interface. This is useful in situations where the build plate is clear, but the operator forgot to select Confirm removal on the printer’s display. Visit this page for more information about this feature.
          • Like
        • 0 replies
    ×
    ×
    • Create New...