アプリケーション

概要

以下のAPIは「/platform」で公開されていませんが、「/application」を利用してアクセスできます。

アプリケーションインターフェースは以下の要素で構成されます。

注記:すべてのPUT / POSTリクエストに対して「accept」ヘッダーを使用する必要があります。そうでない場合は、空の応答本体が返されます。

アプリケーションの名称

Things Cloudは各テナントの使用可能なアプリケーションを管理します。 Things Cloudは多種多様なアプリケーションを提供しています。

APIを使用してテナントにアプリケーションをサブスクライブする場合は、引数にアプリケーション名を(名称として)使用する必要があります。

使用する各アプリケーションの名称については、ユーザーガイドの 管理 > アプリケーションの管理 にある表をご覧ください。

アプリケーション API

アプリケーション API [application/vnd.com.nsn.cumulocity.applicationApi+json]

名称 タイプ 発生回数 説明
self URL 1 このリソースへのリンク
applicationById Application/URI-Template 1 タイプがアプリケーションであるリソースに対するリファレンス(プレースホルダー {id})
applications ApplicationCollection 1 すべてのアプリケーションのコレクション
applicationsByName ApplicationCollection URI-Template 1 特定の名称を有するアプリケーションすべてから成る読み取り専用コレクション(プレースホルダー {name})
applicationsByTenant ApplicationCollection URI-Template 1 特定のテナントがチャネル接続しているアプリケーションすべてから成る読み取り専用コレクション(プレースホルダー {tenant})
applicationsByOwner ApplicationCollection URI-Template 1 特定のテナントが所有しているアプリケーションすべてから成る読み取り専用コレクション(プレースホルダー {tenant})

GET - アプリケーションAPIリソースの取得

応答本体: ApplicationApi

要求されるロール: ROLE_Application_READ

リクエスト例:

GET /application
Host: ...
Authorization: Basic ...

応答例:

HTTP/1.1 200 OK
Content-Type: application/vnd.com.nsn.cumulocity.ApplicationApi+json;ver=...
Content-Length: ...
{

テナントIDの取得についての詳細はリファレンスガイドの テナント>現在のテナント をご覧ください。

アプリケーションコレクション

アプリケーションコレクション[application/vnd.com.nsn.cumulocity.applicationCollection+json]

名称 タイプ 発生回数 説明
self URI 1 このリソースへのリンク
applications Application 0..n アプリケーションのリスト(下記参照)
statistics PagingStatistics 1 ページング統計に関する情報
prev URI 0..1 アプリケーション前のページへのリンク(あれば)
next URI 0..1 アプリケーション次のページへのリンク(あれば)

GET - アプリケーションコレクションの取得

応答本体: ApplicationCollection

要求されるロール: ROLE_APPLICATION_MANAGEMENT_READ

リクエスト例:

GET /application/applications
Host: ...
Authorization: Basic ...

応答例:

HTTP/1.1 200 OK
Content-Type: application/vnd.com.nsn.cumulocity.applicationCollection+json;ver=...
Content-Length: ...
{
    "self" : "...",
    "next" : "...",
    "prev" : "...",
    "applications": [
        {
            "availability": "PRIVATE",
            "id": "101",
            "key": "...",
            "name": "myOwnApplcation",
            "owner": {
                "self": "...",
                "tenant": {
                    "id": "test"
                }
            },
            "self": "...",
            "type": "HOSTED",
            "contextPath": "/my_own_application",
            "resourcesUrl":"...",
            "resourcesUsername": "...",
            "resourcesPassword": "..."
        },
        {
            "availability": "MARKET",
            "id": "3",
            "key": "...",
            "name": "energyapp",
            "owner": {
                "self": "...",
                "tenant": {
                    "id": "management"
                }
            },
            "self": "...",
            "type": "EXTERNAL",
            "externalUrl": "..."

        }
    ],
    "statistics": {
        "currentPage": 1,
        "pageSize": 5,
        "totalPages": 1
    }
}

POST - 新規アプリケーションの作成

リクエスト本体: Application

応答本体: Application

要求されるロール: ROLE_APPLICATION_MANAGEMENT_ADMIN.

リクエスト例:

POST /application/applications
Host: ...
Authorization: Basic ...
Content-Length: ...
Content-Type: application/vnd.com.nsn.cumulocity.application+json;ver=...

{
  "key": "vehicleControlApplicationSecretKey",
  "name": "vehicleControlApplication",
  "type": "HOSTED",
  "contextPath": "/vehicleControlApplication",
  "resourcesUrl":"http://external.host.com/basedir"
}

応答例:

HTTP/1.1 201 Created
Content-Type: application/vnd.com.nsn.cumulocity.application+json;ver=...
Content-Length: ...
Location: <<URL of new application>>

{
  "availability": "PRIVATE",
  "id": "105",
  "key": "...",
  "name": "vehicleControlApplication",
  "owner": {
      "self": "...",
      "tenant": {
          "id": "taxiCorp"
      }
  },
  "self": "...",
  "type": "HOSTED",
  "contextPath": "/vehicleControlApplication",
  "resourceUrl":"http://external.host.com/basedir",
  "resourcesUsername": "..."
}

アプリケーション

アプリケーション[application/vnd.com.nsn.cumulocity.application+json;ver=0.9]

フィールド名 タイプ 発生回数 説明 PUT/POST
self URL 1 このリソースへのリンク なし
id String 1 アプリケーションの固有識別子 なし
name String 1 アプリケーション名 POST:必須、PUT:任意
key String 1 アプリケーションの共有秘密鍵 POST:必須、PUT:任意
type String 1 アプリケーションの種別。可能な値:EXTERNAL、HOSTED、MICROSERVICE、APAMA_CEP_RULE POST:必須、PUT:なし
availability String 0..1 他のテナントからのアクセスレベル。可能な値:MARKET、PRIVATE(デフォルト値) 任意
owner TenantReference  1 このアプリケーションを所有しているテナントに対するリファレンス なし
contextPath String 0..1 ホスト型アプリケーションのコンテキストパス POST:必須(HOSTEDの場合)、PUT:任意
resourcesUrl String 0..1 外部サーバー上でホストされるアプリケーションベースディレクトリへのURL POST:必須(HOSTEDの場合)、PUT:任意
resourcesUsername String 0..1 リソースURLにアクセスするための認証ユーザー名 任意
resourcesPassword String 0..1 リソースURLにアクセスするための認証パスワード 任意
externalUrl String 0..1 外部アプリケーションへのURL POST:必須(EXTERNALの場合)、PUT:任意

POST - アプリケーションの複製

「クローン」リソースに対するPOSTリクエストは、既存のアプリケーションをベースとするアプリケーションを新たに作成します。

プロパティは新たに作成されるアプリケーションへコピーされます。名称、キーおよびコンテキストパスについては、固有にするための「clone」プレフィックスが追加されます。

対象アプリケーションがホスト型で、有効なバージョンを有する場合、新規アプリケーションも同じ内容の有効バージョンを有することになります。

応答は新たに作成されたアプリケーションの表現を格納します。

要求されるロール: ROLE_APPLICATION_MANAGMENT_ADMIN

リクエスト例:

POST /application/applications/<<application_id>>/clone HTTP/1.1
Authorization: Basic ...
Accept: application/vnd.com.nsn.cumulocity.application+json

応答例:

HTTP/1.1 201 Created
Location: .../application/applications/{{application_id}}
Content-Type: application/vnd.com.nsn.cumulocity.application+json; charset=UTF-8; ver=0.9

{
    "activeVersionId": "10414",
    "availability": "MARKET",
    "contextPath": "clonetest",
    "id": "1115",
    "key": "clonesecretKeyForTheApplication",
    "manifest": {},
    "name": "clonetestApplicationName",
    "owner": {
        "self": ".../tenant/tenants/management",
        "tenant": {
            "id": "management"
        }
    },
    "resourcesUrl": "/test",
    "self": ".../application/applications/1115",
    "type": "HOSTED"
}

PUT - アプリケーションの更新

リクエスト本体: Application

応答本体: Application (「ACCEPT」ヘッダーが指定されている場合).

要求されるロール: ROLE_APPLICATION_MANAGMENT_ADMIN

リクエスト例:

PUT /application/applications/<<applicationId>>
Host: ...
Authorization: Basic ...
Content-Length: ...
Content-Type: application/vnd.com.nsn.cumulocity.application+json;ver=...
{
  "availability" : "MARKET"
}

GET - アプリケーションの取得

応答本体: Application

要求されるロール: ROLE_APPLICATION_MANAGEMENT_READ

応答例:

HTTP/1.1 200 OK
Content-Type: application/vnd.com.nsn.cumulocity.application+json;ver=...
Content-Length: ...
{
  "availability": "PRIVATE",
  "id": "105",
  "key": "...",
  "name": "vehicleControlApplication",
  "owner": {
      "self": "...",
      "tenant": {
          "id": "taxiDrive"
      }
  },
  "self": "...",
  "type": "EXTERNAL",
  "externalUrl":"http://external.host.com/application"
}

DELETE - アプリケーションの削除

リクエスト本体: n/a

応答本体: n/a

要求されるロール: ROLE_APPLICATION_MANAGMENT_ADMIN and owner

注記:アプリケーションは、可用性がPRIVATEである、またはチャネル接続が存在しない状況でないと削除できません。

リクエスト例: アプリケーションを削除する

DELETE /application/applications/<<applicationId>>
 Host: [hostname]
 Authorization: Basic xxxxxxxxxxxxxxxxxxx

応答例:

HTTP/1.1  204 NO CONTENT

ブートストラップ ユーザー

GET - ブートストラップ ユーザーの取得

応答本体: ApplicationUser

要求されるロール: ROLE_APPLICATION_MANAGEMENT_ADMIN

リクエスト例:

GET /application/applications/{microservice-applicationId}/bootstrapUser
Host: ...
Authorization: Basic ....
Accept: application/vnd.com.nsn.cumulocity.user+json;ver=...

応答例:

HTTP/1.1 200 OK
Content-Type: application/vnd.com.nsn.cumulocity.user+json;ver=...
Content-Length: ...
{
    "name": "servicebootstrap_hello-world",
    "password": "9HqBc0miL5",
    "tenant": "dariusz"
}

現在のアプリケーション

GET - 現在のアプリケーションの取得

応答本体: Application

ブートストラップユーザーによる必要な認証

リクエスト例:

GET /application/currentApplication
Host: ...
Authorization: Basic .....
Accept: application/vnd.com.nsn.cumulocity.application+json;ver=...

応答例:

HTTP/1.1 200 OK
Content-Type: application/vnd.com.nsn.cumulocity.application+json;ver=...
Content-Length: ...
{
  "availability": "PRIVATE",
  "id": "105",
  "key": "...",
  "name": "vehicleControlApplication",
  "owner": {
      "self": "...",
      "tenant": {
          "id": "taxiDrive"
      }
  },
  "self": "...",
  "type": "MICROSERVICE",
  "externalUrl":"http://external.host.com/application"
}

PUT - 現在のアプリケーションの更新

応答本体: Application

ブートストラップユーザーによる必要な認証

リクエスト例:

PUT /application/currentApplication
Host: ...
Authorization: Basic ...
Accept: application/vnd.com.nsn.cumulocity.application+json;ver=...
{
      "availability": "PRIVATE",
      "id": "105",
      "key": "...",
      "name": "vehicleControlApplication",
      "owner": {
          "self": "...",
          "tenant": {
              "id": "taxiDrive"
          }
      },
      "self": "...",
      "type": "MICROSERVICE",
      "externalUrl":"http://external.host.com/application"
    }

応答例:

HTTP/1.1 200 OK
Content-Type: application/vnd.com.nsn.cumulocity.application+json;ver=...
Content-Length: ...
{
  "availability": "PRIVATE",
  "id": "105",
  "key": "...",
  "name": "...",
  "owner": {
      "self": "...",
      "tenant": {
          "id": "..."
      }
  },
  "self": "...",
  "type": "MICROSERVICE"
}

アプリケーション サブスクリプション コレクション

ApplicationSubscriptionCollection[application/vnd.com.nsn.cumulocity.applicationUserCollection+json]

名称 タイプ 発生回数 説明
self URI 1 このリソースへのリンク
users ApplicationUser 0..n サブスクライブしているユーザーリスト(下記参照)
statistics PagingStatistics 1 ページング統計に関する情報
prev URI 0..1 アプリケーションの前のページへのリンク(あれば)
next URI 0..1 アプリケーションの次のページへのリンク(あれば)

アプリケーションユーザー

フィールド名 タイプ 発生回数 説明
tenant String 1 サブスクリプション テナント
name String 1 ユーザー名
password String 1 パスワード

GET - 現在のアプリケーション サブスクリプションの取得

応答本体: ApplicationSubscriptionCollection

ブートストラップユーザーによる必要な認証

リクエスト例:

GET /application/currentApplication/subscriptions
Host: ...
Authorization: Basic ....
Accept: application/vnd.com.nsn.cumulocity.applicationUserCollection+json; ver=...

応答例:

HTTP/1.1 200 OK
Content-Type: application/vnd.com.nsn.cumulocity.applicationUserCollection+json; ver=...
Content-Length: ...
{
    "users": [
        {
            "name": "service_hello-world",
            "password": "...",
            "tenant": "..."
        }
    ]
}

アプリケーションバイナリ

POST - アプリケーションバイナリのアップロード

「web application」のアプリケーションタイプをThings Cloudプラットフォームユーザーが利用できるようにするには、バイナリzipファイルをアップロードする必要があります。

 POST /application/applications/{APPLICATION_ID}/binaries
 Host: ...
 Authorization: Basic …
 Content-Type: multipart/form-data

Webアプリケーションの場合、zipファイルにはルートディレクトリにindex.htmlが必要になります。