클라우드 Orchestrator API 사용법

Orchestrator 인증 API 호출시 다음과 같은 오류가 발생합니다.

{
    "message": "Invalid credentials, failed to login.",
    "errorCode": 1000,
    "resourceIds": null
}

호출 정보는 아래와 같습니다.
URL: {{url}}/api/Account/Authenticate
Method: POST
Request Data:
{
“tenancyName”: “{{tenancyName}}”,
“usernameOrEmailAddress”: “{{usernameOrEmailAddress}}”,
“password”: “{{password}}”
}

{{url}}: "https://platform.uipath.com"
{{tenancyName}}:


{{usernameOrEmailAddress}}: platform.uipath.com 로그인 이메일 주소
{{password}}: platform.uipath.com 로그인 암호

어디가 잘못된 것일까요?
PostMan 으로 테스트하였습니다.

{
“tenancyName”: “Default”,
“usernameOrEmailAddress”: “xxx@xxx.xxx”,
“password”: “12345678”
}
위와 같이 tenant name, username or email, password 넣고 해 보세요.

그리고 https://platform.uipath.com/default/default/swagger 혹은 https://platform.uipath.com/tenant명/tenant명/swagger 혹은 orchstrator url/swagger 로 접속하셔서
UiPath.WebApi 중 Account에서 Debugging 해 보세요.

tenancyName 에 “Default” 만 입력해봐도 안 되네요.

오케스트레이터 웹페이지 SERVICES 탭 누르면 나오는 Name 에서 Default 앞에 있는 문자는 빼면, 그게 tenancyName 인가요?

UiPath.WebApi 중 Account에서 Debugging 해보라고 하신 건 어떻게 하는건지 잘 모르겠습니다.

위 Services 화면상으로 tenancyName이 “tenancyName” 으로 되어 있는 것 같네요.
예로 저의 경우 community orchestrator에 tenancyName이 yejin 이며 아래와 같이 보입니다.
image

Community orchestrator 접속하시 나서,
Swagger page는 아래 link로 접속 한 번 해 보세요.
https://platform.uipath.com/tenancyName/tenancyName/swagger

저의 경우 https://platform.uipath.com/yejin/yejin/swagger 여기로 접속하면 아래 화면이 나옵니다.

위에서 Account 로 가셔서 아래 와 같이 정보 입력 후, Try it out 해 보세요.
{
“tenancyName”: “tenancyName”,
“usernameOrEmailAddress”: “xxx@xxx.xxx”, <- Log in account
“password”: “xxxxxxxx” <- Log in password
}

Response Body 에 마찬가지 결과가 나옵니다.

Response Code 는 400이고,
Response Header 를 보니 아래와 같이 나타납니다.
{
“pragma”: “no-cache”,
“date”: “Fri, 19 Jul 2019 04:54:33 GMT”,
“x-content-type-options”: “nosniff”,
“server”: “cloudflare”,
“access-control-allow-origin”: “*”,
“expect-ct”: “max-age=604800, report-uri=“https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct””,
“x-frame-options”: “DENY”,
“content-type”: “application/json; charset=utf-8”,
“status”: “400”,
“cache-control”: “no-cache”,
“strict-transport-security”: “max-age=31536000; includeSubDomains”,
“cf-ray”: “4f8a19134d13a164-ICN”,
“expires”: “-1”
}

URI 에 tenancyName 을 굳이 중복으로 쓰는 이유가 이해가 안 됐었는데,
platform.uipath.com 접속해보니,

https://platform.uipath.com/Seongwon/SeongwonDefault

으로 되어 있네요.

하지만 swagger 에 이와 같이 접속해도, 아쉽지만 결과는 마찬가지입니다.

Request URL은 맞나요?
orchstrator url 이나 login 정보가 잘 못 된 것 아닌지 확인해 보세요.

Orchstrator 접속해서 Services 에서 service name (tenancy name) click 하면 open되는 browser url 에 tenancy name 2개 같은 거 나오지 않나요 ?

네, 그걸 확인하고 그대로 접속해보았습니다.

https://platform.uipath.com/Seongwon/SeongwonDefault

으로 되어 있길에,

https://platform.uipath.com/Seongwon/SeongwonDefault:443/api/Account/Authenticate

로 요청했습니다.

community platform사용 하는 다른 사람 한테 물어보니 현상이 비슷한 현상이 있는거 같네요.
Community portal 이전에 password 로 하면 success 한다고는 하는데요.

관련해서 다른 정보 알게 되면 update 드릴께요.
혹시 community platform사용하시는 다른 분들 관련 정보 있으시면 공유해 주세요.

1 Like

아 그래요? 이전 password 가 있었던가 모르겠네요. 아직은 비밀번호를 바꾼 적이 없는 것 같은데. 여하튼 시간 할애해주셔서 감사합니다. 차후에 새로운 정보 있으면 업데이트 부탁 드립니다.

혹시 로그인 정보에 email주소 말고 username 으로 하면 어떻게 되나요?

그렇게도 해보았지만, 똑같습니다. ㅎㅎ

Community orchestartor plaform이 cloud platform 으로 바뀌면서 REST API 를 이용하기 위한 사용자 인증방식이 바뀌었네요.

아래 link 참조해서 확인해 보세요.
https://orchestrator.uipath.com/v2019/reference#consuming-cloud-api

참고로 기존 On-premises Orchestrator 나 private cloud Orchestrator 는 변동 사항 없습니다.

1 Like

안녕하세요
아래 링크에 새로운 Cloud Platform 인증번호 생성용 workflow가 있습니다.
참고하세요

1 Like

감사합니다.

올려주신 페이지를 보고, 하나씩 진행해보고 있는데,
Discovering UiPath Account and Service Instance Identifiers
단계에서 막히네요.

Request Data Header 에 규격대로 Bearer 와 X-UIPATH-TenantName 를 넣었는데,
Response Data 가 아래와 같이 나타납니다.

{
    "message": "You are not authenticated!",
    "errorCode": 0,
    "result": null,
    "targetUrl": null,
    "success": false,
    "error": {
        "code": 0,
        "message": "You are not authenticated!",
        "details": "You should be authenticated (sign in) in order to perform this operation.",
        "validationErrors": null
    },
    "unAuthorizedRequest": false,
    "__abp": true
}

특이한 점은, 바로 전 단계인,
Getting Service Instance Logical Name
에서, service_url 이 https://platform-community.azurewebsites.net 로 반환된 점입니다.

https://platform-community.azurewebsites.net 에 접속해서, 로그인을 시도해보니 계정이 존재하지 않는 것 같아 새로 가입을 하였습니다.

가입 후 로그인해보니, 라이선스가 아무것도 없습니다.

혹시, 커뮤니티 버전에서는 아직 오케스트레이터 API 를 실질적으로 사용해볼 수 없는 것은 아닌지 궁금합니다.

API 문서 목차에도 CLOUD - PUBLIC PREVIEW 라고 나와 있고, Consuming Cloud API 에는 Robot 이나 Job, Assets 등과 관련된 API 내용이 없는 점에서 의문이 들었습니다.

Orchestrator API Example 중 하나(Retrieving License Infromation)로 테스트해보아도 마찬가지 결과가 뜹니다.

네, 감사합니다.

Run 에 해당하는 엘리먼트로 IsReady 를 판별하고 있는데, 이것은 수정할 필요가 있어 보입니다.
Run 이 뜨고 나서도, 코드를 바로 붙여넣기할 수 있는 상태가 아니네요.

1 Like

아 그래요. 고맙습니다. 수정하시고 pull request 해주실수 있을까요?

넵! Pull Request 하였습니다.

마지막에 Get License 하실 때 혹시 Bearer Token에 id_token을 넣으신 거 아닌가요 ?
Authorization: Bearer [access_token] 로 access_token이 제대로 들어갔는지 확인해 보시죠.

Generating Access Token and ID Token Using the Refresh Token

과정에서 access_token과 id_token 2개가 generate 됩니다.

새로 community 계정 만들어서 Test 해보니 https://orchestrator.uipath.com/v2019/reference#consuming-cloud-api 설명데로 동작합니다.

Getting Service Instance Logical Name 의 response는 아래와 같이 나왔으며,
[
{
“serviceInstanceName”: “YEDefault”,
“serviceInstanceLogicalName”: “YEDefaulto3h3102305”,
“serviceType”: “ORCHESTRATOR”,
“serviceUrl”: “https://platform-community.azurewebsites.net
}
]

https://platform-community.azurewebsites.net 에는 따로 가입하지 않았습니다.

License 정보의 결과는 잘 나오는 것 같고요.

마자막에 token을 access_token이 아닌 Id_token 넣으면 말씀하신 것 처럼 response가 오는 것 같습니다.
access_token 한번 확인해 보세요.

1 Like

맞네요. ID_TOKEN 과 ACCESS_TOKEN 에 담긴 내용물이 유사하여 제가 잘못 기입했습니다.

죄송스럽게도 질문이 끝나지 않네요. 저의 시행착오가 다른 많은 분들께 도움이 되길 바라며, 하나 더 질문 좀 드리겠습니다.

이제, Consuming Cloud API 마지막의

https://platform.uipath.com/[account_logical_name]/[ service_instance_logical_name]/odata/Settings/UiPath.Server.Configuration.OData.GetLicense

결과를 바탕으로, Orchestrator 의 다양한 API 를 사용하고자 합니다.

예를 들어, https://orchestrator.uipath.com/v2019/reference#assets-requests
를 참고하여 Assets 을 가져오는 API 를 호출해보았습니다.

robotId 와 assetName 을 넘겨 주어야 하는데,
위에서 GetLicense 의 결과 데이터의 ID 와, 제가 클라우드에 등록해놓은 assetName 을 입력했습니다.

1.Request of GetRobotAsset

https://platform.uipath.com/odata/Assets/UiPath.Server.Configuration.OData.GetRobotAsset(robotId=‘10723’,assetName=‘PlatformLoginCredential’)

2.Response of GetLicense

{
        "@odata.context": "https://platform.uipath.com/Seongwon/SeongwonDefrmpe54511/odata/$metadata#UiPath.Application.Dto.License.LicenseDto",
        "HostLicenseId": null,
        "Id": 10723,
        "ExpireDate": 1623283199,
        "AttendedConcurrent": false,
        "DevelopmentConcurrent": false,
        "IsRegistered": true,
        "IsExpired": false,
        "CreationTime": "2019-06-10T23:09:50.87Z",
        "Code": "6108960a-9ef4-414b-8323-48a99868d236",
        "Allowed": {
            "Unattended": 1,
            "Attended": 2,
            "NonProduction": 0,
            "Development": 2
        },
        "Used": {
            "Unattended": 0,
            "Attended": 1,
            "NonProduction": 0,
            "Development": 0
        }
}

이에 대한 결과가 아래와 같은 오류로 반환됩니다.

{
    "message": "Invalid robot key",
    "errorCode": 1002,
    "resourceIds": null
}

혹시, 로봇키는 다른 방법으로 얻어야 하는 것인지요?
저는 아래 세 가지로 각각 입력해보았습니다. (모두 실패)

  • GetLicense 응답 데이터의 ID
  • GetLicense 응답 데이터의 Code
  • Machine Key