vollt icon indicating copy to clipboard operation
vollt copied to clipboard

`capabilities`: add IVO ids in output formats to support TAPRegExt

Open jontxu opened this issue 1 year ago • 3 comments

Hi, I was notified by @mbtaylor that the capabilities endpoint from our TAP service does not follow the TAPRegExt recommendation as it lacks the ivo-id attribute for the relevant output formats (outputFormat in the XML). This ID is used by some clients to interpret (for the time being) VOTable types, as shown on the recommendation: https://www.ivoa.net/documents/TAPRegExt/20120827/REC-TAPRegExt-1.0.html#outforms

Current output:

<outputFormat>
  <mime>application/x-votable+xml</mime>
  <alias>votable</alias>
</outputFormat>
<outputFormat>
  <mime>application/x-votable+xml;serialization=BINARY2</mime>
  <alias>votable/b2</alias>
</outputFormat>
<outputFormat>
  <mime>application/x-votable+xml;serialization=TABLEDATA</mime>
  <alias>votable/td</alias>
</outputFormat>

Expected (TapRegExt-supporting) output:

<outputFormat ivo-id="ivo://ivoa.net/std/TAPRegExt#output-votable-td">
  <mime>application/x-votable+xml</mime>
  <alias>votable</alias>
</outputFormat>
<outputFormat ivo-id="ivo://ivoa.net/std/TAPRegExt#output-votable-binary2">
  <mime>application/x-votable+xml;serialization=BINARY2</mime>
  <alias>votable/b2</alias>
</outputFormat>
<outputFormat ivo-id="ivo://ivoa.net/std/TAPRegExt#output-votable-td">
  <mime>application/x-votable+xml;serialization=TABLEDATA</mime>
  <alias>votable/td</alias>
</outputFormat>

Looking into the code, seems like its implementation is somewhat trivial, by adding support for a ivoId field in tap.formatter.OutputFormat (and the classes which implement it) and adding the attribute when getting the output formats when writing the capabilities in tap.resource.TAP.

jontxu avatar Feb 02 '24 12:02 jontxu