Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Section
Column

This section describes the basic protocol used to interact with Data APIs including examples of what Atom requests may look like, what kind of responses to expect, and so on. It is intended for anyone wanting an understanding the general idea of the format and protocol used by the Data API and it assumes that you understand the basics of XML, namespaces, Atom feeds, and the main HTTP requests GET, POST, PUT and DELETE, as well as the RESTful concept of a resource. Using the API at this level your client application can interact with the Server using any programming language that lets you issue HTTP requests and consume XML-based responses.

Note

In v9.1 and later 's "Applications" are known as "Projects." Where the documentation below refers to Applications it corresponds to v9.1+ Projects," and "Themes" are known as "Styles." The API objects and methods still use the words application, 'app', and theme.

There are various different types of resources that can be viewed and manipulated by the Data API. Most of these resources are things that a designer sees when creating new forms and navigating the application using the UI, for instance users, projects, formforms, schemas, etc. So before delving into the API specifics it is a good idea to understand these different types of resources and how they relate to each other. The following diagram shows these different resources currently being exposed by the Data API and the ownership relationships among them:

Column
width240px

On this page:

Table of Contents
maxLevel1

 

...

Resource Description  Resource URI
Users FeedUserFeed /frevvo/web/t/{tenantId}/api/users
User EntryUserEntry/frevvo/web/t/{tenantId}/api/user/{id}
ApplicationFeedProjectFeed /frevvo/web/t/{tenantId}/api/apps?ownerId={userId}
ApplicationEntryProjectEntry/frevvo/web/t/{tenantId}/api/app/{id}
FormTypeFeed/frevvo/web/t/{tenantId}/api/formtypes?ownerId={appId}
FormTypeEntry /frevvo/web/t/{tenantId}/api/formtype/{id}
SchemaFeed/frevvo/web/t/{tenantId}/api/schemas?ownerId={appId}
SchemaEntry/frevvo/web/t/{tenantId}/api/schema/{id}
ControlTypeFeed/frevvo/web/t/{tenantId}/api/controltypes?ownerId={formTypeId}
ControlTypeEntry/frevvo/web/t/{tenantId}/api/controltype/{id}
SubmissionFeed /frevvo/web/t/{tenantId}/api/submissions
SubmissionEntry /frevvo/web/t/{tenantId}/api/submission/{id}

...

The user feed represents each user that is visible to the currently logged in user. For all non-administrator users, this feed will always show one user: the current user; for the administrator users it will show all the users in   allowing  allowing them to manage user settings.

...

Note

Note that since the current logged in user is johndoe the feed contains only his entry. If the currenty logged in user was the administrator then a full list of all users would be returned by the server. Also note that for this release user feeds are read-only, and so new users cannot be created using the Data API.

...

Code Block
200 OK
<feed xmlns="http://www.w3.org/2005/Atom" xml:base="http://localhost:8080">
    <title>Users</title>
    <updated>2010-04-28T17:59:06.337-04:00</updated>
    <link rel="self" type="application/atom+xml" href="/frevvo/web/tn/d/api/users"/>
    <entry xmlns:fd="http://schemas.frevvo.com/fdata/2008">
        <id>john</id>
        <title type="text">john</title>
        <updated>2010-04-28T17:59:06.337-04:00</updated>
        <link type="application/atom+xml" href="/frevvo/web/tn/d/api/user/john"/>
        <link rel="self" type="application/atom+xml" href="/frevvo/web/tn/d/api/user/john"/>
        <link rel="edit" type="application/atom+xml" href="/frevvo/web/tn/d/api/user/john"/>
        <link rel="apps" type="application/atom+xml"
            href="/frevvo/web/tn/d/api/apps?ownerId=john"/>
        <link rel="themes" type="application/atom+xml"
            href="/frevvo/web/tn/d/api/themes?ownerId=john"/>
    </entry>
</feed>

Since at this point User entries are also read-only for this release, they can only be used to traverse to related feeds such as the users application and theme user's project and style ('theme') feeds (see the two link elements with a rel attribute with value apps and themes, respectively, in the entry above.)

Inserting a new UserEntry

...

ThemeFeed

The theme feed lists all themes styles visible to the currently logged-in user. This includes enabled themes styles that were uploaded by the current user and all enabled themes styles that are global, i.e. owned by the admin user.

...

In order to get a list of all themesstyles, send the following request to the  server:

...

The returned feed above shows two theme style entries named Clear and Blue Professional that happen to be  (the two global themes styles provided by default by the  installationthe  version when this example was created.  currently offers additional Global Styles.

Getting a ThemeEntry

It is also possible to directly get a specific Theme Style entry as long as you know the theme Style id. In order to do that send the following request to the server:

...

Note

It is not possible to download the theme style using the Data API for this release: ; support for that will be added in a subsequent release.

Inserting a new ThemeEntry

Inserting a new theme Style using the Data API is not supported at this point.

Updating a ThemeEntry

Updating a theme Style is not supported at this point.

Deleting a ThemeEntry

Deleting a theme Style can be done by sending an HTTP DELETE request to the theme style entry url.

Code Block
DELETE /frevvo/web/tn/{tenantId}/api/theme/{id}

...

Code Block
200 OK
<entry xmlns="http://www.w3.org/2005/Atom"
        xmlns:fd="http://schemas.frevvo.com/fdata/2008"
        xml:base="http://localhost:8080">
    <id>_Q6pJIagiEdyrUJr3HP_61Q!admin</id>
    <title type="text">Clear</title>
    <updated>2010-04-28T18:02:16.364-04:00</updated>
    <link type="application/atom+xml"
        href="/frevvo/web/tn/d/api/theme/_Q6pJIagiEdyrUJr3HP_61Q!admin"/>
    <link rel="self" type="application/atom+xml"
        href="/frevvo/web/tn/d/api/theme/_Q6pJIagiEdyrUJr3HP_61Q!admin"/>
    <link rel="edit" type="application/atom+xml"
        href="/frevvo/web/tn/d/api/theme/_Q6pJIagiEdyrUJr3HP_61Q!admin"/>
    <fd:owner id="admin"/>
</entry>

...

ProjectFeed

The application Project feed lists all applications Projects owned by the currently logged-in user.

Getting the

...

ProjectFeed

In order to get a list of all applicationsprojects, send the following request to the  server:

...

The returned feed above shows one application project entry named "Expense Reports" owned by the current user 'johndoe'.

Getting

...

a ProjectEntry

It is also possible to directly get a specific application project entry as long as you know the application Project id. In order to do that send the following request to the server:

...

Code Block
200 OK
<entry xmlns="http://www.w3.org/2005/Atom"
        xmlns:fd="http://schemas.frevvo.com/fdata/2008"
        xml:base="http://localhost:8081">
    <id>_nv8uAT8KEd6yc_ZDP21S1Q!johndoe</id>
    <title type="text">Expense Reports</title>
    <summary type="text"/>
    <updated>2009-05-12T12:13:44.471-04:00</updated>
    <link type="application/atom+xml" href="/frevvo/web/api/app/_nv8uAT8KEd6yc_ZDP21S1Q!johndoe"/>
    <link rel="self" type="application/atom+xml" href="/frevvo/web/api/app/_nv8uAT8KEd6yc_ZDP21S1Q!johndoe"/>
    <link rel="edit" type="application/atom+xml" href="/frevvo/web/api/app/_nv8uAT8KEd6yc_ZDP21S1Q!johndoe"/>
    <link rel="formtypes" type="application/atom+xml" href="/frevvo/web/api/formtypes?ownerId=_nv8uAT8KEd6yc_ZDP21S1Q!johndoe" title="Expense Reports's Form Types"/>
    <link rel="schemas" type="application/atom+xml" href="/frevvo/web/api/schemas?ownerId=_nv8uAT8KEd6yc_ZDP21S1Q!johndoe" title="Expense Reports's Schemas"/>
    <link rel="forms" type="application/atom+xml" href="/frevvo/web/api/forms?ownerId=_nv8uAT8KEd6yc_ZDP21S1Q!johndoe"/>
    <fd:owner id="johndoe"/>
    <content type="application/zip" src="/frevvo/web/user/johndoe/app/_nv8uAT8KEd6yc_ZDP21S1Q/file/content.zip"/>
</entry>

Inserting a New

...

ProjectEntry

Code Block
POST /frevvo/web/t/{tenantId}/api/apps
 
<entry xmlns="http://www.w3.org/2005/Atom">
    <id>_nv8uAT8KEd6yc_ZDP21S1Q!johndoe</id>
    <title type="text">Expense Reports</title>
    <summary type="text"/>
</entry>

...

Code Block
200 OK
 
<entry xmlns="http://www.w3.org/2005/Atom"
        xmlns:fd="http://schemas.frevvo.com/fdata/2008"
        xml:base="http://localhost:8082">
    <id>_nv8uAT8KEd6yc_ZDP21S1Q!johndoe</id>
    <title type="text">Expense Reports</title>
    <summary type="text"/>
    <updated>2009-05-12T12:13:44.471-04:00</updated>
    <link type="application/atom+xml" href="/frevvo/web/api/app/_nv8uAT8KEd6yc_ZDP21S1Q!johndoe"/>
    <link rel="self" type="application/atom+xml" href="/frevvo/web/api/app/_nv8uAT8KEd6yc_ZDP21S1Q!johndoe"/>
    <link rel="edit" type="application/atom+xml" href="/frevvo/web/api/app/_nv8uAT8KEd6yc_ZDP21S1Q!johndoe"/>
    <link rel="formtypes" type="application/atom+xml" href="/frevvo/web/api/formtypes?ownerId=_nv8uAT8KEd6yc_ZDP21S1Q!johndoe" title="Expense Reports's Form Types"/>
    <link rel="schemas" type="application/atom+xml" href="/frevvo/web/api/schemas?ownerId=_nv8uAT8KEd6yc_ZDP21S1Q!johndoe" title="Expense Reports's Schemas"/>
    <link rel="forms" type="application/atom+xml" href="/frevvo/web/api/forms?ownerId=_nv8uAT8KEd6yc_ZDP21S1Q!johndoe"/>
    <fd:owner id="johndoe"/>
    <content type="application/zip" src="/frevvo/web/user/johndoe/app/_nv8uAT8KEd6yc_ZDP21S1Q/file/content.zip"/>
</entry>

Updating

...

a ProjectEntry

Updating application project properties using the Data API is not supported at this point in time.

Deleting

...

a ProjectEntry

Deleting an application project can be done by sending an HTTP DELETE request to the application project entry url.

Code Block
DELETE /frevvo/web/tn/{tenantId}/api/app/{id}

...

The formtype feed contains a list of all forms across all applications projects owned by the currently logged-in user.

...

It is also possible to directly get a specific schema entry as long as you know the theme schema id. In order to do that send the following request to the server:

...

Note

It is not possible to download the theme schema using the Data API for this release: ; support for that will be added in a subsequent release.

...