SMAPIエラーコード
Alexaスキル管理API(SMAPI)は、Alexaスキル管理タスクをプログラムで実行できるRESTful HTTPインターフェースを提供します。スキル管理タスクには、スキルの新規作成や対話モデルの更新などがあります。問題が発生すると、SMAPIはHTTP応答を4xxまたは5xx HTTPステータスコードで返します。これらのエラー応答の一部には、応答本文にJSON形式のerror
オブジェクトが含まれます。 error
オブジェクトには、プログラムでのエラー応答に使用できるcode
とvalidationDetails
オブジェクトが含まれています。
Errorオブジェクト構造
各errorオブジェクトには、次のフィールドが含まれます。
code
– 失敗した検証のカテゴリーを一意に識別する、機械が読み取り可能な形式の文字列です。使用可能な値の詳細な一覧については、エラーコードの一覧を参照してください。validationDetails
– 検証が失敗した理由と、開発者が提供したリソースのどの箇所でエラーが発生したかの詳細を含む、機械が読み取り可能な形式のオブジェクトです。message
– 検証の失敗を説明する、人間が読める形式の文字列です。
エラーコードの一覧
次の一覧には、SMAPIがエラー応答で送信できるすべてのエラーコード値が含まれています。各エラーコード値は、詳細と例へのリンクです。
- CONFLICTING_INSTANCES
- CONTENT_PARSE_FAILURE
- DENIED_FEATURE_ACCESS
- DUPLICATE_ARRAY_ITEMS
- EXPECTED_COMPLIANCE_AGREEMENT
- EXPECTED_RELATED_INSTANCE
- EXPECTED_RELATED_INSTANCES
- INCONSISTENT_ENDPOINTS
- INVALID_ARRAY_SIZE
- INVALID_CONTENT_TYPE
- INVALID_DATA_TYPE
- INVALID_ENUM_VALUE
- INVALID_IMAGE_ATTRIBUTES
- INVALID_INTEGER_VALUE
- INVALID_REQUEST_PARAMETER
- INVALID_STRING_LENGTH
- INVALID_STRING_PATTERN
- INVALID_URL_DOMAIN
- INVALID_URL_FORMAT
- MISSING_REQUIRED_PROPERTY
- MUTUALLY_EXCLUSIVE_ARRAY_ITEMS
- PARAMETER_EXPIRED
- PRECONDITION_NOT_MET
- OPERATION_NOT_ALLOWED
- RESOURCE_NOT_FOUND
- UNEXPECTED_EMPTY_OBJECT
- UNEXPECTED_PROPERTY
Errorオブジェクトの詳細と例
次のセクションでは、想定されるエラーコードの詳細と例を示します。
CONFLICTING_INSTANCES
SMAPIは、リクエスト内のある1つのフィールドの存在、またはそのフィールドの値が別のフィールドの存在または値と競合すると、CONFLICTING_INSTANCES
エラーコードを返します。
次の例では、開発者が提供したスキルマニフェストがisAvailableWorldwide
をtrue
に設定し、かつdistributionCountries
の値も含まれている場合のerror
オブジェクトを示します。
{
"error": {
"code": "CONFLICTING_INSTANCES",
"message": "Instance at \"$.manifest.publishingInformation.distributionCountries\" is not expected when boolean instance with value \"true\" at property path \"$.manifest.publishingInformation.isAvailableWorldwide\" is present.",
"validationDetails": {
"originalInstance": {
"type": "BODY",
"propertyPath": "$.manifest.publishingInformation.isAvailableWorldwide",
"dataType": "boolean",
"value": true
},
"conflictingInstance": {
"type": "BODY",
"propertyPath": "$.manifest.publishingInformation.distributionCountries"
}
}
}
}
CONTENT_PARSE_FAILURE
リクエストで指定されたリソース(画像など)の解析でエラーが発生した場合、SMAPIはCONTENT_PARSE_FAILURE
のエラーコードを返します。
以下は、リクエストで指定された画像を解析できなかった場合のerror
オブジェクトの例です。
{
"error":{
"code":"CONTENT_PARSE_FAILURE",
"message":"Image with identifier \"www.someFeed.com\" at property path \"$.manifest.publishingInformation.locales.en-Us.feeds[0].uri\" was not parseable.",
"validationDetails":{
"originalInstance": {
"type": "BODY",
"propertyPath": "$.manifest.publishingInformation.locales.en-Us.feeds[0].uri",
"dataType": "string",
"value":"www.someFeed.com"
},
"reason": {
"type": "MALFORMED_INPUT",
"contentType": "image"
}
}
}
}
DENIED_FEATURE_ACCESS
ホワイトリストに登録された開発者だけが利用できる、公開済みの機能が含まれているが、リクエストを行っている開発者がホワイトリストに登録されていない場合、SMAPIはDENIED_FEATURE_ACCESS
エラーコードを返します。エラーメッセージまたはvalidationDetails
オブジェクトには、機能へのアクセスをリクエストするための連絡先情報が含まれている場合があります。
次の例は、開発者が提供したスキルマニフェストに、リクエストを行っている開発者がホワイトリスト登録されていないcategory
値が含まれている場合の、error
オブジェクトを示しています。
{
"error": {
"code": "DENIED_FEATURE_ACCESS",
"message": "User is not whitelisted for the \"Example Whitelist Only Category\" feature and, therefore, cannot use string instance with value \"EXAMPLE_WHITELIST_ONLY\" at \"$.manifest.publishingInformation.category\".Further information: \"example-request-access@amazon.com\"",
"validationDetails": {
"originalInstance": {
"type": "BODY",
"propertyPath": "$.manifest.publishingInformation.category",
"dataType": "string",
"value": "EXAMPLE_WHITELIST_ONLY"
},
"feature": {
"name": "Example Whitelist Only Category",
"contact": "example-request-access@amazon.com"
}
}
}
}
次の例は、開発者が提供したスキルマニフェストに、リクエストを行っている開発者がホワイトリスト登録されていないインターフェースが含まれている場合の、error
オブジェクトを示しています。
{
"error": {
"code": "DENIED_FEATURE_ACCESS",
"message": "User is not whitelisted for the \"Example Whitelist Only Interface\" feature and, therefore, cannot use instance at \"$.manifest.apis.custom.exampleInterface\"",
"validationDetails": {
"originalInstance": {
"type": "BODY",
"propertyPath": "$.manifest.apis.custom.exampleInterface"
},
"feature": {
"name": "Example Whitelist Only Interface"
}
}
}
}
DUPLICATE_ARRAY_ITEMS
リクエスト内の開発者が提供した配列に、重複する項目またはプロパティが含まれている場合、SMAPIはDUPLICATE_ARRAY_ITEMS
エラーコードを返します。
次の例は、開発者が提供したスキルマニフェストのfeeds
配列に、重複したurl
値が含まれている場合の、error
オブジェクトを示しています。
{
"error": {
"code": "DUPLICATE_ARRAY_ITEMS",
"message": "Array item at property path \"$.manifest.apis.flashBriefing.locales.en-US.feeds[1].url\" and array item at property path \"$.manifest.apis.flashBriefing.locales.en-US.feeds[3].url\" have the same value: \"www.example.com/rss\".Item values must be unique.",
"validationDetails": {
"originalInstance": {
"type": "BODY",
"propertyPath": "$.manifest.apis.flashBriefing.locales.en-US.feeds[1].url",
"dataType": "string",
"value": "www.example.com/rss"
},
"conflictingInstance": {
"type": "BODY",
"propertyPath": "$.manifest.apis.flashBriefing.locales.en-US.feeds[3].url",
"dataType": "string",
"value": "www.example.com/rss"
}
}
}
}
EXPECTED_COMPLIANCE_AGREEMENT
スキルが必須契約のいずれかに準拠していない場合、SMAPIはEXPECTED_COMPLIANCE_AGREEMENT
エラーコードを返します。たとえば、このエラーは、開発者のスキルが、輸出条件に準拠していると認定されていない場合に返されます。
次の例は、スキルが輸出条件に準拠している必要があるが、開発者が提供したスキルマニフェストがisExportCompliant
がfalse
であると指定している場合のerror
オブジェクトを示しています。
{
"error": {
"code": "EXPECTED_COMPLIANCE_AGREEMENT",
"message": "The skill must be export compliant.By setting boolean instance at \"$.manifest.privacyAndCompliance.isExportCompliant\" to true, you certify the following: \"I certify that this Alexa skill may be imported to and exported from the United States and all other countries and regions in which Alexa operates its program or in which I've authorized sales to end users (without the need for Amazon to obtain any license or clearance or take any other action) and is in full compliance with all applicable laws and regulations governing imports and exports, including those applicable to software that makes use of encryption technology.\""
},
"validationDetails": {
"agreementType": "EXPORT_COMPLIANCE"
}
}
EXPECTED_RELATED_INSTANCE
ある開発者が提供したフィールドの存在または値が、別の開発者が提供したフィールドの存在または値によって決まる期待値と一致しない場合、SMAPIはEXPECTED_RELATED_INSTANCE
エラーコードを返します。
次の例は、開発者が提供したスキルマニフェストがスマートホームAPIを使用しているが、スキルのカテゴリーをSMART_HOME
として設定しない場合のerror
オブジェクトを示しています。
{
"error": {
"code": "EXPECTED_RELATED_INSTANCE",
"message": "String instance with value \"SMART_HOME\" at property path \"$.manifest.publishingInformation.category\" is expected to be present when instance at property path \"$.manifest.apis.smartHome\" is present",
"validationDetails": {
"originalInstance": {
"type": "BODY",
"propertyPath": "$.manifest.apis.smartHome"
},
"expectedInstance": {
"type": "BODY",
"propertyPath": "$.manifest.publishingInformation.category",
"dataType": "string",
"value": "SMART_HOME"
}
}
}
}
EXPECTED_RELATED_INSTANCES
開発者が提供したフィールドまたは値が、リクエスト本文で提供した他のフィールドリストの、少なくとも1つと一致(または1つと完全一致)しなくてはならない場合に、SMAPIはEXPECTED_RELATED_INSTANCES
を返します。
以下は、ビデオスキルAPIをサポートするためにスキルがアカウントリンク、セキュリティプロファイルのいずれか(両方ではない)をサポートする必要がある場合のerror
オブジェクトの例です。
{
"error":{
"code": "EXPECTED_RELATED_INSTANCES",
"message": "Exactly one of instance at property path \"$.accountLinking\", instance at property path \"$.manifest.securityProfile\" is expected to be present when instance at property path \"$.manifest.apis.video\" is present.",
"validationDetails":{
"originalInstance": {
"type": "BODY",
"propertyPath": "$.manifest.apis.video"
},
"expectedInstance": {
"type": "INSTANCES",
"instances": [
{
"type": "BODY",
"propertyPath": "$.manifest.securityProfile"
},
{
"type": "BODY",
"propertyPath": "$.accountLinking"
}
]
},
"reason": {
"type": "EXPECTED_EXACTLY_ONE_RELATED_INSTANCE"
}
}
}
}
INCONSISTENT_ENDPOINTS
リクエストに複数の異なるタイプのエンドポイントが含まれているが、それらは同一であると考えられる場合、SMAPIはINCONSISTENT_ENDPOINTS
エラーコードを返します。
次の例は、開発者が提供したスキルマニフェストが、エンドポイントをあるロケーションのHTTP URLとして指定したが、別のロケーションではAmazonリソースネーム(ARN)として指定している場合のerror
オブジェクトを示しています。
{
"error": {
"code": "INCONSISTENT_ENDPOINTS",
"message": "Endpoint of value \"https://www.example.com\" at property path \"$.manifest.apis.custom.endpoint.uri\" is not of same type as endpoint of value \"arn:aws:lambda:us-east-1:123456789012:function:example-function\" at property path \"$.manifest.apis.custom.regions.na.endpoint.uri\": Original type: \"https\", Inconsistent type:\"arn\".",
"validationDetails": {
"originalEndpoint": {
"propertyPath": "$.manifest.apis.custom.endpoint.uri",
"value": "https://www.example.com",
"type": "https"
},
"inconsistentEndpoint": {
"propertyPath": "$.manifest.apis.custom.regions.na.endpoint.uri",
"value": "arn:aws:lambda:us-east-1:123456789012:function:example-function",
"type": "arn"
}
}
}
}
INVALID_ARRAY_SIZE
開発者が提供したコレクション内の項目数が検証で許容範囲内にない場合、SMAPIはINVALID_ARRAY_SIZE
エラーコードを返します。
次の例は、開発者が提供したスキルマニフェストにサンプルフレーズが含まれていないが、検証に少なくとも1つのサンプルフレーズが必要である場合の、error
オブジェクトを示しています。
{
"error": {
"code": "INVALID_ARRAY_SIZE",
"message": "Size of Array instance at property path \"$.manifest.publishingInformation.locales.en-US.examplePhrases\" is outside the allowed range: Actual number of items: 0, Minimum number of items: 1.",
"validationDetails": {
"originalInstance": {
"type": "BODY",
"propertyPath": "$.manifest.publishingInformation.locales.en-US.examplePhrases"
},
"actualNumberOfItems": 0,
"minimumNumberOfItems": 1
}
}
}
次の例は、開発者が提供したスキルマニフェストに含まれるサンプルフレーズが多すぎる場合のerror
オブジェクトを示しています。
{
"error": {
"code": "INVALID_ARRAY_SIZE",
"message": "Size of Array instance at property path \"$.manifest.publishingInformation.locales.en-US.examplePhrases\" is outside the allowed range: Actual number of items: 10, Maxmimum number of items: 4",
"validationDetails": {
"originalInstance": {
"type": "BODY",
"propertyPath": "$.manifest.publishingInformation.locales.en-US.examplePhrases"
},
"actualNumberOfItems": 10,
"maximumNumberOfItems": 4
}
}
}
INVALID_CONTENT_TYPE
開発者が提供するURLで見つかったリソースのメディアの種類が、検証で想定されている、または許可されているコンテンツの種類と一致しない場合、SMAPIはINVALID_CONTENT_TYPE
エラーコードを返します。
次の例は、開発者が提供するURLの画像が、許可されている画像の種類のいずれにも一致しない場合のerror
オブジェクトを示しています。
{
"error": {
"code": "INVALID_CONTENT_TYPE",
"message": "Resource with identifier \"https://www.example.com/smallIconUri\" at property path \"$.manifest.publishingInformation.locales.en-US.smallIconUri\" has invalid content type.Allowed content types: [\"image/png\", \"image/jpg\"]",
"validationDetails": {
"originalInstance": {
"type": "BODY",
"propertyPath": "$.manifest.publishingInformation.locales.en-US.smallIconUri",
"dataType": "string",
"value": "https://www.example.com/smallIconUri"
},
"allowedContentTypes": [
"image/png",
"image/jpg"
]
}
}
}
INVALID_DATA_TYPE
開発者が提供した値のデータ型が、検証で想定されている、または許可されているデータ型と一致しない場合、SMAPIはINVALID_DATA_TYPE
エラーコードを返します。
次の例は、開発者が提供したスキルマニフェストのデータ型が、許可されているデータ型と一致しない場合のerror
オブジェクトを示しています。
{
"error": {
"code": "INVALID_DATA_TYPE",
"message": "Instance at property path \"$.manifest.publishingInformation.distributionCountries\" of type \"string\" does not match any allowed primitive types [\"array\"].",
"validationDetails": {
"originalInstance": {
"type": "BODY",
"propertyPath": "$.manifest.publishingInformation.distributionCountries",
"dataType": "string"
},
"allowedDataTypes": [
"array"
]
}
}
}
INVALID_ENUM_VALUE
開発者が提供した値が列挙内の要素(許可されている値のセット)のいずれにも一致しない場合、SMAPIはINVALID_ENUM_VALUE
エラーコードを返します。
次の例は、スキルマニフェストの開発者提供の列挙値が許可されている値のいずれにも一致しない場合のerror
オブジェクトを示しています。
{
"error": {
"code": "INVALID_ENUM_VALUE",
"message": "String instance at property path \"$.manifest.publishingInformation.distributionCountries[0]\" has invalid enum value: \"UAA\"",
"validationDetails": {
"originalInstance": {
"type": "BODY",
"propertyPath": "$.manifest.publishingInformation.distributionCountries[0]",
"dataType": "string",
"value": "UAA"
}
}
}
}
INVALID_IMAGE_ATTRIBUTES
開発者が提供した画像の1つ以上のアトリビュートが、検証で想定されている、または許可されているアトリビュートと一致しない場合、SMAPIはINVALID_IMAGE_ATTRIBUTES
エラーコードを返します。
次の例は、開発者が提供した画像が、許可されている画像のディメンションのいずれにも一致しない場合のerror
オブジェクトを示しています。
{
"error": {
"code": "INVALID_IMAGE_ATTRIBUTES",
"message": "Image with identifier \"www.example.com\" at property path \"$.manifest.publishingInformation.locales.en-US.largeIconUri\" is invalid.\nExpected dimensions: \"[512x512, 108x108]\"\nMaximum allowed size, respectively: \"[2.8MB, 2.0MB]\".\nFound image of dimension \"512x511\", of size \"2.8MB\".",
"validationDetails": {
"originalInstance": {
"type": "BODY",
"propertyPath": "$.manifest.publishingInformation.locales.en-US.largeIconUri",
"dataType": "string",
"value": "www.example.com"
},
"actualImageAttributes": {
"dimension": {
"widthInPixels": 511,
"heightInPixels": 512
},
"size": {
"value": 2.8,
"unit": "MB"
}
},
"allowedImageAttributes": [
{
"dimension": {
"widthInPixels": 512,
"heightInPixels": 512
},
"maximumSize": {
"value": 2.8,
"unit": "MB"
}
},
{
"dimension": {
"widthInPixels": 108,
"heightInPixels": 108
},
"maximumSize": {
"value": 2.0,
"unit": "MB"
}
}
]
}
}
}
INVALID_INTEGER_VALUE
開発者が提供した整数値が、許可されている値のいずれにも一致しない場合、SMAPIはINVALID_INTEGER_VALUE
エラーコードを返します。
次の例は、開発者が提供した整数が、許容値の範囲外である場合のerror
オブジェクトを示しています。
{
"error": {
"code": "INVALID_INTEGER_VALUE",
"message": "Integer instance at property path \"$.manifest.publishingInformation.authorizationNumber\" is outside the allowed range: Actual value: 1, Minimum value: 10.",
"validationDetails": {
"originalInstance": {
"type": "BODY",
"propertyPath": "$.manifest.publishingInformation.authorizationNumber",
"dataType": "integer",
"value": 1
},
"minimumIntegerValue": 10
}
}
}
{
"error": {
"code": "INVALID_INTEGER_VALUE",
"message": "Integer instance at property path \"$.manifest.publishingInformation.gadgetSupport.maxGadgetButtons\" is outside the allowed range: Actual value: 7, Maximum value: 4",
"validationDetails": {
"originalInstance": {
"type": "BODY",
"propertyPath": "$.manifest.publishingInformation.gadgetSupport.maxGadgetButtons",
"dataType": "integer",
"value": 7
},
"maximumIntegerValue": 4
}
}
}
INVALID_REQUEST_PARAMETER
リクエストに無効なパラメーターが含まれる場合、SMAPIはINVALID_REQUEST_PARAMETER
エラーコードを返します。
以下は、リクエスト本文がnullの場合のerror
オブジェクトの例です。
{
"error": {
"code": "INVALID_REQUEST_PARAMETER",
"message": "Parsing error due to missing body.",
"validationDetails": {
"originalInstance" : {
"type" : "BODY"
},
"reason": {
"type": "EXPECTED_NOT_EMPTY_VALUE"
}
}
}
}
以下は、リクエスト本文を解析できない場合のerror
オブジェクトの例です。
{
"error": {
"code": "INVALID_REQUEST_PARAMETER",
"message": "Parsing error due to invalid body.",
"validationDetails": {
"originalInstance" : {
"type" : "BODY"
},
"reason": {
"type": "MALFORMED_INPUT"
}
}
}
}
以下は、リクエストのパラメーターが提供される回数が多すぎる場合のerror
オブジェクトの例です。
{
"error": {
"code": "INVALID_REQUEST_PARAMETER",
"message": "Query parameter \"skill\" is provided an invalid number of times.Actual Occurences: 11, Maximum Occurences: 10, Minimum Occurences: 1",
"validationDetails": {
"originalInstance": {
"type": “QUERY_PARAMETER”,
"name": "skill"
},
"reason": {
"type": "INVALID_NUMBER_OF_OCCURENCES",
"actualOccurences": 11,
"maximumOccurences": 10,
"minimumOccurences": 1
}
}
}
}
以下は、プロパティパスに含まれるプロパティ数が多すぎる場合のerror
オブジェクトの例です。
{
"error": {
"code": "INVALID_REQUEST_PARAMETER",
"message": "Instance at property path \"$.manifest.apis.flashBriefing\" has too many properties.Actual properties: 2, Maximum properties: 1",
"validationDetails": {
"originalInstance": {
"type": "BODY",
"propertyPath": "$.manifest.apis.flashBriefing"
},
"reason": {
"type": "INVALID_NUMBER_OF_PROPERTIES",
"actualProperties": 2,
"maximumProperties": 1
}
}
}
}
INVALID_STRING_LENGTH
開発者が提供した文字列の長さが、検証で許可されている長さよりも短い、または長い場合、SMAPIはINVALID_STRING_LENGTH
エラーコードを返します。
次の例は、開発者が提供したスキルマニフェストに、短すぎるサンプルフレーズ(最初の例)と長すぎるサンプルフレーズ(2番目の例)が含まれている場合の、error
オブジェクトを示しています。
{
"error": {
"code": “INVALID_STRING_LENGTH”,
"message": "Length of String instance with value \"a\" at property path \"$.manifest.publishingInformation.locales.en-US.examplePhrases[1]\" is outside the allowed range: Actual length: 1, Minimum length: 2.",
"validationDetails": {
"originalInstance": {
"type": "BODY",
"propertyPath": "$.manifest.publishingInformation.locales.en-US.examplePhrases[1]",
"dataType": "string",
"value": "a"
},
"actualStringLength": 1,
"minimumStringLength": 2
}
}
}
{
"error": {
"code": “INVALID_STRING_LENGTH”,
"message": "String instance with value \"Example Custom Skill Name Example Custom Skill Name Example Custom Skill Name Example Custom Skill Name Example Custom Skill Name Example Custom Skill Name\" at property path \"$.manifest.publishingInformation.locales.en-US.name\" is outside the allowed range: Actual length: 155, Maximum length: 50.",
"validationDetails": {
"originalInstance": {
"type": "BODY",
"propertyPath": "$.manifest.publishingInformation.locales.en-US.name",
"dataType": "string",
"value": "Example Custom Skill Name Example Custom Skill Name Example Custom Skill Name Example Custom Skill Name Example Custom Skill Name Example Custom Skill Name"
},
"actualStringLength": 155,
"maximumStringLength": 50
}
}
}
INVALID_STRING_PATTERN
開発者が提供した文字列が、検証で想定されてない、または許可されているパターンまたは形式と一致しない場合、SMAPIはINVALID_STRING_PATTERN
エラーコードを返します。errorオブジェクトには、標準の形式または正規表現と想定されるパターンが含まれています。
次の例は、開発者が提供したスキルマニフェストに、想定されているarn
プレフィックスで始まらないエンドポイント値が含まれている場合のerror
オブジェクトを示しています。
{
"error": {
"code": "INVALID_STRING_PATTERN",
"message": "String instance with value \"*.123\" at property path \"$.manifest.music.endpoint\" does not match the regular expression: \"^arn\".",
"validationDetails": {
"originalInstance": {
"type": "BODY",
"propertyPath": "$.manifest.music.endpoint",
"dataType": "string",
"value": "*.123"
},
"expectedRegexPattern": "^arn"
}
}
}
以下は、ビデオプレイヤーのURIが正しい形式でない場合のerror
オブジェクトの例です。
{
"error": {
"code": "INVALID_STRING_PATTERN",
"message": "String instance with value \"http://example.com?q=Spaces should be encoded\" at property path \"$.manifest.apis.video.locales.videoWebPlayerUri\" is not a valid \"URI\" format.",
"validationDetails": {
"originalInstance": {
"type": "BODY",
"propertyPath": "$.manifest.apis.video.locales.videoWebPlayerUri",
"dataType": "string",
"value": "http://example.com?q=Spaces should be encoded"
},
"expectedFormat":"URI"
}
}
}
INVALID_URL_DOMAIN
開発者が提供したドメイン名がRFC 1034 section 3およびRFC 1123 section 2.1に準拠して有効でない場合、SMAPIはINVALID_URL_DOMAIN
エラーコードを返します。
次の例は、開発者が提供したドメイン名が有効でない場合のerror
オブジェクトを示しています。
{
"error": {
"code": "INVALID_URL_DOMAIN",
"message": "String instance with value \"www.example.con\" at property path \"$.manifest.accountLinking.domains[2]\" is not a valid URL domain.",
"validationDetails": {
"originalInstance": {
"type": "BODY",
"propertyPath": "$.manifest.accountLinking.domains[2]",
"dataType": "string",
"value": "www.example.con"
}
}
}
}
INVALID_URL_FORMAT
開発者が提供したURLが有効でない場合、SMAPIはINVALID_URL_FORMAT
エラーコードを返します。
次の例は、開発者が提供したURLが有効でない場合のerror
オブジェクトを示しています。
{
"error": {
"code": "INVALID_URL_FORMAT",
"message": "String instance with value \"httpa://www.myprivacypolicy.example.com\" at property path \"$.manifest.privacyAndCompliance.locales.en-US.privacyPolicyUrl\" is not a valid URL.",
"validationDetails": {
"originalInstance": {
"type": "BODY",
"propertyPath": "$.manifest.privacyAndCompliance.locales.en-US.privacyPolicyUrl",
"dataType": "string",
"value": "httpa://www.myprivacypolicy.example.com"
}
}
}
}
MISSING_REQUIRED_PROPERTY
リクエストが、必要なオブジェクトまたはプロパティを提供できない場合、SMAPIはMISSING_REQUIRED_PROPERTY
エラーコードを返します。プロパティが存在し、値が含まれていないが、検証に少なくとも1つの値が必要な場合、SMAPIはUNEXPECTED_EMPTY_OBJECTエラーを返します。
次の例は、開発者が提供したスキルマニフェストに必要なpublishingInformation
オブジェクトが含まれていない場合のerror
オブジェクトを示しています。
{
"error": {
"code": "MISSING_REQUIRED_PROPERTY",
"message": "Object instance at property path \"$.manifest\" has missing required property: \"publishingInformation\"",
"validationDetails": {
"originalInstance": {
"type": "BODY",
"propertyPath": "$.manifest"
},
"requiredProperty": "publishingInformation"
}
}
}
MUTUALLY_EXCLUSIVE_ARRAY_ITEMS
開発者が提供した配列内の複数の項目またはプロパティ同士で相互互換性がない場合、SMAPIはMUTUALLY_EXCLUSIVE_ARRAY_ITEMS
エラーコードを返します。
次の例は、開発者が提供したスキルマニフェストに、permissions
配列内に重複するpermissionスコープが含まれている場合の、error
オブジェクトを示しています。
{
"error": {
"code": "MUTUALLY_EXCLUSIVE_ARRAY_ITEMS",
"message": "Array item at property path \"$.manifest.apis.permissions[0]\" with value \"alexa::devices:all:address:full:read\" cannot coexist in array with array item at \"$.manifest.apis.permissions[3]\" with value \"alexa:devices:all:address:country_and_postal_code:read\"",
"validationDetails": {
"originalInstance": {
"type": "BODY",
"propertyPath": "$.manifest.apis.permissions[0]",
"dataType": "string",
"value": "alexa::devices:all:address:full:read"
},
"conflictingInstance": {
"type": "BODY",
"propertyPath": "$.manifest.apis.permissions[3]",
"dataType": "string",
"value": "alexa:devices:all:address:country_and_postal_code:read"
}
}
}
}
PARAMETER_EXPIRED
リクエスト内の期限付きトークンが期限切れの場合、SMAPIはPARAMETER_EXPIRED
エラーコードを返します。
以下は、リストスキルなどのページ分割APIがページ分割パラメーターに期限切れトークンを使った場合のerror
オブジェクトの例です。
{
"error": {
"code": "PARAMETER_EXPIRED",
"message": "Query parameter \"nextToken\" with value \"adsasdasdsafa231\" is expired.",
"validationDetails": {
"originalInstance": {
"type": “QUERY_PARAMETER”,
"name": "nextToken",
"value": "adsasdasdsafa231"
}
}
}
}
PRECONDITION_NOT_MET
開発者が提供したif-matchなどの前提条件ヘッダーが要件を満たさない場合、SMAPIはPRECONDITION_NOT_MET
エラーコードを返します。
以下は、リクエストが対話モデルのETag
にif-match条件を含み、渡されたEtag
の値がリソースの最新バージョンに関連付けられていない場合のerror
オブジェクトの例です。
{
"error": {
"code": "PRECONDITION_NOT_MET",
"message": "Resource \"InteractionModel\" doesn't exist for the request header \"If-Match\" with value \"{etag value}\". \nPlease ensure that the resource exists unless you are specifying '*' as If-Match header value.",
"validationDetails": {
"originalInstance": {
"type": "HEADER",
"name": "If-Match",
"value": "{etag value}"
},
"reason": {
"type": "RESOURCE_DOES_NOT_EXIST",
"resource": {
"name": "INTERACTION_MODEL"
},
"details": "ENSURE_RESOURCE_EXISTS_FOR_ETAG"
}
}
}
}
OPERATION_NOT_ALLOWED
リクエストが制限された操作を実行しようとした場合、SMAPIはOPERATION_NOT_ALLOWED
エラーコードを返します。
以下は、移行中のためにスキルを更新できない場合のerror
オブジェクトの例です。
{
"error":{
"code":"OPERATION_NOT_ALLOWED",
"message": "Resource \"skill\" is locked for the query parameter \"skill\" with value \"123\".Skill is in migration, please refer developer documentation.",
"validationDetails":{
"originalInstance": {
"type": “QUERY_PARAMETER”,
"name": "skill",
"value": "123"
},
"reason": {
"type": "RESOURCE_LOCKED",
"resource": {
"name": "SKILL"
},
"details": "SKILL_IN_MIGRATION"
}
}
}
}
以下は、リクエストが開発中のスキルに未来の公開時刻を設定しようとした場合のerror
オブジェクトの例です。この操作は実行できません。
{
"error":{
"code":"OPERATION_NOT_ALLOWED",
"message":"Resource \"skill\" is in \"development\", expected stage is certified for the query parameter \"skill\" with value \"123\".",
"validationDetails":{
"originalInstance": {
"type": “QUERY_PARAMETER”,
"name": "skill",
"value": "123"
},
"reason": {
"type": "UNEXPECTED_RESOURCE_STAGE",
"resource": {
"name": "SKILL",
"stage": "development"
},
"allowedStages": [ "certified" ]
}
}
}
}
以下は、リクエストがHTTPS以外のエンドポイントにSSL証明書を設定しようとしている場合のerror
オブジェクトの例です。
{
"error":{
"code":"OPERATION_NOT_ALLOWED",
"message": "Resource \"skill\" has a property \"$.manifest.apis.custom.regions.NA.endpoint.uri\" which is expected to be \"https\" for the query parameter \"skill\" with value \"123\"",
"validationDetails":{
"originalInstance": {
"type": “QUERY_PARAMETER”,
"name": "skill",
"value": "123"
},
"reason": {
"type": "UNEXPECTED_RESOURCE_PROPERTY",
"resource": {
"name": "SKILL",
"property": {
"propertyPath": "$.manifest.apis.custom.regions.NA.endpoint.uri"
}
},
"expectedProperty": "https"
}
}
}
}
以下は、リクエストが特定のリージョンを指定していないためにSSL証明書が設定されていない場合のerror
オブジェクトの例です。
{
"error":{
"code":"OPERATION_NOT_ALLOWED",
"message": "Resource \"skill\" does not have a property \"$.manifest.apis.custom.regions.NA\" for the query parameter \"skill\" with value \"123\"",
"validationDetails":{
"originalInstance": {
"type": “QUERY_PARAMETER”,
"name": "skill",
"value": "123"
},
"reason": {
"type": "MISSING_RESOURCE_PROPERTY",
"resource": {
"name": "SKILL",
"property": {
"propertyPath": "$.manifest.apis.custom.regions.NA"
}
}
}
}
}
}
RESOURCE_NOT_FOUND
開発者が提供したリソース識別子でリソースが見つからない場合、SMAPIはRESOURCE_NOT_FOUND
エラーコードを返します。リソース識別子には、URL、Amazonリソースネーム(ARN)、UUID、スキルID、スキルのステージなどが含まれます。
次の例は、開発者が提供するURLでリソースが見つからない場合のerror
オブジェクトを示しています。
{
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "Resource with identifier \"www.example.com/rss\" at property path \"$.manifest.publishingInformation.locales.en-Us.feeds[0].uri\" was not found.",
"validationDetails": {
"originalInstance": {
"type": "BODY",
"propertyPath": "$.manifest.publishingInformation.locales.en-Us.feeds[0].uri",
"dataType": "string",
"value": "www.example.com/rss"
}
}
}
}
以下は、指定したIDとステージのスキルが見つからなかった場合のerror
オブジェクトの例です。
{
"error": {
"code":"RESOURCE_NOT_FOUND",
"message":"Resource \"SKILL\" with identifier \"skillId\" with stage \"live\" was not found.",
"validationDetails":{
"originalInstance" : {
"type": "PATH_PARAMETER",
"name": "skill",
"value": "skillId"
},
"reason": {
"type": "RESOURCE_DOES_NOT_EXIST",
"resource": {
"name": "SKILL",
"stage": "live"
}
}
}
}
}
UNEXPECTED_EMPTY_OBJECT
リクエストがプロパティに値を提供できなかったが、検証に少なくとも1つの値が求められる場合、SMAPIはUNEXPECTED_EMPTY_OBJECT
エラーコードを返します。プロパティ自体が見つからないが必須の場合、SMAPIはMISSING_REQUIRED_PROPERTYエラーを返します。
次の例は、開発者が提供したスキルマニフェストに、apis
オブジェクトの情報がまったく含まれていない場合のerror
オブジェクトを示しています。
{
"error": {
"code": "UNEXPECTED_EMPTY_OBJECT",
"message": "Object instance at property path \"$.manifest.apis\" has no property defined.",
"validationDetails": {
"originalInstance": {
"type": "BODY",
"propertyPath": "$.manifest.apis"
}
}
}
}
UNEXPECTED_PROPERTY
リクエストが検証で想定されていないオブジェクト、フィールド、またはプロパティを渡した場合、SMAPIはUNEXPECTED_PROPERTY
エラーコードを返します。
次の例は、開発者が提供したスキルマニフェストにタイプミス(「privacyPolicyUrl」ではなく「privacyPolicyUr」)が含まれている場合のerror
オブジェクトを示しています。
{
"error": {
"code": "UNEXPECTED_PROPERTY",
"message": "Object instance at property path \"$.manifest.privacyAndCompliance.locales.en-US\" has unexpected property: \"privacyPolicyUr\"",
"validationDetails": {
"originalInstance": {
"type": "BODY",
"propertyPath": "$.manifest.privacyAndCompliance.locales.en-US"
},
"unexpectedProperty": "privacyPolicyUr"
}
}
}
最終更新日: 2020 年 06 月 15 日