Skip to main content
MindTouch Success Center

site/import (POST) (MT4)

Overview

Generates import information

  • REST Method: POST
  • Method Access: public

Query Parameters

Name Type Description
relto int? Page used for path normalization (default: home page)
reltopath string? Page used for path normalization. Ignored if relto parameter is defined.
forceoverwrite bool? Force overwrite of destination, even if import content is older.

Return Codes

Name Value Description
OK 200 The request completed successfully
Bad Request 400 Invalid input parameter or request body

Message Format

Input:

<manifest version="{version}">
    <page dataid="{text1}">
      <title>{text}</title>
      <path>{page path using // to indicate relativity to base export page}</path>
      <language>{text}</language>
      <contents type="{mimetype}"/>
    </page>
    <tags dataid="{text2}">
      <path>{page path using // to indicate relativity to base export page}</path>    
    </tags>
    <property dataid="{text3}">
      <name>{text}</name>
      <path>{page path using // to indicate relativity to base export page}</path>
      <contents type="{mimetype}"/>
    </property>
    <file dataid="{text4}">
      <filename>{text}</filename>
      <path>{page path using // to indicate relativity to base export page}</path>
      <description>{text}</description>
      <contents type="{mimetype}" />
    </file>
    <property dataid="{text5}">
      <name>{text}</name>
      <filename>{text}</filename>
      <path>{page path using // to indicate relativity to base export page}</path>
      <contents type="{mimetype}"/>
    </property>
    ...
  </manifest>

Output:

<requests>
  <request method="POST" href="http://host/@api/deki/pages/{path}/contents?reltopath={path}&edittime={timestamp}&lang={lang}&title={text}" dataid="{text1}" type="{mimetype}" >
    <header name="{text}" value="{text}" />
      ...
  </request>
  <request method="PUT" href="http://host/@api/deki/pages/{path}/tags" dataid="{text2}" type="{mimetype}" >
    <header name="{text}" value="{text}" />
      ...
  </request>
  <request method="PUT" href="http://host/@api/deki/pages/{path}/properties" dataid="{text3}" type="{mimetype}" >
    <header name="{text}" value="{text}" />
      ...
  </request>
  <request method="PUT" href="http://host/@api/deki/pages/{path}/files/{filename}" dataid="{text4}" type="{mimetype}" >
    <header name="{text}" value="{text}" />
      ...
  </request>
  <request method="PUT" href="http://host/@api/deki/pages/{path}/files/{filename}/properties" dataid="{text5}" type="{mimetype}" >
    <header name="{text}" value="{text}" />
      ...
  </request>
  <request method="POST" href="http://host/@api/deki/pages/{id}/security" type="text/xml">
    <body type="xml">
      {xml body to post}
    </body>
  </request>
  <warning reason="{text}" status="401|404">
    <page dataid="{text6}">
      <title>{text}</title>
      <path>{page path using // to indicate relativity to base export page}</path>
      <language>{text}</language>
      <contents type="{mimetype}"/>
    </page>
  </warning>
  ...
</requests>

Implementation Notes

The import manifest document expected as input is the same as the manifest section from the export response. It can also be manually generated against your own content.

The requests document provides instructions for what HTTP requests must be executed to import the content from your import manifest. If a request has a dataid attribute, the data correlated to that dataid from your manifest is to be used as the request body. Request blocks with a body block will never have a dataid attribute and expect the contents of the body block to be used as the request body instead.

Curl Code Sample: Import Manifests

The following command generates import instructions according to the manifests listed in "import.xml":

Sample Code

curl -u admin:password -H "Content-Type: application/xml" -d @import.xml -i http://mindtouch.address/@api/deki/site/import

Implementation notes 

curl flags

-u
Basic HTTP authentication. Sends a username and password to server so it can verify whether a user is of privilege to perform specific operation.
-d @file
Specifies a POST request and file to send.
-H
Replaces or appends an HTTP header. The "Content-Type" header specifies the MIME type of the value attached to the property. In this case, use application/xml since the document being passed is of type XML.
-i
Includes the HTTP response header in the output. Useful for debugging.

Example

The following demonstrates how to generate the instructions from the pages/files exported in this example.

import.xml

Content-Type: application/xml

<?xml version="1.0"?>
<manifest>
  <page dataid="0">
    <path>//Test</path>
    <language/>
    <contents type="application/x.deki0805+xml"/>
  </page>
  <tags dataid="1">
    <path>//Test</path>
  </tags>
  <page dataid="2">
    <path>//Test/Foo</path>
    <language/>
    <contents type="application/x.deki0805+xml"/>
  </page>
  <tags dataid="3">
    <path>//Test/Foo</path>
  </tags>
  <page dataid="4">
    <path>//Test/Foo/Pidgin</path>
    <language/>
    <contents type="application/x.deki0805+xml"/>
  </page>
  <tags dataid="5">
    <path>//Test/Foo/Pidgin</path>
  </tags>
  <page dataid="6">
    <path>//FUBAR</path>
    <language/>
    <contents type="application/x.deki0805+xml"/>
  </page>
  <tags dataid="7">
    <path>//FUBAR</path>
  </tags>
  <file dataid="8">
    <filename>trollface.jpg</filename>
    <path>//FUBAR</path>
    <contents type="image/jpg"/>
  </file>
  <property dataid="9">
    <name>iscopyright</name>
    <filename>trollface.jpg</filename>
    <path>//FUBAR</path>
    <contents type="text/plain"/>
  </property>
</manifest>

Sample Code

curl -u admin:password -H "Content-Type: application/xml" -d @import.xml -i http://192.168.59.128/@api/deki/site/import

HTTP Response Headers

HTTP/1.1 200 OK
Date: Tue, 26 Jan 2010 00:31:12 GMT
Server: Dream-HTTPAPI/2.0.0.17629 Microsoft-HTTPAPI/2.0
Content-Length: 1791
Content-Type: application/xml; charset=utf-8
X-Data-Stats: request-time-ms=79; mysql-queries=4; mysql-time-ms=76;
X-Deki-Site: id="default"
Via: 1.1 dekiwiki

HTTP Response Body

Content-Type: application/xml

<requests>
  <request method="POST" href="http://192.168.59.128/@api/deki/pages/=Test/contents?reltopath=&lang=&title&edittime=99991231235959&redirects=0" dataid="0" type="application/xml; charset=utf-8"/>
  <request method="PUT" href="http://192.168.59.128/@api/deki/pages/=Test/tags?redirects=0" dataid="1" type="application/xml; charset=utf-8"/>
  <request method="POST" href="http://192.168.59.128/@api/deki/pages/=Test%252fFoo/contents?reltopath=&lang=&title&edittime=99991231235959&redirects=0" dataid="2" type="application/xml; charset=utf-8"/>
  <request method="PUT" href="http://192.168.59.128/@api/deki/pages/=Test%252fFoo/tags?redirects=0" dataid="3" type="application/xml; charset=utf-8"/>
  <request method="POST" href="http://192.168.59.128/@api/deki/pages/=Test%252fFoo%252fPidgin/contents?reltopath=&lang=&title&edittime=99991231235959&redirects=0" dataid="4" type="application/xml; charset=utf-8"/>
  <request method="PUT" href="http://192.168.59.128/@api/deki/pages/=Test%252fFoo%252fPidgin/tags?redirects=0" dataid="5" type="application/xml; charset=utf-8"/>
  <request method="POST" href="http://192.168.59.128/@api/deki/pages/=FUBAR/contents?reltopath=&lang=&title&edittime=99991231235959&redirects=0" dataid="6" type="application/xml; charset=utf-8"/>
  <request method="PUT" href="http://192.168.59.128/@api/deki/pages/=FUBAR/tags?redirects=0" dataid="7" type="application/xml; charset=utf-8"/>
  <request method="PUT" href="http://192.168.59.128/@api/deki/pages/=FUBAR/files/=trollface.jpg?redirects=0" dataid="8" type="image/jpg"/>
  <request method="PUT" href="http://192.168.59.128/@api/deki/pages/=FUBAR/files/=trollface.jpg/properties/iscopyright?abort=never&redirects=0" dataid="9" type="text/plain"/>
</requests>

Notes

  • Import provides the feature instructions to recreate a page. The full process is documented here.

  • Was this article helpful?