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>

CDS