Is there an easy way to transfer API keys from Test to Live enviroments?

I don’t have to do this yet, but i am dreading it. I have been programming a new Dashboard/program inside of App Studio for the past few months and it uses Functions. As such i am required to enter my API key inside of every Function object.

Now i have Multiple (probably close to a Dozen) of these function calls. When i move my app from my Test environment to my Live environment my understanding is ill need to generate a new API Key and then manually replace the Key on each and every Function call.

Is there a way to transfer the Keys in a less manual way? I am using solutions to transfer the App if it matters.

API Keys are no longer needed in App Studio. Unfortunately the * remains which makes it unclear.

But remove the API key and retest. You will find that it is not needed.

See the below.

5 Likes

Perhaps consider this:

2 Likes

The weird thing is i tried this months ago when i started the project and it didn’t work. I wonder what i did wrong back then thanks.

API-Keys should never be held at the client, because reasons. But it would be nice to have a way to manage secrets at the server for external REST calls and usernames/passwords for various environments until we get to a passwordless world.

Implement Secrets Management | Epicor Idea 2555

2 Likes

I tried * for the API Key when running an erp-function in a Kinetic client customization and get error:
: Invalid API Key *.\r\nCompany
We are on Kinetic 2023.2 and I am wondering if 2023.2 required API Keys?

First, vote for Secrets management above.

Second, Store the key in Kinetic somewhere (UD Table, etc.) like Jose suggests above.

If you want to get cute, bury the key in a Kinetic Function that inspects the AppServerUrl and returns the appropriate one for each instance. If in the future we get Secrets Management, then you would replace the logic in that function.

Don’t put * in the field, just leave it blank, though I am not sure if 2023.2 still required them or not but by 2024.1 you leave the field blank.

1 Like

@leonardpothier is spot on. If you are calling external/non-Kinetic functions, then use the Kinetic Function method since you’ll need a function anyway.