Jump to content
Ultimaker Community of 3D Printing Experts

Ultimaker S5 API authentication problem


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 turns 10: A look back
        Ultimaker is turning 10 years old and that means it is story telling time! We'll explore 2010-2014, traveling through the evolution of the business from the Protobox and Ultimaker Original, to the major leaps forward with the Ultimaker 2 and Ultimaker 3.
          • Like
        • 0 replies
      • Ultimaker Transformation Summit
        Visit our virtual showroom and learn more about the Ultimaker ecosystem!
        • 14 replies
      • New here? Register your Ultimaker for free 3D printer onboarding course
        Hi,
         
        Often getting started is the most difficult part of any process. A good start sets you up for success and saves you time and energy that could be spent elsewhere. That is why we have a onboarding course ready for
        Ultimaker S5 Pro Bundle, Ultimaker S5, Ultimaker S3 Ultimaker 2+ Connect.   
        They're ready for you on the Ultimaker Academy platform. All you need to do to gain access is to register your product to gain free access. 
        Ready? Register your product here in just 60 seconds.
          • Like
        • 0 replies
    ×
    ×
    • Create New...