How to delete that are not attached to VM through Rest Calls - rest

I am new to BPM , softlayer and REST. I completed creating storages (performance and endurance). Now I need to know How will I be able to delete the storages that are not attached to any Virtual Machines. I did not find any thing related to this. Please make a needful favour. Thanks in advance.

Please try the following request:
https://[username]:[apikey]#api.softlayer.com/rest/v3/SoftLayer_Billing_Item_Cancellation_Request/createObject
Method: POST
Json Payload:
{
"parameters": [
{
"accountId": 202019,
"items": [
{
"billingItemId": 65959265,
"immediateCancellationFlag": true
}
]
}
]
}
How to get the billingItemId information and account id?
Execute:
https://[username]:[apikey]#api.softlayer.com/rest/v3/SoftLayer_Network_Storage/4494893/getObject?objectMask=mask[accountId,username,billingItem.id]
Method: GET
If you don’t know the Network Storage id, please execute this request using the username:
https://[username]:[apikey]#api.softlayer.com/rest/v3/SoftLayer_Account/getNetworkStorage?objectFilter={"networkStorage": {"username": {"operation": "storageName"}}}&objectMask=mask[billingItem]
Method: GET
References:
SoftLayer_Billing_Item_Cancellation_Request::createObject
SoftLayer_Network_Storage::getObject

Related

Get empty Element List for post of my organization

I need to retrieve analytics of my companies posts.
I do have the following rights:
r_1st_connections_size
r_ads_reporting
r_basicprofile
r_emailaddress
r_liteprofile
r_organization_social
rw_ads
rw_organization_admin  reporting data"
w_member_social
w_organization_social
for my Bearer token.
But my request:
https://api.linkedin.com/v2/shares?q=owners&owners=urn:li:organization:*myOrganisationId*
does return:
{
"paging": {
"start": 0,
"count": 10,
"links": [
{
"type": "application/json",
"rel": "next",
"href": "/v2/shares?count=10&owners=urn%3Ali%3Aorganization%<myOrganisationId>&q=owners&start=0"
}
],
"total": 568
},
"elements": []
}
What is strange. Because it genuinely succeeds, and even returns a total > 0 but the elements are ALWAYS for ALL pages empty.
How can that be? Any insights?
I would appreciate also any input on which endpoint provied most easily the most metrics like click-rate, impressions, ... , of the posts?
Thanks a lot for your help.
If you need to retrieve the insigths from a share object you need to use the adAnalyticsV2 endpoint (here).
You can than retrieve the data by querying the endpoint in this way:
https://api.linkedin.com/v2/adAnalyticsV2?q=analytics&pivot=SHARE&timeGranularity=DAILY&shares=List(urn:share:XXXX)
to get a list of all shares I use this (replace the 00000 with your company ID):
https://api.linkedin.com/v2/ugcPosts?q=authors&authors=List(urn%3Ali%3Aorganization%3A00000)&sortBy=LAST_MODIFIED
That will actually give you a lot more, than you need but you will have a list of share urns as well as their texts and even authors. I wonder how are you planning to combine the two, cause that's what I am trying to figure out.
Thanks,
Piotrek

Get all organizations in Azure DevOps using REST API

I am trying to retrieve all the organizations in my account but in the documentation an organization is always required in the API call.
https://dev.azure.com/{organization}/_apis/...
If you load the current landing page, it displays all your organizations tied to your account. I assumed it had to get that information some way. I captured the network traffic and I believe you could get to the data you want using a system API call. However, it might change or might become unsupported without notice, so use at your own discretion.
You can get the information you want using this API:
Post https://dev.azure.com/{organization1}/_apis/Contribution/HierarchyQuery?api-version=5.0-preview.1
Body:
{
"contributionIds": ["ms.vss-features.my-organizations-data-provider"],
"dataProviderContext":
{
"properties":{}
}
}
Response:
{
"dataProviderSharedData": {},
"dataProviders": {
"ms.vss-web.component-data": {},
"ms.vss-web.shared-data": null,
"ms.vss-features.my-organizations-data-provider": {
"organizations": [
{
"id": "{redacted id}",
"name": "{organization1}",
"url": "https://{organization1}.visualstudio.com/"
},
{
"id": "{redacted id}",
"name": "{organization2}",
"url": "https://dev.azure.com/{organization2}/"
}
],
"createNewOrgUrl": "https://app.vsaex.visualstudio.com/go/signup?account=true"
}
} }
you can do it simply by making a call to get all the account you are member/ owner of. However for that you need your id, which can be easily fetched by making get profile call. Here are steps below:
Make a VSTS API call to get profile details using Bearer token or PAT
https://app.vssps.visualstudio.com/_apis/profile/profiles/me?api-version=5.1
This will return you, your Id:
{
"displayName": "xxxx",
"publicAlias": "xxx",
"emailAddress": "xxx",
"coreRevision": xxx,
"timeStamp": "2019-06-17T09:29:11.1917804+00:00",
"id": "{{We need this}}",
"revision": 298459751
}
Next, make a call to get all the accounts you are member of or owner of:
https://app.vssps.visualstudio.com/_apis/accounts?api-version=5.1&memberId={{Your Id}}
Response:
{
"count": 1,
"value": [
{
"accountId": "xxx",
"accountUri": "xxx",
"accountName": "xxx",
"properties": {}
}
]
}
It will return list of accounts you are associated with.
A REST API request/response pair can be separated into five components:
The request URI, in the following form:
VERB https://{instance}[/{team-project}]/_apis[/{area}]/{resource}?api-version={version}
instance:
The Azure DevOps Services organization or TFS server you're sending the request to.
They are structured as follows:
Azure DevOps Services: dev.azure.com/{organization}
The REST API's are organization specific. This is not documented at present. You could submit a feature request here: https://developercommunity.visualstudio.com/spaces/21/index.html
Our PM and product team will kindly review your suggestion. Sorry for any inconvenience.
As a workaround, you could use the API which captured from network traffic just as Matt mentioned.
We've been using "https://app.vssps.visualstudio.com/_apis/accounts" without specifying any API version and this returns all our accountnames
This is still working for us, but because of some other issues we have I'm adding the api version to all our api calls, however. For this I also run into the fact that https://learn.microsoft.com/en-us/rest/api/azure/devops/account/accounts/list?view=azure-devops-rest-5.0 requires an member or owner id.
Retrieving that needs an account/organization so it is a bit of a catch 22 situation.
For now I'll stay with just "https://app.vssps.visualstudio.com/_apis/accounts" I guess
I'm getting a sign-in response for both "app.vssps.visualstudio.com/_apis/accounts" and
Post https://dev.azure.com/{organization1}/_apis/Contribution/HierarchyQuery?api-version=5.0-preview.1
StatusCode : 203
StatusDescription : Non-Authoritative Information
EDIT:
Nevermind, it worked using the static MSA clientid and replyURL:
internal const string clientId = "872cd9fa-d31f-45e0-9eab-6e460a02d1f1"; //change to your app registration's Application ID, unless you are an MSA backed account
internal const string replyUri = "urn:ietf:wg:oauth:2.0:oob"; //change to your app registration's reply URI, unless you are an MSA backed account
//PromptBehavior.RefreshSession will enforce an authn prompt every time. NOTE: Auto will take your windows login state if possible
result = ctx.AcquireTokenAsync(azureDevOpsResourceId, clientId, new Uri(replyUri), promptBehavior).Result;
Console.WriteLine("Token expires on: " + result.ExpiresOn);
var bearerAuthHeader = new AuthenticationHeaderValue("Bearer", result.AccessToken);
// Headers
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Add("User-Agent", "ManagedClientConsoleAppSample");
client.DefaultRequestHeaders.Add("X-TFS-FedAuthRedirect", "Suppress");
client.DefaultRequestHeaders.Authorization = authHeader;
//Get Organizations
client.BaseAddress = new Uri("https://app.vssps.visualstudio.com/");
HttpResponseMessage response1 = client.GetAsync("_apis/accounts").Result;

MS Graph REST API checkout user

I've managed to successfully checkout a file using the https://graph.microsoft.com/beta/drives/{driveId}/items/{itemId}/checkout
Now, I'd like to get the information about the user, who actually perform the checkout operation.
It's possible to check if the item is locked:
https://graph.microsoft.com/beta/drives/{driveId}/items/{itemId}?select=*,publication
However, according to DOCs, publication doesn't provide information about the checked user. Without information who locked the file is the whole checkin/checkout logic is useless.
This kind of information could be retrieved via the metadata for an item in a list as demonstrated below:
https://graph.microsoft.com/beta/sites/{site-id}/lists/{list-id}/items/{item-id}?expand=fields(select=CheckoutUserLookupId)
Once you get checkout user id (CheckoutUserLookupId field) , user details could be determined via the following endpoint:
https://graph.microsoft.com/v1.0/sites/{site-id}/lists('User Information List')/items/{CheckoutUserLookupId}
where CheckoutUserLookupId is the user id from the previous request
https://graph.microsoft.com/beta/sites/{site-id}/lists/{list-id}/items/{item-id} can't work with folders.
Anyway, drive endpoint "Allows access to the list as a drive" (according to MS Graph Docs). It works with folders as expected.
So I have
get the drive-id: /sites/${siteId}/drives
list root folder: /drives/{drive-id}/items/root/children?select=name,publication
if an item is locked, it's possible to list the activity on the item:
/drives/${idObj.driveId}/items/${idObj.fileId}?select=id&expand=activities
return list of actions:
"activities": [
{
"#odata.type": "#oneDrive.activityEntity",
"#odata.id": "https://xxxxxxxxxx/v2.0/oneDrive.activityEntity2a3649d6-2xxxxx",
"#odata.editLink": "oneDrive.activityEntity2a3649d6xxxxxx",
"#sharePoint.localizedRelativeTime": "0|July 30",
"action": {
"checkout": {}
},
"actor": {
"user": {
"email": "XXX#XXX",
"displayName": "vladimir",
"self": {},
"userPrincipalName": "XXX#XXX
}
},
"id": "XXXXXXXXXXXXXX",
"times": {
"recordedTime": "2018-07-31T04:59:03Z"
}
},
although no user ID at least a have the email....

Watson Assistant action to call IBM Cloud Function fails with Direct CloudFunctions calls are not supported on this platform

We are trying to implement cloud functions in Watson conversation but am receiving message 'Direct CloudFunctions calls are not supported on this platform'. When I googled for the error, I see that the issue could be because the region for WA and the cloud functions are different or not in US South/Germany. But I can confirm that both my WA and cloud functions are in US South.
I was trying in the 'Try out' panel. Below is the mock json editor content for my dialog node.
{
"context": {
"my_credentials": {
"user": "jgjg",
"password": "khk"
}
},
"output": {
"text": {
"values": [
"response text"
]
}
},
"actions": [
{
"name": "/<myIBMCloudOrganizationID>_<myIBMCloudSpace>/get-http-resource/weather",
"type": "server",
"parameters": {
"location": "Austin"
},
"credentials": "$my_credentials",
"result_variable": "$my_result"
}
]
}
Can you pls advise me on what am I doing wrong. Thanks.
I was going through the same issue. Cloud functions are only available in some regions. If your app is hosted in sydney or somewhere you cannot use that service there. Create a new app and set the location to london
Are you sure your user and password are set correctly?
Your user should consist of LETTERS and NUMBERS and some HYPHENS. like so : ...a-32d7-7d...
Your password should be just a string ...gafhWhu6alirEVpD...
Both are found in your api key on your IbmCloudFunctions page : https://console.bluemix.net/openwhisk/learn/api-key
Username is before the : of the api key and
Password after the : of the api key
If you already know this then i'm afraid i dont know how to help you.
Best

API method to escalate ticket to SoftLayer

Using BAP creds I am able to pull all my accounts tickets, check content and update. Which API call to use to escalate ticket to SoftLayer?
this is the API service that BAP uses to perform its actions:
http://sldn.softlayer.com/reference/services/SoftLayer_Brand
as you can see there is a method to list the tickets, however there is no a method to create tickets, that is because when you create a ticket using BAP is the same thing like if you would create the ticket using control portal the method used is this:
http://sldn.softlayer.com/reference/services/SoftLayer_Ticket/createStandardTicket
here an example to create tickets using the Softlayer's Python client:
https://softlayer.github.io/python/create_ticket/
using REST:
POST https://$USERNAME:$APIKEY#api.softlayer.com/rest/v3/SoftLayer_Ticket/createStandardTicket
payload:
{
"parameters":[{
"subjectId": 1121,
"assignedUserId": 11111
},"this is my test ticket"]
}
Note: replace assignedUserId with a valid user id
Regards
To escalate a ticket to SoftLayer, you need to follow these steps:
1. Add an update to the ticket
https://$user:$apiKey#api.softlayer.com/rest/v3/SoftLayer_Ticket/21588750/addUpdate
Method: Post
{
"parameters":[
{
"entry":"Escalate to SoftLayer",
"type":
{
"keyName":"AGENT"
}
}
]
}
2. Edit the ticket with the following information:
https://$user:$apiKey#api.softlayer.com/rest/v3/SoftLayer_Ticket/21588750/edit
Method: Post
{
"parameters":[
{
"groupId":1008, "changeOwnerFlag":true
}
]
}
Note: “groupId : 1008” refers to Support group. To get available group identifiers (groupId), try the following rest request:
https://$user:$apiKey#api.softlayer.com/rest/v3/SoftLayer_Ticket/getAllTicketGroups
Method: Get
References:
SoftLayer_Ticket::addUpdate
SoftLayer_Ticket::edit
SoftLayer_Ticket::getAllTicketGroups