Requêtes VOSpace et réponses du service
Job
Création job uws asynchrone
Requête
curl -v -X POST -d @job.xml -H "Content-type: text/xml" "http://server.example.com/vospace/transfers"
Réponse
POST /vospace/transfers HTTP/1.1
Content-Type: text/xml
HTTP/1.1 303 See Other
Location: http://server.example.com/vospace/transfers/(jobid)/results/transferDetails
Content-Type: text/plain
Création job uws synchrone
Requête
curl -v -X POST -d @job.xml -H "Content-type: text/xml" "http://server.example.com/vospace/synctrans"
Réponse
POST /vospace/synctrans HTTP/1.1
Content-Type: text/xml
HTTP/1.1 303 See Other
Location: http://server.example.com/vospace/transfers/(jobid)/results/transferDetails
Content-Type: text/plain
Représentation job uws
Requête
curl -v "http://server.example.com/vospace/transfers/(jobid)"
Réponse
GET /vospace/transfers/(jobid)/1.1
HTTP/1.1 200 OK
Content-Type: text/xml
<?xml version="1.0" encoding="UTF-8"?>
<uws:job xmlns:uws="http://www.ivoa.net/xml/UWS/v1.0" xmlns:xlink="http://www.w3.org/1999/xlink">
<uws:jobId>(jobid)</uws:jobId>
<uws:ownerId xs:nill="true" />
<uws:phase>ETAT</uws:phase>
<uws:quote>Date et heure de création</uws:quote>
<uws:startTime xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:nil="true" />
<uws:endTime xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:nil="true" />
<uws:executionDuration>43200</uws:executionDuration>
<uws:destruction>Date de déstruction</uws:destruction>
<uws:parameters />
<uws:results />
<uws:jobInfo>
<vos:transfer xmlns:vos="http://www.ivoa.net/xml/VOSpace/v2.1">
<vos:target>Uri de la node cible</vos:target>
<vos:direction>Direction (uri/pushToVoSpace/pullFromVoSpace/PushFromVoSpace/PullToVoSpace)</vos:direction>
(<vos:keepBytes>booléen</vos:keepBytes>)
(<vos:protocol uri="ivo protocol uri">)
(<vos:endpoint>uri</vos:endpoint>)
</vos:transfer>
</uws:jobInfo>
</uws:job>
L'ETAT peut être : PENDING, EXECUTING ou ERROR
Lancement job uws asynchrone
Requête
curl -v -d "PHASE=RUN" "http://server.example.com/vospace/transfers/(jobid)/phase"
Réponse
POST /vospace/transfers/(jobid)/phase HTTP/1.1
Content-Type: text/xml
HTTP/1.1 303 See Other
Location: http://server.example.com/vospace/transfers/(jobid)
Content-Type: text/plain
Etat du transfert job uws
Requête état du transfert
curl -v http://server.example.com/vospace/transfers/(jobid)/phase
Réponse
GET /vospace/transfers/(jobid)/phase HTTP/1.1
HTTP/1.1 200 OK
Content-Type: text/plain;
ETAT
L'ETAT peut être COMPLETED, EXECUTING ou ERROR
Requêtes
getProtocols
Requête
curl -v "http://server.example.com/vospace/protocols"
Réponse
GET /vospace/protocols HTTP/1.1
HTTP/1.1 200 OK
Content-Type: text/xml
<vos:protocols xmlns="http://www.ivoa.net/xml/VOSpace/v2.1" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance">
<vos:accepts>
<vos:protocol uri="ivo://ivoa.net/vospace/core#httpget"/>
<vos:protocol uri="ivo://ivoa.net/vospace/core#httpput"/>
</vos:accepts>
<vos:provides>
<vos:protocol uri="ivo://ivoa.net/vospace/core#httpget"/>
<vos:protocol uri="ivo://ivoa.net/vospace/core#httpput"/>
</vos:provides>
</vos:protocols>
getViews
Requête
curl -v "http://server.example.com/vospace/views"
Réponse
GET /vospace/views HTTP/1.1
HTTP/1.1 200 OK
Content-Type: text/xml
<vos:views xmlns="http://www.ivoa.net/xml/VOSpace/v2.1" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance">
<vos:accepts>
<vos:view uri="ivo://ivoa.net/vospace/core#anyview"/>
</vos:accepts>
<vos:provides>
<vos:view uri="ivo://ivoa.net/vospace/core#defaultview"/>
</vos:provides>
</vos:views>
getProperties
Requête
curl -v "http://server.example.com/vospace/properties"
Réponse
GET /vospace/properties HTTP/1.1
HTTP/1.1 200 OK
Content-Type: text/xml
<vos:properties xmlns="http://www.ivoa.net/xml/VOSpace/v2.1" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance">
<vos:accepts>
<vos:property uri="ivo://ivoa.net/vospace/core#title"/>
<vos:property uri="ivo://ivoa.net/vospace/core#creator"/>
<vos:property uri="ivo://ivoa.net/vospace/core#description"/>
</vos:accepts>
<vos:provides>
<vos:property uri="ivo://ivoa.net/vospace/core#availableSpace"/>
<vos:property uri="ivo://ivoa.net/vospace/core#httpput"/>
</vos:provides>
<vos:contains>
<vos:property uri="ivo://ivoa.net/vospace/core#availableSpace"/>
<vos:property uri="ivo://ivoa.net/vospace/core#title"/>
<vos:property uri="ivo://ivoa.net/vospace/core#creator"/>
<vos:property uri="ivo://ivoa.net/vospace/core#description"/>
</vos:contains>
</vos:properties>
createNode
Requête
curl -v -X PUT -d @newNode.xml (-u username:password)
-H "Content-type: text/xml" "http://server.example.com/vospace/nodes/mydata1"
Réponse
PUT /vospace/nodes/mydata1 HTTP/1.1
Content-Type: text/xml
HTTP/1.1 201 CREATED
Content-Type: text/xml
<vos:node xmlns:xi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.ivoa.net/xml/VOSpace/v2.1"
xs:type="vos:UnstructuredDataNode"
uri="vos://example.com!vospace/mydata1">
<vos:properties>
<vos:property uri="ivo://ivoa.net/vospace/core#description">My important results</vos:property>
<vos:property uri="ivo://ivoa.net/vospace/core#date" readOnly="true">2015-05-22T23:06:32.966</vos:property>
</vos:properties>
<vos:accepts>
<vos:view uri="ivo://ivoa.net/vospace/core#anyview"/>
</vos:accepts>
<vos:provides/>
<vos:capabilities/>
</vos:node>
moveNode
Requête
curl -v -X POST -d @moveJob.xml -H "Content-type: text/xml" "http://server.example.com/vospace/transfers"
Réponse
POST /vospace/transfers HTTP/1.1
Content-Type: text/xml
HTTP/1.1 303 See Other
Location: http://server.example.com/vospace/transfers/(jobid)
Content-Type: text/plain
Requête
curl -v "http://server.example.com/vospace/transfers/(jobid)"
Réponse
GET /vospace/transfers/(jobid)/1.1
HTTP/1.1 200 OK
Content-Type: text/xml
<?xml version="1.0" encoding="UTF-8"?>
<uws:job xmlns:uws="http://www.ivoa.net/xml/UWS/v1.0" xmlns:xlink="http://www.w3.org/1999/xlink">
<uws:jobId>(jobid)</uws:jobId>
<uws:ownerId xs:nill="true" />
<uws:phase>PENDING</uws:phase>
<uws:quote>2015-05-23T11:44:03.993</uws:quote>
<uws:startTime xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:nil="true" />
<uws:endTime xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:nil="true" />
<uws:executionDuration>43200</uws:executionDuration>
<uws:destruction>2015-05-29T23:44:03.993</uws:destruction>
<uws:parameters />
<uws:results />
<uws:jobInfo>
<vos:transfer xmlns:vos="http://www.ivoa.net/xml/VOSpace/v2.1">
<vos:target>vos://example.com!vospace/mydata1</vos:target>
<vos:direction>vos://example.com!vospace/mydata2</vos:direction>
<vos:keepBytes>false</vos:keepBytes>
</vos:transfer>
</uws:jobInfo>
</uws:job>
Requête envoyée sur l'uri http://rest-endpoint/service/transfers/(jobid)/phase
curl -v -d "PHASE=RUN" "http://server.example.com/vospace/transfers/(jobid)/phase"
Réponse
POST /vospace/transfers/(jobid)/phase HTTP/1.1
Content-Type: text/xml
HTTP/1.1 303 See Other
Location: http://server.example.com/vospace/transfers/(jobid)
Content-Type: text/plain
Requête HTTP GET sur l'uri http://rest-endpoint/service/transfers/(jobid)/phase
curl -v "http://server.example.com/vospace/transfers/(jobid)/phase"
Réponse
GET /vospace/transfers/(jobid)/phase HTTP/1.1
HTTP/1.1 200 OK
Content-Type: text/plain;charset=UTF-8
COMPLETED
copyNode
Requête
curl -v -X POST -d @copyJob.xml -H "Content-type: text/xml" "http://server.example.com/vospace/transfers"
Réponse
POST /vospace/transfers HTTP/1.1
Content-Type: text/xml
HTTP/1.1 303 See Other
Location: http://server.example.com/vospace/transfers/(jobid)
Content-Type: text/plain
Requête
curl -v "http://server.example.com/vospace/transfers/(jobid)"
Réponse
GET /vospace/transfers/(jobid) HTTP/1.1
HTTP/1.1 200 OK
Content-Type: text/xml
<?xml version="1.0" encoding="UTF-8"?>
<uws:job xmlns:uws="http://www.ivoa.net/xml/UWS/v1.0" xmlns:xlink="http://www.w3.org/1999/xlink">
<uws:jobId>(jobid)</uws:jobId>
<uws:ownerId xs:nill="true" />
<uws:phase>PENDING</uws:phase>
<uws:quote>2015-05-23T11:44:03.993</uws:quote>
<uws:startTime xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:nil="true" />
<uws:endTime xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:nil="true" />
<uws:executionDuration>43200</uws:executionDuration>
<uws:destruction>2015-05-29T23:44:03.993</uws:destruction>
<uws:parameters />
<uws:results>
<uws:result id="destination" xlink:href="vos://example.com!vospace/mydir/ef9ce281f5bd4bff92c8991580cddff4"/>
</uws:results>
<uws:jobInfo>
<vos:transfer xmlns:vos="http://www.ivoa.net/xml/VOSpace/v2.1">
<vos:target>vos://example.com!vospace/mydata1</vos:target>
<vos:direction>vos://example.com!vospace/mydir/.auto</vos:direction>
<vos:keepBytes>true</vos:keepBytes>
</vos:transfer>
</uws:jobInfo>
</uws:job>
Requête envoyée sur l'uri http://rest-endpoint/service/transfers/(jobid)/phase
curl -v -d "PHASE=RUN" "http://server.example.com/vospace/transfers/(jobid)/phase"
Réponse
POST /vospace/transfers/(jobid)/phase HTTP/1.1
Content-Type: text/xml
HTTP/1.1 303 See Other
Location: http://server.example.com/vospace/transfers/(jobid)
Content-Type: text/plain
Requête HTTP GET sur l'uri http://rest-endpoint/service/transfers/(jobid)/phase
curl -v "http://server.example.com/vospace/transfers/(jobid)/phase"
Réponse
GET /vospace/transfers/(jobid)/phase HTTP/1.1
HTTP/1.1 200 OK
Content-Type: text/plain;charset=UTF-8
COMPLETED
deleteNode
Requête
curl -v -X DELETE "http://server.example.com/vospace/nodes/mydata1"
Réponse
DELETE /vospace/nodes/mydata1 HTTP/1.1
HTTP/1.1 200 OK
Content-Type: text/plain
getNode
Requête
curl -v "http://server.example.com/vospace/nodes/mydir?detail=min&uri=vos://example.com!vospace/mydir/file3401"
Réponse
GET /vospace/nodes/mydir?detail=min&uri=vos://example.com!vospace/mydir/file3401 HTTP/1.1
HTTP/1.1 200 OK
Content-Type: text/xml
<?xml version="1.0" encoding="UTF-8"?>
<vos:node xmlns:vos="http://www.ivoa.net/xml/VOSpace/v2.1" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
uri="vos://example.com!vospace/mydir" xs:type="vos:ContainerNode">
<vos:properties>
<vos:property uri="ivo://ivoa.net/vospace/core#description">My award winning images</property>
</vos:properties>
<vos:accepts>
<vos:view uri="ivo://ivoa.net/vospace/core#anyview"/>
</vos:accepts>
<vos:provides>
<vos:view uri="ivo://ivoa/net/vospace/core#defaultview"/>
</vos:provides>
<vos:capabilities/>
<vos:nodes>
<vos:node uri="vos://example.com!vospace/mydir/file3401" xs:type="vos:DataNode"/>
<vos:node uri="vos://example.com!vospace/mydir/file3406" xs:type="vos:DataNode"/>
<vos:node uri="vos://example.com!vospace/mydir/file3532" xs:type="vos:DataNode"/>
</vos:nodes>
setNode
Requête
curl -v -X POST -d @setNode.xml -H "Content-type: text/xml" "http://server.example.com/vospace/nodes/mydata1"
Réponse
POST /vospace/nodes/mydata1 HTTP/1.1
Content-type: text/xml
HTTP/1.1 200 OK
Content-Type: text/xml
<?xml version="1.0" encoding="UTF-8"?>
<vos:node xmlns:vos="http://www.ivoa.net/xml/VOSpace/v2.1" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
uri="vos://cadc.nrc.ca!vospace/mydata1" xs:type="vos:DataNode" busy="false">
<vos:properties>
<vos:property uri="ivo://ivoa.net/vospace/core#length" readOnly="true">44</vos:property>
<vos:property uri="ivo://ivoa.net/vospace/core#MD5" readOnly="true">12c13e49f2fd37e2c91bcca6acb78a08</vos:property>
<vos:property uri="ivo://ivoa.net/vospace/core#date" readOnly="true">2015-05-24T23:02:10.397</vos:property>
<vos:property uri="ivo://ivoa.net/vospace/core#title" readOnly="false">Title for my data</vos:property>
</vos:properties>
<vos:accepts>
<vos:view uri="ivo://ivoa.net/vospace/core#anyview"/>
</vos:accepts>
<vos:provides />
</vos:node>
pushToVoSpace par endpoint asynchrone
Requête
curl -v -X POST -d @pushToVoSpace.xml -H "Content-type: text/xml" "http://server.example.com/vospace/transfers"
Réponse
POST /vospace/transfers HTTP/1.1
Content-type: text/xml
HTTP/1.1 303 See Other
Location: http://server.example.com/vospace/transfers/(jobid)
Content-Type: text/plain
Requête
curl -v -X POST -d "PHASE=RUN" http://server.example.com/vospace/transfers/(jobid)/phase
Réponse
POST /vospace/transfers/(jobid)/phase HTTP/1.1
Content-Type: text/xml
HTTP/1.1 303 See Other
Location: http://server.examle.com/vospace/transfers/(jobid)
Content-Type: text/plain
Requête
curl -v "http://server.example.com/vospace/transfers/(jobid)"
Réponse
GET /vospace/transfers/(jobid) HTTP/1.1
HTTP/1.1 200 OK
Content-Type: text/xml
<?xml version="1.0" encoding="UTF-8"?>
<uws:job xmlns:uws="http://www.ivoa.net/xml/UWS/v1.0" xmlns:xlink="http://www.w3.org/1999/xlink">
<uws:jobId>(jobid)</uws:jobId>
<uws:phase>EXECUTING</uws:phase>
<uws:quote>2015-05-26T11:06:45.713</uws:quote>
<uws:startTime>2015-05-25T23:17:41.217</uws:startTime>
<uws:endTime xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xs:nil="true" />
<uws:executionDuration>43200</uws:executionDuration>
<uws:destruction>2015-06-01T23:06:45.713</uws:destruction>
<uws:parameters />
<uws:results>
<uws:result id="transferDetails" xlink:href="http://server.example.com/vospace/transfers/(jobid)/results/transferDetails" />
<uws:result id="dataNode" xlink:href="vos://example.com!vospace/mydata1" />
</uws:results>
<uws:jobInfo>
<vos:transfer xmlns:vos="http://www.ivoa.net/xml/VOSpace/v2.1">
<vos:target>vos://example.com!vospace/mydata1</vos:target>
<vos:direction>pushToVoSpace</vos:direction>
<vos:view uri="ivo://ivoa.net/vospace/core#fits" />
<vos:protocol uri="ivo://ivoa.net/vospace/core#httpput" />
</vos:transfer>
</uws:jobInfo>
</uws:job>
Requête détails du transfert
curl -v http://server.example.com/vospace/transfers/(jobid)/results/transferDetails
Réponse
GET /vospace/transfers/(jobid)/results/transferDetails HTTP/1.1
HTTP/1.1 200 OK
Content-Type: text/xml;charset=UTF-8
<?xml version="1.0" encoding="UTF-8"?>
<vos:transfer xmlns:vos="http://www.ivoa.net/xml/VOSpace/v2.1">
<vos:target>vos://example.com!vospace/mydata1</vos:target>
<vos:direction>pushToVoSpace</vos:direction>
<vos:protocol uri="ivo://ivoa.net/vospace/core#httpput">
<vos:endpoint>http://storage1.example.com/trans/mydata1</vos:endpoint>
</vos:protocol>
<vos:protocol uri="ivo://ivoa.net/vospace/core#httpput">
<vos:endpoint>http://storage2.example.com/mydata1</vos:endpoint>
</vos:protocol>
</vos:transfer>
Requête de téléchargement
curl -v -T mydata1 "http://storage1.example.com/mydata1"
Réponse
PUT /trans/mydata1 HTTP/1.1
Content-Type: text/xml
HTTP/1.1 100 Continue
HTTP/1.1 200 OK
Content-Type: text/plain
pushToVoSpace par endpoint synchrone
Requête
curl -v -X POST -d @syncPushToVoSpace.xml -H "Content-type: text/xml"
"http://server.example.com/vospace/synctrans"
Réponse
POST /vospace/synctrans HTTP/1.1
Content-Type: text/xml
HTTP/1.1 303 See Other
Location: http://server.example.com/vospace/transfers/(jobid)/results/transferDetails
Content-Type: text/plain
Requête obtention des endpoint
curl -v http://server.example.com/vospace/transfers/(jobid)/results/transferDetails
Réponse
GET /vospace/transfers/(jobid)/results/transferDetails HTTP/1.1
HTTP/1.1 200 OK
Content-Type: text/xml;UTF-8
<?xml version="1.0" encoding="UTF-8"?>
<vos:transfer xmlns:vos="http://www.ivoa.net/xml/VOSpace/v2.1">
<vos:target>vos://example.com!vospace/mydata1</vos:target>
<vos:direction>pushToVoSpace</vos:direction>
<vos:protocol uri="ivo://ivoa.net/vospace/core#httpput">
<vos:endpoint>http://storage1.example.com/trans/mydata1</vos:endpoint>
</vos:protocol>
<vos:protocol uri="ivo://ivoa.net/vospace/core#httpput">
<vos:endpoint>http://storage2.example.com/mydata1</vos:endpoint>
</vos:protocol>
</vos:transfer>
Requête d'upload
curl -v -T votable1 "http://storage1.example.com/mydata1"
Réponse
PUT /trans/mydata1 HTTP/1.1
Content-Type: text/xml
HTTP/1.1 100 Continue
HTTP/1.1 200 OK
Content-Type: text/plain
pushToVoSpace par URL paramétré
Requête
curl -v -X POST "http://server.example.com/vospace/synctrans
?TARGET=vos://example.com~vospace/mydata1
&DIRECTION=pushToVoSpace&PROTOCOL=ivo://ivoa.net/vospace/core%23httpput"
Réponse avec endpoints
POST /vospace/synctrans?TARGET=vos://example.com~vospace/mydata1
&DIRECTION=pushToVoSpace&PROTOCOL=ivo://ivoa.net/vospace/core\%23httpput HTTP/1.1
HTTP/1.1 200 OK
Content-Type: text/xml;charset=UTF-8
<?xml version="1.0" encoding="UTF-8"?>
<vos:transfer xmlns:vos="http://www.ivoa.net/xml/VOSpace/v2.1">
<vos:target>vos://example.com!vospace/mydata1</vos:target>
<vos:direction>pushToVoSpace</vos:direction>
<vos:protocol uri="ivo://ivoa.net/vospace/core#httpput">
<vos:endpoint>http://storage1.example.com/trans/mydata1</vos:endpoint>
</vos:protocol>
<vos:protocol uri="ivo://ivoa.net/vospace/core#httpput">
<vos:endpoint>http://storage2.example.com/mydata1</vos:endpoint>
</vos:protocol>
</vos:transfer>
Requête d'upload
curl -v -T votable2 "http://storage1.example.com/mydata1"
Réponse
PUT /trans/mydata1 HTTP/1.1
Content-Type: text/xml
HTTP/1.1 100 Continue
HTTP/1.1 200 OK
Content-Type: text/plain
pushToVoSpace par endpoint synchrone avec méthode de sécurité
Requête
curl -v -X POST -d @pushToVoSpace.xml -H "Content-type: text/xml" "http://server.example.com/vospace/synctrans"
Réponse
POST /vospace/synctrans HTTP/1.1
Content-Type: text/xml
HTTP/1.1 303 See Other
Location: http://server.example.com/vospace/transfers/(jobid)/results/transferDetails
Content-Type: text/plain
Requête
curl -v http://server.example.come/vospace/transfers/(jobid)/results/transferDetails
Réponse avec un unique endpoint supportant la connexion sécurisée
GET /vospace/transfers/(jobid)/results/transferDetails HTTP/1.1
HTTP/1.1 200 OK
Content-Type: text/xml;charset=UTF-8
<?xml version="1.0" encoding="UTF-8"?>
<vos:transfer xmlns:vos="http://www.ivoa.net/xml/VOSpace/v2.1">
<vos:target>vos://example.com!vospace/mydata1</vos:target>
<vos:direction>pushToVoSpace</vos:direction>
<vos:protocol uri="ivo://ivoa.net/vospace/core#httpsput">
<vos:endpoint>https://storage1.example.com/trans/mydata1</vos:endpoint>
<vos:securityMethod uri="ivo://ivoa.net/sso#tls-with-certificate"/>
</vos:protocol>
</vos:transfer>
Requête d'upload
curl -v -T votable4 -E mycert.pem "http://storage1.example.com/mydata1"
Réponse
PUT /trans/mydata1 HTTP/1.1
Content-Type: text/xml
HTTP/1.1 100 Continue
HTTP/1.1 200 OK
Content-Type: text/plain
pullToVoSpace par endpoint asynchrone
Requête
curl -v -X POST -d @pullToVoSpace.xml -H "Content-type: text/xml" "http://server.example.com/vospace/transfers"
Réponse
POST /vospace/transfers HTTP/1.1
Content-type: text/xml
HTTP/1.1 303 See Other
Location: http://server.example.com/vospace/transfers/(jobid)
Content-Type: text/plain
Requête vérification de la création du job
curl -v http://server.example.com/vospace/transfers/(jobid)
Réponse
GET /vospace/transfers/(jobid) HTTP/1.1
HTTP/1.1 200 OK
Content-Type: text/xml
<?xml version="1.0" encoding="UTF-8"?>
<uws:job xmlns:uws="http://www.ivoa.net/xml/UWS/v1.0" xmlns:xlink="http://www.w3.org/1999/xlink">
<uws:jobId>(jobid)</uws:jobId>
<uws:phase>PENDING</uws:phase>
<uws:quote>2015-05-26T11:06:45.713</uws:quote>
<uws:startTime xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xs:nil="true" />
<uws:endTime xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xs:nil="true"/>
<uws:executionDuration>43200</uws:executionDuration>
<uws:destruction>2015-06-01T23:06:45.713</uws:destruction>
<uws:parameters />
<uws:results />
<uws:jobInfo>
<vos:transfer xmlns:vos="http://www.ivoa.net/xml/VOSpace/v2.1">
<vos:target>vos://example.com!vospace/mydata1</vos:target>
<vos:direction>pullToVoSpace</vos:direction>
<vos:protocol uri="ivo://ivoa.net/vospace/core#httpput">
<vos:endpoint>http://anotherserver.example.com/here/is/the/votable3</vos:endpoint>
</vos:protocol>
</vos:transfer>
</uws:jobInfo>
</uws:job>
Requête
curl -v -X POST -d "PHASE=RUN" http://server.example.com/vospace/transfers/(jobid)/phase
Réponse
POST /vospace/transfers/(jobid)/phase HTTP/1.1
Content-Type: text/xml
HTTP/1.1 303 See Other
Location: http://server.examle.com/vospace/transfers/(jobid)
Content-Type: text/plain
Requête consultation du job
http://server.examle.com/vospace/transfers/(jobid)
Réponse
GET /vospace/transfers/(jobid) HTTP/1.1
HTTP/1.1 200 OK
Content-Type: text/xml
<?xml version="1.0" encoding="UTF-8"?>
<uws:job xmlns:uws="http://www.ivoa.net/xml/UWS/v1.0" xmlns:xlink="http://www.w3.
org/1999/xlink">
<uws:jobId>(jobid)</uws:jobId>
<uws:phase>EXECUTING</uws:phase>
<uws:quote>2015-05-26T11:06:45.713</uws:quote>
<uws:startTime>2015-05-25T23:17:41.217</uws:startTime>
<uws:endTime xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xs:nil="true"/>
<uws:executionDuration>43200</uws:executionDuration>
<uws:destruction>2015-06-01T23:06:45.713</uws:destruction>
<uws:parameters />
<uws:results>
<uws:result id="transferDetails"
xlink:href="http://server.example.com/vospace/transfers/(jobid)/results/transferDetails" />
<uws:result id="dataNode" xlink:href="vos://example.com!vospace/mydata1" />
</uws:results>
<uws:jobInfo>
<vos:transfer xmlns:vos="http://www.ivoa.net/xml/VOSpace/v2.1">
<vos:target>vos://example.com!vospace/mydata1</vos:target>
<vos:direction>pullToVoSpace</vos:direction>
<vos:protocol uri="ivo://ivoa.net/vospace/core#httpput">
<vos:endpoint>http://anotherserver.example.com/here/is/the/votable3</vos:endpoint>
</vos:protocol>
</vos:transfer>
</uws:jobInfo>
</uws:job>
Requête état du transfert
curl -v http://server.example.com/vospace/transfers/(jobid)/phase
Réponse
GET /vospace/transfers/(jobid)/phase HTTP/1.1
HTTP/1.1 200 OK
Content-Type: text/plain;
COMPLETED
pullFromVoSpace par endpoint synchrone
Requête
curl -v -X POST -d @pullFromVoSpace.xml -H "Content-type: text/xml" "http://server.example.com/vospace/synctrans"
Réponse
POST /vospace/synctrans HTTP/1.1
Content-Type: text/xml
HTTP/1.1 303 See Other
Location: http://server.example.com/vospace/transfers/(jobid)/results/transferDetails
Content-Type: text/plain
Requête
curl -v http://server.example.com/vospace/transfers/(jobid)/results/transferDetails
Réponse
GET /vospace/transfers/(jobid)/results/transferDetails HTTP/1.1
HTTP/1.1 200 OK
Content-Type: text/xml;charset=UTF-8
<?xml version="1.0" encoding="UTF-8"?>
<vos:transfer xmlns:vos="http://www.ivoa.net/xml/VOSpace/v2.1">
<vos:target>vos://example.com!vospace/mydata1</vos:target>
<vos:direction>pullFromVoSpace</vos:direction>
<vos:protocol uri="ivo://ivoa.net/vospace/core#httpget">
<vos:endpoint>http://storage1.example.com/trans/mydata1</vos:endpoint>
</vos:protocol>
<vos:protocol uri="ivo://ivoa.net/vospace/core#httpget">
<vos:endpoint>http://storage2.example.com/mydata1</vos:endpoint>
</vos:protocol>
</vos:transfer>
pullFromVoSpace par URL paramétré
curl -v -X POST "http://server.example.com/vospace/synctrans
?TARGET=vos://example.com~vospace/mydata1
&DIRECTION=pullFromVoSpace&PROTOCOL=ivo://ivoa.net/vospace/core%23httpget"
Réponse avec endpoints
POST /vospace/synctrans?TARGET=vos://example.com~vospace/mydata1
&DIRECTION=pullFromVoSpace&PROTOCOL=ivo://ivoa.net/vospace/core\%23httpget HTTP/1.1
HTTP/1.1 200 OK
Content-Type: text/xml;charset=UTF-8
<?xml version="1.0" encoding="UTF-8"?>
<vos:transfer xmlns:vos="http://www.ivoa.net/xml/VOSpace/v2.1">
<vos:target>vos://example.com!vospace/mydata1</vos:target>
<vos:direction>pullFromVoSpace</vos:direction>
<vos:protocol uri="ivo://ivoa.net/vospace/core#httpget">
<vos:endpoint>http://storage1.example.com/trans/mydata1</vos:endpoint>
</vos:protocol>
<vos:protocol uri="ivo://ivoa.net/vospace/core#httpget">
<vos:endpoint>http://storage2.example.com/mydata1</vos:endpoint>
</vos:protocol>
</vos:transfer>
Requête de téléchargement
curl -v -o mydata1 http://storage1.example.com/mydata1
Réponse
GET /mydata1 HTTP/1.1
HTTP/1.1 200 OK
Content-Type: text/plain;charset=UTF-8
pullFromVoSpace par URL paramétré et REQUEST=redirect
Requête
curl -v -X POST "http://server.example.com/vospace/synctrans
?TARGET=vos://example.com~vospace/mydata1&DIRECTION=pullFromVoSpace
&PROTOCOL=ivo://ivoa.net/vospace/core%23httpget&REQUEST=redirect"
Réponse
POST /vospace/synctrans?TARGET=vos://example.com~vospace/mydata1
&DIRECTION=pullFromVoSpace
&PROTOCOL=ivo://ivoa.net/vospace/core\%23httpget&REQUEST=redirect HTTP/1.1
HTTP/1.1 303 See Other
Location: http://storage1.example.com/mydata1
Content-Type: text/plain
pullFromVoSpace par URL paramétré et REQUEST=redirect et méthode de sécurité
Requête
curl -v -X POST -E mycert.pem "https://server.example.com/vospace/synctrans
?TARGET=vos://example.com~vospace/mydata1&DIRECTION=pullFromVoSpace
&PROTOCOL=ivo://ivoa.net/vospace/core%23httpsget&REQUEST=redirect
&SECURITYMETHOD=ivo://ivoa.net/sso%23tls-with-certificate"
Réponse
POST /vospace/synctrans?TARGET=vos://example.com~vospace/mydata1
&DIRECTION=pullFromVoSpace&PROTOCOL=ivo://ivoa.net/vospace/core\%23httpget
&REQUEST=redirect&SECURITYMETHOD=ivo://ivoa.net/sso%23tls-with-certificate HTTP/1.1
HTTP/1.1 303 See Other
Location: https://storage1.example.com/mydata1
Content-Type: text/plain
pushFromVoSpace
Requête
curl -v -X POST -d @pushFromVoSpace.xml -H "Content-type: text/xml" "http://server.example.com/vospace/transfers"
Réponse
POST /vospace/transfers HTTP/1.1
Content-type: text/xml
HTTP/1.1 303 See Other
Location: http://server.example.com/vospace/transfers/(jobid)
Content-Type: text/plain
Requête
curl -v -X POST -d "PHASE=RUN" http://server.example.com/vospace/transfers/(jobid)/phase
Réponse
GET /vospace/transfers/m4ipu36gairz0dnl HTTP/1.1
>
< HTTP/1.1 200 OK
< Content-Type: text/xml
<
<?xml version="1.0" encoding="UTF-8"?>
<uws:job xmlns:uws="http://www.ivoa.net/xml/UWS/v1.0" xmlns:xlink="http://www.w3.org/1999/xlink">
<uws:jobId>(jobid)</uws:jobId>
<uws:phase>EXECUTING</uws:phase>
<uws:quote>2015-05-26T11:06:45.713</uws:quote>
<uws:startTime>2015-05-25T23:17:41.217</uws:startTime>
<uws:endTime xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xs:nil="true" />
<uws:executionDuration>43200</uws:executionDuration>
<uws:destruction>2015-06-01T23:06:45.713</uws:destruction>
<uws:parameters />
<uws:results>
<uws:result id="transferDetails" xlink:href="http://server.example.com/vospace/transfers/m4ipu36gairz0dnl/results/transferDetails" />
<uws:result id="dataNode" xlink:href="vos://example.com!vospace/mydata1" />
</uws:results>
<uws:jobInfo>
<vos:transfer xmlns:vos="http://www.ivoa.net/xml/VOSpace/v2.1">
<vos:target>vos://example.com!vospace/mydata1</vos:target>
<vos:direction>pushFromVoSpace</vos:direction>
<vos:protocol uri="ivo://ivoa.net/vospace/core#httpput">
<vos:endpoint>http://anotherserver1.example.com/put/the/data/here</vos:endpoint>
</vos:protocol>
<vos:protocol uri="ivo://ivoa.net/vospace/core#httpput">
<vos:endpoint>http://anotherserver2.example.com/put/the/data/here</vos:endpoint>
</vos:protocol>
</vos:transfer>
</uws:jobInfo>
</uws:job>