View apiTest.ts
import {test, assetApiPost} from '../../lib/asset-api-helper';
const types = ['yaml', 'json'];
for(const type of types) {
test(`Update Description scalar Attribute on two Stories matching a where clause by Scope OIDToken (${type})`, async t => {
const setupCommand = `
AssetType: Scope
Name: Test - Update Description scalar Scope
Parent: Scope:0
View Can Create single Story Asset using explicit OidToken references for Scope required Relation Attribute and YAML as the Content-Type.md

Given this HTTP command using cURL or another client:

cURL command

curl -i -X POST \
   -H "Content-Type:text/yaml" \
   -H "Authorization:Bearer access-token-here" \
   -d \
'AssetType: Story
View Asset.xml
<?xml version="1.0" encoding="UTF-8"?>
<Assets total="11166" pageSize="2147483647" pageStart="0">
<Asset href="/GVC-Sandbox/rest-1.v1/Data/Epic/3286021" id="Epic:3286021">
<Attribute name="Name">MTT General requirments</Attribute>
</Asset>
<Asset href="/GVC-Sandbox/rest-1.v1/Data/Epic/3220348" id="Epic:3220348">
<Attribute name="Name">GIT - a new SCM</Attribute>
</Asset>
<Asset href="/GVC-Sandbox/rest-1.v1/Data/Epic/3394297" id="Epic:3394297">
<Attribute name="Name">Sun Estate Refresh (Vienna) &#x13; Sun Maintenance</Attribute>
View V1Connector.cs
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Reflection;
View 001.01 Legacy APIClient Create.cs
V1Connector connector = V1Connector
.WithInstanceUrl("<Server Base URI>")
.WithUserAgentHeader("AppName", "1.0")
.WithAccessToken("1.rWM8lKLk+PnyFxkEWVX5Kl2u6Jk=")
.Build();
IServices services = new Services(connector);
Oid projectId = services.GetOid("Scope:1012");
IAssetType storyType = services.Meta.GetAssetType("Story");
View 00 Introduction.md

Summary

These are work-in-progress payloads demonstrating a new Bulk API for VersionOne Lifecycle to support Create, Update, and Execute Operation commands using upon the powerful and intuitive query.v1 syntax.

Working branch

The 17.3-based working fro this is https://github.com/versionone/Core/tree/S-63908_bulk_api_for_test_automation.

Previously, the 17.0-based working branch for this is https://github.com/versionone/Core/tree/17_assets_api_batchy_with_cors.

These branches are related or ancestral:

View SpaceMiner.json
{
"AssetType": "Epic",
"Scope": "zoozoo's Project",
"Description": "Beginners writing games with HTML5 and JavaScript of today (ES5) must master challenging recursion, asynchronous game loops, and callback hell. See how ES2015 and ES2016's powerful new features simplify all of this, reducing the cognitive burden for beginners and seasoned pros!",
"Name": "ES2015 and Beyond",
"Subs": [
{
"AssetType": "Story",
"Name": "Powered up JavaScript",
"Description": "Learn about how ES2015 and beyond will powerup your code!",
View gist:cd3a2819be66583df4f9634d28c6d1da
https://docs.google.com/presentation/d/1YTtCXa_xoLU7CWCMoR2hxTwRmce1R99WTfIonKhb2eA/edit#slide=id.g241e8433b8_0_97
View 00 - Explanation.md

Background

To process a Bulk API request in the most efficient and reliable manner, we need to be able to break it into multiple steps and process it on the background as a "Job", essentially. This Job will be capable of surviving App Domain failures or restarts. This means that if it has, for example, 1,000 discrete commands to process (creating assets, updating existing assets, executing operations against existing assets), it will resume where it left off when the application restarts and the Job processor notices that it is not finished.

Eventually, the entire process will look roughly like this:

  • Ingest the entire payload, convert it from YAML, XML, Excel or whatever into an easiest-to-work with Json.NET structure (Currently it's converting JSON into Yaml!)
  • Persist this to DB, return a URI to caller that indicates where to request status updates for the Bulk Job
  • On background, begin breaking down the payload into a linear and finite list of projected commands of the following types:
    • Creat
View sample.txt
curl -i -X GET -H "Authorization:Bearer 1.ssLSvrWNRgUHG0/64uz6oczqVfw=" "http://localhost/VersionOneWin/rest-1.oauth.v1/Data/Member?where=IsSelf='true'"
curl -i -X GET -H "Authorization:Bearer 1.ssLSvrWNRgUHG0/64uz6oczqVfw=" 'http://localhost/VersionOneWin/rest-1.oauth.v1/Data/Member?where=IsSelf="true"'
curl -i -X GET -H "Authorization:Bearer 1.ssLSvrWNRgUHG0/64uz6oczqVfw=" "http://localhost/VersionOneWin/rest-1.oauth.v1/Data/Member?where=IsSelf=\"true\""